diff options
| author | nullobsi <me@nullob.si> | 2021-12-02 18:14:44 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-12-03 11:14:44 +0900 |
| commit | f33ded310751dd1b4bfd6fb792eec9adfde7019e (patch) | |
| tree | 737d44379317d8ab0362cc438fbc8ad5b9c6dc9d /packages/backend/src/remote | |
| parent | add todo (diff) | |
| download | misskey-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.ts | 27 | ||||
| -rw-r--r-- | packages/backend/src/remote/activitypub/kernel/undo/index.ts | 4 |
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)}`; }; |