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:
Travis
2016-12-01 10:04:57 -08:00
committed by Matteo Pagliazzi
parent c42f81b629
commit 6a63f080ad
7 changed files with 76 additions and 2 deletions

View File

@@ -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());
}