Open related chat on tray icon click

This commit is contained in:
Nick Denry 2020-05-12 19:55:56 +03:00
parent 49a66a895c
commit 21683ccbca
6 changed files with 42 additions and 17 deletions

View File

@ -43,11 +43,15 @@ angApp.factory('ChimeVerseService', ($window, CredentialsServise, SystemService,
}) })
} }
chimeverseService.chatToOpen = null
$window.document.addEventListener('conversejs-logout', function (e) { $window.document.addEventListener('conversejs-logout', function (e) {
chimeverseService.logout() chimeverseService.logout()
}); });
$window.document.addEventListener('conversejs-unread', function (e) { $window.document.addEventListener('conversejs-unread', function (e) {
let sender = e.detail
chimeverseService.chatToOpen = sender
chimeverseService._notifyMessage() chimeverseService._notifyMessage()
}); });

View File

@ -1,6 +1,6 @@
let chimeversePlugin = {} let chimeversePlugin = {}
chimeversePlugin.register = () => { chimeversePlugin.register = (login) => {
converse.plugins.add('chimeVerse', { converse.plugins.add('chimeVerse', {
initialize: (event) => { initialize: (event) => {
let _converse = event.properties._converse let _converse = event.properties._converse
@ -9,16 +9,23 @@ chimeversePlugin.register = () => {
_converse.api.waitUntil('chatBoxesFetched') _converse.api.waitUntil('chatBoxesFetched')
]).then(() => { ]).then(() => {
_converse.api.listen.on('logout', () => { _converse.api.listen.on('logout', () => {
let event = new CustomEvent("conversejs-logout") let event = new CustomEvent('conversejs-logout')
document.dispatchEvent(event) document.dispatchEvent(event)
}) })
_converse.api.listen.on('message', (data) => { _converse.api.listen.on('message', (data) => {
let event = new CustomEvent("conversejs-unread") let sender = data.stanza.attributes.from.nodeValue
document.dispatchEvent(event) let senderJid = sender
//chimeverseService._notifyMessage(data) 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', () => { _converse.api.listen.on('chatBoxFocused', () => {
let event = new CustomEvent("conversejs-no-unread") let event = new CustomEvent('conversejs-no-unread')
document.dispatchEvent(event) document.dispatchEvent(event)
//chimeverseService._hideNotifyMessage() //chimeverseService._hideNotifyMessage()
}) })
@ -27,7 +34,14 @@ chimeversePlugin.register = () => {
console.log('Logout form plugin') console.log('Logout form plugin')
_converse.api.user.logout(); _converse.api.user.logout();
//chimeverseService.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)
}
})
}) })
} }
}) })

View File

@ -96,7 +96,6 @@ function createWindow () {
}) })
} }
// 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

View File

@ -19,7 +19,7 @@ menuService.createMenu = () => {
// let activeWindow = BrowserWindow.getFocusedWindow() // let activeWindow = BrowserWindow.getFocusedWindow()
let activeWindow = BrowserWindow.getAllWindows()[0] let activeWindow = BrowserWindow.getAllWindows()[0]
activeWindow.show() activeWindow.show()
activeWindow.webContents.send('about-page-event'); activeWindow.webContents.send('about-page-event')
} }
}, },
{ {
@ -37,7 +37,7 @@ menuService.createMenu = () => {
click: () => { click: () => {
let activeWindow = BrowserWindow.getAllWindows()[0] let activeWindow = BrowserWindow.getAllWindows()[0]
activeWindow.show() activeWindow.show()
activeWindow.webContents.send('force-logout-event'); activeWindow.webContents.send('force-logout-event')
} }
}, },
{ {
@ -49,7 +49,7 @@ menuService.createMenu = () => {
click: () => { click: () => {
let activeWindow = BrowserWindow.getAllWindows()[0] let activeWindow = BrowserWindow.getAllWindows()[0]
activeWindow.show() activeWindow.show()
activeWindow.webContents.send('preferences-event'); activeWindow.webContents.send('preferences-event')
} }
}, },
{ {

View File

@ -2,7 +2,7 @@
* Module for Tray functions. * Module for Tray functions.
*/ */
const {Tray} = require('electron') const { BrowserWindow, Tray } = require('electron')
let trayServiceWindow = null let trayServiceWindow = null
let tray = null let tray = null
@ -14,8 +14,10 @@ trayService.initTray = (window) => {
let iconPath = __dirname + '/../resources/images/icon.png' let iconPath = __dirname + '/../resources/images/icon.png'
tray = new Tray(iconPath) tray = new Tray(iconPath)
tray.setToolTip('Chimeverse') tray.setToolTip('Chimeverse')
tray.on('click', function() { 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() trayService.hideEnvelope()
trayServiceWindow.show() trayServiceWindow.show()
}) })

View File

@ -14,11 +14,9 @@ require('./app/controllers/login-controller')
require('./app/controllers/default-controller') require('./app/controllers/default-controller')
require('./app/controllers/about-controller') require('./app/controllers/about-controller')
const chimeversePlugin = require('./libs/converse.js/3rdparty/chimeverse-plugin') const chimeversePlugin = require('./libs/converse.js/3rdparty/chimeverse-plugin')
chimeversePlugin.register()
angApp.controller('AppController', function ($scope, $timeout, ChimeVerseService, CredentialsServise, SettingsService, AppStateService) { angApp.controller('AppController', function ($scope, $timeout, ChimeVerseService, CredentialsServise, SettingsService, AppStateService) {
//const { remote, ipcRenderer } = require('electron')
const { ipcRenderer } = require('electron') const { ipcRenderer } = require('electron')
// Menu force logout event // Menu force logout event
@ -26,17 +24,24 @@ angApp.controller('AppController', function ($scope, $timeout, ChimeVerseService
ChimeVerseService.logout() ChimeVerseService.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)
//remote.getCurrentWindow().reload()
}) })
// Menu settings event // Menu settings event
ipcRenderer.on('preferences-event', () => { ipcRenderer.on('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', () => { ipcRenderer.on('about-page-event', () => {
AppStateService.set(AppStateService.APP_STATE_ABOUT) 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.state = AppStateService.APP_STATE_DEFAULT
$scope.$on('app:state:changed', (event, data) => { $scope.$on('app:state:changed', (event, data) => {
@ -45,7 +50,7 @@ angApp.controller('AppController', function ($scope, $timeout, ChimeVerseService
$scope.state = data $scope.state = data
console.log('Switch to the "' + $scope.state +'" state') console.log('Switch to the "' + $scope.state +'" state')
}, 0) }, 0)
}); })
SettingsService.initDefaults() SettingsService.initDefaults()
@ -53,6 +58,7 @@ angApp.controller('AppController', function ($scope, $timeout, ChimeVerseService
let credentials = CredentialsServise.getCredentials() let credentials = CredentialsServise.getCredentials()
credentials.then((result) => { credentials.then((result) => {
ChimeVerseService.initConverse(result.bosh, result.login, result.password) ChimeVerseService.initConverse(result.bosh, result.login, result.password)
chimeversePlugin.register(result.login)
}, (error) => { }, (error) => {
AppStateService.set(AppStateService.APP_STATE_LOGIN) AppStateService.set(AppStateService.APP_STATE_LOGIN)
}) })