feat(groups): add group chat notifications

This commit is contained in:
Tyler Renelle
2014-02-12 21:20:42 -07:00
parent bb852ce9e5
commit ce82be637d
7 changed files with 52 additions and 6 deletions
+11
View File
@@ -106,6 +106,17 @@ GroupSchema.methods.sendChat = function(message, user){
}
group.chat.unshift(message);
group.chat.splice(200);
// Kick off chat notifications in the background.
var lastSeenUpdate = {$set:{}, $inc:{_v:1}};
lastSeenUpdate['$set']['newMessages.'+group._id] = {name:group.name,value:true};
if (group._id == 'habitrpg') {
// TODO For Tavern, only notify them if their name was mentioned
// var profileNames = [] // get usernames from regex of @xyz. how to handle space-delimited profile names?
// User.update({'profile.name':{$in:profileNames}},lastSeenUpdate,{multi:true}).exec();
} else {
mongoose.model('User').update({_id:{$in:group.members, $ne: user ? user._id : ''}},lastSeenUpdate,{multi:true}).exec();
}
}
var cleanQuestProgress = function(merge){
+5 -2
View File
@@ -207,9 +207,11 @@ var UserSchema = new Schema({
lastCron: {type: Date, 'default': Date.now},
// {GROUP_ID: Boolean}, represents whether they have unseen chat messages
newMessages: {type: Schema.Types.Mixed, 'default': {}},
party: {
// id // FIXME can we use a populated doc instead of fetching party separate from user?
lastMessageSeen: String,
order: {type:String, 'default':'level'},
quest: {
key: String,
@@ -245,7 +247,8 @@ var UserSchema = new Schema({
disableClasses: {type: Boolean, 'default': false},
newTaskEdit: {type: Boolean, 'default': false},
tagsCollapsed: {type: Boolean, 'default': false},
advancedCollapsed: {type: Boolean, 'default': false}
advancedCollapsed: {type: Boolean, 'default': false},
toolbarCollapsed: {type:Boolean, 'default':false}
},
profile: {
blurb: String,