summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAkihiko Odaki <nekomanma@pixiv.co.jp>2018-04-04 19:51:41 +0900
committerAkihiko Odaki <nekomanma@pixiv.co.jp>2018-04-04 19:51:41 +0900
commit783453897f04869c213dfa7aef7e8d33490ff47a (patch)
tree43be0b4da4883d4223e05efad6599a8ae4641a65 /src
parentImplement Delete activity (diff)
downloadsharkey-783453897f04869c213dfa7aef7e8d33490ff47a.tar.gz
sharkey-783453897f04869c213dfa7aef7e8d33490ff47a.tar.bz2
sharkey-783453897f04869c213dfa7aef7e8d33490ff47a.zip
Allow to undo Create activity
Diffstat (limited to 'src')
-rw-r--r--src/remote/activitypub/act/delete.ts (renamed from src/remote/activitypub/act/delete/index.ts)9
-rw-r--r--src/remote/activitypub/act/delete/post.ts10
-rw-r--r--src/remote/activitypub/act/undo/index.ts5
-rw-r--r--src/remote/activitypub/delete/index.ts10
-rw-r--r--src/remote/activitypub/delete/post.ts13
5 files changed, 30 insertions, 17 deletions
diff --git a/src/remote/activitypub/act/delete/index.ts b/src/remote/activitypub/act/delete.ts
index eabf9a0436..f9eb4dd08d 100644
--- a/src/remote/activitypub/act/delete/index.ts
+++ b/src/remote/activitypub/act/delete.ts
@@ -1,5 +1,5 @@
-import create from '../../create';
-import deletePost from './post';
+import create from '../create';
+import deleteObject from '../delete';
export default async (resolver, actor, activity) => {
if ('actor' in activity && actor.account.uri !== activity.actor) {
@@ -14,10 +14,7 @@ export default async (resolver, actor, activity) => {
return;
}
- switch (result.object.$ref) {
- case 'posts':
- await deletePost(result.object);
- }
+ await deleteObject(result);
}));
return null;
diff --git a/src/remote/activitypub/act/delete/post.ts b/src/remote/activitypub/act/delete/post.ts
deleted file mode 100644
index 1b748afe82..0000000000
--- a/src/remote/activitypub/act/delete/post.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-import Post from '../../../../models/post';
-import queue from '../../../../queue';
-
-export default ({ $id }) => Promise.all([
- Post.findOneAndDelete({ _id: $id }),
- new Promise((resolve, reject) => queue.create('db', {
- type: 'deletePostDependents',
- id: $id
- }).delay(65536).save(error => error ? reject(error) : resolve()))
-]);
diff --git a/src/remote/activitypub/act/undo/index.ts b/src/remote/activitypub/act/undo/index.ts
index 11c7ec0c83..aa60d3a4fa 100644
--- a/src/remote/activitypub/act/undo/index.ts
+++ b/src/remote/activitypub/act/undo/index.ts
@@ -1,4 +1,5 @@
import act from '../../act';
+import deleteObject from '../../delete';
import unfollow from './unfollow';
import Resolver from '../../resolver';
@@ -12,7 +13,7 @@ export default async (resolver: Resolver, actor, activity): Promise<void> => {
await Promise.all(results.map(async promisedResult => {
const result = await promisedResult;
- if (result === null) {
+ if (result === null || await deleteObject(result) !== null) {
return;
}
@@ -21,4 +22,6 @@ export default async (resolver: Resolver, actor, activity): Promise<void> => {
await unfollow(result.object);
}
}));
+
+ return null;
};
diff --git a/src/remote/activitypub/delete/index.ts b/src/remote/activitypub/delete/index.ts
new file mode 100644
index 0000000000..bc9104284b
--- /dev/null
+++ b/src/remote/activitypub/delete/index.ts
@@ -0,0 +1,10 @@
+import deletePost from './post';
+
+export default async ({ object }) => {
+ switch (object.$ref) {
+ case 'posts':
+ return deletePost(object);
+ }
+
+ return null;
+};
diff --git a/src/remote/activitypub/delete/post.ts b/src/remote/activitypub/delete/post.ts
new file mode 100644
index 0000000000..f6c816647d
--- /dev/null
+++ b/src/remote/activitypub/delete/post.ts
@@ -0,0 +1,13 @@
+import Post from '../../../models/post';
+import queue from '../../../queue';
+
+export default async ({ $id }) => {
+ const promisedDeletion = Post.findOneAndDelete({ _id: $id });
+
+ await new Promise((resolve, reject) => queue.create('db', {
+ type: 'deletePostDependents',
+ id: $id
+ }).delay(65536).save(error => error ? reject(error) : resolve()));
+
+ return promisedDeletion;
+};