Move inbox to its own model (#10428)

* shared model for chat and inbox

* disable inbox schema

* inbox: use separate model

* remove old code that used group.chat

* add back chat field (not used) and remove old tests

* remove inbox exclusions when loading user

* add GET /api/v3/inbox/messages

* add comment

* implement DELETE /inbox/messages/:messageid in v4

* implement GET /inbox/messages in v4 and update tests

* implement DELETE /api/v4/inbox/clear

* fix url

* fix doc

* update /export/inbox.html

* update other data exports

* add back messages in user schema

* add user.toJSONWithInbox

* add compativility until migration is done

* more compatibility

* fix tojson called twice

* add compatibility methods

* fix common tests

* fix v4 integration tests

* v3 get user -> with inbox

* start to fix tests

* fix v3 integration tests

* wip

* wip, client use new route

* update tests for members/send-private-message

* tests for get user in v4

* add tests for DELETE /inbox/messages/:messageId

* add tests for DELETE /inbox/clear in v4

* update docs

* fix tests

* initial migration

* fix migration

* fix migration

* migration fixes

* migrate api.enterCouponCode

* migrate api.castSpell

* migrate reset, reroll, rebirth

* add routes to v4 version

* fix tests

* fixes

* api.updateUser

* remove .only

* get user -> userLib

* refactor inbox.vue to work with new data model

* fix return message when messaging yourself

* wip fix bug with new conversation

* wip

* fix remaining ui issues

* move api.registerLocal, fixes

* keep only v3 version of GET /inbox/messages
This commit is contained in:
Matteo Pagliazzi
2018-09-21 15:12:20 +02:00
committed by GitHub
parent bb7d447003
commit 26c8323e70
61 changed files with 3174 additions and 1095 deletions

View File

@@ -1,5 +1,6 @@
import { authWithSession } from '../../middlewares/auth';
import { model as User } from '../../models/user';
import * as inboxLib from '../../libs/inbox';
import * as Tasks from '../../models/task';
import {
NotFound,
@@ -81,15 +82,23 @@ api.exportUserHistory = {
},
};
// Convert user to json and attach tasks divided by type
// Convert user to json and attach tasks divided by type and inbox messages
// at user.tasks[`${taskType}s`] (user.tasks.{dailys/habits/...})
async function _getUserDataForExport (user, xmlMode = false) {
let userData = user.toJSON();
userData.tasks = {};
let tasks = await Tasks.Task.find({
userId: user._id,
}).exec();
userData.inbox.messages = {};
const [tasks, messages] = await Promise.all([
Tasks.Task.find({
userId: user._id,
}).exec(),
inboxLib.getUserInbox(user, false),
]);
userData.inbox.messages = messages;
_(tasks)
.map(task => task.toJSON())
@@ -296,18 +305,14 @@ api.exportUserPrivateMessages = {
url: '/export/inbox.html',
middlewares: [authWithSession],
async handler (req, res) {
let user = res.locals.user;
const user = res.locals.user;
const timezoneOffset = user.preferences.timezoneOffset;
const dateFormat = user.preferences.dateFormat.toUpperCase();
const TO = res.t('to');
const FROM = res.t('from');
let inbox = Object.keys(user.inbox.messages).map(key => user.inbox.messages[key]);
inbox = _.sortBy(inbox, function sortBy (num) {
return num.sort * -1;
});
const inbox = await inboxLib.getUserInbox(user);
let messages = '<!DOCTYPE html><html><head></head><body>';