From d64dc458999afdc0bfd5f662a583bd1a0f6eebb3 Mon Sep 17 00:00:00 2001 From: MeiMei <30769358+mei23@users.noreply.github.com> Date: Mon, 29 Oct 2018 20:32:42 +0900 Subject: User blocking (Following part) (#3035) * block wip * UndoBlock * UnBlock * wip * follow * UI * fix --- src/services/blocking/delete.ts | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 src/services/blocking/delete.ts (limited to 'src/services/blocking/delete.ts') diff --git a/src/services/blocking/delete.ts b/src/services/blocking/delete.ts new file mode 100644 index 0000000000..bc331d491a --- /dev/null +++ b/src/services/blocking/delete.ts @@ -0,0 +1,28 @@ +import { isLocalUser, isRemoteUser, IUser } from '../../models/user'; +import Blocking from '../../models/blocking'; +import pack from '../../remote/activitypub/renderer'; +import renderBlock from '../../remote/activitypub/renderer/block'; +import renderUndo from '../../remote/activitypub/renderer/undo'; +import { deliver } from '../../queue'; + +export default async function(blocker: IUser, blockee: IUser) { + const blocking = await Blocking.findOne({ + blockerId: blocker._id, + blockeeId: blockee._id + }); + + if (blocking == null) { + console.warn('ブロック解除がリクエストされましたがブロックしていませんでした'); + return; + } + + Blocking.remove({ + _id: blocking._id + }); + + // deliver if remote bloking + if (isLocalUser(blocker) && isRemoteUser(blockee)) { + const content = pack(renderUndo(renderBlock(blocker, blockee), blocker)); + deliver(blocker, content, blockee.inbox); + } +} -- cgit v1.2.3-freya