From 8f2435c37c692ff04cd679b63db03f8dbcd393b3 Mon Sep 17 00:00:00 2001 From: negue Date: Thu, 8 Nov 2018 22:04:55 +0100 Subject: [PATCH] refactor Inbox-mongodb requests --- website/server/controllers/api-v3/chat.js | 6 +++--- website/server/controllers/api-v4/members.js | 2 +- .../server/libs/chatReporting/inboxChatReporter.js | 11 ++++------- website/server/libs/inbox/index.js | 14 +++++++------- 4 files changed, 15 insertions(+), 18 deletions(-) diff --git a/website/server/controllers/api-v3/chat.js b/website/server/controllers/api-v3/chat.js index a041f48e8e..e18819e76e 100644 --- a/website/server/controllers/api-v3/chat.js +++ b/website/server/controllers/api-v3/chat.js @@ -31,17 +31,17 @@ const FLAG_REPORT_EMAILS = nconf.get('FLAG_REPORT_EMAIL').split(',').map((email) /** * @apiDefine GroupIdRequired - * @apiError (404) {badRequest} groupIdRequired A group ID is required + * @apiError (400) {badRequest} groupIdRequired A group ID is required */ /** * @apiDefine ChatIdRequired - * @apiError (404) {badRequest} chatIdRequired A chat ID is required + * @apiError (400) {badRequest} chatIdRequired A chat ID is required */ /** * @apiDefine MessageIdRequired - * @apiError (404) {badRequest} messageIdRequired A message ID is required + * @apiError (400) {badRequest} messageIdRequired A message ID is required */ let api = {}; diff --git a/website/server/controllers/api-v4/members.js b/website/server/controllers/api-v4/members.js index bbc1668ca5..d3082f85d9 100644 --- a/website/server/controllers/api-v4/members.js +++ b/website/server/controllers/api-v4/members.js @@ -23,7 +23,7 @@ let api = {}; * * @apiUse MessageNotFound * @apiUse MessageIdRequired - * @apiError (404) {NotFound} messageGroupChatFlagAlreadyReported The message has already been flagged + * @apiError (400) {BadRequest} messageGroupChatFlagAlreadyReported The message has already been flagged */ api.flagPrivateMessage = { method: 'POST', diff --git a/website/server/libs/chatReporting/inboxChatReporter.js b/website/server/libs/chatReporting/inboxChatReporter.js index efa4d4b5d6..78c2613096 100644 --- a/website/server/libs/chatReporting/inboxChatReporter.js +++ b/website/server/libs/chatReporting/inboxChatReporter.js @@ -3,13 +3,12 @@ import { model as User } from '../../models/user'; import ChatReporter from './chatReporter'; import { - NotFound, + BadRequest, } from '../errors'; import { getGroupUrl, sendTxn } from '../email'; import slack from '../slack'; import apiError from '../apiError'; -import _find from 'lodash/find'; import * as inboxLib from '../inbox'; const FLAG_REPORT_EMAILS = nconf.get('FLAG_REPORT_EMAIL').split(',').map((email) => { @@ -34,10 +33,8 @@ export default class InboxChatReporter extends ChatReporter { this.inboxUser = await User.findOne({_id: this.req.query.userId}); } - const messages = await inboxLib.getUserInbox(this.inboxUser); - - const message = _find(messages, (m) => m.id === this.req.params.messageId); - if (!message) throw new NotFound(this.res.t('messageGroupChatNotFound')); + const message = await inboxLib.getUserInboxMessage(this.inboxUser, this.req.params.messageId); + if (!message) throw new BadRequest(this.res.t('messageGroupChatNotFound')); const userComment = this.req.body.comment; @@ -81,7 +78,7 @@ export default class InboxChatReporter extends ChatReporter { if (!message.flags) message.flags = {}; // TODO fix error type if (message.flags[this.user._id] && !this.user.contributor.admin) { - throw new NotFound(this.res.t('messageGroupChatFlagAlreadyReported')); + throw new BadRequest(this.res.t('messageGroupChatFlagAlreadyReported')); } return this.updateMessageAndSave(message, (m) => { diff --git a/website/server/libs/inbox/index.js b/website/server/libs/inbox/index.js index f4ab57686a..bbb2829ee0 100644 --- a/website/server/libs/inbox/index.js +++ b/website/server/libs/inbox/index.js @@ -19,6 +19,10 @@ export async function getUserInbox (user, asArray = true) { } } +export async function getUserInboxMessage (user, messageId) { + return Inbox.findOne({ownerId: user._id, _id: messageId}).exec(); +} + export async function deleteMessage (user, messageId) { if (user.inbox.messages[messageId]) { // compatibility delete user.inbox.messages[messageId]; @@ -47,11 +51,7 @@ export async function clearPMs (user) { } export async function updateMessage (message) { - const messagesInDb = await Inbox - .find({id: message.id}) - .exec(); - - const messageInDb = messagesInDb[0]; - - await messageInDb.update(message); + await Inbox.update({ + id: message._id, + }, message).exec(); }