diff options
| author | syuilo <syuilotan@yahoo.co.jp> | 2018-12-19 07:22:01 +0900 |
|---|---|---|
| committer | syuilo <syuilotan@yahoo.co.jp> | 2018-12-19 07:22:01 +0900 |
| commit | e88ce1746ddab75baa2fbb70efa594c0b126859d (patch) | |
| tree | 01ee7aa0e1caca248f79d824e5a9a7ac464e26c7 /src/server | |
| parent | Fix error (diff) | |
| download | sharkey-e88ce1746ddab75baa2fbb70efa594c0b126859d.tar.gz sharkey-e88ce1746ddab75baa2fbb70efa594c0b126859d.tar.bz2 sharkey-e88ce1746ddab75baa2fbb70efa594c0b126859d.zip | |
リスト関連の操作を強化
Resolve #2069
Resolve #2051
Resolve #2807
Resolve #3647
Diffstat (limited to 'src/server')
| -rw-r--r-- | src/server/api/endpoints/users/lists/pull.ts | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/src/server/api/endpoints/users/lists/pull.ts b/src/server/api/endpoints/users/lists/pull.ts new file mode 100644 index 0000000000..6b755ca88f --- /dev/null +++ b/src/server/api/endpoints/users/lists/pull.ts @@ -0,0 +1,64 @@ +import $ from 'cafy'; import ID, { transform } from '../../../../../misc/cafy-id'; +import UserList from '../../../../../models/user-list'; +import User, { pack as packUser } from '../../../../../models/user'; +import { publishUserListStream } from '../../../../../stream'; +import define from '../../../define'; + +export const meta = { + desc: { + 'ja-JP': '指定したユーザーリストから指定したユーザーを削除します。', + 'en-US': 'Remove a user to a user list.' + }, + + requireCredential: true, + + kind: 'account-write', + + params: { + listId: { + validator: $.type(ID), + transform: transform, + }, + + userId: { + validator: $.type(ID), + transform: transform, + desc: { + 'ja-JP': '対象のユーザーのID', + 'en-US': 'Target user ID' + } + }, + } +}; + +export default define(meta, (ps, me) => new Promise(async (res, rej) => { + // Fetch the list + const userList = await UserList.findOne({ + _id: ps.listId, + userId: me._id, + }); + + if (userList == null) { + return rej('list not found'); + } + + // Fetch the user + const user = await User.findOne({ + _id: ps.userId + }); + + if (user == null) { + return rej('user not found'); + } + + // Push the user + await UserList.update({ _id: userList._id }, { + $pull: { + userIds: user._id + } + }); + + res(); + + publishUserListStream(userList._id, 'userRemoved', await packUser(user)); +})); |