summaryrefslogtreecommitdiff
path: root/src/remote/activitypub/kernel/delete/note.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/remote/activitypub/kernel/delete/note.ts')
-rw-r--r--src/remote/activitypub/kernel/delete/note.ts29
1 files changed, 19 insertions, 10 deletions
diff --git a/src/remote/activitypub/kernel/delete/note.ts b/src/remote/activitypub/kernel/delete/note.ts
index b146e68a07..9d7574c29b 100644
--- a/src/remote/activitypub/kernel/delete/note.ts
+++ b/src/remote/activitypub/kernel/delete/note.ts
@@ -1,22 +1,31 @@
import { IRemoteUser } from '../../../../models/entities/user';
import deleteNode from '../../../../services/note/delete';
import { apLogger } from '../../logger';
-import { Notes } from '../../../../models';
+import DbResolver from '../../db-resolver';
+import { getApLock } from '../../../../misc/app-lock';
const logger = apLogger;
-export default async function(actor: IRemoteUser, uri: string): Promise<void> {
+export default async function(actor: IRemoteUser, uri: string): Promise<string> {
logger.info(`Deleting the Note: ${uri}`);
- const note = await Notes.findOne({ uri });
+ const unlock = await getApLock(uri);
- if (note == null) {
- throw new Error('note not found');
- }
+ try {
+ const dbResolver = new DbResolver();
+ const note = await dbResolver.getNoteFromApId(uri);
- if (note.userId !== actor.id) {
- throw new Error('投稿を削除しようとしているユーザーは投稿の作成者ではありません');
- }
+ if (note == null) {
+ return 'note not found';
+ }
- await deleteNode(actor, note);
+ if (note.userId !== actor.id) {
+ return '投稿を削除しようとしているユーザーは投稿の作成者ではありません';
+ }
+
+ await deleteNode(actor, note);
+ return 'ok: deleted';
+ } finally {
+ unlock();
+ }
}