Skip to content

Commit 82bce1e

Browse files
committed
Move creation of browserStorage into a separate method
This is in anticipation of the localforage/IndexDB merge
1 parent 877e077 commit 82bce1e

16 files changed

+59
-75
lines changed

src/converse-bookmark-views.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
*/
1212
import "backbone.nativeview";
1313
import "@converse/headless/converse-muc";
14-
import BrowserStorage from "backbone.browserStorage";
1514
import { OrderedListView } from "backbone.overview";
1615
import converse from "@converse/headless/converse-core";
1716
import tpl_bookmark from "templates/bookmark.html";
@@ -255,7 +254,7 @@ converse.plugins.add('converse-bookmark-views', {
255254
const storage = _converse.config.get('storage'),
256255
id = `converse.room-bookmarks${_converse.bare_jid}-list-model`;
257256
this.list_model = new _converse.BookmarksList({'id': id});
258-
this.list_model.browserStorage = new BrowserStorage[storage](id);
257+
this.list_model.browserStorage = _converse.createStore(id, storage);
259258

260259
const render = () => {
261260
this.render();

src/converse-chatboxviews.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -147,8 +147,7 @@ converse.plugins.add('converse-chatboxviews', {
147147
/* This method gets overridden in src/converse-controlbox.js if
148148
* the controlbox plugin is active.
149149
*/
150-
this.forEach(v => v.close());
151-
return this;
150+
return Promise.all(this.map(v => v.close({'name': 'closeAllChatBoxes'})));
152151
}
153152
});
154153

src/converse-emoji-views.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010

1111
import "@converse/headless/converse-emoji";
1212
import { debounce, find } from "lodash";
13-
import BrowserStorage from "backbone.browserStorage";
1413
import bootstrap from "bootstrap.native";
1514
import tpl_emoji_button from "templates/emoji_button.html";
1615
import tpl_emojis from "templates/emojis.html";
@@ -103,7 +102,7 @@ converse.plugins.add('converse-emoji-views', {
103102
const storage = _converse.config.get('storage'),
104103
id = `converse.emoji-${_converse.bare_jid}`;
105104
_converse.emojipicker = new _converse.EmojiPicker({'id': id});
106-
_converse.emojipicker.browserStorage = new BrowserStorage[storage](id);
105+
_converse.emojipicker.browserStorage = _converse.createStore(id, storage);
107106
_converse.emojipicker.fetch();
108107
}
109108
this.emoji_picker_view = new _converse.EmojiPickerView({'model': _converse.emojipicker});

src/converse-minimize.js

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
* @module converse-minimize
88
*/
99
import "converse-chatview";
10-
import BrowserStorage from "backbone.browserStorage";
1110
import { Overview } from "backbone.overview";
1211
import converse from "@converse/headless/converse-core";
1312
import tpl_chatbox_minimize from "templates/chatbox_minimize.html";
@@ -459,11 +458,11 @@ converse.plugins.add('converse-minimize', {
459458

460459
initToggle () {
461460
const storage = _converse.config.get('storage'),
462-
id = `converse.minchatstoggle${_converse.bare_jid}`;
461+
id = `converse.minchatstoggle-${_converse.bare_jid}`;
463462
this.toggleview = new _converse.MinimizedChatsToggleView({
464463
'model': new _converse.MinimizedChatsToggle({'id': id})
465464
});
466-
this.toggleview.model.browserStorage = new BrowserStorage[storage](id);
465+
this.toggleview.model.browserStorage = _converse.createStore(id, storage);
467466
this.toggleview.model.fetch();
468467
},
469468

src/converse-muc-views.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ import "converse-modal";
1313
import "backbone.vdomview";
1414
import "formdata-polyfill";
1515
import "@converse/headless/utils/muc";
16-
import BrowserStorage from "backbone.browserStorage";
1716
import { OrderedListView } from "backbone.overview";
1817
import converse from "@converse/headless/converse-core";
1918
import tpl_add_chatroom_modal from "templates/add_chatroom_modal.html";
@@ -124,11 +123,12 @@ converse.plugins.add('converse-muc-views', {
124123
if (this.roomspanel && u.isInDOM(this.roomspanel.el)) {
125124
return this.roomspanel;
126125
}
126+
const id = `converse.roomspanel${_converse.bare_jid}`;
127+
127128
this.roomspanel = new _converse.RoomsPanel({
128129
'model': new (_converse.RoomsPanelModel.extend({
129-
'id': `converse.roomspanel${_converse.bare_jid}`, // Required by web storage
130-
'browserStorage': new BrowserStorage[_converse.config.get('storage')](
131-
`converse.roomspanel${_converse.bare_jid}`)
130+
id,
131+
'browserStorage': _converse.createStore(id, _converse.config.get('storage'))
132132
}))()
133133
});
134134
this.roomspanel.model.fetch();
@@ -933,7 +933,7 @@ converse.plugins.add('converse-muc-views', {
933933
_converse.router.navigate('');
934934
}
935935
this.model.leave();
936-
_converse.ChatBoxView.prototype.close.apply(this, arguments);
936+
return _converse.ChatBoxView.prototype.close.apply(this, arguments);
937937
},
938938

939939
updateOccupantsToggle () {
@@ -2200,7 +2200,7 @@ converse.plugins.add('converse-muc-views', {
22002200
* @method _converse.api.roomviews.close
22012201
* @param {(String[]|String)} jids The JID or array of JIDs of the chatroom(s)
22022202
*/
2203-
'close' (jids) {
2203+
close (jids) {
22042204
let views;
22052205
if (jids === undefined) {
22062206
views = _converse.chatboxviews;

src/converse-omemo.js

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
* @module converse-omemo
1010
*/
1111
import "converse-profile";
12-
import BrowserStorage from "backbone.browserStorage";
1312
import converse from "@converse/headless/converse-core";
1413
import tpl_toolbar_omemo from "templates/toolbar_omemo.html";
1514

@@ -988,7 +987,7 @@ converse.plugins.add('converse-omemo', {
988987
this.devices = new _converse.Devices();
989988
const id = `converse.devicelist-${_converse.bare_jid}-${this.get('jid')}`;
990989
const storage = _converse.config.get('storage');
991-
this.devices.browserStorage = new BrowserStorage[storage](id);
990+
this.devices.browserStorage = _converse.createStore(id, storage);
992991
this.fetchDevices();
993992
},
994993

@@ -1017,7 +1016,7 @@ converse.plugins.add('converse-omemo', {
10171016
this._devices_promise = new Promise(resolve => {
10181017
this.devices.fetch({
10191018
'success': c => resolve(this.onDevicesFound(c)),
1020-
'error': e => { _converse.log(e, Strophe.LogLevel.ERROR); resolve(); }
1019+
'error': (m, e) => { _converse.log(e, Strophe.LogLevel.ERROR); resolve(); }
10211020
});
10221021
});
10231022
}
@@ -1175,7 +1174,7 @@ converse.plugins.add('converse-omemo', {
11751174
const storage = _converse.config.get('storage'),
11761175
id = `converse.omemosession-${_converse.bare_jid}`;
11771176
_converse.omemo_store = new _converse.OMEMOStore({'id': id});
1178-
_converse.omemo_store.browserStorage = new BrowserStorage[storage](id);
1177+
_converse.omemo_store.browserStorage = _converse.createStore(id, storage);
11791178
}
11801179
return _converse.omemo_store.fetchSession();
11811180
}
@@ -1187,7 +1186,7 @@ converse.plugins.add('converse-omemo', {
11871186
_converse.devicelists = new _converse.DeviceLists();
11881187
const storage = _converse.config.get('storage'),
11891188
id = `converse.devicelists-${_converse.bare_jid}`;
1190-
_converse.devicelists.browserStorage = new BrowserStorage[storage](id);
1189+
_converse.devicelists.browserStorage = _converse.createStore(id, storage);
11911190

11921191
try {
11931192
await fetchOwnDevices();

src/converse-roomslist.js

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
* rooms in the "Rooms Panel" of the ControlBox.
1111
*/
1212
import "@converse/headless/converse-muc";
13-
import BrowserStorage from "backbone.browserStorage";
1413
import { OrderedListView } from "backbone.overview";
1514
import converse from "@converse/headless/converse-core";
1615
import tpl_rooms_list from "templates/rooms_list.html";
@@ -175,7 +174,7 @@ converse.plugins.add('converse-roomslist', {
175174
id = `converse.roomslist${_converse.bare_jid}`;
176175

177176
this.list_model = new _converse.RoomsList({'id': id});
178-
this.list_model.browserStorage = new BrowserStorage[storage](id);
177+
this.list_model.browserStorage = _converse.createStore(id, storage);
179178
this.list_model.fetch();
180179
this.render();
181180
this.sortAndPositionAllItems();
@@ -271,7 +270,7 @@ converse.plugins.add('converse-roomslist', {
271270
id = `converse.open-rooms-{_converse.bare_jid}`,
272271
model = new _converse.OpenRooms();
273272

274-
model.browserStorage = new BrowserStorage[storage](id);
273+
model.browserStorage = _converse.createStore(id, storage);
275274
_converse.rooms_list_view = new _converse.RoomsListView({'model': model});
276275
/**
277276
* Triggered once the _converse.RoomsListView has been created and initialized.

src/converse-rosterview.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import "@converse/headless/converse-chatboxes";
1010
import "@converse/headless/converse-roster";
1111
import "converse-modal";
1212
import "formdata-polyfill";
13-
import BrowserStorage from "backbone.browserStorage";
1413
import { OrderedListView } from "backbone.overview";
1514
import SHA1 from 'strophe.js/src/sha1';
1615
import converse from "@converse/headless/converse-core";
@@ -807,7 +806,7 @@ converse.plugins.add('converse-rosterview', {
807806
const model = new _converse.RosterFilter();
808807
model.id = `_converse.rosterfilter${_converse.bare_jid}`;
809808
const storage = _converse.config.get('storage');
810-
model.browserStorage = new BrowserStorage[storage](this.filter.id);
809+
model.browserStorage = _converse.createStore(this.filter.id, storage);
811810
this.filter_view = new _converse.RosterFilterView({'model': model});
812811
this.listenTo(this.filter_view.model, 'change', this.updateFilter);
813812
this.filter_view.model.fetch();

src/headless/converse-bookmarks.js

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
* Converse.js plugin which adds views for bookmarks specified in XEP-0048.
1111
*/
1212
import "@converse/headless/converse-muc";
13-
import BrowserStorage from "backbone.browserStorage";
1413
import converse from "@converse/headless/converse-core";
1514

1615
const { Backbone, Strophe, $iq, sizzle, _ } = converse.env;
@@ -110,7 +109,7 @@ converse.plugins.add('converse-bookmarks', {
110109
const storage = _converse.config.get('storage');
111110
const cache_key = `converse.room-bookmarks${_converse.bare_jid}`;
112111
this.fetched_flag = cache_key+'fetched';
113-
this.browserStorage = new BrowserStorage[storage](cache_key);
112+
this.browserStorage = _converse.createStore(cache_key, storage);
114113
},
115114

116115
async openBookmarkedRoom (bookmark) {
@@ -126,7 +125,7 @@ converse.plugins.add('converse-bookmarks', {
126125
if (this.browserStorage.records.length > 0) {
127126
this.fetch({
128127
'success': () => deferred.resolve(),
129-
'error': () => deferred.resolve()
128+
'error': () => deferred.resolve()
130129
});
131130
} else if (! window.sessionStorage.getItem(this.fetched_flag)) {
132131
// There aren't any cached bookmarks and the

src/headless/converse-bosh.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
* Converse.js plugin which add support for XEP-0206: XMPP Over BOSH
1010
*/
1111
import 'strophe.js/src/bosh';
12-
import BrowserStorage from "backbone.browserStorage";
1312
import converse from "./converse-core";
1413

1514
const { Backbone, Strophe } = converse.env;
@@ -36,7 +35,7 @@ converse.plugins.add('converse-bosh', {
3635
const id = BOSH_SESSION_ID;
3736
if (!_converse.bosh_session) {
3837
_converse.bosh_session = new Backbone.Model({id});
39-
_converse.bosh_session.browserStorage = new BrowserStorage.session(id);
38+
_converse.bosh_session.browserStorage = _converse.createStore(id, "session");
4039
await new Promise(resolve => _converse.bosh_session.fetch({'success': resolve, 'error': resolve}));
4140
}
4241
if (_converse.jid) {

src/headless/converse-chatboxes.js

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
import "./converse-emoji";
1010
import "./utils/form";
1111
import { get, isObject, isString, propertyOf } from "lodash";
12-
import BrowserStorage from "backbone.browserStorage";
1312
import converse from "./converse-core";
1413
import filesize from "filesize";
1514

@@ -328,7 +327,7 @@ converse.plugins.add('converse-chatboxes', {
328327
this.messages = new this.messagesCollection();
329328
this.messages.chatbox = this;
330329
const storage = _converse.config.get('storage');
331-
this.messages.browserStorage = new BrowserStorage[storage](this.getMessagesCacheKey());
330+
this.messages.browserStorage = _converse.createStore(this.getMessagesCacheKey(), storage);
332331
this.listenTo(this.messages, 'change:upload', message => {
333332
if (message.get('upload') === _converse.SUCCESS) {
334333
_converse.api.send(this.createMessageStanza(message));
@@ -1147,8 +1146,8 @@ converse.plugins.add('converse-chatboxes', {
11471146
return;
11481147
}
11491148
const storage = _converse.config.get('storage');
1150-
this.browserStorage = new BrowserStorage[storage](
1151-
`converse.chatboxes-${_converse.bare_jid}`);
1149+
const id = `converse.chatboxes-${_converse.bare_jid}`;
1150+
this.browserStorage = _converse.createStore(id, storage);
11521151
this.registerMessageHandler();
11531152
this.fetch({
11541153
'add': true,

src/headless/converse-core.js

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -354,6 +354,12 @@ _converse.isUniView = function () {
354354
return _.includes(['mobile', 'fullscreen', 'embedded'], _converse.view_mode);
355355
};
356356

357+
_converse.createStore = function (id, storage) {
358+
const s = storage ? storage : _converse.storage[_converse.config.get('storage')];
359+
return new BrowserStorage[s](id);
360+
}
361+
362+
357363
_converse.router = new Backbone.Router();
358364

359365
function initPlugins () {
@@ -411,7 +417,7 @@ function initClientConfig () {
411417
'trusted': _converse.trusted && true || false,
412418
'storage': _converse.trusted ? 'local' : 'session'
413419
});
414-
_converse.config.browserStorage = new BrowserStorage.session(id);
420+
_converse.config.browserStorage = _converse.createStore(id, "session");
415421
_converse.config.fetch();
416422
/**
417423
* Triggered once the XMPP-client configuration has been initialized.
@@ -641,7 +647,7 @@ async function initSession (jid) {
641647
const id = `converse.session-${bare_jid}`;
642648
if (!_converse.session || _converse.session.get('id') !== id) {
643649
_converse.session = new Backbone.Model({id});
644-
_converse.session.browserStorage = new BrowserStorage.session(id);
650+
_converse.session.browserStorage = _converse.createStore(id, "session");
645651
await new Promise(r => _converse.session.fetch({'success': r, 'error': r}));
646652
if (_converse.session.get('active')) {
647653
_converse.session.clear();
@@ -1199,7 +1205,7 @@ _converse.initialize = async function (settings, callback) {
11991205
} else {
12001206
const id = `converse.xmppstatus-${_converse.bare_jid}`;
12011207
_converse.xmppstatus = new this.XMPPStatus({'id': id});
1202-
_converse.xmppstatus.browserStorage = new BrowserStorage.session(id);
1208+
_converse.xmppstatus.browserStorage = _converse.createStore(id, "session");
12031209
_converse.xmppstatus.fetch({
12041210
'success': () => _converse.onStatusInitialized(reconnecting),
12051211
'error': () => _converse.onStatusInitialized(reconnecting),

src/headless/converse-disco.js

Lines changed: 13 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
* @description
99
* Converse plugin which add support for XEP-0030: Service Discovery
1010
*/
11-
import BrowserStorage from "backbone.browserStorage";
1211
import converse from "./converse-core";
1312
import sizzle from "sizzle";
1413

@@ -44,32 +43,27 @@ converse.plugins.add('converse-disco', {
4443
this.waitUntilFeaturesDiscovered = utils.getResolveablePromise();
4544

4645
this.dataforms = new _converse.Collection();
47-
this.dataforms.browserStorage = new BrowserStorage.session(
48-
`converse.dataforms-${this.get('jid')}`
49-
);
46+
let id = `converse.dataforms-${this.get('jid')}`;
47+
this.dataforms.browserStorage = _converse.createStore(id, 'session');
5048

5149
this.features = new _converse.Collection();
52-
this.features.browserStorage = new BrowserStorage.session(
53-
`converse.features-${this.get('jid')}`
54-
);
50+
id = `converse.features-${this.get('jid')}`;
51+
this.features.browserStorage = _converse.createStore(id, 'session');
5552
this.listenTo(this.features, 'add', this.onFeatureAdded)
5653

5754
this.fields = new _converse.Collection();
58-
this.fields.browserStorage = new BrowserStorage.session(
59-
`converse.fields-${this.get('jid')}`
60-
);
55+
id = `converse.fields-${this.get('jid')}`;
56+
this.fields.browserStorage = _converse.createStore(id, 'session');
6157
this.listenTo(this.fields, 'add', this.onFieldAdded)
6258

6359
this.identities = new _converse.Collection();
64-
this.identities.browserStorage = new BrowserStorage.session(
65-
`converse.identities-${this.get('jid')}`
66-
);
60+
id = `converse.identities-${this.get('jid')}`;
61+
this.identities.browserStorage = _converse.createStore(id, 'session');
6762
this.fetchFeatures(options);
6863

6964
this.items = new _converse.DiscoEntities();
70-
this.items.browserStorage = new BrowserStorage.session(
71-
`converse.disco-items-${this.get('jid')}`
72-
);
65+
id = `converse.disco-items-${this.get('jid')}`;
66+
this.items.browserStorage = _converse.createStore(id, 'session');
7367
this.items.fetch();
7468
},
7569

@@ -267,7 +261,7 @@ converse.plugins.add('converse-disco', {
267261
const id = `converse.stream-features-${bare_jid}`;
268262
if (!_converse.stream_features || _converse.stream_features.browserStorage.id !== id) {
269263
_converse.stream_features = new _converse.Collection();
270-
_converse.stream_features.browserStorage = new BrowserStorage.session(id);
264+
_converse.stream_features.browserStorage = _converse.createStore(id, "session");
271265
_converse.stream_features.fetch({
272266
success (collection) {
273267
if (collection.length === 0 && _converse.connection.features) {
@@ -331,10 +325,8 @@ converse.plugins.add('converse-disco', {
331325
_converse.connection.addHandler(onDiscoInfoRequest, Strophe.NS.DISCO_INFO, 'iq', 'get', null, null);
332326

333327
_converse.disco_entities = new _converse.DiscoEntities();
334-
_converse.disco_entities.browserStorage = new BrowserStorage.session(
335-
`converse.disco-entities-${_converse.bare_jid}`
336-
);
337-
328+
const id = `converse.disco-entities-${_converse.bare_jid}`;
329+
_converse.disco_entities.browserStorage = _converse.createStore(id, 'session');
338330
const collection = await _converse.disco_entities.fetchEntities();
339331
if (collection.length === 0 || !collection.get(_converse.domain)) {
340332
// If we don't have an entity for our own XMPP server,

0 commit comments

Comments
 (0)