96 lines
3.2 KiB
JavaScript
96 lines
3.2 KiB
JavaScript
let angApp = require(__dirname + '/../init')
|
|
|
|
const desktopPlugin = require(__dirname +'/../../libs/converse.js/converse-desktop/desktop-plugin')
|
|
|
|
angApp.factory('DesktopService', (
|
|
$window, $timeout, CredentialsService, SystemService, AppStateService,
|
|
SettingsService, XmppHelperService
|
|
) => {
|
|
|
|
let desktopService = {}
|
|
|
|
desktopService._notifyMessage = () => {
|
|
SystemService.playAudio()
|
|
SystemService.showEnvelope()
|
|
}
|
|
|
|
desktopService._hideNotifyMessage = () => {
|
|
SystemService.hideEnvelope()
|
|
}
|
|
|
|
desktopService.logout = () => {
|
|
let credentials = CredentialsService.getCredentials()
|
|
credentials.then((result) => {
|
|
let remove = CredentialsService.removeCredentials(result.login)
|
|
console.log('Remove credentials on logout')
|
|
remove.then(() => {
|
|
AppStateService.set(AppStateService.APP_STATE_LOGIN)
|
|
})
|
|
})
|
|
}
|
|
|
|
desktopService.initConverse = (connectionManager, login, password) => {
|
|
AppStateService.set(AppStateService.APP_STATE_DEFAULT) // Always set to default state before init
|
|
desktopPlugin.register(login)
|
|
let lang = navigator.language
|
|
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
|
|
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',
|
|
whitelisted_plugins: ['converseDesktop'],
|
|
}
|
|
if (connectionManager.startsWith('ws')) {
|
|
conversejsParams.websocket_url = connectionManager
|
|
} else {
|
|
conversejsParams.bosh_service_url = connectionManager
|
|
}
|
|
$timeout(() => {
|
|
converse.initialize(conversejsParams)
|
|
}, 50)
|
|
}
|
|
|
|
desktopService.getCredentialsAndLogin = () => {
|
|
let credentials = CredentialsService.getCredentials()
|
|
credentials.then((result) => {
|
|
desktopService.initConverse(result.connectionManager, result.login, result.password)
|
|
}, (error) => {
|
|
AppStateService.set(AppStateService.APP_STATE_LOGIN)
|
|
})
|
|
}
|
|
|
|
|
|
desktopService.chatToOpen = null
|
|
|
|
$window.document.addEventListener('conversejs-logout', function (e) {
|
|
desktopService.logout()
|
|
})
|
|
|
|
$window.document.addEventListener('conversejs-unread', function (e) {
|
|
let sender = e.detail
|
|
desktopService.chatToOpen = sender
|
|
desktopService._notifyMessage()
|
|
})
|
|
|
|
$window.document.addEventListener('conversejs-no-unread', function (e) {
|
|
desktopService._hideNotifyMessage()
|
|
})
|
|
|
|
return desktopService
|
|
|
|
}) |