diff options
| author | MeiMei <30769358+mei23@users.noreply.github.com> | 2018-10-02 16:27:36 +0900 |
|---|---|---|
| committer | syuilo <Syuilotan@yahoo.co.jp> | 2018-10-02 16:27:36 +0900 |
| commit | c09a2a37fe3ab130969dd143b0ee65706871951f (patch) | |
| tree | 92b3874cd806d135d920192be469a99a4cd4d6dd /src/server/api/endpoints | |
| parent | :art: (diff) | |
| download | sharkey-c09a2a37fe3ab130969dd143b0ee65706871951f.tar.gz sharkey-c09a2a37fe3ab130969dd143b0ee65706871951f.tar.bz2 sharkey-c09a2a37fe3ab130969dd143b0ee65706871951f.zip | |
リモートのピン留め投稿取得対応 (#2798)
* Fetch featured
* Handle featured change
* Fix typo
Diffstat (limited to 'src/server/api/endpoints')
| -rw-r--r-- | src/server/api/endpoints/i/pin.ts | 40 | ||||
| -rw-r--r-- | src/server/api/endpoints/i/unpin.ts | 30 |
2 files changed, 16 insertions, 54 deletions
diff --git a/src/server/api/endpoints/i/pin.ts b/src/server/api/endpoints/i/pin.ts index f9ae032b11..bf729ca091 100644 --- a/src/server/api/endpoints/i/pin.ts +++ b/src/server/api/endpoints/i/pin.ts @@ -1,8 +1,7 @@ import $ from 'cafy'; import ID from '../../../../misc/cafy-id'; -import User, { ILocalUser } from '../../../../models/user'; -import Note from '../../../../models/note'; +import { ILocalUser } from '../../../../models/user'; import { pack } from '../../../../models/user'; -import { deliverPinnedChange } from '../../../../services/i/pin'; +import { addPinned } from '../../../../services/i/pin'; import getParams from '../../get-params'; export const meta = { @@ -27,41 +26,18 @@ export default async (params: any, user: ILocalUser) => new Promise(async (res, const [ps, psErr] = getParams(meta, params); if (psErr) return rej(psErr); - // Fetch pinee - const note = await Note.findOne({ - _id: ps.noteId, - userId: user._id - }); - - if (note === null) { - return rej('note not found'); - } - - const pinnedNoteIds = user.pinnedNoteIds || []; - - if (pinnedNoteIds.length > 5) { - return rej('cannot pin more notes'); + // Processing + try { + await addPinned(user, ps.noteId); + } catch (e) { + return rej(e.message); } - if (pinnedNoteIds.some(id => id.equals(note._id))) { - return rej('already exists'); - } - - pinnedNoteIds.unshift(note._id); - - await User.update(user._id, { - $set: { - pinnedNoteIds: pinnedNoteIds - } - }); - + // Serialize const iObj = await pack(user, user, { detail: true }); // Send response res(iObj); - - // Send Add to followers - deliverPinnedChange(user._id, note._id, true); }); diff --git a/src/server/api/endpoints/i/unpin.ts b/src/server/api/endpoints/i/unpin.ts index 82625ae5fb..2a81993e4b 100644 --- a/src/server/api/endpoints/i/unpin.ts +++ b/src/server/api/endpoints/i/unpin.ts @@ -1,8 +1,7 @@ import $ from 'cafy'; import ID from '../../../../misc/cafy-id'; -import User, { ILocalUser } from '../../../../models/user'; -import Note from '../../../../models/note'; +import { ILocalUser } from '../../../../models/user'; import { pack } from '../../../../models/user'; -import { deliverPinnedChange } from '../../../../services/i/pin'; +import { removePinned } from '../../../../services/i/pin'; import getParams from '../../get-params'; export const meta = { @@ -27,31 +26,18 @@ export default async (params: any, user: ILocalUser) => new Promise(async (res, const [ps, psErr] = getParams(meta, params); if (psErr) return rej(psErr); - // Fetch unpinee - const note = await Note.findOne({ - _id: ps.noteId, - userId: user._id - }); - - if (note === null) { - return rej('note not found'); + // Processing + try { + await removePinned(user, ps.noteId); + } catch (e) { + return rej(e.message); } - const pinnedNoteIds = (user.pinnedNoteIds || []).filter(id => !id.equals(note._id)); - - await User.update(user._id, { - $set: { - pinnedNoteIds: pinnedNoteIds - } - }); - + // Serialize const iObj = await pack(user, user, { detail: true }); // Send response res(iObj); - - // Send Remove to followers - deliverPinnedChange(user._id, note._id, false); }); |