2019-04-22 23:10:11 +00:00
|
|
|
// This file is required by the index.html file and will
|
|
|
|
// be executed in the renderer process for that window.
|
|
|
|
// All of the Node.js APIs are available in this process.
|
2019-04-25 00:35:36 +00:00
|
|
|
|
2019-04-26 00:30:50 +00:00
|
|
|
const angular = require('angular')
|
|
|
|
|
|
|
|
var angApp = angular.module('app', [])
|
|
|
|
|
|
|
|
|
|
|
|
angApp.factory('SettingsServise', () => {
|
|
|
|
|
|
|
|
const keytar = require('keytar')
|
|
|
|
const settings = require('electron-settings')
|
|
|
|
|
|
|
|
let settingsService = {}
|
|
|
|
|
|
|
|
settingsService.getCredentials = () => {
|
|
|
|
let credentials = {}
|
|
|
|
credentials.login = settings.get('login')
|
|
|
|
let promise = new Promise((resolve, reject) => {
|
|
|
|
if (credentials.login) {
|
|
|
|
credentials.bosh = settings.get('bosh')
|
|
|
|
credentials.xmppService = credentials.login.split('@').pop()
|
|
|
|
let password = keytar.getPassword(credentials.xmppService, credentials.login)
|
|
|
|
password.then((result) => {
|
|
|
|
credentials.password = result
|
|
|
|
resolve(credentials)
|
|
|
|
})
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
reject(Error('No login stored'))
|
|
|
|
}
|
|
|
|
})
|
|
|
|
return promise
|
|
|
|
}
|
|
|
|
|
|
|
|
settingsService.addCredentials = (bosh, login, password) => {
|
|
|
|
let xmppService = login.split('@').pop()
|
|
|
|
settings.set('bosh', bosh)
|
|
|
|
settings.set('login', login)
|
|
|
|
keytar.setPassword(xmppService, login, password)
|
|
|
|
}
|
|
|
|
|
|
|
|
settingsService.removeCredentials = (login) => {
|
|
|
|
let xmppService = login.split('@').pop()
|
|
|
|
passwordDelete = keytar.deletePassword(xmppService, login)
|
|
|
|
let promise = new Promise((resolve, reject) => {
|
|
|
|
passwordDelete.then((result) => {
|
|
|
|
settings.delete('login')
|
|
|
|
settings.delete('bosh')
|
|
|
|
resolve()
|
|
|
|
}, (error) => {
|
|
|
|
reject(error)
|
|
|
|
})
|
|
|
|
})
|
|
|
|
return promise
|
|
|
|
}
|
|
|
|
|
|
|
|
return settingsService
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
angApp.factory('SystemService', () => {
|
|
|
|
|
|
|
|
const remote = require('electron').remote
|
|
|
|
|
|
|
|
let systemService = {}
|
|
|
|
|
|
|
|
systemService.playAudio = () => {
|
2019-04-26 01:30:01 +00:00
|
|
|
var audio = new Audio(__dirname + '/sounds/graceful.ogg')
|
2019-04-26 00:30:50 +00:00
|
|
|
audio.play()
|
|
|
|
}
|
|
|
|
|
|
|
|
systemService.showEnvelope = () => {
|
2019-04-26 19:09:08 +00:00
|
|
|
remote.require('./main').trayService.showEnvelope()
|
2019-04-26 00:30:50 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
systemService.hideEnvelope = () => {
|
2019-04-26 19:09:08 +00:00
|
|
|
remote.require('./main').trayService.hideEnvelope()
|
2019-04-26 00:30:50 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
systemService.reloadWindow = () => {
|
|
|
|
remote.getCurrentWindow().reload()
|
|
|
|
}
|
|
|
|
|
|
|
|
return systemService
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
2019-04-29 00:42:15 +00:00
|
|
|
angApp.factory('ChimeVerseService', (SettingsServise, SystemService) => {
|
2019-04-26 00:30:50 +00:00
|
|
|
|
|
|
|
let chimeverseService = {}
|
|
|
|
|
|
|
|
chimeverseService.settings = SettingsServise
|
|
|
|
chimeverseService.system = SystemService
|
|
|
|
|
|
|
|
chimeverseService._notifyMessage = (data) => {
|
|
|
|
if (data.message.attributes.sender === 'me') {
|
|
|
|
chimeverseService.system.hideEnvelope()
|
|
|
|
return ;
|
|
|
|
}
|
|
|
|
if (data.message.attributes.chat_state === 'active') {
|
|
|
|
chimeverseService.system.playAudio()
|
|
|
|
chimeverseService.system.showEnvelope()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-04-27 23:04:31 +00:00
|
|
|
chimeverseService.logout = () => {
|
|
|
|
let credentials = SettingsServise.getCredentials()
|
|
|
|
credentials.then((result) => {
|
|
|
|
let remove = chimeverseService.settings.removeCredentials(result.login)
|
|
|
|
remove.then(() => {
|
|
|
|
chimeverseService.system.reloadWindow()
|
|
|
|
})
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
2019-04-26 00:30:50 +00:00
|
|
|
chimeverseService.addChimeVersePluign = () => {
|
|
|
|
converse.plugins.add('chimeVerse', {
|
|
|
|
initialize: (event) => {
|
|
|
|
var _converse = event.properties._converse
|
|
|
|
Promise.all([
|
|
|
|
_converse.api.waitUntil('rosterContactsFetched'),
|
|
|
|
_converse.api.waitUntil('chatBoxesFetched')
|
|
|
|
]).then(() => {
|
|
|
|
_converse.api.listen.on('logout', () => {
|
2019-04-27 23:04:31 +00:00
|
|
|
chimeverseService.logout()
|
2019-04-26 00:30:50 +00:00
|
|
|
})
|
|
|
|
_converse.api.listen.on('messageAdded', (data) => {
|
|
|
|
chimeverseService._notifyMessage(data)
|
|
|
|
})
|
|
|
|
_converse.api.listen.on('chatBoxFocused', () => {
|
|
|
|
chimeverseService.system.hideEnvelope()
|
|
|
|
})
|
|
|
|
})
|
|
|
|
}
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
chimeverseService.initConverse = (bosh, login, password) => {
|
|
|
|
chimeverseService.addChimeVersePluign()
|
|
|
|
let lang = navigator.language
|
|
|
|
converse.initialize({
|
|
|
|
bosh_service_url: bosh,
|
|
|
|
view_mode: 'fullscreen',
|
|
|
|
jid: login + '/chimeverse',
|
|
|
|
password: password,
|
|
|
|
auto_login: true,
|
|
|
|
whitelisted_plugins: ['chimeVerse'],
|
|
|
|
i18n: lang,
|
|
|
|
priority: 50,
|
2019-04-27 02:27:11 +00:00
|
|
|
// debug: true,
|
2019-04-26 00:30:50 +00:00
|
|
|
auto_reconnect: true
|
|
|
|
})
|
2019-04-25 00:35:36 +00:00
|
|
|
}
|
|
|
|
|
2019-04-26 00:30:50 +00:00
|
|
|
return chimeverseService
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
2019-04-29 00:42:15 +00:00
|
|
|
angApp.controller('AppController', function ($scope, ChimeVerseService) {
|
2019-04-26 00:30:50 +00:00
|
|
|
|
2019-04-27 23:04:31 +00:00
|
|
|
const { ipcRenderer } = require('electron');
|
|
|
|
|
2019-04-26 00:30:50 +00:00
|
|
|
$scope.showLoginForm = false
|
2019-04-27 02:27:11 +00:00
|
|
|
|
2019-04-27 23:04:31 +00:00
|
|
|
ipcRenderer.on('force-logout-event', () => {
|
|
|
|
ChimeVerseService.logout()
|
|
|
|
ipcRenderer.getCurrentWindow().reload()
|
|
|
|
})
|
|
|
|
|
2019-04-27 02:27:11 +00:00
|
|
|
$scope.addAccountAction = () => {
|
2019-04-26 00:30:50 +00:00
|
|
|
ChimeVerseService.settings.addCredentials($scope.bosh, $scope.login, $scope.password)
|
|
|
|
$scope.showLoginForm = false
|
|
|
|
ChimeVerseService.initConverse($scope.bosh, $scope.login, $scope.password)
|
|
|
|
}
|
2019-04-25 00:35:36 +00:00
|
|
|
|
2019-04-26 00:30:50 +00:00
|
|
|
$scope.getCredentialsAndLogin = () => {
|
|
|
|
let credentials = ChimeVerseService.settings.getCredentials()
|
|
|
|
credentials.then((result) => {
|
|
|
|
ChimeVerseService.initConverse(result.bosh, result.login, result.password)
|
|
|
|
}, (error) => {
|
|
|
|
$scope.showLoginForm = true
|
|
|
|
$scope.$apply()
|
|
|
|
})
|
2019-04-25 00:35:36 +00:00
|
|
|
}
|
2019-04-26 00:30:50 +00:00
|
|
|
|
|
|
|
$scope.getCredentialsAndLogin()
|
|
|
|
|
|
|
|
})
|