mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-19 15:48:04 +01:00
Merge branch 'release' into develop
This commit is contained in:
415
package-lock.json
generated
415
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -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 });
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -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) => {
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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', [
|
||||||
|
|||||||
@@ -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({
|
||||||
|
|||||||
@@ -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());
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user