From 712c0ef27d72e522f8628c349b5ccf950cfeaed6 Mon Sep 17 00:00:00 2001 From: syuilo Date: Fri, 25 May 2018 21:05:16 +0900 Subject: Refactor: Use better english --- src/server/api/endpoints/notes/context.ts | 63 -------------------------- src/server/api/endpoints/notes/conversation.ts | 58 ++++++++++++++++++++++++ 2 files changed, 58 insertions(+), 63 deletions(-) delete mode 100644 src/server/api/endpoints/notes/context.ts create mode 100644 src/server/api/endpoints/notes/conversation.ts (limited to 'src/server/api/endpoints/notes') diff --git a/src/server/api/endpoints/notes/context.ts b/src/server/api/endpoints/notes/context.ts deleted file mode 100644 index 1cd27250e2..0000000000 --- a/src/server/api/endpoints/notes/context.ts +++ /dev/null @@ -1,63 +0,0 @@ -/** - * Module dependencies - */ -import $ from 'cafy'; import ID from '../../../../cafy-id'; -import Note, { pack } from '../../../../models/note'; - -/** - * Show a context of a note - * - * @param {any} params - * @param {any} user - * @return {Promise} - */ -module.exports = (params, user) => new Promise(async (res, rej) => { - // Get 'noteId' parameter - const [noteId, noteIdErr] = $.type(ID).get(params.noteId); - if (noteIdErr) return rej('invalid noteId param'); - - // Get 'limit' parameter - const [limit = 10, limitErr] = $.num.optional().range(1, 100).get(params.limit); - if (limitErr) return rej('invalid limit param'); - - // Get 'offset' parameter - const [offset = 0, offsetErr] = $.num.optional().min(0).get(params.offset); - if (offsetErr) return rej('invalid offset param'); - - // Lookup note - const note = await Note.findOne({ - _id: noteId - }); - - if (note === null) { - return rej('note not found'); - } - - const context = []; - let i = 0; - - async function get(id) { - i++; - const p = await Note.findOne({ _id: id }); - - if (i > offset) { - context.push(p); - } - - if (context.length == limit) { - return; - } - - if (p.replyId) { - await get(p.replyId); - } - } - - if (note.replyId) { - await get(note.replyId); - } - - // Serialize - res(await Promise.all(context.map(async note => - await pack(note, user)))); -}); diff --git a/src/server/api/endpoints/notes/conversation.ts b/src/server/api/endpoints/notes/conversation.ts new file mode 100644 index 0000000000..02f7229ccf --- /dev/null +++ b/src/server/api/endpoints/notes/conversation.ts @@ -0,0 +1,58 @@ +/** + * Module dependencies + */ +import $ from 'cafy'; import ID from '../../../../cafy-id'; +import Note, { pack } from '../../../../models/note'; + +/** + * Show conversation of a note + */ +module.exports = (params, user) => new Promise(async (res, rej) => { + // Get 'noteId' parameter + const [noteId, noteIdErr] = $.type(ID).get(params.noteId); + if (noteIdErr) return rej('invalid noteId param'); + + // Get 'limit' parameter + const [limit = 10, limitErr] = $.num.optional().range(1, 100).get(params.limit); + if (limitErr) return rej('invalid limit param'); + + // Get 'offset' parameter + const [offset = 0, offsetErr] = $.num.optional().min(0).get(params.offset); + if (offsetErr) return rej('invalid offset param'); + + // Lookup note + const note = await Note.findOne({ + _id: noteId + }); + + if (note === null) { + return rej('note not found'); + } + + const conversation = []; + let i = 0; + + async function get(id) { + i++; + const p = await Note.findOne({ _id: id }); + + if (i > offset) { + conversation.push(p); + } + + if (conversation.length == limit) { + return; + } + + if (p.replyId) { + await get(p.replyId); + } + } + + if (note.replyId) { + await get(note.replyId); + } + + // Serialize + res(await Promise.all(conversation.map(note => pack(note, user)))); +}); -- cgit v1.2.3-freya