Generate random xmpp resource only if no resource provided at all

This commit is contained in:
Nick Denry 2020-06-17 00:25:00 +03:00
parent e2fe4fe5b3
commit 8f53a4ec63
3 changed files with 36 additions and 3 deletions

View File

@ -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,

View File

@ -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
}])

View File

@ -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')