summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorsyuilo <syuilotan@yahoo.co.jp>2019-03-14 15:19:09 +0900
committersyuilo <syuilotan@yahoo.co.jp>2019-03-14 15:19:09 +0900
commitd762a6ce5807ebc0acf3620d5f8ed1de7e1b306e (patch)
treec8f9a34b804f1da57e2af1beb8ca07a1ee2db06f /src
parentFix #4489 (diff)
parentunFollowAll on suspend (#4490) (diff)
downloadsharkey-d762a6ce5807ebc0acf3620d5f8ed1de7e1b306e.tar.gz
sharkey-d762a6ce5807ebc0acf3620d5f8ed1de7e1b306e.tar.bz2
sharkey-d762a6ce5807ebc0acf3620d5f8ed1de7e1b306e.zip
Merge branch 'develop' of https://github.com/syuilo/misskey into develop
Diffstat (limited to 'src')
-rw-r--r--src/remote/logger.ts2
-rw-r--r--src/server/api/endpoints/admin/suspend-user.ts24
-rw-r--r--src/services/following/delete.ts4
3 files changed, 26 insertions, 4 deletions
diff --git a/src/remote/logger.ts b/src/remote/logger.ts
index 43b4f105aa..d7464e7fde 100644
--- a/src/remote/logger.ts
+++ b/src/remote/logger.ts
@@ -1,3 +1,3 @@
-import Logger from "../services/logger";
+import Logger from '../services/logger';
export const remoteLogger = new Logger('remote', 'cyan');
diff --git a/src/server/api/endpoints/admin/suspend-user.ts b/src/server/api/endpoints/admin/suspend-user.ts
index 83b39fb0b9..0a2d309530 100644
--- a/src/server/api/endpoints/admin/suspend-user.ts
+++ b/src/server/api/endpoints/admin/suspend-user.ts
@@ -1,7 +1,9 @@
import $ from 'cafy';
import ID, { transform } from '../../../../misc/cafy-id';
import define from '../../define';
-import User from '../../../../models/user';
+import User, { IUser } from '../../../../models/user';
+import Following from '../../../../models/following';
+import deleteFollowing from '../../../../services/following/delete';
export const meta = {
desc: {
@@ -51,5 +53,25 @@ export default define(meta, async (ps) => {
}
});
+ unFollowAll(user);
+
return;
});
+
+async function unFollowAll(follower: IUser) {
+ const followings = await Following.find({
+ followerId: follower._id
+ });
+
+ for (const following of followings) {
+ const followee = await User.findOne({
+ _id: following.followeeId
+ });
+
+ if (followee == null) {
+ throw `Cant find followee ${following.followeeId}`;
+ }
+
+ await deleteFollowing(follower, followee, true);
+ }
+}
diff --git a/src/services/following/delete.ts b/src/services/following/delete.ts
index 28268f1fd8..d85c8472bb 100644
--- a/src/services/following/delete.ts
+++ b/src/services/following/delete.ts
@@ -13,7 +13,7 @@ import instanceChart from '../../services/chart/instance';
const logger = new Logger('following/delete');
-export default async function(follower: IUser, followee: IUser) {
+export default async function(follower: IUser, followee: IUser, silent = false) {
const following = await Following.findOne({
followerId: follower._id,
followeeId: followee._id
@@ -71,7 +71,7 @@ export default async function(follower: IUser, followee: IUser) {
perUserFollowingChart.update(follower, followee, false);
// Publish unfollow event
- if (isLocalUser(follower)) {
+ if (!silent && isLocalUser(follower)) {
packUser(followee, follower, {
detail: true
}).then(packed => publishMainStream(follower._id, 'unfollow', packed));