Properly handle notifications for groupchat messages
This commit is contained in:
parent
902cf0720e
commit
09457d8461
@ -26,7 +26,7 @@
|
|||||||
describe("And the desktop is not focused", function () {
|
describe("And the desktop is not focused", function () {
|
||||||
describe("an HTML5 Notification", function () {
|
describe("an HTML5 Notification", function () {
|
||||||
|
|
||||||
it("is shown when a new message is received", function () {
|
it("is shown when a new private message is received", function () {
|
||||||
// TODO: not yet testing show_desktop_notifications setting
|
// TODO: not yet testing show_desktop_notifications setting
|
||||||
spyOn(converse, 'showMessageNotification');
|
spyOn(converse, 'showMessageNotification');
|
||||||
spyOn(converse, 'areDesktopNotificationsEnabled').andReturn(true);
|
spyOn(converse, 'areDesktopNotificationsEnabled').andReturn(true);
|
||||||
@ -45,6 +45,38 @@
|
|||||||
expect(converse.showMessageNotification).toHaveBeenCalled();
|
expect(converse.showMessageNotification).toHaveBeenCalled();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("is shown when you are mentioned in a chat room", function () {
|
||||||
|
test_utils.openChatRoom('lounge', 'localhost', 'dummy');
|
||||||
|
var view = converse.chatboxviews.get('lounge@localhost');
|
||||||
|
if (!view.$el.find('.chat-area').length) { view.renderChatArea(); }
|
||||||
|
var no_notification = false;
|
||||||
|
if (typeof window.Notification === 'undefined') {
|
||||||
|
no_notification = true;
|
||||||
|
window.Notification = function () {
|
||||||
|
return {
|
||||||
|
'close': function () {}
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
spyOn(converse, 'showMessageNotification').andCallThrough();
|
||||||
|
spyOn(converse, 'areDesktopNotificationsEnabled').andReturn(true);
|
||||||
|
|
||||||
|
var message = 'dummy: This message will show a desktop notification';
|
||||||
|
var nick = mock.chatroom_names[0],
|
||||||
|
msg = $msg({
|
||||||
|
from: 'lounge@localhost/'+nick,
|
||||||
|
id: (new Date()).getTime(),
|
||||||
|
to: 'dummy@localhost',
|
||||||
|
type: 'groupchat'
|
||||||
|
}).c('body').t(message).tree();
|
||||||
|
converse.chatboxes.onMessage(msg); // This will emit 'message'
|
||||||
|
expect(converse.areDesktopNotificationsEnabled).toHaveBeenCalled();
|
||||||
|
expect(converse.showMessageNotification).toHaveBeenCalled();
|
||||||
|
if (no_notification) {
|
||||||
|
delete window.Notification;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
it("is shown when a user changes their chat state", function () {
|
it("is shown when a user changes their chat state", function () {
|
||||||
// TODO: not yet testing show_desktop_notifications setting
|
// TODO: not yet testing show_desktop_notifications setting
|
||||||
spyOn(converse, 'areDesktopNotificationsEnabled').andReturn(true);
|
spyOn(converse, 'areDesktopNotificationsEnabled').andReturn(true);
|
||||||
|
@ -124,6 +124,9 @@
|
|||||||
// XXX: 2nd check is workaround for Prosody which doesn't
|
// XXX: 2nd check is workaround for Prosody which doesn't
|
||||||
// give type "headline"
|
// give type "headline"
|
||||||
title = __(___("Notification from %1$s"), from_jid);
|
title = __(___("Notification from %1$s"), from_jid);
|
||||||
|
} else {
|
||||||
|
if ($message.attr('type') === 'groupchat') {
|
||||||
|
title = __(___("%1$s says"), Strophe.getResourceFromJid(from_jid));
|
||||||
} else {
|
} else {
|
||||||
if (typeof converse.roster === 'undefined') {
|
if (typeof converse.roster === 'undefined') {
|
||||||
converse.log("Could not send notification, because roster is undefined", "error");
|
converse.log("Could not send notification, because roster is undefined", "error");
|
||||||
@ -133,6 +136,7 @@
|
|||||||
roster_item = converse.roster.get(contact_jid);
|
roster_item = converse.roster.get(contact_jid);
|
||||||
title = __(___("%1$s says"), roster_item.get('fullname'));
|
title = __(___("%1$s says"), roster_item.get('fullname'));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
n = new Notification(title, {
|
n = new Notification(title, {
|
||||||
body: $message.children('body').text(),
|
body: $message.children('body').text(),
|
||||||
lang: converse.i18n.locale_data.converse[""].lang,
|
lang: converse.i18n.locale_data.converse[""].lang,
|
||||||
|
Loading…
Reference in New Issue
Block a user