diff options
| author | MeiMei <30769358+mei23@users.noreply.github.com> | 2019-01-20 03:07:12 +0900 |
|---|---|---|
| committer | syuilo <Syuilotan@yahoo.co.jp> | 2019-01-20 03:07:12 +0900 |
| commit | 22830965e341c9c961e072b2e92cb7c404f8624d (patch) | |
| tree | 761859da2df4d3893ae47f5957281a6076724818 /src/server/api/endpoints/notes/reactions/delete.ts | |
| parent | Refactor (diff) | |
| download | sharkey-22830965e341c9c961e072b2e92cb7c404f8624d.tar.gz sharkey-22830965e341c9c961e072b2e92cb7c404f8624d.tar.bz2 sharkey-22830965e341c9c961e072b2e92cb7c404f8624d.zip | |
AP Undo Like (#3933)
* AP Undo Like
* rename
Diffstat (limited to 'src/server/api/endpoints/notes/reactions/delete.ts')
| -rw-r--r-- | src/server/api/endpoints/notes/reactions/delete.ts | 55 |
1 files changed, 12 insertions, 43 deletions
diff --git a/src/server/api/endpoints/notes/reactions/delete.ts b/src/server/api/endpoints/notes/reactions/delete.ts index 40139afee1..9ff4edb7f5 100644 --- a/src/server/api/endpoints/notes/reactions/delete.ts +++ b/src/server/api/endpoints/notes/reactions/delete.ts @@ -1,9 +1,10 @@ +import * as mongo from 'mongodb'; import $ from 'cafy'; import ID, { transform } from '../../../../../misc/cafy-id'; -import Reaction from '../../../../../models/note-reaction'; -import Note from '../../../../../models/note'; import define from '../../../define'; -import { publishNoteStream } from '../../../../../stream'; const ms = require('ms'); +import deleteReaction from '../../../../../services/note/reaction/delete'; +import { IUser } from '../../../../../models/user'; +import { getValiedNote } from '../../../common/getters'; export const meta = { desc: { @@ -33,44 +34,12 @@ export const meta = { } }; -export default define(meta, (ps, user) => new Promise(async (res, rej) => { - // Fetch unreactee - const note = await Note.findOne({ - _id: ps.noteId - }); - - if (note === null) { - return rej('note not found'); - } - - // if already unreacted - const exist = await Reaction.findOne({ - noteId: note._id, - userId: user._id, - deletedAt: { $exists: false } - }); - - if (exist === null) { - return rej('never reacted'); - } - - // Delete reaction - await Reaction.remove({ - _id: exist._id - }); - - res(); - - const dec: any = {}; - dec[`reactionCounts.${exist.reaction}`] = -1; - - // Decrement reactions count - Note.update({ _id: note._id }, { - $inc: dec - }); - - publishNoteStream(note._id, 'unreacted', { - reaction: exist.reaction, - userId: user._id - }); +export default define(meta, (ps, user) => new Promise((res, rej) => { + deleteReactionById(user, ps.noteId) + .then(r => res(r)).catch(e => rej(e)); })); + +async function deleteReactionById(user: IUser, noteId: mongo.ObjectID) { + const note = await getValiedNote(noteId); + await deleteReaction(user, note); +} |