Commit c7e70236 authored by JC Brand's avatar JC Brand

Properly clear user settings

by first waiting until the model has been set up.
parent 727ddc29
...@@ -703,7 +703,7 @@ converse.plugins.add('converse-muc-views', { ...@@ -703,7 +703,7 @@ converse.plugins.add('converse-muc-views', {
this.listenTo(this.model.notifications, 'change', this.renderNotifications); this.listenTo(this.model.notifications, 'change', this.renderNotifications);
this.listenTo(this.model.session, 'change:connection_status', this.onConnectionStatusChanged); this.listenTo(this.model.session, 'change:connection_status', this.onConnectionStatusChanged);
const user_settings = _converse.api.user.settings.getModel(); const user_settings = await _converse.api.user.settings.getModel();
this.listenTo(user_settings, 'change:mucs_with_hidden_subject', this.renderHeading); this.listenTo(user_settings, 'change:mucs_with_hidden_subject', this.renderHeading);
this.listenTo(this.model, 'change', debounce(() => this.renderHeading(), 250)); this.listenTo(this.model, 'change', debounce(() => this.renderHeading(), 250));
......
...@@ -276,7 +276,7 @@ pluggable.enable(_converse, '_converse', 'pluggable'); ...@@ -276,7 +276,7 @@ pluggable.enable(_converse, '_converse', 'pluggable');
// Populated via the _converse.api.users.settings API // Populated via the _converse.api.users.settings API
const user_settings = new Model(); let user_settings;
function initUserSettings () { function initUserSettings () {
if (!_converse.bare_jid) { if (!_converse.bare_jid) {
...@@ -284,9 +284,10 @@ function initUserSettings () { ...@@ -284,9 +284,10 @@ function initUserSettings () {
log.error(msg); log.error(msg);
throw Error(msg); throw Error(msg);
} }
if (!user_settings.fetched) { if (!user_settings?.fetched) {
const id = `converse.user-settings.${_converse.bare_jid}`; const id = `converse.user-settings.${_converse.bare_jid}`;
user_settings.browserStorage = _converse.createStore(id, "session"); user_settings = new Model({id});
user_settings.browserStorage = _converse.createStore(id);
user_settings.fetched = user_settings.fetch({'promise': true}); user_settings.fetched = user_settings.fetch({'promise': true});
} }
return user_settings.fetched; return user_settings.fetched;
...@@ -562,10 +563,11 @@ const api = _converse.api = { ...@@ -562,10 +563,11 @@ const api = _converse.api = {
/** /**
* Returns the user settings model. Useful when you want to listen for change events. * Returns the user settings model. Useful when you want to listen for change events.
* @method _converse.api.user.settings.getModel * @method _converse.api.user.settings.getModel
* @returns {Model} * @returns {Promise<Model>}
* @example _converse.api.user.settings.getModel * @example const settings = await _converse.api.user.settings.getModel();
*/ */
getModel () { async getModel () {
await initUserSettings();
return user_settings; return user_settings;
}, },
...@@ -605,6 +607,15 @@ const api = _converse.api = { ...@@ -605,6 +607,15 @@ const api = _converse.api = {
o[key] = val; o[key] = val;
return user_settings.save(o, {'promise': true}); return user_settings.save(o, {'promise': true});
} }
},
/**
* Clears all the user settings
* @method _converse.api.user.settings.clear
*/
async clear () {
await initUserSettings();
user_settings.clear();
} }
} }
}, },
...@@ -1132,8 +1143,7 @@ function clearSession () { ...@@ -1132,8 +1143,7 @@ function clearSession () {
delete _converse.session; delete _converse.session;
} }
if (_converse.shouldClearCache()) { if (_converse.shouldClearCache()) {
const model = _converse.api.user.settings.getModel(); _converse.api.user.settings.clear();
model.clear();
} }
/** /**
* Synchronouse event triggered once the user session has been cleared, * Synchronouse event triggered once the user session has been cleared,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment