Hide suspended users (#4075)
This commit is contained in:
		
							parent
							
								
									9bf9519b8f
								
							
						
					
					
						commit
						c7ebf6f990
					
				
					 12 changed files with 94 additions and 98 deletions
				
			
		
							
								
								
									
										20
									
								
								src/server/api/common/get-hide-users.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								src/server/api/common/get-hide-users.ts
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,20 @@
 | 
			
		|||
import * as mongo from 'mongodb';
 | 
			
		||||
import Mute from '../../../models/mute';
 | 
			
		||||
import User, { IUser } from '../../../models/user';
 | 
			
		||||
import { unique } from '../../../prelude/array';
 | 
			
		||||
 | 
			
		||||
export async function getHideUserIds(me: IUser) {
 | 
			
		||||
	return me ? await getHideUserIdsById(me._id) : [];
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export async function getHideUserIdsById(meId: mongo.ObjectID) {
 | 
			
		||||
	const suspended = (await User.find({
 | 
			
		||||
		isSuspended: true
 | 
			
		||||
	})).map(user => user._id);
 | 
			
		||||
 | 
			
		||||
	const muted = meId ? (await Mute.find({
 | 
			
		||||
		muterId: meId
 | 
			
		||||
	})).map(mute => mute.muteeId) : [];
 | 
			
		||||
 | 
			
		||||
	return unique(suspended.concat(muted));
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1,10 +1,10 @@
 | 
			
		|||
import $ from 'cafy'; import ID, { transform } from '../../../../misc/cafy-id';
 | 
			
		||||
import Notification from '../../../../models/notification';
 | 
			
		||||
import Mute from '../../../../models/mute';
 | 
			
		||||
import { packMany } from '../../../../models/notification';
 | 
			
		||||
import { getFriendIds } from '../../common/get-friends';
 | 
			
		||||
import read from '../../common/read-notification';
 | 
			
		||||
import define from '../../define';
 | 
			
		||||
import { getHideUserIds } from '../../common/get-hide-users';
 | 
			
		||||
 | 
			
		||||
export const meta = {
 | 
			
		||||
	desc: {
 | 
			
		||||
| 
						 | 
				
			
			@ -60,15 +60,13 @@ export default define(meta, (ps, user) => new Promise(async (res, rej) => {
 | 
			
		|||
		return rej('cannot set sinceId and untilId');
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	const mute = await Mute.find({
 | 
			
		||||
		muterId: user._id
 | 
			
		||||
	});
 | 
			
		||||
	const hideUserIds = await getHideUserIds(user);
 | 
			
		||||
 | 
			
		||||
	const query = {
 | 
			
		||||
		notifieeId: user._id,
 | 
			
		||||
		$and: [{
 | 
			
		||||
			notifierId: {
 | 
			
		||||
				$nin: mute.map(m => m.muteeId)
 | 
			
		||||
				$nin: hideUserIds
 | 
			
		||||
			}
 | 
			
		||||
		}]
 | 
			
		||||
	} as any;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,10 +1,10 @@
 | 
			
		|||
import $ from 'cafy'; import ID, { transform } from '../../../../misc/cafy-id';
 | 
			
		||||
import Note from '../../../../models/note';
 | 
			
		||||
import Mute from '../../../../models/mute';
 | 
			
		||||
import { packMany } from '../../../../models/note';
 | 
			
		||||
import define from '../../define';
 | 
			
		||||
import { countIf } from '../../../../prelude/array';
 | 
			
		||||
import fetchMeta from '../../../../misc/fetch-meta';
 | 
			
		||||
import { getHideUserIds } from '../../common/get-hide-users';
 | 
			
		||||
 | 
			
		||||
export const meta = {
 | 
			
		||||
	desc: {
 | 
			
		||||
| 
						 | 
				
			
			@ -64,10 +64,8 @@ export default define(meta, (ps, user) => new Promise(async (res, rej) => {
 | 
			
		|||
		return rej('only one of sinceId, untilId, sinceDate, untilDate can be specified');
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// ミュートしているユーザーを取得
 | 
			
		||||
	const mutedUserIds = user ? (await Mute.find({
 | 
			
		||||
		muterId: user._id
 | 
			
		||||
	})).map(m => m.muteeId) : null;
 | 
			
		||||
	// 隠すユーザーを取得
 | 
			
		||||
	const hideUserIds = await getHideUserIds(user);
 | 
			
		||||
 | 
			
		||||
	//#region Construct query
 | 
			
		||||
	const sort = {
 | 
			
		||||
| 
						 | 
				
			
			@ -83,17 +81,17 @@ export default define(meta, (ps, user) => new Promise(async (res, rej) => {
 | 
			
		|||
		replyId: null
 | 
			
		||||
	} as any;
 | 
			
		||||
 | 
			
		||||
	if (mutedUserIds && mutedUserIds.length > 0) {
 | 
			
		||||
	if (hideUserIds && hideUserIds.length > 0) {
 | 
			
		||||
		query.userId = {
 | 
			
		||||
			$nin: mutedUserIds
 | 
			
		||||
			$nin: hideUserIds
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		query['_reply.userId'] = {
 | 
			
		||||
			$nin: mutedUserIds
 | 
			
		||||
			$nin: hideUserIds
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		query['_renote.userId'] = {
 | 
			
		||||
			$nin: mutedUserIds
 | 
			
		||||
			$nin: hideUserIds
 | 
			
		||||
		};
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,12 +1,12 @@
 | 
			
		|||
import $ from 'cafy'; import ID, { transform } from '../../../../misc/cafy-id';
 | 
			
		||||
import Note from '../../../../models/note';
 | 
			
		||||
import Mute from '../../../../models/mute';
 | 
			
		||||
import { getFriends } from '../../common/get-friends';
 | 
			
		||||
import { packMany } from '../../../../models/note';
 | 
			
		||||
import define from '../../define';
 | 
			
		||||
import { countIf } from '../../../../prelude/array';
 | 
			
		||||
import fetchMeta from '../../../../misc/fetch-meta';
 | 
			
		||||
import activeUsersChart from '../../../../chart/active-users';
 | 
			
		||||
import { getHideUserIds } from '../../common/get-hide-users';
 | 
			
		||||
 | 
			
		||||
export const meta = {
 | 
			
		||||
	desc: {
 | 
			
		||||
| 
						 | 
				
			
			@ -103,15 +103,13 @@ export default define(meta, (ps, user) => new Promise(async (res, rej) => {
 | 
			
		|||
		return rej('only one of sinceId, untilId, sinceDate, untilDate can be specified');
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	const [followings, mutedUserIds] = await Promise.all([
 | 
			
		||||
	const [followings, hideUserIds] = await Promise.all([
 | 
			
		||||
		// フォローを取得
 | 
			
		||||
		// Fetch following
 | 
			
		||||
		getFriends(user._id, true, false),
 | 
			
		||||
 | 
			
		||||
		// ミュートしているユーザーを取得
 | 
			
		||||
		Mute.find({
 | 
			
		||||
			muterId: user._id
 | 
			
		||||
		}).then(ms => ms.map(m => m.muteeId))
 | 
			
		||||
		// 隠すユーザーを取得
 | 
			
		||||
		getHideUserIds(user)
 | 
			
		||||
	]);
 | 
			
		||||
 | 
			
		||||
	//#region Construct query
 | 
			
		||||
| 
						 | 
				
			
			@ -175,15 +173,15 @@ export default define(meta, (ps, user) => new Promise(async (res, rej) => {
 | 
			
		|||
				'_user.host': null
 | 
			
		||||
			}],
 | 
			
		||||
 | 
			
		||||
			// mute
 | 
			
		||||
			// hide
 | 
			
		||||
			userId: {
 | 
			
		||||
				$nin: mutedUserIds
 | 
			
		||||
				$nin: hideUserIds
 | 
			
		||||
			},
 | 
			
		||||
			'_reply.userId': {
 | 
			
		||||
				$nin: mutedUserIds
 | 
			
		||||
				$nin: hideUserIds
 | 
			
		||||
			},
 | 
			
		||||
			'_renote.userId': {
 | 
			
		||||
				$nin: mutedUserIds
 | 
			
		||||
				$nin: hideUserIds
 | 
			
		||||
			},
 | 
			
		||||
		}]
 | 
			
		||||
	} as any;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,11 +1,11 @@
 | 
			
		|||
import $ from 'cafy'; import ID, { transform } from '../../../../misc/cafy-id';
 | 
			
		||||
import Note from '../../../../models/note';
 | 
			
		||||
import Mute from '../../../../models/mute';
 | 
			
		||||
import { packMany } from '../../../../models/note';
 | 
			
		||||
import define from '../../define';
 | 
			
		||||
import { countIf } from '../../../../prelude/array';
 | 
			
		||||
import fetchMeta from '../../../../misc/fetch-meta';
 | 
			
		||||
import activeUsersChart from '../../../../chart/active-users';
 | 
			
		||||
import { getHideUserIds } from '../../common/get-hide-users';
 | 
			
		||||
 | 
			
		||||
export const meta = {
 | 
			
		||||
	desc: {
 | 
			
		||||
| 
						 | 
				
			
			@ -80,10 +80,8 @@ export default define(meta, (ps, user) => new Promise(async (res, rej) => {
 | 
			
		|||
		return rej('only one of sinceId, untilId, sinceDate, untilDate can be specified');
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// ミュートしているユーザーを取得
 | 
			
		||||
	const mutedUserIds = user ? (await Mute.find({
 | 
			
		||||
		muterId: user._id
 | 
			
		||||
	})).map(m => m.muteeId) : null;
 | 
			
		||||
	// 隠すユーザーを取得
 | 
			
		||||
	const hideUserIds = await getHideUserIds(user);
 | 
			
		||||
 | 
			
		||||
	//#region Construct query
 | 
			
		||||
	const sort = {
 | 
			
		||||
| 
						 | 
				
			
			@ -103,17 +101,17 @@ export default define(meta, (ps, user) => new Promise(async (res, rej) => {
 | 
			
		|||
		'_user.host': null
 | 
			
		||||
	} as any;
 | 
			
		||||
 | 
			
		||||
	if (mutedUserIds && mutedUserIds.length > 0) {
 | 
			
		||||
	if (hideUserIds && hideUserIds.length > 0) {
 | 
			
		||||
		query.userId = {
 | 
			
		||||
			$nin: mutedUserIds
 | 
			
		||||
			$nin: hideUserIds
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		query['_reply.userId'] = {
 | 
			
		||||
			$nin: mutedUserIds
 | 
			
		||||
			$nin: hideUserIds
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		query['_renote.userId'] = {
 | 
			
		||||
			$nin: mutedUserIds
 | 
			
		||||
			$nin: hideUserIds
 | 
			
		||||
		};
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,7 +4,7 @@ import { getFriendIds, getFriends } from '../../common/get-friends';
 | 
			
		|||
import { packMany } from '../../../../models/note';
 | 
			
		||||
import define from '../../define';
 | 
			
		||||
import read from '../../../../services/note/read';
 | 
			
		||||
import Mute from '../../../../models/mute';
 | 
			
		||||
import { getHideUserIds } from '../../common/get-hide-users';
 | 
			
		||||
 | 
			
		||||
export const meta = {
 | 
			
		||||
	desc: {
 | 
			
		||||
| 
						 | 
				
			
			@ -86,22 +86,20 @@ export default define(meta, (ps, user) => new Promise(async (res, rej) => {
 | 
			
		|||
		}]
 | 
			
		||||
	} as any;
 | 
			
		||||
 | 
			
		||||
	// ミュートしているユーザーを取得
 | 
			
		||||
	const mutedUserIds = (await Mute.find({
 | 
			
		||||
		muterId: user._id
 | 
			
		||||
	})).map(m => m.muteeId);
 | 
			
		||||
	// 隠すユーザーを取得
 | 
			
		||||
	const hideUserIds = await getHideUserIds(user);
 | 
			
		||||
 | 
			
		||||
	if (mutedUserIds && mutedUserIds.length > 0) {
 | 
			
		||||
	if (hideUserIds && hideUserIds.length > 0) {
 | 
			
		||||
		query.userId = {
 | 
			
		||||
			$nin: mutedUserIds
 | 
			
		||||
			$nin: hideUserIds
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		query['_reply.userId'] = {
 | 
			
		||||
			$nin: mutedUserIds
 | 
			
		||||
			$nin: hideUserIds
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		query['_renote.userId'] = {
 | 
			
		||||
			$nin: mutedUserIds
 | 
			
		||||
			$nin: hideUserIds
 | 
			
		||||
		};
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2,7 +2,7 @@ import $ from 'cafy';
 | 
			
		|||
import Vote from '../../../../../models/poll-vote';
 | 
			
		||||
import Note, { pack } from '../../../../../models/note';
 | 
			
		||||
import define from '../../../define';
 | 
			
		||||
import Mute from '../../../../../models/mute';
 | 
			
		||||
import { getHideUserIds } from '../../../common/get-hide-users';
 | 
			
		||||
 | 
			
		||||
export const meta = {
 | 
			
		||||
	desc: {
 | 
			
		||||
| 
						 | 
				
			
			@ -38,10 +38,8 @@ export default define(meta, (ps, user) => new Promise(async (res, rej) => {
 | 
			
		|||
 | 
			
		||||
	const nin = votes && votes.length != 0 ? votes.map(v => v.noteId) : [];
 | 
			
		||||
 | 
			
		||||
	// ミュートしているユーザーを取得
 | 
			
		||||
	const mutedUserIds = await Mute.find({
 | 
			
		||||
		muterId: user._id
 | 
			
		||||
	}).then(ms => ms.map(m => m.muteeId));
 | 
			
		||||
	// 隠すユーザーを取得
 | 
			
		||||
	const hideUserIds = await getHideUserIds(user);
 | 
			
		||||
 | 
			
		||||
	const notes = await Note
 | 
			
		||||
		.find({
 | 
			
		||||
| 
						 | 
				
			
			@ -51,7 +49,7 @@ export default define(meta, (ps, user) => new Promise(async (res, rej) => {
 | 
			
		|||
			},
 | 
			
		||||
			userId: {
 | 
			
		||||
				$ne: user._id,
 | 
			
		||||
				$nin: mutedUserIds
 | 
			
		||||
				$nin: hideUserIds
 | 
			
		||||
			},
 | 
			
		||||
			poll: {
 | 
			
		||||
				$exists: true,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
import $ from 'cafy'; import ID, { transform } from '../../../../misc/cafy-id';
 | 
			
		||||
import Note, { packMany } from '../../../../models/note';
 | 
			
		||||
import define from '../../define';
 | 
			
		||||
import Mute from '../../../../models/mute';
 | 
			
		||||
import { getFriends } from '../../common/get-friends';
 | 
			
		||||
import { getHideUserIds } from '../../common/get-hide-users';
 | 
			
		||||
 | 
			
		||||
export const meta = {
 | 
			
		||||
	desc: {
 | 
			
		||||
| 
						 | 
				
			
			@ -35,15 +35,13 @@ export const meta = {
 | 
			
		|||
};
 | 
			
		||||
 | 
			
		||||
export default define(meta, (ps, user) => new Promise(async (res, rej) => {
 | 
			
		||||
	const [followings, mutedUserIds] = await Promise.all([
 | 
			
		||||
	const [followings, hideUserIds] = await Promise.all([
 | 
			
		||||
		// フォローを取得
 | 
			
		||||
		// Fetch following
 | 
			
		||||
		user ? getFriends(user._id) : [],
 | 
			
		||||
 | 
			
		||||
		// ミュートしているユーザーを取得
 | 
			
		||||
		user ? (await Mute.find({
 | 
			
		||||
			muterId: user._id
 | 
			
		||||
		})).map(m => m.muteeId) : null
 | 
			
		||||
		// 隠すユーザーを取得
 | 
			
		||||
		getHideUserIds(user)
 | 
			
		||||
	]);
 | 
			
		||||
 | 
			
		||||
	const visibleQuery = user == null ? [{
 | 
			
		||||
| 
						 | 
				
			
			@ -75,9 +73,9 @@ export default define(meta, (ps, user) => new Promise(async (res, rej) => {
 | 
			
		|||
		$or: visibleQuery
 | 
			
		||||
	} as any;
 | 
			
		||||
 | 
			
		||||
	if (mutedUserIds && mutedUserIds.length > 0) {
 | 
			
		||||
	if (hideUserIds && hideUserIds.length > 0) {
 | 
			
		||||
		q['userId'] = {
 | 
			
		||||
			$nin: mutedUserIds
 | 
			
		||||
			$nin: hideUserIds
 | 
			
		||||
		};
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,9 +1,9 @@
 | 
			
		|||
import $ from 'cafy'; import ID, { transform } from '../../../../misc/cafy-id';
 | 
			
		||||
import Note from '../../../../models/note';
 | 
			
		||||
import Mute from '../../../../models/mute';
 | 
			
		||||
import { getFriendIds } from '../../common/get-friends';
 | 
			
		||||
import { packMany } from '../../../../models/note';
 | 
			
		||||
import define from '../../define';
 | 
			
		||||
import { getHideUserIds } from '../../common/get-hide-users';
 | 
			
		||||
 | 
			
		||||
export const meta = {
 | 
			
		||||
	desc: {
 | 
			
		||||
| 
						 | 
				
			
			@ -143,47 +143,43 @@ export default define(meta, (ps, me) => new Promise(async (res, rej) => {
 | 
			
		|||
	}
 | 
			
		||||
 | 
			
		||||
	if (me != null) {
 | 
			
		||||
		const mutes = await Mute.find({
 | 
			
		||||
			muterId: me._id,
 | 
			
		||||
			deletedAt: { $exists: false }
 | 
			
		||||
		});
 | 
			
		||||
		const mutedUserIds = mutes.map(m => m.muteeId);
 | 
			
		||||
		const hideUserIds = await getHideUserIds(me);
 | 
			
		||||
 | 
			
		||||
		switch (ps.mute) {
 | 
			
		||||
			case 'mute_all':
 | 
			
		||||
				push({
 | 
			
		||||
					userId: {
 | 
			
		||||
						$nin: mutedUserIds
 | 
			
		||||
						$nin: hideUserIds
 | 
			
		||||
					},
 | 
			
		||||
					'_reply.userId': {
 | 
			
		||||
						$nin: mutedUserIds
 | 
			
		||||
						$nin: hideUserIds
 | 
			
		||||
					},
 | 
			
		||||
					'_renote.userId': {
 | 
			
		||||
						$nin: mutedUserIds
 | 
			
		||||
						$nin: hideUserIds
 | 
			
		||||
					}
 | 
			
		||||
				});
 | 
			
		||||
				break;
 | 
			
		||||
			case 'mute_related':
 | 
			
		||||
				push({
 | 
			
		||||
					'_reply.userId': {
 | 
			
		||||
						$nin: mutedUserIds
 | 
			
		||||
						$nin: hideUserIds
 | 
			
		||||
					},
 | 
			
		||||
					'_renote.userId': {
 | 
			
		||||
						$nin: mutedUserIds
 | 
			
		||||
						$nin: hideUserIds
 | 
			
		||||
					}
 | 
			
		||||
				});
 | 
			
		||||
				break;
 | 
			
		||||
			case 'mute_direct':
 | 
			
		||||
				push({
 | 
			
		||||
					userId: {
 | 
			
		||||
						$nin: mutedUserIds
 | 
			
		||||
						$nin: hideUserIds
 | 
			
		||||
					}
 | 
			
		||||
				});
 | 
			
		||||
				break;
 | 
			
		||||
			case 'direct_only':
 | 
			
		||||
				push({
 | 
			
		||||
					userId: {
 | 
			
		||||
						$in: mutedUserIds
 | 
			
		||||
						$in: hideUserIds
 | 
			
		||||
					}
 | 
			
		||||
				});
 | 
			
		||||
				break;
 | 
			
		||||
| 
						 | 
				
			
			@ -191,11 +187,11 @@ export default define(meta, (ps, me) => new Promise(async (res, rej) => {
 | 
			
		|||
				push({
 | 
			
		||||
					$or: [{
 | 
			
		||||
						'_reply.userId': {
 | 
			
		||||
							$in: mutedUserIds
 | 
			
		||||
							$in: hideUserIds
 | 
			
		||||
						}
 | 
			
		||||
					}, {
 | 
			
		||||
						'_renote.userId': {
 | 
			
		||||
							$in: mutedUserIds
 | 
			
		||||
							$in: hideUserIds
 | 
			
		||||
						}
 | 
			
		||||
					}]
 | 
			
		||||
				});
 | 
			
		||||
| 
						 | 
				
			
			@ -204,15 +200,15 @@ export default define(meta, (ps, me) => new Promise(async (res, rej) => {
 | 
			
		|||
				push({
 | 
			
		||||
					$or: [{
 | 
			
		||||
						userId: {
 | 
			
		||||
							$in: mutedUserIds
 | 
			
		||||
							$in: hideUserIds
 | 
			
		||||
						}
 | 
			
		||||
					}, {
 | 
			
		||||
						'_reply.userId': {
 | 
			
		||||
							$in: mutedUserIds
 | 
			
		||||
							$in: hideUserIds
 | 
			
		||||
						}
 | 
			
		||||
					}, {
 | 
			
		||||
						'_renote.userId': {
 | 
			
		||||
							$in: mutedUserIds
 | 
			
		||||
							$in: hideUserIds
 | 
			
		||||
						}
 | 
			
		||||
					}]
 | 
			
		||||
				});
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,11 +1,11 @@
 | 
			
		|||
import $ from 'cafy'; import ID, { transform } from '../../../../misc/cafy-id';
 | 
			
		||||
import Note from '../../../../models/note';
 | 
			
		||||
import Mute from '../../../../models/mute';
 | 
			
		||||
import { getFriends } from '../../common/get-friends';
 | 
			
		||||
import { packMany } from '../../../../models/note';
 | 
			
		||||
import define from '../../define';
 | 
			
		||||
import { countIf } from '../../../../prelude/array';
 | 
			
		||||
import activeUsersChart from '../../../../chart/active-users';
 | 
			
		||||
import { getHideUserIds } from '../../common/get-hide-users';
 | 
			
		||||
 | 
			
		||||
export const meta = {
 | 
			
		||||
	desc: {
 | 
			
		||||
| 
						 | 
				
			
			@ -101,15 +101,13 @@ export default define(meta, (ps, user) => new Promise(async (res, rej) => {
 | 
			
		|||
		return;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	const [followings, mutedUserIds] = await Promise.all([
 | 
			
		||||
	const [followings, hideUserIds] = await Promise.all([
 | 
			
		||||
		// フォローを取得
 | 
			
		||||
		// Fetch following
 | 
			
		||||
		getFriends(user._id),
 | 
			
		||||
 | 
			
		||||
		// ミュートしているユーザーを取得
 | 
			
		||||
		Mute.find({
 | 
			
		||||
			muterId: user._id
 | 
			
		||||
		}).then(ms => ms.map(m => m.muteeId))
 | 
			
		||||
		// 隠すユーザーを取得
 | 
			
		||||
		getHideUserIds(user)
 | 
			
		||||
	]);
 | 
			
		||||
 | 
			
		||||
	//#region Construct query
 | 
			
		||||
| 
						 | 
				
			
			@ -164,13 +162,13 @@ export default define(meta, (ps, user) => new Promise(async (res, rej) => {
 | 
			
		|||
 | 
			
		||||
			// mute
 | 
			
		||||
			userId: {
 | 
			
		||||
				$nin: mutedUserIds
 | 
			
		||||
				$nin: hideUserIds
 | 
			
		||||
			},
 | 
			
		||||
			'_reply.userId': {
 | 
			
		||||
				$nin: mutedUserIds
 | 
			
		||||
				$nin: hideUserIds
 | 
			
		||||
			},
 | 
			
		||||
			'_renote.userId': {
 | 
			
		||||
				$nin: mutedUserIds
 | 
			
		||||
				$nin: hideUserIds
 | 
			
		||||
			},
 | 
			
		||||
		}]
 | 
			
		||||
	} as any;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,10 +1,10 @@
 | 
			
		|||
import $ from 'cafy'; import ID, { transform } from '../../../../misc/cafy-id';
 | 
			
		||||
import Note from '../../../../models/note';
 | 
			
		||||
import Mute from '../../../../models/mute';
 | 
			
		||||
import { packMany } from '../../../../models/note';
 | 
			
		||||
import UserList from '../../../../models/user-list';
 | 
			
		||||
import define from '../../define';
 | 
			
		||||
import { getFriends } from '../../common/get-friends';
 | 
			
		||||
import { getHideUserIds } from '../../common/get-hide-users';
 | 
			
		||||
 | 
			
		||||
export const meta = {
 | 
			
		||||
	desc: {
 | 
			
		||||
| 
						 | 
				
			
			@ -102,7 +102,7 @@ export const meta = {
 | 
			
		|||
};
 | 
			
		||||
 | 
			
		||||
export default define(meta, (ps, user) => new Promise(async (res, rej) => {
 | 
			
		||||
	const [list, followings, mutedUserIds] = await Promise.all([
 | 
			
		||||
	const [list, followings, hideUserIds] = await Promise.all([
 | 
			
		||||
		// リストを取得
 | 
			
		||||
		// Fetch the list
 | 
			
		||||
		UserList.findOne({
 | 
			
		||||
| 
						 | 
				
			
			@ -114,10 +114,8 @@ export default define(meta, (ps, user) => new Promise(async (res, rej) => {
 | 
			
		|||
		// Fetch following
 | 
			
		||||
		getFriends(user._id, true, false),
 | 
			
		||||
 | 
			
		||||
		// ミュートしているユーザーを取得
 | 
			
		||||
		Mute.find({
 | 
			
		||||
			muterId: user._id
 | 
			
		||||
		}).then(ms => ms.map(m => m.muteeId))
 | 
			
		||||
		// 隠すユーザーを取得
 | 
			
		||||
		getHideUserIds(user)
 | 
			
		||||
	]);
 | 
			
		||||
 | 
			
		||||
	if (list.userIds.length == 0) {
 | 
			
		||||
| 
						 | 
				
			
			@ -178,13 +176,13 @@ export default define(meta, (ps, user) => new Promise(async (res, rej) => {
 | 
			
		|||
 | 
			
		||||
			// mute
 | 
			
		||||
			userId: {
 | 
			
		||||
				$nin: mutedUserIds
 | 
			
		||||
				$nin: hideUserIds
 | 
			
		||||
			},
 | 
			
		||||
			'_reply.userId': {
 | 
			
		||||
				$nin: mutedUserIds
 | 
			
		||||
				$nin: hideUserIds
 | 
			
		||||
			},
 | 
			
		||||
			'_renote.userId': {
 | 
			
		||||
				$nin: mutedUserIds
 | 
			
		||||
				$nin: hideUserIds
 | 
			
		||||
			},
 | 
			
		||||
		}]
 | 
			
		||||
	} as any;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2,12 +2,12 @@ const ms = require('ms');
 | 
			
		|||
import $ from 'cafy';
 | 
			
		||||
import User, { pack, ILocalUser } from '../../../../models/user';
 | 
			
		||||
import { getFriendIds } from '../../common/get-friends';
 | 
			
		||||
import Mute from '../../../../models/mute';
 | 
			
		||||
import * as request from 'request-promise-native';
 | 
			
		||||
import config from '../../../../config';
 | 
			
		||||
import define from '../../define';
 | 
			
		||||
import fetchMeta from '../../../../misc/fetch-meta';
 | 
			
		||||
import resolveUser from '../../../../remote/resolve-user';
 | 
			
		||||
import { getHideUserIds } from '../../common/get-hide-users';
 | 
			
		||||
 | 
			
		||||
export const meta = {
 | 
			
		||||
	desc: {
 | 
			
		||||
| 
						 | 
				
			
			@ -62,15 +62,13 @@ export default define(meta, (ps, me) => new Promise(async (res, rej) => {
 | 
			
		|||
		// ID list of the user itself and other users who the user follows
 | 
			
		||||
		const followingIds = await getFriendIds(me._id);
 | 
			
		||||
 | 
			
		||||
		// ミュートしているユーザーを取得
 | 
			
		||||
		const mutedUserIds = (await Mute.find({
 | 
			
		||||
			muterId: me._id
 | 
			
		||||
		})).map(m => m.muteeId);
 | 
			
		||||
	// 隠すユーザーを取得
 | 
			
		||||
	const hideUserIds = await getHideUserIds(me);
 | 
			
		||||
 | 
			
		||||
		const users = await User
 | 
			
		||||
			.find({
 | 
			
		||||
				_id: {
 | 
			
		||||
					$nin: followingIds.concat(mutedUserIds)
 | 
			
		||||
					$nin: followingIds.concat(hideUserIds)
 | 
			
		||||
				},
 | 
			
		||||
				isLocked: { $ne: true },
 | 
			
		||||
				updatedAt: {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue