converse-desktop/libs/converse.js/converse-desktop/desktop-plugin.js

67 lines
2.8 KiB
JavaScript
Raw Normal View History

2020-08-07 11:53:57 +00:00
let desktopPlugin = {}
2020-05-09 15:07:42 +00:00
2020-08-07 11:53:57 +00:00
desktopPlugin.register = (login) => {
converse.plugins.add('converseDesktop', {
2020-05-09 15:07:42 +00:00
initialize: (event) => {
let _converse = event.properties._converse
let Strophe = converse.env.Strophe
2020-05-12 17:56:18 +00:00
/**
* Check if message stanza has some body payload
* @param {*} stanzaNodes
*/
let isBodyMessage = (stanzaNodes) => {
let result = false
Object.keys(stanzaNodes).some((key) => {
if (stanzaNodes[key].nodeName == 'body') {
result = true
}
})
return result
}
2020-05-09 15:07:42 +00:00
Promise.all([
_converse.api.waitUntil('rosterContactsFetched'),
_converse.api.waitUntil('chatBoxesFetched')
]).then(() => {
_converse.api.listen.on('logout', () => {
2020-05-12 16:55:56 +00:00
let event = new CustomEvent('conversejs-logout')
2020-05-09 15:07:42 +00:00
document.dispatchEvent(event)
})
_converse.api.listen.on('message', (data) => {
2020-05-12 17:56:18 +00:00
// Display notifications only for "payloaded" messages
if (isBodyMessage(data.stanza.childNodes)) {
let sender = data.stanza.attributes.from.nodeValue
let senderJid = Strophe.getBareJidFromJid(sender)
let loginJid = Strophe.getBareJidFromJid(login)
if (senderJid != loginJid) {
2020-05-12 17:56:18 +00:00
console.log(senderJid)
let event = new CustomEvent('conversejs-unread', {detail: senderJid})
document.dispatchEvent(event)
}
2020-05-12 16:55:56 +00:00
}
2020-05-09 15:07:42 +00:00
})
_converse.api.listen.on('chatBoxFocused', () => {
2020-05-12 16:55:56 +00:00
let event = new CustomEvent('conversejs-no-unread')
2020-05-09 15:07:42 +00:00
document.dispatchEvent(event)
//chimeverseService._hideNotifyMessage()
})
window.document.addEventListener('converse-force-logout', function (e) {
console.log('Get converse-force-logout event')
console.log('Logout form plugin')
2020-05-13 20:01:42 +00:00
_converse.api.user.logout()
2020-05-09 15:07:42 +00:00
//chimeverseService.logout()
2020-05-12 16:55:56 +00:00
})
window.document.addEventListener('conversejs-open-chat', function (e) {
let chatToOpen = e.detail
console.log('Get open-unread-chat event: '+chatToOpen)
if (chatToOpen !== null) {
_converse.api.chats.open(chatToOpen)
}
})
2020-05-09 15:07:42 +00:00
})
}
})
}
2020-08-07 11:53:57 +00:00
module.exports = desktopPlugin