From 1ba5dfd79c66edd871f922d21861557e6152cc6c Mon Sep 17 00:00:00 2001 From: syuilo Date: Wed, 25 Apr 2018 06:34:50 +0900 Subject: wip --- .../app/desktop/views/components/lists-window.vue | 37 +++++++++++++++++ src/server/api/endpoints/users/list/create.ts | 25 ----------- src/server/api/endpoints/users/list/push.ts | 48 ---------------------- src/server/api/endpoints/users/lists/create.ts | 25 +++++++++++ src/server/api/endpoints/users/lists/list.ts | 13 ++++++ src/server/api/endpoints/users/lists/push.ts | 48 ++++++++++++++++++++++ 6 files changed, 123 insertions(+), 73 deletions(-) create mode 100644 src/client/app/desktop/views/components/lists-window.vue delete mode 100644 src/server/api/endpoints/users/list/create.ts delete mode 100644 src/server/api/endpoints/users/list/push.ts create mode 100644 src/server/api/endpoints/users/lists/create.ts create mode 100644 src/server/api/endpoints/users/lists/list.ts create mode 100644 src/server/api/endpoints/users/lists/push.ts (limited to 'src') diff --git a/src/client/app/desktop/views/components/lists-window.vue b/src/client/app/desktop/views/components/lists-window.vue new file mode 100644 index 0000000000..7d6a5def2c --- /dev/null +++ b/src/client/app/desktop/views/components/lists-window.vue @@ -0,0 +1,37 @@ + + + + + diff --git a/src/server/api/endpoints/users/list/create.ts b/src/server/api/endpoints/users/list/create.ts deleted file mode 100644 index 6ae510f52b..0000000000 --- a/src/server/api/endpoints/users/list/create.ts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * Module dependencies - */ -import $ from 'cafy'; -import UserList, { pack } from '../../../../../models/user-list'; - -/** - * Create a user list - */ -module.exports = async (params, user) => new Promise(async (res, rej) => { - // Get 'title' parameter - const [title, titleErr] = $(params.title).string().range(1, 100).$; - if (titleErr) return rej('invalid title param'); - - // insert - const userList = await UserList.insert({ - createdAt: new Date(), - userId: user._id, - title: title, - userIds: [] - }); - - // Response - res(await pack(userList)); -}); diff --git a/src/server/api/endpoints/users/list/push.ts b/src/server/api/endpoints/users/list/push.ts deleted file mode 100644 index f21234775d..0000000000 --- a/src/server/api/endpoints/users/list/push.ts +++ /dev/null @@ -1,48 +0,0 @@ -import $ from 'cafy'; import ID from '../../../../../cafy-id'; -import UserList from '../../../../../models/user-list'; -import User from '../../../../../models/user'; - -/** - * Add a user to a user list - */ -module.exports = async (params, me) => new Promise(async (res, rej) => { - // Get 'listId' parameter - const [listId, listIdErr] = $(params.listId).type(ID).$; - if (listIdErr) return rej('invalid listId param'); - - // Fetch the list - const userList = await UserList.findOne({ - _id: listId, - userId: me._id, - }); - - if (userList == null) { - return rej('list not found'); - } - - // Get 'userId' parameter - const [userId, userIdErr] = $(params.userId).type(ID).$; - if (userIdErr) return rej('invalid userId param'); - - // Fetch the user - const user = await User.findOne({ - _id: userId - }); - - if (user == null) { - return rej('user not found'); - } - - if (userList.userIds.map(id => id.toHexString()).includes(user._id.toHexString())) { - return rej('the user already added'); - } - - // Push the user - await UserList.update({ _id: userList._id }, { - $push: { - userIds: user._id - } - }); - - res(); -}); diff --git a/src/server/api/endpoints/users/lists/create.ts b/src/server/api/endpoints/users/lists/create.ts new file mode 100644 index 0000000000..6ae510f52b --- /dev/null +++ b/src/server/api/endpoints/users/lists/create.ts @@ -0,0 +1,25 @@ +/** + * Module dependencies + */ +import $ from 'cafy'; +import UserList, { pack } from '../../../../../models/user-list'; + +/** + * Create a user list + */ +module.exports = async (params, user) => new Promise(async (res, rej) => { + // Get 'title' parameter + const [title, titleErr] = $(params.title).string().range(1, 100).$; + if (titleErr) return rej('invalid title param'); + + // insert + const userList = await UserList.insert({ + createdAt: new Date(), + userId: user._id, + title: title, + userIds: [] + }); + + // Response + res(await pack(userList)); +}); diff --git a/src/server/api/endpoints/users/lists/list.ts b/src/server/api/endpoints/users/lists/list.ts new file mode 100644 index 0000000000..d19339a1f5 --- /dev/null +++ b/src/server/api/endpoints/users/lists/list.ts @@ -0,0 +1,13 @@ +import UserList, { pack } from '../../../../../models/user-list'; + +/** + * Add a user to a user list + */ +module.exports = async (params, me) => new Promise(async (res, rej) => { + // Fetch lists + const userLists = await UserList.find({ + userId: me._id, + }); + + res(await Promise.all(userLists.map(x => pack(x)))); +}); diff --git a/src/server/api/endpoints/users/lists/push.ts b/src/server/api/endpoints/users/lists/push.ts new file mode 100644 index 0000000000..f21234775d --- /dev/null +++ b/src/server/api/endpoints/users/lists/push.ts @@ -0,0 +1,48 @@ +import $ from 'cafy'; import ID from '../../../../../cafy-id'; +import UserList from '../../../../../models/user-list'; +import User from '../../../../../models/user'; + +/** + * Add a user to a user list + */ +module.exports = async (params, me) => new Promise(async (res, rej) => { + // Get 'listId' parameter + const [listId, listIdErr] = $(params.listId).type(ID).$; + if (listIdErr) return rej('invalid listId param'); + + // Fetch the list + const userList = await UserList.findOne({ + _id: listId, + userId: me._id, + }); + + if (userList == null) { + return rej('list not found'); + } + + // Get 'userId' parameter + const [userId, userIdErr] = $(params.userId).type(ID).$; + if (userIdErr) return rej('invalid userId param'); + + // Fetch the user + const user = await User.findOne({ + _id: userId + }); + + if (user == null) { + return rej('user not found'); + } + + if (userList.userIds.map(id => id.toHexString()).includes(user._id.toHexString())) { + return rej('the user already added'); + } + + // Push the user + await UserList.update({ _id: userList._id }, { + $push: { + userIds: user._id + } + }); + + res(); +}); -- cgit v1.2.3-freya