Merge branch 'release' into develop

This commit is contained in:
Matteo Pagliazzi
2018-06-01 15:58:32 +02:00
8 changed files with 289 additions and 159 deletions

415
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -210,7 +210,7 @@ describe('payments/index', () => {
let msg = '\`Hello recipient, sender has sent you 3 months of subscription!\`'; let msg = '\`Hello recipient, sender has sent you 3 months of subscription!\`';
expect(user.sendMessage).to.be.calledOnce; expect(user.sendMessage).to.be.calledOnce;
expect(user.sendMessage).to.be.calledWith(recipient, { receiverMsg: msg, senderMsg: msg }); expect(user.sendMessage).to.be.calledWith(recipient, { receiverMsg: msg, senderMsg: msg, save: false });
}); });
it('sends an email about the gift', async () => { it('sends an email about the gift', async () => {
@@ -629,7 +629,7 @@ describe('payments/index', () => {
await api.buyGems(data); await api.buyGems(data);
let msg = '\`Hello recipient, sender has sent you 4 gems!\`'; let msg = '\`Hello recipient, sender has sent you 4 gems!\`';
expect(user.sendMessage).to.be.calledWith(recipient, { receiverMsg: msg, senderMsg: msg }); expect(user.sendMessage).to.be.calledWith(recipient, { receiverMsg: msg, senderMsg: msg, save: false });
}); });
it('sends a message from purchaser to recipient wtih custom message', async () => { it('sends a message from purchaser to recipient wtih custom message', async () => {
@@ -638,7 +638,7 @@ describe('payments/index', () => {
await api.buyGems(data); await api.buyGems(data);
const msg = `\`Hello recipient, sender has sent you 4 gems!\` ${data.gift.message}`; const msg = `\`Hello recipient, sender has sent you 4 gems!\` ${data.gift.message}`;
expect(user.sendMessage).to.be.calledWith(recipient, { receiverMsg: msg, senderMsg: msg }); expect(user.sendMessage).to.be.calledWith(recipient, { receiverMsg: msg, senderMsg: msg, save: false });
}); });
it('sends a push notification if user did not gift to self', async () => { it('sends a push notification if user did not gift to self', async () => {
@@ -667,7 +667,7 @@ describe('payments/index', () => {
return `\`${messageContent}\``; return `\`${messageContent}\``;
}); });
expect(user.sendMessage).to.be.calledWith(recipient, { receiverMsg: recipientsMessageContent, senderMsg: sendersMessageContent }); expect(user.sendMessage).to.be.calledWith(recipient, { receiverMsg: recipientsMessageContent, senderMsg: sendersMessageContent, save: false });
}); });
}); });
}); });

View File

@@ -176,7 +176,7 @@ describe('cron middleware', () => {
user.lastCron = moment(new Date()).subtract({days: 2}); user.lastCron = moment(new Date()).subtract({days: 2});
let todo = generateTodo(user); let todo = generateTodo(user);
let todoValueBefore = todo.value; let todoValueBefore = todo.value;
await user.save(); await Promise.all([todo.save(), user.save()]);
await new Promise((resolve, reject) => { await new Promise((resolve, reject) => {
cronMiddleware(req, res, (err) => { cronMiddleware(req, res, (err) => {

View File

@@ -94,7 +94,6 @@ export function generateTodo (user) {
let task = new Tasks.todo(Tasks.Task.sanitize(todo)); // eslint-disable-line new-cap let task = new Tasks.todo(Tasks.Task.sanitize(todo)); // eslint-disable-line new-cap
task.userId = user._id; task.userId = user._id;
task.save();
return task; return task;
} }
@@ -109,7 +108,6 @@ export function generateDaily (user) {
let task = new Tasks.daily(Tasks.Task.sanitize(daily)); // eslint-disable-line new-cap let task = new Tasks.daily(Tasks.Task.sanitize(daily)); // eslint-disable-line new-cap
task.userId = user._id; task.userId = user._id;
task.save();
return task; return task;
} }

View File

@@ -312,7 +312,7 @@ api.leaveChallenge = {
if (!challenge.isMember(user)) throw new NotAuthorized(res.t('challengeMemberNotFound')); if (!challenge.isMember(user)) throw new NotAuthorized(res.t('challengeMemberNotFound'));
// Unlink challenge's tasks from user's tasks and save the challenge // Unlink challenge's tasks from user's tasks and save the challenge
await Promise.all([challenge.unlinkTasks(user, keep), challenge.save()]); await challenge.unlinkTasks(user, keep);
res.analytics.track('challenge leave', { res.analytics.track('challenge leave', {
uuid: user._id, uuid: user._id,

View File

@@ -28,7 +28,7 @@ async function buyGemGift (data) {
const senderMsg = getGiftMessage(data, byUsername, gemAmount, languages[0]); const senderMsg = getGiftMessage(data, byUsername, gemAmount, languages[0]);
const receiverMsg = getGiftMessage(data, byUsername, gemAmount, languages[1]); const receiverMsg = getGiftMessage(data, byUsername, gemAmount, languages[1]);
data.user.sendMessage(data.gift.member, { receiverMsg, senderMsg }); data.user.sendMessage(data.gift.member, { receiverMsg, senderMsg, save: false });
if (data.gift.member.preferences.emailNotifications.giftedGems !== false) { if (data.gift.member.preferences.emailNotifications.giftedGems !== false) {
txnEmail(data.gift.member, 'gifted-gems', [ txnEmail(data.gift.member, 'gifted-gems', [

View File

@@ -185,7 +185,7 @@ async function createSubscription (data) {
senderMsg += ` ${data.gift.message}`; senderMsg += ` ${data.gift.message}`;
} }
data.user.sendMessage(data.gift.member, { receiverMsg, senderMsg }); data.user.sendMessage(data.gift.member, { receiverMsg, senderMsg, save: false });
if (data.gift.member.preferences.emailNotifications.giftedSubscription !== false) { if (data.gift.member.preferences.emailNotifications.giftedSubscription !== false) {
txnEmail(data.gift.member, 'gifted-subscription', [ txnEmail(data.gift.member, 'gifted-subscription', [
@@ -208,12 +208,8 @@ async function createSubscription (data) {
} }
} }
if (group) { if (group) await group.save();
await group.save(); if (data.user && data.user.isModified()) await data.user.save();
} else {
await data.user.save();
}
if (data.gift) await data.gift.member.save(); if (data.gift) await data.gift.member.save();
slack.sendSubscriptionNotification({ slack.sendSubscriptionNotification({

View File

@@ -99,6 +99,8 @@ schema.methods.getObjectionsToInteraction = function getObjectionsToInteraction
schema.methods.sendMessage = async function sendMessage (userToReceiveMessage, options) { schema.methods.sendMessage = async function sendMessage (userToReceiveMessage, options) {
let sender = this; let sender = this;
let senderMsg = options.senderMsg || options.receiverMsg; let senderMsg = options.senderMsg || options.receiverMsg;
// whether to save users after sending the message, defaults to true
let saveUsers = options.save === false ? false : true;
common.refPush(userToReceiveMessage.inbox.messages, chatDefaults(options.receiverMsg, sender)); common.refPush(userToReceiveMessage.inbox.messages, chatDefaults(options.receiverMsg, sender));
userToReceiveMessage.inbox.newMessages++; userToReceiveMessage.inbox.newMessages++;
@@ -130,8 +132,9 @@ schema.methods.sendMessage = async function sendMessage (userToReceiveMessage, o
common.refPush(sender.inbox.messages, defaults({sent: true}, chatDefaults(senderMsg, userToReceiveMessage))); common.refPush(sender.inbox.messages, defaults({sent: true}, chatDefaults(senderMsg, userToReceiveMessage)));
sender.markModified('inbox.messages'); sender.markModified('inbox.messages');
let promises = [userToReceiveMessage.save(), sender.save()]; if (saveUsers) {
await Promise.all(promises); await Promise.all(userToReceiveMessage.save(), sender.save());
}
}; };
/** /**