summaryrefslogtreecommitdiff
path: root/packages/backend/src/services/blocking
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2022-09-18 03:27:08 +0900
committerGitHub <noreply@github.com>2022-09-18 03:27:08 +0900
commitb75184ec8e3436200bacdcd832e3324702553d20 (patch)
tree8b7e316f29e95df921db57289c8b8da476d18f07 /packages/backend/src/services/blocking
parentUpdate ROADMAP.md (diff)
downloadmisskey-b75184ec8e3436200bacdcd832e3324702553d20.tar.gz
misskey-b75184ec8e3436200bacdcd832e3324702553d20.tar.bz2
misskey-b75184ec8e3436200bacdcd832e3324702553d20.zip
なんかもうめっちゃ変えた
Diffstat (limited to 'packages/backend/src/services/blocking')
-rw-r--r--packages/backend/src/services/blocking/create.ts145
-rw-r--r--packages/backend/src/services/blocking/delete.ts34
2 files changed, 0 insertions, 179 deletions
diff --git a/packages/backend/src/services/blocking/create.ts b/packages/backend/src/services/blocking/create.ts
deleted file mode 100644
index a2c61cca22..0000000000
--- a/packages/backend/src/services/blocking/create.ts
+++ /dev/null
@@ -1,145 +0,0 @@
-import { publishMainStream, publishUserEvent } from '@/services/stream.js';
-import { renderActivity } from '@/remote/activitypub/renderer/index.js';
-import renderFollow from '@/remote/activitypub/renderer/follow.js';
-import renderUndo from '@/remote/activitypub/renderer/undo.js';
-import { renderBlock } from '@/remote/activitypub/renderer/block.js';
-import { deliver } from '@/queue/index.js';
-import renderReject from '@/remote/activitypub/renderer/reject.js';
-import { Blocking } from '@/models/entities/blocking.js';
-import { User } from '@/models/entities/user.js';
-import { Blockings, Users, FollowRequests, Followings, UserListJoinings, UserLists } from '@/models/index.js';
-import { perUserFollowingChart } from '@/services/chart/index.js';
-import { genId } from '@/misc/gen-id.js';
-import { IdentifiableError } from '@/misc/identifiable-error.js';
-import { getActiveWebhooks } from '@/misc/webhook-cache.js';
-import { webhookDeliver } from '@/queue/index.js';
-
-export default async function(blocker: User, blockee: User) {
- await Promise.all([
- cancelRequest(blocker, blockee),
- cancelRequest(blockee, blocker),
- unFollow(blocker, blockee),
- unFollow(blockee, blocker),
- removeFromList(blockee, blocker),
- ]);
-
- const blocking = {
- id: genId(),
- createdAt: new Date(),
- blocker,
- blockerId: blocker.id,
- blockee,
- blockeeId: blockee.id,
- } as Blocking;
-
- await Blockings.insert(blocking);
-
- if (Users.isLocalUser(blocker) && Users.isRemoteUser(blockee)) {
- const content = renderActivity(renderBlock(blocking));
- deliver(blocker, content, blockee.inbox);
- }
-}
-
-async function cancelRequest(follower: User, followee: User) {
- const request = await FollowRequests.findOneBy({
- followeeId: followee.id,
- followerId: follower.id,
- });
-
- if (request == null) {
- return;
- }
-
- await FollowRequests.delete({
- followeeId: followee.id,
- followerId: follower.id,
- });
-
- if (Users.isLocalUser(followee)) {
- Users.pack(followee, followee, {
- detail: true,
- }).then(packed => publishMainStream(followee.id, 'meUpdated', packed));
- }
-
- if (Users.isLocalUser(follower)) {
- Users.pack(followee, follower, {
- detail: true,
- }).then(async packed => {
- publishUserEvent(follower.id, 'unfollow', packed);
- publishMainStream(follower.id, 'unfollow', packed);
-
- const webhooks = (await getActiveWebhooks()).filter(x => x.userId === follower.id && x.on.includes('unfollow'));
- for (const webhook of webhooks) {
- webhookDeliver(webhook, 'unfollow', {
- user: packed,
- });
- }
- });
- }
-
- // リモートにフォローリクエストをしていたらUndoFollow送信
- if (Users.isLocalUser(follower) && Users.isRemoteUser(followee)) {
- const content = renderActivity(renderUndo(renderFollow(follower, followee), follower));
- deliver(follower, content, followee.inbox);
- }
-
- // リモートからフォローリクエストを受けていたらReject送信
- if (Users.isRemoteUser(follower) && Users.isLocalUser(followee)) {
- const content = renderActivity(renderReject(renderFollow(follower, followee, request.requestId!), followee));
- deliver(followee, content, follower.inbox);
- }
-}
-
-async function unFollow(follower: User, followee: User) {
- const following = await Followings.findOneBy({
- followerId: follower.id,
- followeeId: followee.id,
- });
-
- if (following == null) {
- return;
- }
-
- await Promise.all([
- Followings.delete(following.id),
- Users.decrement({ id: follower.id }, 'followingCount', 1),
- Users.decrement({ id: followee.id }, 'followersCount', 1),
- perUserFollowingChart.update(follower, followee, false),
- ]);
-
- // Publish unfollow event
- if (Users.isLocalUser(follower)) {
- Users.pack(followee, follower, {
- detail: true,
- }).then(async packed => {
- publishUserEvent(follower.id, 'unfollow', packed);
- publishMainStream(follower.id, 'unfollow', packed);
-
- const webhooks = (await getActiveWebhooks()).filter(x => x.userId === follower.id && x.on.includes('unfollow'));
- for (const webhook of webhooks) {
- webhookDeliver(webhook, 'unfollow', {
- user: packed,
- });
- }
- });
- }
-
- // リモートにフォローをしていたらUndoFollow送信
- if (Users.isLocalUser(follower) && Users.isRemoteUser(followee)) {
- const content = renderActivity(renderUndo(renderFollow(follower, followee), follower));
- deliver(follower, content, followee.inbox);
- }
-}
-
-async function removeFromList(listOwner: User, user: User) {
- const userLists = await UserLists.findBy({
- userId: listOwner.id,
- });
-
- for (const userList of userLists) {
- await UserListJoinings.delete({
- userListId: userList.id,
- userId: user.id,
- });
- }
-}
diff --git a/packages/backend/src/services/blocking/delete.ts b/packages/backend/src/services/blocking/delete.ts
deleted file mode 100644
index cb16651bc0..0000000000
--- a/packages/backend/src/services/blocking/delete.ts
+++ /dev/null
@@ -1,34 +0,0 @@
-import { renderActivity } from '@/remote/activitypub/renderer/index.js';
-import { renderBlock } from '@/remote/activitypub/renderer/block.js';
-import renderUndo from '@/remote/activitypub/renderer/undo.js';
-import { deliver } from '@/queue/index.js';
-import Logger from '../logger.js';
-import { CacheableUser, User } from '@/models/entities/user.js';
-import { Blockings, Users } from '@/models/index.js';
-
-const logger = new Logger('blocking/delete');
-
-export default async function(blocker: CacheableUser, blockee: CacheableUser) {
- const blocking = await Blockings.findOneBy({
- blockerId: blocker.id,
- blockeeId: blockee.id,
- });
-
- if (blocking == null) {
- logger.warn('ブロック解除がリクエストされましたがブロックしていませんでした');
- return;
- }
-
- // Since we already have the blocker and blockee, we do not need to fetch
- // them in the query above and can just manually insert them here.
- blocking.blocker = blocker;
- blocking.blockee = blockee;
-
- Blockings.delete(blocking.id);
-
- // deliver if remote bloking
- if (Users.isLocalUser(blocker) && Users.isRemoteUser(blockee)) {
- const content = renderActivity(renderUndo(renderBlock(blocking), blocker));
- deliver(blocker, content, blockee.inbox);
- }
-}