summaryrefslogtreecommitdiff
path: root/src/server/api/endpoints
diff options
context:
space:
mode:
authorMeiMei <30769358+mei23@users.noreply.github.com>2018-10-02 16:27:36 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2018-10-02 16:27:36 +0900
commitc09a2a37fe3ab130969dd143b0ee65706871951f (patch)
tree92b3874cd806d135d920192be469a99a4cd4d6dd /src/server/api/endpoints
parent:art: (diff)
downloadsharkey-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.ts40
-rw-r--r--src/server/api/endpoints/i/unpin.ts30
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);
});