From 21683ccbca6e20ae41bccb64f08f27666df20fc5 Mon Sep 17 00:00:00 2001 From: Nick Denry Date: Tue, 12 May 2020 19:55:56 +0300 Subject: [PATCH] Open related chat on tray icon click --- app/services/chimeverse-service.js | 4 +++ .../converse.js/3rdparty/chimeverse-plugin.js | 28 ++++++++++++++----- main.js | 1 - modules/menu-service.js | 6 ++-- modules/tray-service.js | 6 ++-- renderer.js | 14 +++++++--- 6 files changed, 42 insertions(+), 17 deletions(-) diff --git a/app/services/chimeverse-service.js b/app/services/chimeverse-service.js index e89ad33..d290e87 100644 --- a/app/services/chimeverse-service.js +++ b/app/services/chimeverse-service.js @@ -43,11 +43,15 @@ angApp.factory('ChimeVerseService', ($window, CredentialsServise, SystemService, }) } + chimeverseService.chatToOpen = null + $window.document.addEventListener('conversejs-logout', function (e) { chimeverseService.logout() }); $window.document.addEventListener('conversejs-unread', function (e) { + let sender = e.detail + chimeverseService.chatToOpen = sender chimeverseService._notifyMessage() }); diff --git a/libs/converse.js/3rdparty/chimeverse-plugin.js b/libs/converse.js/3rdparty/chimeverse-plugin.js index 3b79fa9..193a26b 100644 --- a/libs/converse.js/3rdparty/chimeverse-plugin.js +++ b/libs/converse.js/3rdparty/chimeverse-plugin.js @@ -1,6 +1,6 @@ let chimeversePlugin = {} -chimeversePlugin.register = () => { +chimeversePlugin.register = (login) => { converse.plugins.add('chimeVerse', { initialize: (event) => { let _converse = event.properties._converse @@ -9,16 +9,23 @@ chimeversePlugin.register = () => { _converse.api.waitUntil('chatBoxesFetched') ]).then(() => { _converse.api.listen.on('logout', () => { - let event = new CustomEvent("conversejs-logout") + let event = new CustomEvent('conversejs-logout') document.dispatchEvent(event) }) _converse.api.listen.on('message', (data) => { - let event = new CustomEvent("conversejs-unread") - document.dispatchEvent(event) - //chimeverseService._notifyMessage(data) + let sender = data.stanza.attributes.from.nodeValue + let senderJid = sender + if (sender.indexOf('/') !== -1) { + senderJid = sender.substr(0, sender.lastIndexOf('/')) + } + if (senderJid != login) { + console.log(senderJid) + let event = new CustomEvent('conversejs-unread', {detail: senderJid}) + document.dispatchEvent(event) + } }) _converse.api.listen.on('chatBoxFocused', () => { - let event = new CustomEvent("conversejs-no-unread") + let event = new CustomEvent('conversejs-no-unread') document.dispatchEvent(event) //chimeverseService._hideNotifyMessage() }) @@ -27,7 +34,14 @@ chimeversePlugin.register = () => { console.log('Logout form plugin') _converse.api.user.logout(); //chimeverseService.logout() - }); + }) + 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) + } + }) }) } }) diff --git a/main.js b/main.js index 1764655..50cf6e7 100644 --- a/main.js +++ b/main.js @@ -96,7 +96,6 @@ function createWindow () { }) } - // Emitted when the window is closed. mainWindow.on('closed', function () { // Dereference the window object, usually you would store windows diff --git a/modules/menu-service.js b/modules/menu-service.js index 00e0f0c..42372f2 100644 --- a/modules/menu-service.js +++ b/modules/menu-service.js @@ -19,7 +19,7 @@ menuService.createMenu = () => { // let activeWindow = BrowserWindow.getFocusedWindow() let activeWindow = BrowserWindow.getAllWindows()[0] activeWindow.show() - activeWindow.webContents.send('about-page-event'); + activeWindow.webContents.send('about-page-event') } }, { @@ -37,7 +37,7 @@ menuService.createMenu = () => { click: () => { let activeWindow = BrowserWindow.getAllWindows()[0] activeWindow.show() - activeWindow.webContents.send('force-logout-event'); + activeWindow.webContents.send('force-logout-event') } }, { @@ -49,7 +49,7 @@ menuService.createMenu = () => { click: () => { let activeWindow = BrowserWindow.getAllWindows()[0] activeWindow.show() - activeWindow.webContents.send('preferences-event'); + activeWindow.webContents.send('preferences-event') } }, { diff --git a/modules/tray-service.js b/modules/tray-service.js index f5c47fa..9114c39 100644 --- a/modules/tray-service.js +++ b/modules/tray-service.js @@ -2,7 +2,7 @@ * Module for Tray functions. */ -const {Tray} = require('electron') +const { BrowserWindow, Tray } = require('electron') let trayServiceWindow = null let tray = null @@ -14,8 +14,10 @@ trayService.initTray = (window) => { let iconPath = __dirname + '/../resources/images/icon.png' tray = new Tray(iconPath) tray.setToolTip('Chimeverse') - tray.on('click', function() { + // Sent open-related-chat event only on click + let activeWindow = BrowserWindow.getAllWindows()[0] + activeWindow.webContents.send('open-unread-chat') trayService.hideEnvelope() trayServiceWindow.show() }) diff --git a/renderer.js b/renderer.js index d3877ba..6c5828f 100644 --- a/renderer.js +++ b/renderer.js @@ -14,11 +14,9 @@ require('./app/controllers/login-controller') require('./app/controllers/default-controller') require('./app/controllers/about-controller') const chimeversePlugin = require('./libs/converse.js/3rdparty/chimeverse-plugin') -chimeversePlugin.register() angApp.controller('AppController', function ($scope, $timeout, ChimeVerseService, CredentialsServise, SettingsService, AppStateService) { - //const { remote, ipcRenderer } = require('electron') const { ipcRenderer } = require('electron') // Menu force logout event @@ -26,17 +24,24 @@ angApp.controller('AppController', function ($scope, $timeout, ChimeVerseService ChimeVerseService.logout() let event = new CustomEvent("converse-force-logout") // Dispatch to the plugin document.dispatchEvent(event) - //remote.getCurrentWindow().reload() }) + // Menu settings event ipcRenderer.on('preferences-event', () => { AppStateService.set(AppStateService.APP_STATE_SETTINGS) }) + // Menu about event ipcRenderer.on('about-page-event', () => { AppStateService.set(AppStateService.APP_STATE_ABOUT) }) + // Menu about event + ipcRenderer.on('open-unread-chat', () => { + let event = new CustomEvent('conversejs-open-chat', {detail: ChimeVerseService.chatToOpen}) + document.dispatchEvent(event) + }) + $scope.state = AppStateService.APP_STATE_DEFAULT $scope.$on('app:state:changed', (event, data) => { @@ -45,7 +50,7 @@ angApp.controller('AppController', function ($scope, $timeout, ChimeVerseService $scope.state = data console.log('Switch to the "' + $scope.state +'" state') }, 0) - }); + }) SettingsService.initDefaults() @@ -53,6 +58,7 @@ angApp.controller('AppController', function ($scope, $timeout, ChimeVerseService let credentials = CredentialsServise.getCredentials() credentials.then((result) => { ChimeVerseService.initConverse(result.bosh, result.login, result.password) + chimeversePlugin.register(result.login) }, (error) => { AppStateService.set(AppStateService.APP_STATE_LOGIN) })