summaryrefslogtreecommitdiff
path: root/packages/backend/src/remote
diff options
context:
space:
mode:
authornullobsi <me@nullob.si>2021-12-02 18:14:44 -0800
committerGitHub <noreply@github.com>2021-12-03 11:14:44 +0900
commitf33ded310751dd1b4bfd6fb792eec9adfde7019e (patch)
tree737d44379317d8ab0362cc438fbc8ad5b9c6dc9d /packages/backend/src/remote
parentadd todo (diff)
downloadmisskey-f33ded310751dd1b4bfd6fb792eec9adfde7019e.tar.gz
misskey-f33ded310751dd1b4bfd6fb792eec9adfde7019e.tar.bz2
misskey-f33ded310751dd1b4bfd6fb792eec9adfde7019e.zip
feat: Undo Accept (#7980)
* allow breaking of follow * send undo * delete by using reject follow
Diffstat (limited to 'packages/backend/src/remote')
-rw-r--r--packages/backend/src/remote/activitypub/kernel/undo/accept.ts27
-rw-r--r--packages/backend/src/remote/activitypub/kernel/undo/index.ts4
2 files changed, 30 insertions, 1 deletions
diff --git a/packages/backend/src/remote/activitypub/kernel/undo/accept.ts b/packages/backend/src/remote/activitypub/kernel/undo/accept.ts
new file mode 100644
index 0000000000..5112d1d4ea
--- /dev/null
+++ b/packages/backend/src/remote/activitypub/kernel/undo/accept.ts
@@ -0,0 +1,27 @@
+import unfollow from '@/services/following/delete';
+import cancelRequest from '@/services/following/requests/cancel';
+import {IAccept} from '../../type';
+import { IRemoteUser } from '@/models/entities/user';
+import { Followings } from '@/models/index';
+import DbResolver from '../../db-resolver';
+
+export default async (actor: IRemoteUser, activity: IAccept): Promise<string> => {
+ const dbResolver = new DbResolver();
+
+ const follower = await dbResolver.getUserFromApId(activity.object);
+ if (follower == null) {
+ return `skip: follower not found`;
+ }
+
+ const following = await Followings.findOne({
+ followerId: follower.id,
+ followeeId: actor.id
+ });
+
+ if (following) {
+ await unfollow(follower, actor);
+ return `ok: unfollowed`;
+ }
+
+ return `skip: フォローされていない`;
+};
diff --git a/packages/backend/src/remote/activitypub/kernel/undo/index.ts b/packages/backend/src/remote/activitypub/kernel/undo/index.ts
index 14b1add152..8de78420e3 100644
--- a/packages/backend/src/remote/activitypub/kernel/undo/index.ts
+++ b/packages/backend/src/remote/activitypub/kernel/undo/index.ts
@@ -1,8 +1,9 @@
import { IRemoteUser } from '@/models/entities/user';
-import { IUndo, isFollow, isBlock, isLike, isAnnounce, getApType } from '../../type';
+import {IUndo, isFollow, isBlock, isLike, isAnnounce, getApType, isAccept} from '../../type';
import unfollow from './follow';
import unblock from './block';
import undoLike from './like';
+import undoAccept from './accept';
import { undoAnnounce } from './announce';
import Resolver from '../../resolver';
import { apLogger } from '../../logger';
@@ -29,6 +30,7 @@ export default async (actor: IRemoteUser, activity: IUndo): Promise<string> => {
if (isBlock(object)) return await unblock(actor, object);
if (isLike(object)) return await undoLike(actor, object);
if (isAnnounce(object)) return await undoAnnounce(actor, object);
+ if (isAccept(object)) return await undoAccept(actor, object);
return `skip: unknown object type ${getApType(object)}`;
};