|
@@ -506,12 +506,15 @@ _converse.initConnection = function () {
|
|
|
|
|
|
|
|
|
async function initUserSession (jid) {
|
|
|
- const bare_jid = Strophe.getBareJidFromJid(jid);
|
|
|
+ const bare_jid = Strophe.getBareJidFromJid(jid).toLowerCase();
|
|
|
const id = `converse.session-${bare_jid}`;
|
|
|
if (!_converse.session || _converse.session.get('id') !== id) {
|
|
|
_converse.session = new Backbone.Model({id});
|
|
|
_converse.session.browserStorage = new BrowserStorage.session(id);
|
|
|
await new Promise(r => _converse.session.fetch({'success': r, 'error': r}));
|
|
|
+ if (_converse.session.get('active')) {
|
|
|
+ _converse.session.clear();
|
|
|
+ }
|
|
|
/**
|
|
|
* Triggered once the user's session has been initialized. The session is a
|
|
|
* cache which stores information about the user's current session.
|
|
@@ -523,7 +526,9 @@ async function initUserSession (jid) {
|
|
|
}
|
|
|
|
|
|
async function setUserJID (jid) {
|
|
|
- jid = jid.toLowerCase();
|
|
|
+ await initUserSession(jid);
|
|
|
+ jid = _converse.session.get('jid') || jid;
|
|
|
+
|
|
|
if (!Strophe.getResourceFromJid(jid)) {
|
|
|
jid = jid.toLowerCase() + _converse.generateResource();
|
|
|
// Set JID on the connection object so that when we call
|
|
@@ -531,7 +536,6 @@ async function setUserJID (jid) {
|
|
|
// and sent to the XMPP server.
|
|
|
_converse.connection.jid = jid;
|
|
|
}
|
|
|
- await initUserSession(jid);
|
|
|
_converse.jid = jid;
|
|
|
_converse.bare_jid = Strophe.getBareJidFromJid(jid);
|
|
|
_converse.resource = Strophe.getResourceFromJid(jid);
|
|
@@ -540,7 +544,8 @@ async function setUserJID (jid) {
|
|
|
'jid': jid,
|
|
|
'bare_jid': _converse.bare_jid,
|
|
|
'resource': _converse.resource,
|
|
|
- 'domain': _converse.domain
|
|
|
+ 'domain': _converse.domain,
|
|
|
+ 'active': true
|
|
|
});
|
|
|
/**
|
|
|
* Triggered whenever the user's JID has been updated
|
|
@@ -822,6 +827,11 @@ _converse.initialize = async function (settings, callback) {
|
|
|
window.addEventListener('mousemove', _converse.onUserActivity);
|
|
|
const options = {'once': true, 'passive': true};
|
|
|
window.addEventListener(_converse.unloadevent, _converse.onUserActivity, options);
|
|
|
+ window.addEventListener(_converse.unloadevent, () => {
|
|
|
+ if (_converse.session) {
|
|
|
+ _converse.session.save('active', false);
|
|
|
+ }
|
|
|
+ });
|
|
|
_converse.everySecondTrigger = window.setInterval(_converse.onEverySecond, 1000);
|
|
|
};
|
|
|
|