Plays new room sound on first subscriptions load (empty cache)

pull/8144/head
Diego Sampaio 9 years ago
parent dc0aa06651
commit ffb24806ae
No known key found for this signature in database
GPG Key ID: E060152B30502562
  1. 4
      client/notifications/notification.js
  2. 2
      packages/rocketchat-lib/client/lib/cachedCollection.js
  3. 54
      packages/rocketchat-ui/client/lib/notification.js

@ -11,7 +11,7 @@ function notifyNewRoom(sub) {
return;
}
if (!(FlowRouter.getParam('name') && FlowRouter.getParam('name') === sub.name) && !sub.ls && sub.alert === true) {
if ((!FlowRouter.getParam('name') || FlowRouter.getParam('name') !== sub.name) && !sub.ls && sub.alert === true) {
return KonchatNotification.newRoom(sub.rid);
}
}
@ -69,7 +69,7 @@ Meteor.startup(function() {
});
CachedChatSubscription.onSyncData = function(action, sub) {
if (action === 'changed') {
if (action !== 'removed') {
notifyNewRoom(sub);
}
};

@ -208,6 +208,8 @@ class CachedCollection {
delete record.$loki;
this.collection.upsert({ _id: record._id }, _.omit(record, '_id'));
this.onSyncData('changed', record);
if (record._updatedAt && record._updatedAt > this.updatedAt) {
this.updatedAt = record._updatedAt;
}

@ -124,36 +124,38 @@ const KonchatNotification = {
}
};
Tracker.autorun(function() {
const user = RocketChat.models.Users.findOne(Meteor.userId(), {
fields: {
'settings.preferences.newRoomNotification': 1,
'settings.preferences.notificationsSoundVolume': 1
}
});
const newRoomNotification = user && user.settings && user.settings.preferences && user.settings.preferences.newRoomNotification || 'door';
const audioVolume = user && user.settings && user.settings.preferences && user.settings.preferences.notificationsSoundVolume || 100;
Meteor.startup(() => {
Tracker.autorun(function() {
const user = RocketChat.models.Users.findOne(Meteor.userId(), {
fields: {
'settings.preferences.newRoomNotification': 1,
'settings.preferences.notificationsSoundVolume': 1
}
});
const newRoomNotification = user && user.settings && user.settings.preferences && user.settings.preferences.newRoomNotification || 'door';
const audioVolume = user && user.settings && user.settings.preferences && user.settings.preferences.notificationsSoundVolume || 100;
if ((Session.get('newRoomSound') || []).length > 0) {
Tracker.nonreactive(function() {
if (newRoomNotification !== 'none') {
const [audio] = $(`audio#${ newRoomNotification }`);
if (audio && audio.play) {
audio.volume = Number((audioVolume/100).toPrecision(2));
return audio.play();
if ((Session.get('newRoomSound') || []).length > 0) {
Meteor.defer(function() {
if (newRoomNotification !== 'none') {
const [audio] = $(`audio#${ newRoomNotification }`);
if (audio && audio.play) {
audio.volume = Number((audioVolume/100).toPrecision(2));
return audio.play();
}
}
});
} else {
const [room] = $(`audio#${ newRoomNotification }`);
if (!room) {
return;
}
if (room.pause) {
room.pause();
return room.currentTime = 0;
}
});
} else {
const [room] = $(`audio#${ newRoomNotification }`);
if (!room) {
return;
}
if (room.pause) {
room.pause();
return room.currentTime = 0;
}
}
});
});
export { KonchatNotification };
this.KonchatNotification = KonchatNotification;

Loading…
Cancel
Save