converse-desktop/app/services/desktop-service.js

96 lines
3.2 KiB
JavaScript
Raw Normal View History

2020-05-09 15:07:42 +00:00
let angApp = require(__dirname + '/../init')
2020-08-07 11:53:57 +00:00
const desktopPlugin = require(__dirname +'/../../libs/converse.js/converse-desktop/desktop-plugin')
2020-05-13 20:00:36 +00:00
2020-08-07 11:53:57 +00:00
angApp.factory('DesktopService', (
2021-02-13 02:52:49 +00:00
$window, $timeout, CredentialsService, SystemService, AppStateService,
SettingsService, XmppHelperService
) => {
2020-05-09 15:07:42 +00:00
2020-08-07 11:53:57 +00:00
let desktopService = {}
2020-05-09 15:07:42 +00:00
2020-08-07 11:53:57 +00:00
desktopService._notifyMessage = () => {
2020-05-09 15:07:42 +00:00
SystemService.playAudio()
SystemService.showEnvelope()
}
2020-08-07 11:53:57 +00:00
desktopService._hideNotifyMessage = () => {
2020-05-09 15:07:42 +00:00
SystemService.hideEnvelope()
}
2020-08-07 11:53:57 +00:00
desktopService.logout = () => {
2021-02-13 02:52:49 +00:00
let credentials = CredentialsService.getCredentials()
2020-05-09 15:07:42 +00:00
credentials.then((result) => {
2021-02-13 02:52:49 +00:00
let remove = CredentialsService.removeCredentials(result.login)
console.log('Remove credentials on logout')
2020-05-09 15:07:42 +00:00
remove.then(() => {
AppStateService.set(AppStateService.APP_STATE_LOGIN)
})
})
}
2020-08-07 11:53:57 +00:00
desktopService.initConverse = (connectionManager, login, password) => {
2020-05-09 15:07:42 +00:00
AppStateService.set(AppStateService.APP_STATE_DEFAULT) // Always set to default state before init
2020-08-07 11:53:57 +00:00
desktopPlugin.register(login)
2020-05-09 15:07:42 +00:00
let lang = navigator.language
2020-05-12 15:06:16 +00:00
let allowBookmarks = SettingsService.get('allowBookmarks')
let omemoDefault = SettingsService.get('omemoDefault')
let xmppResource = XmppHelperService.getResourceFromJid(login)
if (!xmppResource) {
xmppResource = '.' + (Math.random().toString(36)+'00000000000000000').slice(2, 7) // Generate 5 char unique str
2020-08-07 11:53:57 +00:00
login = login + '/converseDesktop'+xmppResource
}
let conversejsParams = {
assets_path: './node_modules/converse.js/dist/',
allow_bookmarks: allowBookmarks,
auto_login: true,
auto_reconnect: true,
// debug: true,
i18n: lang,
jid: login,
omemo_default: omemoDefault,
password: password,
play_sounds: false,
priority: 50,
view_mode: 'embedded',
2020-08-07 11:53:57 +00:00
whitelisted_plugins: ['converseDesktop'],
}
if (connectionManager.startsWith('ws')) {
conversejsParams.websocket_url = connectionManager
} else {
conversejsParams.bosh_service_url = connectionManager
}
2020-05-13 20:00:36 +00:00
$timeout(() => {
converse.initialize(conversejsParams)
2020-05-13 20:00:36 +00:00
}, 50)
}
2020-08-07 11:53:57 +00:00
desktopService.getCredentialsAndLogin = () => {
2021-02-13 02:52:49 +00:00
let credentials = CredentialsService.getCredentials()
2020-05-13 20:00:36 +00:00
credentials.then((result) => {
2020-08-07 11:53:57 +00:00
desktopService.initConverse(result.connectionManager, result.login, result.password)
2020-05-13 20:00:36 +00:00
}, (error) => {
AppStateService.set(AppStateService.APP_STATE_LOGIN)
2020-05-09 15:07:42 +00:00
})
}
2020-05-13 20:00:36 +00:00
2020-08-07 11:53:57 +00:00
desktopService.chatToOpen = null
2020-05-12 16:55:56 +00:00
2020-05-09 15:07:42 +00:00
$window.document.addEventListener('conversejs-logout', function (e) {
2020-08-07 11:53:57 +00:00
desktopService.logout()
2020-05-13 20:00:36 +00:00
})
2020-05-09 15:07:42 +00:00
$window.document.addEventListener('conversejs-unread', function (e) {
2020-05-12 16:55:56 +00:00
let sender = e.detail
2020-08-07 11:53:57 +00:00
desktopService.chatToOpen = sender
desktopService._notifyMessage()
2020-05-13 20:00:36 +00:00
})
2020-05-09 15:07:42 +00:00
$window.document.addEventListener('conversejs-no-unread', function (e) {
2020-08-07 11:53:57 +00:00
desktopService._hideNotifyMessage()
2020-05-13 20:00:36 +00:00
})
2020-05-09 15:07:42 +00:00
2020-08-07 11:53:57 +00:00
return desktopService
2020-05-09 15:07:42 +00:00
})