mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-17 22:57:21 +01:00
refactor Inbox-mongodb requests
This commit is contained in:
@@ -31,17 +31,17 @@ const FLAG_REPORT_EMAILS = nconf.get('FLAG_REPORT_EMAIL').split(',').map((email)
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @apiDefine GroupIdRequired
|
* @apiDefine GroupIdRequired
|
||||||
* @apiError (404) {badRequest} groupIdRequired A group ID is required
|
* @apiError (400) {badRequest} groupIdRequired A group ID is required
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @apiDefine ChatIdRequired
|
* @apiDefine ChatIdRequired
|
||||||
* @apiError (404) {badRequest} chatIdRequired A chat ID is required
|
* @apiError (400) {badRequest} chatIdRequired A chat ID is required
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @apiDefine MessageIdRequired
|
* @apiDefine MessageIdRequired
|
||||||
* @apiError (404) {badRequest} messageIdRequired A message ID is required
|
* @apiError (400) {badRequest} messageIdRequired A message ID is required
|
||||||
*/
|
*/
|
||||||
|
|
||||||
let api = {};
|
let api = {};
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ let api = {};
|
|||||||
*
|
*
|
||||||
* @apiUse MessageNotFound
|
* @apiUse MessageNotFound
|
||||||
* @apiUse MessageIdRequired
|
* @apiUse MessageIdRequired
|
||||||
* @apiError (404) {NotFound} messageGroupChatFlagAlreadyReported The message has already been flagged
|
* @apiError (400) {BadRequest} messageGroupChatFlagAlreadyReported The message has already been flagged
|
||||||
*/
|
*/
|
||||||
api.flagPrivateMessage = {
|
api.flagPrivateMessage = {
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
|
|||||||
@@ -3,13 +3,12 @@ import { model as User } from '../../models/user';
|
|||||||
|
|
||||||
import ChatReporter from './chatReporter';
|
import ChatReporter from './chatReporter';
|
||||||
import {
|
import {
|
||||||
NotFound,
|
BadRequest,
|
||||||
} from '../errors';
|
} from '../errors';
|
||||||
import { getGroupUrl, sendTxn } from '../email';
|
import { getGroupUrl, sendTxn } from '../email';
|
||||||
import slack from '../slack';
|
import slack from '../slack';
|
||||||
import apiError from '../apiError';
|
import apiError from '../apiError';
|
||||||
|
|
||||||
import _find from 'lodash/find';
|
|
||||||
import * as inboxLib from '../inbox';
|
import * as inboxLib from '../inbox';
|
||||||
|
|
||||||
const FLAG_REPORT_EMAILS = nconf.get('FLAG_REPORT_EMAIL').split(',').map((email) => {
|
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});
|
this.inboxUser = await User.findOne({_id: this.req.query.userId});
|
||||||
}
|
}
|
||||||
|
|
||||||
const messages = await inboxLib.getUserInbox(this.inboxUser);
|
const message = await inboxLib.getUserInboxMessage(this.inboxUser, this.req.params.messageId);
|
||||||
|
if (!message) throw new BadRequest(this.res.t('messageGroupChatNotFound'));
|
||||||
const message = _find(messages, (m) => m.id === this.req.params.messageId);
|
|
||||||
if (!message) throw new NotFound(this.res.t('messageGroupChatNotFound'));
|
|
||||||
|
|
||||||
const userComment = this.req.body.comment;
|
const userComment = this.req.body.comment;
|
||||||
|
|
||||||
@@ -81,7 +78,7 @@ export default class InboxChatReporter extends ChatReporter {
|
|||||||
if (!message.flags) message.flags = {};
|
if (!message.flags) message.flags = {};
|
||||||
// TODO fix error type
|
// TODO fix error type
|
||||||
if (message.flags[this.user._id] && !this.user.contributor.admin) {
|
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) => {
|
return this.updateMessageAndSave(message, (m) => {
|
||||||
|
|||||||
@@ -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) {
|
export async function deleteMessage (user, messageId) {
|
||||||
if (user.inbox.messages[messageId]) { // compatibility
|
if (user.inbox.messages[messageId]) { // compatibility
|
||||||
delete user.inbox.messages[messageId];
|
delete user.inbox.messages[messageId];
|
||||||
@@ -47,11 +51,7 @@ export async function clearPMs (user) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export async function updateMessage (message) {
|
export async function updateMessage (message) {
|
||||||
const messagesInDb = await Inbox
|
await Inbox.update({
|
||||||
.find({id: message.id})
|
id: message._id,
|
||||||
.exec();
|
}, message).exec();
|
||||||
|
|
||||||
const messageInDb = messagesInDb[0];
|
|
||||||
|
|
||||||
await messageInDb.update(message);
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user