diff --git a/app/services/chimeverse-service.js b/app/services/chimeverse-service.js index ae58a80..4f9f1d4 100644 --- a/app/services/chimeverse-service.js +++ b/app/services/chimeverse-service.js @@ -2,7 +2,10 @@ let angApp = require(__dirname + '/../init') const chimeversePlugin = require(__dirname +'/../../libs/converse.js/3rdparty/chimeverse-plugin') -angApp.factory('ChimeVerseService', ($window, $timeout, CredentialsServise, SystemService, AppStateService, SettingsService) => { +angApp.factory('ChimeVerseService', ( + $window, $timeout, CredentialsServise, SystemService, AppStateService, + SettingsService, XmppHelperService + ) => { let chimeverseService = {} @@ -32,7 +35,11 @@ angApp.factory('ChimeVerseService', ($window, $timeout, CredentialsServise, Syst let lang = navigator.language let allowBookmarks = SettingsService.get('allowBookmarks') let omemoDefault = SettingsService.get('omemoDefault') - let xmppResource = '.' + (Math.random().toString(36)+'00000000000000000').slice(2, 7); // Generate 5 char unique str + let xmppResource = XmppHelperService.getResourceFromJid(login) + if (!xmppResource) { + xmppResource = '.' + (Math.random().toString(36)+'00000000000000000').slice(2, 7) // Generate 5 char unique str + login = login + '/Chimeverse'+xmppResource + } let conversejsParams = { assets_path: './node_modules/converse.js/dist/', allow_bookmarks: allowBookmarks, @@ -40,7 +47,7 @@ angApp.factory('ChimeVerseService', ($window, $timeout, CredentialsServise, Syst auto_reconnect: true, // debug: true, i18n: lang, - jid: login + '/Chimeverse'+xmppResource, + jid: login, omemo_default: omemoDefault, password: password, play_sounds: false, diff --git a/app/services/xmpp-helper-service.js b/app/services/xmpp-helper-service.js new file mode 100644 index 0000000..74408ab --- /dev/null +++ b/app/services/xmpp-helper-service.js @@ -0,0 +1,25 @@ +let angApp = require(__dirname + '/../init') + +angApp.factory('XmppHelperService', [() => { + + let xmppHelperService = {} + + /** + * Use function copy from Strophe js lib because converse.js Strophe library + * is under private _api and unavailable before converse.js is initialized. + * This function is used _before_ converse.js is initialized. + * + * Get the resource portion of a JID String. + * @param {string} jid A JID. + * @return {string | null} A String containing the resource. + */ + xmppHelperService.getResourceFromJid = (jid) => { + if (!jid) { return null } + const s = jid.split("/") + if (s.length < 2) { return null } + s.splice(0, 1) + return s.join('/') + } + + return xmppHelperService +}]) \ No newline at end of file diff --git a/renderer.js b/renderer.js index a47ce0c..7bbac6c 100644 --- a/renderer.js +++ b/renderer.js @@ -8,6 +8,7 @@ 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/chimeverse-service') require('./app/controllers/settings-controller') require('./app/controllers/login-controller')