diff --git a/.gitignore b/.gitignore index 781dce0..3772294 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ node_modules .DS_* package-lock.json dist/ +.idea/ diff --git a/app/converse-plugins/desktop-credentials.js b/app/converse-plugins/desktop-credentials.js index 08b0a24..b3ac722 100644 --- a/app/converse-plugins/desktop-credentials.js +++ b/app/converse-plugins/desktop-credentials.js @@ -1,5 +1,4 @@ -const { addCredentials } = require('../credentials.js'); -const { getCredentials, removeCredentials } = require('../credentials.js'); +const credentials = await import('../credentials.js'); converse.plugins.add('converse-desktop-credentials', { @@ -9,7 +8,7 @@ converse.plugins.add('converse-desktop-credentials', { api.listen.on('afterResourceBinding', () => { if (_converse.connection.pass) { - addCredentials( + credentials.addCredentials( converse.connectionManager, _converse.bare_jid, _converse.connection.pass @@ -18,7 +17,7 @@ converse.plugins.add('converse-desktop-credentials', { }); api.listen.on('logout', () => { - getCredentials().then((result) => removeCredentials(result.login)) + credentials.getCredentials().then((result) => credentials.removeCredentials(result.login)) }); } }); diff --git a/app/converse-plugins/desktop-trayicon.js b/app/converse-plugins/desktop-trayicon.js new file mode 100644 index 0000000..c63c627 --- /dev/null +++ b/app/converse-plugins/desktop-trayicon.js @@ -0,0 +1,24 @@ +/* global api */ + +converse.plugins.add('converse-desktop-trayicon', { + + initialize() { + const {_converse} = this; + let envelopeIsShowing = false; + + function hideEnvelope() { + if (envelopeIsShowing) { + api.trayService.hideEnvelope(); + envelopeIsShowing = false; + } + } + + window.addEventListener('focus', hideEnvelope); + _converse.api.listen.on('chatBoxInitialized', hideEnvelope); + _converse.api.listen.on('chatBoxFocused', hideEnvelope); + _converse.api.listen.on('messageNotification', () => { + api.trayService.showEnvelope(); + envelopeIsShowing = true; + }); + } +}); diff --git a/app/credentials.js b/app/credentials.js index ce0e9dd..fb2f17b 100644 --- a/app/credentials.js +++ b/app/credentials.js @@ -1,48 +1,32 @@ -/* global require, module */ +/* global api */ -const settings = require('electron-settings'); -const keytar = require('keytar') - -function addCredentials (connectionManager, login, password) { +async function addCredentials(connectionManager, login, password) { const xmppService = login.split('@').pop() - settings.setSync('connectionManager', connectionManager) - settings.setSync('login', login) - keytar.setPassword(xmppService, login, password) + await api.settings.set('connectionManager', connectionManager) + await api.settings.set('login', login) + await api.keytar.setPassword(xmppService, login, password) } -function getCredentials () { +async function getCredentials() { const credentials = {} - credentials.login = settings.getSync('login') - return new Promise((resolve) => { - if (credentials.login) { - credentials.connectionManager = settings.getSync('connectionManager') - credentials.xmppService = credentials.login.split('@').pop() - let password = keytar.getPassword(credentials.xmppService, credentials.login) - password.then((result) => { - credentials.password = result - resolve(credentials) - }) - } else { - resolve({}); - } - }); + credentials.login = await api.settings.get('login') + if (credentials.login) { + credentials.connectionManager = await api.settings.get('connectionManager') || null + credentials.xmppService = credentials.login.split('@').pop() + credentials.password = await api.keytar.getPassword(credentials.xmppService, credentials.login) + } + + return credentials; } -function removeCredentials (login) { - const xmppService = login.split('@').pop() - const passwordDelete = keytar.deletePassword(xmppService, login) - return new Promise((resolve, reject) => { - passwordDelete.then(() => { - settings.unsetSync('login') - settings.unsetSync('connectionManager') - resolve() - }, (error) => { - reject(error) - }) - }) +async function removeCredentials(login) { + const xmppService = login.split('@').pop(); + await api.keytar.deletePassword(xmppService, login); + await api.settings.unset('login'); + await api.settings.unset('connectionManager'); } -module.exports = { +export { addCredentials, getCredentials, removeCredentials diff --git a/index.html b/index.html index 44f8030..ee71c65 100644 --- a/index.html +++ b/index.html @@ -17,24 +17,9 @@
- - - - - + +