mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-17 14:47:53 +01:00
New feature that notifies a user when their group invite is accepted. (#8244)
* New notification feature that notifies a user when their group invite is accepted. fixes #7788 * Updating to a modal instead of a popup notification * Making a generic modal template and using it for notifications of group invitation acceptance. * Working with paglias's comments for doing translation server side. * Final changes based on pr comments.
This commit is contained in:
@@ -20,6 +20,7 @@ import { sendTxn as sendTxnEmail } from '../../libs/email';
|
||||
import { encrypt } from '../../libs/encryption';
|
||||
import { sendNotification as sendPushNotification } from '../../libs/pushNotifications';
|
||||
import pusher from '../../libs/pusher';
|
||||
import common from '../../../common';
|
||||
|
||||
/**
|
||||
* @apiDefine GroupBodyInvalid
|
||||
@@ -284,6 +285,7 @@ api.joinGroup = {
|
||||
|
||||
if (hasInvitation) {
|
||||
isUserInvited = true;
|
||||
inviter = hasInvitation.inviter;
|
||||
} else {
|
||||
isUserInvited = group.privacy === 'private' ? false : true;
|
||||
}
|
||||
@@ -303,8 +305,29 @@ api.joinGroup = {
|
||||
|
||||
let promises = [group.save(), user.save()];
|
||||
|
||||
if (inviter) {
|
||||
inviter = await User.findById(inviter).select('notifications preferences.language items.quests.basilist').exec();
|
||||
|
||||
let data = {
|
||||
headerText: common.i18n.t('invitationAcceptedHeader', inviter.preferences.language),
|
||||
bodyText: common.i18n.t('invitationAcceptedBody', {
|
||||
groupName: group.name,
|
||||
username: user.auth.local.username,
|
||||
}, inviter.preferences.language),
|
||||
};
|
||||
inviter.addNotification('GROUP_INVITE_ACCEPTED', data);
|
||||
|
||||
// Reward Inviter
|
||||
if (group.type === 'party') {
|
||||
if (!inviter.items.quests.basilist) {
|
||||
inviter.items.quests.basilist = 0;
|
||||
}
|
||||
inviter.items.quests.basilist++;
|
||||
}
|
||||
promises.push(inviter.save());
|
||||
}
|
||||
|
||||
if (group.type === 'party' && inviter) {
|
||||
promises.push(User.update({_id: inviter}, {$inc: {'items.quests.basilist': 1}}).exec()); // Reward inviter
|
||||
if (group.memberCount > 1) {
|
||||
promises.push(User.update({$or: [{'party._id': group._id}, {_id: user._id}], 'achievements.partyUp': {$ne: true}}, {$set: {'achievements.partyUp': true}}, {multi: true}).exec());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user