Update to Electron 16.
Application needed to be re-worked to not rely on nodeIntegration/contextIsolation for the upgrade to be possible.
This commit is contained in:
parent
e2bcd80222
commit
e2ae88894b
|
@ -1,4 +1,4 @@
|
||||||
let angApp = require(__dirname+'/../init')
|
const angApp = (await import('../init.js')).default;
|
||||||
|
|
||||||
angApp.controller('AboutController', function($scope, AppStateService, AppInfo) {
|
angApp.controller('AboutController', function($scope, AppStateService, AppInfo) {
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
let angApp = require(__dirname+'/../init')
|
const angApp = (await import('../init.js')).default;
|
||||||
|
|
||||||
angApp.controller('DefaultController', function($scope, $timeout, $http, AppInfo) {
|
angApp.controller('DefaultController', function($scope, $timeout, $http, AppInfo) {
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
let angApp = require(__dirname+'/../init')
|
const angApp = (await import('../init.js')).default;
|
||||||
|
|
||||||
angApp.controller('FooterController', function($scope, AppInfo) {
|
angApp.controller('FooterController', function($scope, AppInfo) {
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
let angApp = require(__dirname+'/../init')
|
const angApp = (await import('../init.js')).default;
|
||||||
|
|
||||||
angApp.controller('LoginController', function($scope, DesktopService, CredentialsService) {
|
angApp.controller('LoginController', function($scope, DesktopService, CredentialsService) {
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
let angApp = require(__dirname+'/../init')
|
const angApp = (await import('../init.js')).default;
|
||||||
|
|
||||||
angApp.controller('SettingsController', function ($scope, $rootScope, AppStateService, SettingsService) {
|
angApp.controller('SettingsController', function ($scope, $rootScope, AppStateService, SettingsService) {
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
const angular = require('angular')
|
const angApp = angular.module('app', [])
|
||||||
let angApp = angular.module('app', [])
|
|
||||||
|
|
||||||
angApp.constant('AppInfo', {
|
angApp.constant('AppInfo', {
|
||||||
APP_NAME: 'Converse Desktop',
|
APP_NAME: 'Converse Desktop',
|
||||||
APP_VERSION: 'v0.1.0',
|
APP_VERSION: 'v0.1.0',
|
||||||
|
@ -11,4 +9,4 @@ angApp.constant('AppInfo', {
|
||||||
ELECTRON_VERSION: '13.6.6'
|
ELECTRON_VERSION: '13.6.6'
|
||||||
});
|
});
|
||||||
|
|
||||||
module.exports = angApp
|
export default angApp;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
let angApp = require(__dirname + '/../init')
|
const angApp = (await import('../init.js')).default;
|
||||||
|
|
||||||
angApp.factory('AppStateService', [ '$rootScope', ($rootScope) => {
|
angApp.factory('AppStateService', [ '$rootScope', ($rootScope) => {
|
||||||
|
|
||||||
|
|
|
@ -1,26 +1,20 @@
|
||||||
let angApp = require(__dirname+'/../init')
|
const angApp = (await import('../init.js')).default;
|
||||||
|
|
||||||
angApp.factory('CredentialsService', () => {
|
angApp.factory('CredentialsService', () => {
|
||||||
|
|
||||||
const keytar = require('keytar')
|
|
||||||
const settings = require('electron-settings')
|
|
||||||
|
|
||||||
let credentialsService = {}
|
let credentialsService = {}
|
||||||
|
|
||||||
credentialsService.getCredentials = () => {
|
credentialsService.getCredentials = () => {
|
||||||
let credentials = {}
|
let credentials = {}
|
||||||
credentials.login = settings.getSync('login')
|
credentials.login = api.electronSettings.getSync('login')
|
||||||
let promise = new Promise((resolve, reject) => {
|
let promise = new Promise((resolve, reject) => {
|
||||||
if (credentials.login) {
|
if (credentials.login) {
|
||||||
credentials.connectionManager = settings.getSync('connectionManager')
|
credentials.connectionManager = api.electronSettings.getSync('connectionManager')
|
||||||
credentials.xmppService = credentials.login.split('@').pop()
|
credentials.xmppService = credentials.login.split('@').pop()
|
||||||
let password = keytar.getPassword(credentials.xmppService, credentials.login)
|
let password = keytar.getPassword(credentials.xmppService, credentials.login)
|
||||||
password.then((result) => {
|
password.then((result) => {
|
||||||
credentials.password = result
|
credentials.password = result
|
||||||
resolve(credentials)
|
resolve(credentials)
|
||||||
})
|
})
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
reject(Error('No login stored'))
|
reject(Error('No login stored'))
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
@ -29,18 +23,18 @@ angApp.factory('CredentialsService', () => {
|
||||||
|
|
||||||
credentialsService.addCredentials = (connectionManager, login, password) => {
|
credentialsService.addCredentials = (connectionManager, login, password) => {
|
||||||
let xmppService = login.split('@').pop()
|
let xmppService = login.split('@').pop()
|
||||||
settings.setSync('connectionManager', connectionManager)
|
api.electronSettings.setSync('connectionManager', connectionManager)
|
||||||
settings.setSync('login', login)
|
api.electronSettings.setSync('login', login)
|
||||||
keytar.setPassword(xmppService, login, password)
|
keytar.setPassword(xmppService, login, password)
|
||||||
}
|
}
|
||||||
|
|
||||||
credentialsService.removeCredentials = (login) => {
|
credentialsService.removeCredentials = (login) => {
|
||||||
let xmppService = login.split('@').pop()
|
let xmppService = login.split('@').pop()
|
||||||
passwordDelete = keytar.deletePassword(xmppService, login)
|
keytar.deletePassword(xmppService, login)
|
||||||
let promise = new Promise((resolve, reject) => {
|
let promise = new Promise((resolve, reject) => {
|
||||||
passwordDelete.then((result) => {
|
passwordDelete.then((result) => {
|
||||||
settings.unsetSync('login')
|
api.electronSettings.unsetSync('login')
|
||||||
settings.unsetSync('connectionManager')
|
api.electronSettings.unsetSync('connectionManager')
|
||||||
resolve()
|
resolve()
|
||||||
}, (error) => {
|
}, (error) => {
|
||||||
reject(error)
|
reject(error)
|
||||||
|
@ -51,4 +45,3 @@ angApp.factory('CredentialsService', () => {
|
||||||
|
|
||||||
return credentialsService
|
return credentialsService
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
let angApp = require(__dirname + '/../init')
|
const angApp = (await import('../init.js')).default;
|
||||||
|
const desktopPlugin = (await import('../../libs/converse.js/converse-desktop/desktop-plugin.js')).desktopPlugin;
|
||||||
const desktopPlugin = require(__dirname +'/../../libs/converse.js/converse-desktop/desktop-plugin')
|
|
||||||
|
|
||||||
angApp.factory('DesktopService', (
|
angApp.factory('DesktopService', (
|
||||||
$window, $timeout, CredentialsService, SystemService, AppStateService,
|
$window, $timeout, CredentialsService, SystemService, AppStateService,
|
||||||
|
|
|
@ -1,11 +1,8 @@
|
||||||
let angApp = require(__dirname+'/../init')
|
const angApp = (await import('../init.js')).default;
|
||||||
|
|
||||||
angApp.factory('SettingsService', () => {
|
angApp.factory('SettingsService', () => {
|
||||||
|
|
||||||
let settingsService = {}
|
let settingsService = {}
|
||||||
|
|
||||||
const electronSettings = require('electron-settings')
|
|
||||||
|
|
||||||
const settings = {
|
const settings = {
|
||||||
converseDesktop: {
|
converseDesktop: {
|
||||||
runMinimized: {
|
runMinimized: {
|
||||||
|
@ -44,7 +41,7 @@ angApp.factory('SettingsService', () => {
|
||||||
}
|
}
|
||||||
|
|
||||||
const iterateSettings = (callback, settingsObj) => {
|
const iterateSettings = (callback, settingsObj) => {
|
||||||
if(typeof settingsObj === "undefined") {
|
if (typeof settingsObj === "undefined") {
|
||||||
settingsObj = settings
|
settingsObj = settings
|
||||||
}
|
}
|
||||||
angular.forEach(settingsObj, (value, key) => {
|
angular.forEach(settingsObj, (value, key) => {
|
||||||
|
@ -59,23 +56,23 @@ angApp.factory('SettingsService', () => {
|
||||||
// Callback
|
// Callback
|
||||||
// TODO: replace with promise?
|
// TODO: replace with promise?
|
||||||
const saveDefault = (key, value) => {
|
const saveDefault = (key, value) => {
|
||||||
if (!electronSettings.hasSync(key)) {
|
if (!api.electronSettings.hasSync(key)) {
|
||||||
electronSettings.setSync(key, value)
|
api.electronSettings.setSync(key, value)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Callback
|
// Callback
|
||||||
const save = (key, defaultValue, settingsList) => {
|
const save = (key, defaultValue, settingsList) => {
|
||||||
let value = settingsList[key]['value']
|
let value = settingsList[key]['value']
|
||||||
electronSettings.setSync(key, value)
|
api.electronSettings.setSync(key, value)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Callback
|
// Callback
|
||||||
const loadAll = (key, defaultValue, settingsList) => {
|
const loadAll = (key, defaultValue, settingsList) => {
|
||||||
if (!electronSettings.hasSync(key)) {
|
if (!api.electronSettings.hasSync(key)) {
|
||||||
settingsList[key]['value'] = defaultValue
|
settingsList[key]['value'] = defaultValue
|
||||||
}
|
}
|
||||||
settingsList[key]['value'] = electronSettings.getSync(key)
|
settingsList[key]['value'] = api.electronSettings.getSync(key)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -84,14 +81,14 @@ angApp.factory('SettingsService', () => {
|
||||||
settingsService.initDefaults = () => {
|
settingsService.initDefaults = () => {
|
||||||
iterateSettings(saveDefault)
|
iterateSettings(saveDefault)
|
||||||
// Logout for versions with BOSH only
|
// Logout for versions with BOSH only
|
||||||
if (electronSettings.hasSync('bosh')) {
|
if (api.electronSettings.hasSync('bosh')) {
|
||||||
electronSettings.unsetSync('bosh')
|
api.electronSettings.unsetSync('bosh')
|
||||||
electronSettings.unsetSync('login')
|
api.electronSettings.unsetSync('login')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
settingsService.get = (key) => {
|
settingsService.get = (key) => {
|
||||||
return electronSettings.getSync(key)
|
return api.electronSettings.getSync(key)
|
||||||
}
|
}
|
||||||
|
|
||||||
settingsService.loadAll = () => {
|
settingsService.loadAll = () => {
|
||||||
|
|
|
@ -1,9 +1,6 @@
|
||||||
let angApp = require(__dirname + '/../init')
|
const angApp = (await import('../init.js')).default;
|
||||||
|
|
||||||
angApp.factory('SystemService', () => {
|
angApp.factory('SystemService', () => {
|
||||||
|
|
||||||
const remote = require('electron').remote
|
|
||||||
|
|
||||||
let systemService = {}
|
let systemService = {}
|
||||||
|
|
||||||
systemService.playAudio = () => {
|
systemService.playAudio = () => {
|
||||||
|
@ -12,15 +9,15 @@ angApp.factory('SystemService', () => {
|
||||||
}
|
}
|
||||||
|
|
||||||
systemService.showEnvelope = () => {
|
systemService.showEnvelope = () => {
|
||||||
remote.require('./main').trayService.showEnvelope()
|
api.trayService.showEnvelope()
|
||||||
}
|
}
|
||||||
|
|
||||||
systemService.hideEnvelope = () => {
|
systemService.hideEnvelope = () => {
|
||||||
remote.require('./main').trayService.hideEnvelope()
|
api.trayService.hideEnvelope()
|
||||||
}
|
}
|
||||||
|
|
||||||
systemService.reloadWindow = () => {
|
systemService.reloadWindow = () => {
|
||||||
remote.getCurrentWindow().reload()
|
api.reload()
|
||||||
}
|
}
|
||||||
|
|
||||||
return systemService
|
return systemService
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
let angApp = require(__dirname + '/../init')
|
const angApp = (await import('../init.js')).default;
|
||||||
|
|
||||||
angApp.factory('XmppHelperService', [() => {
|
angApp.factory('XmppHelperService', [() => {
|
||||||
|
|
||||||
|
|
38
index.html
38
index.html
|
@ -11,9 +11,15 @@
|
||||||
<link rel="stylesheet" type="text/css" href="resources/css/page-default.css">
|
<link rel="stylesheet" type="text/css" href="resources/css/page-default.css">
|
||||||
<link rel="stylesheet" type="text/css" href="resources/css/page-login.css">
|
<link rel="stylesheet" type="text/css" href="resources/css/page-login.css">
|
||||||
<link rel="stylesheet" type="text/css" href="resources/css/page-settings.css">
|
<link rel="stylesheet" type="text/css" href="resources/css/page-settings.css">
|
||||||
|
<script src="libs/converse.js/3rdparty/libsignal-protocol.js"></script>
|
||||||
|
<script src="./node_modules/angular/angular.min.js"></script>
|
||||||
|
<script src="./node_modules/converse.js/dist/emojis.js"></script>
|
||||||
|
<script src="./node_modules/converse.js/dist/converse.js"></script>
|
||||||
|
<script src="./node_modules/github-buttons/dist/buttons.min.js"></script>
|
||||||
|
<script type="module" src="./renderer.js"></script>
|
||||||
</head>
|
</head>
|
||||||
<base href="./">
|
<base href="./">
|
||||||
<body ng-app="app">
|
<body>
|
||||||
<div class="main-window" ng-controller="AppController" ng-cloak>
|
<div class="main-window" ng-controller="AppController" ng-cloak>
|
||||||
<div ng-show="state == 'default'">
|
<div ng-show="state == 'default'">
|
||||||
<ng-include src="'./app/views/default/page.html'"></ng-include>
|
<ng-include src="'./app/views/default/page.html'"></ng-include>
|
||||||
|
@ -28,35 +34,5 @@
|
||||||
<ng-include src="'./app/views/settings/page.html'"></ng-include>
|
<ng-include src="'./app/views/settings/page.html'"></ng-include>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!--
|
|
||||||
@see comment https://github.com/signalapp/libsignal-protocol-javascript/issues/6#issuecomment-247208665
|
|
||||||
-->
|
|
||||||
<script>
|
|
||||||
window.nodeRequire = require
|
|
||||||
delete window.require
|
|
||||||
</script>
|
|
||||||
<!-- Place libsignal at libs dir as it's no more distributed with converse.js -->
|
|
||||||
<script src="libs/converse.js/3rdparty/libsignal-protocol.js"></script>
|
|
||||||
<script>
|
|
||||||
window.require = window.nodeRequire
|
|
||||||
delete window.nodeRequire
|
|
||||||
</script>
|
|
||||||
<script>
|
|
||||||
// You can also require other files to run in this process
|
|
||||||
require('./node_modules/converse.js/dist/emojis.js')
|
|
||||||
require('./node_modules/converse.js/dist/converse.js')
|
|
||||||
require('./renderer.js')
|
|
||||||
</script>
|
|
||||||
<script>
|
|
||||||
function loadJs(url) {
|
|
||||||
var script = document.createElement('script')
|
|
||||||
script.src = url
|
|
||||||
script.setAttribute('async', 'true')
|
|
||||||
document.documentElement.firstChild.appendChild(script)
|
|
||||||
}
|
|
||||||
setTimeout(function () {
|
|
||||||
loadJs("./node_modules/github-buttons/dist/buttons.min.js")
|
|
||||||
}, 500)
|
|
||||||
</script>
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
|
@ -1,4 +1,4 @@
|
||||||
let desktopPlugin = {}
|
const desktopPlugin = {}
|
||||||
|
|
||||||
desktopPlugin.register = (login) => {
|
desktopPlugin.register = (login) => {
|
||||||
converse.plugins.add('converseDesktop', {
|
converse.plugins.add('converseDesktop', {
|
||||||
|
@ -64,4 +64,4 @@ desktopPlugin.register = (login) => {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = desktopPlugin
|
export default desktopPlugin;
|
48
main.js
48
main.js
|
@ -1,14 +1,16 @@
|
||||||
// Modules to control application life and create native browser window
|
// Modules to control application life and create native browser window
|
||||||
const { app, BrowserWindow, ipcMain, shell } = require('electron')
|
const {app, BrowserWindow, ipcMain, shell} = require('electron')
|
||||||
|
const path = require('path');
|
||||||
|
|
||||||
// Keep a global reference of the window object, if you don't, the window will
|
// Keep a global reference of the window object, if you don't, the window will
|
||||||
// be closed automatically when the JavaScript object is garbage collected.
|
// be closed automatically when the JavaScript object is garbage collected.
|
||||||
let mainWindow
|
let mainWindow
|
||||||
|
|
||||||
// Require other app modules
|
// Require other app modules
|
||||||
const trayService = require(__dirname+'/modules/tray-service')
|
const trayService = require(__dirname + '/modules/tray-service')
|
||||||
const menuService = require(__dirname+'/modules/menu-service')
|
const menuService = require(__dirname + '/modules/menu-service')
|
||||||
const settingsService = require(__dirname+'/modules/settings-service')
|
const settingsService = require(__dirname + '/modules/settings-service')
|
||||||
|
const electronSettings = require("electron-settings");
|
||||||
|
|
||||||
const isMac = process.platform === 'darwin'
|
const isMac = process.platform === 'darwin'
|
||||||
const isWin = process.platform === 'win32'
|
const isWin = process.platform === 'win32'
|
||||||
|
@ -21,7 +23,7 @@ function initApp() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function createWindow () {
|
function createWindow() {
|
||||||
// Main window options
|
// Main window options
|
||||||
let mainWindowOptions = {
|
let mainWindowOptions = {
|
||||||
width: 800,
|
width: 800,
|
||||||
|
@ -29,9 +31,7 @@ function createWindow () {
|
||||||
minWidth: 780,
|
minWidth: 780,
|
||||||
minHeight: 560,
|
minHeight: 560,
|
||||||
webPreferences: {
|
webPreferences: {
|
||||||
nodeIntegration: true,
|
preload: path.join(__dirname, 'preload.js')
|
||||||
contextIsolation: false,
|
|
||||||
enableRemoteModule: true
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -107,7 +107,7 @@ function createWindow () {
|
||||||
// Handle shutdown event on Mac with minimizeOnClose
|
// Handle shutdown event on Mac with minimizeOnClose
|
||||||
// to prevent shutdown interrupt
|
// to prevent shutdown interrupt
|
||||||
if (isMac && minimizeOnClose) {
|
if (isMac && minimizeOnClose) {
|
||||||
const { powerMonitor } = require('electron')
|
const {powerMonitor} = require('electron')
|
||||||
powerMonitor.on('shutdown', () => {
|
powerMonitor.on('shutdown', () => {
|
||||||
app.isQuitting = true
|
app.isQuitting = true
|
||||||
app.quit()
|
app.quit()
|
||||||
|
@ -121,6 +121,32 @@ function createWindow () {
|
||||||
app.exit()
|
app.exit()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
ipcMain.on('electron-settings', (event, method, ...args) => {
|
||||||
|
switch (method) {
|
||||||
|
case 'hasSync':
|
||||||
|
event.returnValue = electronSettings.hasSync(...args);
|
||||||
|
break;
|
||||||
|
case 'getSync':
|
||||||
|
event.returnValue = electronSettings.getSync(...args);
|
||||||
|
break;
|
||||||
|
case 'setSync':
|
||||||
|
electronSettings.setSync(...args);
|
||||||
|
break;
|
||||||
|
case 'unsetSync':
|
||||||
|
electronSettings.unsetSync(...args);
|
||||||
|
}
|
||||||
|
|
||||||
|
return event.returnValue;
|
||||||
|
})
|
||||||
|
|
||||||
|
ipcMain.on('tray-service', (event, method) => {
|
||||||
|
return trayService[method].call();
|
||||||
|
})
|
||||||
|
|
||||||
|
ipcMain.on('reload', () => {
|
||||||
|
return mainWindow.reload();
|
||||||
|
})
|
||||||
|
|
||||||
// Emitted when the window is closed.
|
// Emitted when the window is closed.
|
||||||
mainWindow.on('closed', function () {
|
mainWindow.on('closed', function () {
|
||||||
// Dereference the window object, usually you would store windows
|
// Dereference the window object, usually you would store windows
|
||||||
|
@ -130,7 +156,7 @@ function createWindow () {
|
||||||
})
|
})
|
||||||
|
|
||||||
// Open links on system default browser
|
// Open links on system default browser
|
||||||
mainWindow.webContents.on('new-window', function(e, url) {
|
mainWindow.webContents.on('new-window', function (e, url) {
|
||||||
e.preventDefault()
|
e.preventDefault()
|
||||||
shell.openExternal(url)
|
shell.openExternal(url)
|
||||||
})
|
})
|
||||||
|
@ -152,7 +178,7 @@ app.on('window-all-closed', function () {
|
||||||
})
|
})
|
||||||
|
|
||||||
app.on('activate', function () {
|
app.on('activate', function () {
|
||||||
if (mainWindow === null){
|
if (mainWindow === null) {
|
||||||
createWindow()
|
createWindow()
|
||||||
} else {
|
} else {
|
||||||
mainWindow.show();
|
mainWindow.show();
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/**
|
/**
|
||||||
* Module for getting settigns in Main process.
|
* Module for getting settings in Main process.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
const electronSettings = require('electron-settings')
|
const electronSettings = require('electron-settings')
|
||||||
|
@ -7,7 +7,7 @@ const electronSettings = require('electron-settings')
|
||||||
let settingsService = {}
|
let settingsService = {}
|
||||||
|
|
||||||
settingsService.get = (itemKey) => {
|
settingsService.get = (itemKey) => {
|
||||||
settingValue = electronSettings.getSync(itemKey)
|
let settingValue = electronSettings.getSync(itemKey)
|
||||||
if (typeof settingValue === 'undefined' || settingValue === null) {
|
if (typeof settingValue === 'undefined' || settingValue === null) {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
"author": "Nick Denry <nick@denry.ru>",
|
"author": "Nick Denry <nick@denry.ru>",
|
||||||
"license": "MPL-2.0",
|
"license": "MPL-2.0",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"electron": "^13.0.0",
|
"electron": "^16.0.0",
|
||||||
"electron-builder": "^22.9.1",
|
"electron-builder": "^22.9.1",
|
||||||
"electron-packager": "^15.2.0"
|
"electron-packager": "^15.2.0"
|
||||||
},
|
},
|
||||||
|
|
|
@ -0,0 +1,37 @@
|
||||||
|
const {ipcRenderer, contextBridge} = require('electron');
|
||||||
|
contextBridge.exposeInMainWorld('api', {
|
||||||
|
send(channel, ...data) {
|
||||||
|
return ipcRenderer.send(channel, ...data);
|
||||||
|
},
|
||||||
|
|
||||||
|
receive(channel, cb) {
|
||||||
|
ipcRenderer.on(channel, (event, ...args) => cb(...args));
|
||||||
|
},
|
||||||
|
|
||||||
|
reload() {
|
||||||
|
ipcRenderer.send('reload')
|
||||||
|
},
|
||||||
|
|
||||||
|
electronSettings: {
|
||||||
|
hasSync(setting) {
|
||||||
|
return ipcRenderer.sendSync('electron-settings', 'hasSync', setting)
|
||||||
|
},
|
||||||
|
setSync(setting, value) {
|
||||||
|
ipcRenderer.send('electron-settings', 'setSync', setting, value)
|
||||||
|
},
|
||||||
|
unsetSync(setting) {
|
||||||
|
ipcRenderer.send('electron-settings', 'unsetSync', setting)
|
||||||
|
},
|
||||||
|
getSync(setting) {
|
||||||
|
return ipcRenderer.sendSync('electron-settings', 'getSync', setting);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
trayService: {
|
||||||
|
showEnvelope() {
|
||||||
|
ipcRenderer.send('tray-service', 'showEnvelope')
|
||||||
|
},
|
||||||
|
hideEnvelope() {
|
||||||
|
ipcRenderer.send('tray-service', 'hideEnvelope')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
42
renderer.js
42
renderer.js
|
@ -1,44 +1,42 @@
|
||||||
// This file is required by the index.html file and will
|
// This file is required by the index.html file and will
|
||||||
// be executed in the renderer process for that window.
|
// be executed in the renderer process for that window.
|
||||||
// All of the Node.js APIs are available in this process.
|
|
||||||
|
|
||||||
var angApp = require('./app/init')
|
const angApp = (await import('./app/init.js')).default;
|
||||||
|
|
||||||
|
await import('./app/services/credentials-service.js')
|
||||||
|
await import('./app/services/settings-service.js')
|
||||||
|
await import('./app/services/system-service.js')
|
||||||
|
await import('./app/services/app-state-service.js')
|
||||||
|
await import('./app/services/xmpp-helper-service.js')
|
||||||
|
await import('./app/services/desktop-service.js')
|
||||||
|
await import('./app/controllers/settings-controller.js')
|
||||||
|
await import('./app/controllers/login-controller.js')
|
||||||
|
await import('./app/controllers/default-controller.js')
|
||||||
|
await import('./app/controllers/about-controller.js')
|
||||||
|
await import('./app/controllers/footer-controller.js')
|
||||||
|
|
||||||
require('./app/services/credentials-service')
|
|
||||||
require('./app/services/settings-service')
|
|
||||||
require('./app/services/system-service')
|
|
||||||
require('./app/services/app-state-service')
|
|
||||||
require('./app/services/xmpp-helper-service')
|
|
||||||
require('./app/services/desktop-service')
|
|
||||||
require('./app/controllers/settings-controller')
|
|
||||||
require('./app/controllers/login-controller')
|
|
||||||
require('./app/controllers/default-controller')
|
|
||||||
require('./app/controllers/about-controller')
|
|
||||||
require('./app/controllers/footer-controller')
|
|
||||||
|
|
||||||
angApp.controller('AppController', function ($scope, $timeout, DesktopService, SettingsService, AppStateService) {
|
angApp.controller('AppController', function ($scope, $timeout, DesktopService, SettingsService, AppStateService) {
|
||||||
|
|
||||||
const { ipcRenderer } = require('electron')
|
|
||||||
|
|
||||||
// Menu force logout event
|
// Menu force logout event
|
||||||
ipcRenderer.on('force-logout-event', () => {
|
api.receive('force-logout-event', () => {
|
||||||
DesktopService.logout()
|
DesktopService.logout()
|
||||||
let event = new CustomEvent("converse-force-logout") // Dispatch to the plugin
|
let event = new CustomEvent("converse-force-logout") // Dispatch to the plugin
|
||||||
document.dispatchEvent(event)
|
document.dispatchEvent(event)
|
||||||
})
|
})
|
||||||
|
|
||||||
// Menu settings event
|
// Menu settings event
|
||||||
ipcRenderer.on('preferences-event', () => {
|
api.receive('preferences-event', () => {
|
||||||
AppStateService.set(AppStateService.APP_STATE_SETTINGS)
|
AppStateService.set(AppStateService.APP_STATE_SETTINGS)
|
||||||
})
|
})
|
||||||
|
|
||||||
// Menu about event
|
// Menu about event
|
||||||
ipcRenderer.on('about-page-event', () => {
|
api.receive('about-page-event', () => {
|
||||||
AppStateService.set(AppStateService.APP_STATE_ABOUT)
|
AppStateService.set(AppStateService.APP_STATE_ABOUT)
|
||||||
})
|
})
|
||||||
|
|
||||||
// Menu about event
|
// Menu about event
|
||||||
ipcRenderer.on('open-unread-chat', () => {
|
api.receive('open-unread-chat', () => {
|
||||||
let event = new CustomEvent('conversejs-open-chat', {detail: DesktopService.chatToOpen})
|
let event = new CustomEvent('conversejs-open-chat', {detail: DesktopService.chatToOpen})
|
||||||
document.dispatchEvent(event)
|
document.dispatchEvent(event)
|
||||||
})
|
})
|
||||||
|
@ -54,11 +52,13 @@ angApp.controller('AppController', function ($scope, $timeout, DesktopService, S
|
||||||
})
|
})
|
||||||
|
|
||||||
$scope.$on('app:restart', (event, data) => {
|
$scope.$on('app:restart', (event, data) => {
|
||||||
ipcRenderer.send('app-restart')
|
api.send('app-restart')
|
||||||
})
|
})
|
||||||
|
|
||||||
SettingsService.initDefaults()
|
SettingsService.initDefaults()
|
||||||
|
|
||||||
DesktopService.getCredentialsAndLogin()
|
DesktopService.getCredentialsAndLogin()
|
||||||
|
|
||||||
})
|
});
|
||||||
|
|
||||||
|
angular.bootstrap(document.body, ['app']);
|
||||||
|
|
Loading…
Reference in New Issue