Skip to content

Commit cd392bb

Browse files
committed
Fixes #1561 Don't clear localStorage and sessionStorage
1 parent 1bc9a7f commit cd392bb

19 files changed

+164
-120
lines changed

spec/chatbox.js

+12-12
Original file line numberDiff line numberDiff line change
@@ -263,7 +263,7 @@
263263
const view = await test_utils.openChatBoxFor(_converse, contact_jid);
264264
const el = sizzle('a.open-chat:contains("'+view.model.getDisplayName()+'")', _converse.rosterview.el).pop();
265265
const jid = el.textContent.replace(/ /g,'.').toLowerCase() + '@montague.lit';
266-
spyOn(_converse.api, "trigger");
266+
spyOn(_converse.api, "trigger").and.callThrough();
267267
el.click();
268268
await u.waitUntil(() => _converse.api.trigger.calls.count(), 500);
269269
expect(_converse.chatboxes.length).toEqual(2);
@@ -280,7 +280,7 @@
280280
await test_utils.waitForRoster(_converse, 'current');
281281
test_utils.openControlBox();
282282

283-
spyOn(_converse.api, "trigger");
283+
spyOn(_converse.api, "trigger").and.callThrough();
284284
test_utils.openControlBox();
285285

286286
test_utils.openChatBoxes(_converse, 6);
@@ -323,7 +323,7 @@
323323

324324
spyOn(chatview, 'close').and.callThrough();
325325
spyOn(controlview, 'close').and.callThrough();
326-
spyOn(_converse.api, "trigger");
326+
spyOn(_converse.api, "trigger").and.callThrough();
327327

328328
// We need to rebind all events otherwise our spy won't be called
329329
controlview.delegateEvents();
@@ -356,7 +356,7 @@
356356
const trimmed_chatboxes = _converse.minimized_chats;
357357
const chatview = _converse.chatboxviews.get(contact_jid);
358358
spyOn(chatview, 'minimize').and.callThrough();
359-
spyOn(_converse.api, "trigger");
359+
spyOn(_converse.api, "trigger").and.callThrough();
360360
// We need to rebind all events otherwise our spy won't be called
361361
chatview.delegateEvents();
362362
chatview.el.querySelector('.toggle-chatbox-button').click();
@@ -390,7 +390,7 @@
390390
await test_utils.waitForRoster(_converse, 'current');
391391
test_utils.openControlBox();
392392
await u.waitUntil(() => _converse.rosterview.el.querySelectorAll('.roster-group').length);
393-
spyOn(_converse.api, "trigger");
393+
spyOn(_converse.api, "trigger").and.callThrough();
394394
_converse.chatboxes.browserStorage._clear();
395395

396396
test_utils.closeControlBox();
@@ -538,7 +538,7 @@
538538

539539
let toolbar, call_button;
540540
const contact_jid = mock.cur_names[2].replace(/ /g,'.').toLowerCase() + '@montague.lit';
541-
spyOn(_converse.api, "trigger");
541+
spyOn(_converse.api, "trigger").and.callThrough();
542542
// First check that the button doesn't show if it's not enabled
543543
// via "visible_toolbar_buttons"
544544
_converse.visible_toolbar_buttons.call = false;
@@ -603,7 +603,7 @@
603603
await test_utils.waitForRoster(_converse, 'current');
604604
test_utils.openControlBox();
605605

606-
spyOn(_converse.api, "trigger");
606+
spyOn(_converse.api, "trigger").and.callThrough();
607607
const sender_jid = mock.cur_names[1].replace(/ /g,'.').toLowerCase() + '@montague.lit';
608608
// <composing> state
609609
const msg = $msg({
@@ -690,7 +690,7 @@
690690
var view = _converse.chatboxviews.get(contact_jid);
691691
expect(view.model.get('chat_state')).toBe('active');
692692
spyOn(_converse.connection, 'send');
693-
spyOn(_converse.api, "trigger");
693+
spyOn(_converse.api, "trigger").and.callThrough();
694694
view.onKeyDown({
695695
target: view.el.querySelector('textarea.chat-textarea'),
696696
keyCode: 1
@@ -724,7 +724,7 @@
724724
test_utils.openControlBox();
725725

726726
// See XEP-0085 https://xmpp.org/extensions/xep-0085.html#definitions
727-
spyOn(_converse.api, "trigger");
727+
spyOn(_converse.api, "trigger").and.callThrough();
728728
const sender_jid = mock.cur_names[1].replace(/ /g,'.').toLowerCase() + '@montague.lit';
729729
await u.waitUntil(() => _converse.rosterview.el.querySelectorAll('.roster-group').length);
730730
await test_utils.openChatBoxFor(_converse, sender_jid);
@@ -1052,7 +1052,7 @@
10521052
test_utils.openControlBox();
10531053
const sender_jid = mock.cur_names[1].replace(/ /g,'.').toLowerCase() + '@montague.lit';
10541054
// See XEP-0085 https://xmpp.org/extensions/xep-0085.html#definitions
1055-
spyOn(_converse.api, "trigger");
1055+
spyOn(_converse.api, "trigger").and.callThrough();
10561056
await test_utils.openChatBoxFor(_converse, sender_jid);
10571057
const view = _converse.chatboxviews.get(sender_jid);
10581058
expect(view.el.querySelectorAll('.chat-event').length).toBe(0);
@@ -1093,7 +1093,7 @@
10931093
await test_utils.waitForRoster(_converse, 'current', 3);
10941094
test_utils.openControlBox();
10951095

1096-
spyOn(_converse.api, "trigger");
1096+
spyOn(_converse.api, "trigger").and.callThrough();
10971097
const sender_jid = mock.cur_names[1].replace(/ /g,'.').toLowerCase() + '@montague.lit';
10981098
// <paused> state
10991099
const msg = $msg({
@@ -1125,7 +1125,7 @@
11251125
test_utils.openControlBox();
11261126
const contact_jid = mock.cur_names[0].replace(/ /g,'.').toLowerCase() + '@montague.lit';
11271127

1128-
spyOn(_converse.api, "trigger");
1128+
spyOn(_converse.api, "trigger").and.callThrough();
11291129
await test_utils.openChatBoxFor(_converse, contact_jid);
11301130
const view = _converse.chatboxviews.get(contact_jid);
11311131
let message = 'This message is another sent from this chatbox';

spec/controlbox.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
expect(u.isVisible(el)).toBe(false);
2525
spyOn(_converse.controlboxtoggle, 'onClick').and.callThrough();
2626
spyOn(_converse.controlboxtoggle, 'showControlBox').and.callThrough();
27-
spyOn(_converse.api, "trigger");
27+
spyOn(_converse.api, "trigger").and.callThrough();
2828
// Redelegate so that the spies are now registered as the event handlers (specifically for 'onClick')
2929
_converse.controlboxtoggle.delegateEvents();
3030
document.querySelector('.toggle-controlbox').click();
@@ -38,12 +38,12 @@
3838

3939
describe("The \"Contacts\" section", function () {
4040

41-
it("can be used to add contact and it checks for case-sensivity",
41+
it("can be used to add contact and it checks for case-sensivity",
4242
mock.initConverse(
4343
null, ['rosterGroupsFetched'], {},
4444
async function (done, _converse) {
4545

46-
spyOn(_converse.api, "trigger");
46+
spyOn(_converse.api, "trigger").and.callThrough();
4747
spyOn(_converse.rosterview, 'update').and.callThrough();
4848
test_utils.openControlBox();
4949
// Adding two contacts one with Capital initials and one with small initials of same JID (Case sensitive check)

spec/messages.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -737,7 +737,7 @@
737737
const include_nick = false;
738738
await test_utils.waitForRoster(_converse, 'current', 2, include_nick);
739739
test_utils.openControlBox();
740-
spyOn(_converse.api, "trigger");
740+
spyOn(_converse.api, "trigger").and.callThrough();
741741
const contact_name = mock.cur_names[1];
742742
const contact_jid = contact_name.replace(/ /g,'.').toLowerCase() + '@montague.lit';
743743

@@ -1382,7 +1382,7 @@
13821382

13831383
await test_utils.waitForRoster(_converse, 'current');
13841384
test_utils.openControlBox();
1385-
spyOn(_converse.api, "trigger");
1385+
spyOn(_converse.api, "trigger").and.callThrough();
13861386
const contact_jid = mock.cur_names[0].replace(/ /g,'.').toLowerCase() + '@montague.lit';
13871387
await test_utils.openChatBoxFor(_converse, contact_jid)
13881388
expect(_converse.api.trigger).toHaveBeenCalledWith('chatBoxFocused', jasmine.any(Object));
@@ -1626,7 +1626,7 @@
16261626
_converse.allow_non_roster_messaging = false;
16271627
_converse.api.trigger('rosterContactsFetched');
16281628

1629-
spyOn(_converse.api, "trigger");
1629+
spyOn(_converse.api, "trigger").and.callThrough();
16301630
const message = 'This is a received message from someone not on the roster';
16311631
const sender_jid = mock.cur_names[0].replace(/ /g,'.').toLowerCase() + '@montague.lit';
16321632
const msg = $msg({

spec/muc.js

+5-5
Original file line numberDiff line numberDiff line change
@@ -1969,7 +1969,7 @@
19691969

19701970
const text = 'This is a received message';
19711971
await test_utils.openAndEnterChatRoom(_converse, '[email protected]', 'romeo');
1972-
spyOn(_converse.api, "trigger");
1972+
spyOn(_converse.api, "trigger").and.callThrough();
19731973
const view = _converse.chatboxviews.get('[email protected]');
19741974
if (!view.el.querySelectorAll('.chat-area').length) {
19751975
view.renderChatArea();
@@ -2001,7 +2001,7 @@
20012001
async function (done, _converse) {
20022002

20032003
await test_utils.openAndEnterChatRoom(_converse, '[email protected]', 'romeo');
2004-
spyOn(_converse.api, "trigger");
2004+
spyOn(_converse.api, "trigger").and.callThrough();
20052005
const view = _converse.chatboxviews.get('[email protected]');
20062006
if (!view.el.querySelectorAll('.chat-area').length) {
20072007
view.renderChatArea();
@@ -2742,7 +2742,7 @@
27422742

27432743
spyOn(view, 'onMinimized').and.callThrough();
27442744
spyOn(view, 'onMaximized').and.callThrough();
2745-
spyOn(_converse.api, "trigger");
2745+
spyOn(_converse.api, "trigger").and.callThrough();
27462746
view.delegateEvents(); // We need to rebind all events otherwise our spy won't be called
27472747
view.el.querySelector('.toggle-chatbox-button').click();
27482748

@@ -2770,7 +2770,7 @@
27702770
await test_utils.openChatRoom(_converse, 'lounge', 'montague.lit', 'romeo');
27712771
const view = _converse.chatboxviews.get('[email protected]');
27722772
spyOn(view, 'close').and.callThrough();
2773-
spyOn(_converse.api, "trigger");
2773+
spyOn(_converse.api, "trigger").and.callThrough();
27742774
spyOn(view.model, 'leave');
27752775
view.delegateEvents(); // We need to rebind all events otherwise our spy won't be called
27762776
view.el.querySelector('.close-chatbox-button').click();
@@ -3787,7 +3787,7 @@
37873787
'from': view.model.get('jid'),
37883788
'to': _converse.connection.jid
37893789
});
3790-
spyOn(_converse.api, "trigger");
3790+
spyOn(_converse.api, "trigger").and.callThrough();
37913791
expect(_converse.chatboxes.length).toBe(2);
37923792
_converse.connection._dataRecv(test_utils.createRequest(result_stanza));
37933793
await u.waitUntil(() => (view.model.get('connection_status') === converse.ROOMSTATUS.DISCONNECTED));

spec/protocol.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -516,7 +516,7 @@
516516
null, ['rosterGroupsFetched'], {},
517517
async function (done, _converse) {
518518

519-
spyOn(_converse.api, "trigger");
519+
spyOn(_converse.api, "trigger").and.callThrough();
520520
test_utils.openControlBox(_converse);
521521
// Create some contacts so that we can test positioning
522522
test_utils.createContacts(_converse, 'current');

src/converse-controlbox.js

+9-19
Original file line numberDiff line numberDiff line change
@@ -586,19 +586,18 @@ converse.plugins.add('converse-controlbox', {
586586
});
587587

588588
_converse.api.listen.on('clearSession', () => {
589-
if (_converse.config.get('trusted')) {
590-
const chatboxes = _.get(_converse, 'chatboxes', null);
591-
if (!_.isNil(chatboxes)) {
592-
const controlbox = chatboxes.get('controlbox');
593-
if (controlbox &&
594-
controlbox.collection &&
595-
controlbox.collection.browserStorage) {
596-
controlbox.save({'connected': false});
597-
}
598-
}
589+
const chatboxviews = _.get(_converse, 'chatboxviews', null);
590+
const view = chatboxviews && chatboxviews.get('controlbox');
591+
if (view) {
592+
u.safeSave(view.model, {'connected': false});
593+
if (_.get(view, 'controlbox_pane')) {
594+
view.controlbox_pane.remove();
595+
delete view.controlbox_pane;
596+
}
599597
}
600598
});
601599

600+
602601
Promise.all([
603602
_converse.api.waitUntil('connectionInitialized'),
604603
_converse.api.waitUntil('chatBoxViewsInitialized')
@@ -621,15 +620,6 @@ converse.plugins.add('converse-controlbox', {
621620
_converse.api.listen.on('disconnected', () => disconnect().renderLoginPanel());
622621
_converse.api.listen.on('will-reconnect', disconnect);
623622

624-
_converse.api.listen.on('clearSession', () => {
625-
const view = _converse.chatboxviews.get('controlbox');
626-
if (view && view.controlbox_pane) {
627-
view.controlbox_pane.remove();
628-
delete view.controlbox_pane;
629-
}
630-
});
631-
632-
633623
/************************ API ************************/
634624

635625
Object.assign(_converse.api, {

src/converse-muc-views.js

+2
Original file line numberDiff line numberDiff line change
@@ -1930,6 +1930,8 @@ converse.plugins.add('converse-muc-views', {
19301930
_converse.api.listen.on('clearSession', () => {
19311931
const view = _converse.chatboxviews.get('controlbox');
19321932
if (view && view.roomspanel) {
1933+
view.roomspanel.model.destroy();
1934+
view.roomspanel.model.browserStorage._clear();
19331935
view.roomspanel.remove();
19341936
delete view.roomspanel;
19351937
}

src/converse-oauth.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ converse.plugins.add("converse-oauth", {
7777
'oauth_providers': {},
7878
});
7979

80-
_converse.OAuthProviders = Backbone.Collection.extend({
80+
_converse.OAuthProviders = _converse.Collection.extend({
8181
'sync': __.noop,
8282

8383
initialize () {

src/converse-omemo.js

+16-9
Original file line numberDiff line numberDiff line change
@@ -977,7 +977,7 @@ converse.plugins.add('converse-omemo', {
977977
}
978978
});
979979

980-
_converse.Devices = Backbone.Collection.extend({
980+
_converse.Devices = _converse.Collection.extend({
981981
model: _converse.Device,
982982
});
983983

@@ -1082,7 +1082,7 @@ converse.plugins.add('converse-omemo', {
10821082
* @namespace _converse.DeviceLists
10831083
* @memberOf _converse
10841084
*/
1085-
_converse.DeviceLists = Backbone.Collection.extend({
1085+
_converse.DeviceLists = _converse.Collection.extend({
10861086
model: _converse.DeviceList,
10871087
/**
10881088
* Returns the {@link _converse.DeviceList} for a particular JID.
@@ -1240,6 +1240,8 @@ converse.plugins.add('converse-omemo', {
12401240
}
12411241
}
12421242

1243+
/******************** Event Handlers ********************/
1244+
12431245
_converse.api.waitUntil('chatBoxesInitialized').then(() =>
12441246
_converse.chatboxes.on('add', chatbox => {
12451247
checkOMEMOSupported(chatbox);
@@ -1250,12 +1252,6 @@ converse.plugins.add('converse-omemo', {
12501252
})
12511253
);
12521254

1253-
_converse.api.listen.on('afterTearDown', () => {
1254-
if (_converse.devicelists) {
1255-
_converse.devicelists.reset();
1256-
}
1257-
delete _converse.omemo_store;
1258-
});
12591255
_converse.api.listen.on('connected', registerPEPPushHandler);
12601256
_converse.api.listen.on('renderToolbar', view => view.renderOMEMOToolbarButton());
12611257
_converse.api.listen.on('statusInitialized', initOMEMO);
@@ -1271,7 +1267,18 @@ converse.plugins.add('converse-omemo', {
12711267
_converse.generateFingerprints(_converse.bare_jid).catch(_.partial(_converse.log, _, Strophe.LogLevel.ERROR));
12721268
});
12731269

1274-
/************************ BEGIN API ************************/
1270+
_converse.api.listen.on('afterTearDown', () => (delete _converse.omemo_store));
1271+
1272+
_converse.api.listen.on('clearSession', () => {
1273+
if (_converse.shouldClearCache() && _converse.devicelists) {
1274+
_converse.devicelists.clearSession();
1275+
delete _converse.devicelists;
1276+
}
1277+
});
1278+
1279+
1280+
/************************ API ************************/
1281+
12751282
Object.assign(_converse.api, {
12761283
/**
12771284
* The "omemo" namespace groups methods relevant to OMEMO

src/converse-roomslist.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ converse.plugins.add('converse-roomslist', {
4747
_converse.api.promises.add('roomsListInitialized');
4848

4949

50-
_converse.OpenRooms = Backbone.Collection.extend({
50+
_converse.OpenRooms = _converse.Collection.extend({
5151

5252
comparator (room) {
5353
if (_converse.bookmarks && room.get('bookmarked')) {

src/converse-rosterview.js

+2-3
Original file line numberDiff line numberDiff line change
@@ -290,7 +290,7 @@ converse.plugins.add('converse-rosterview', {
290290
},
291291

292292
shouldBeVisible () {
293-
return _converse.roster.length >= 5 || this.isActive();
293+
return _converse.roster && _converse.roster.length >= 5 || this.isActive();
294294
},
295295

296296
showOrHide () {
@@ -859,7 +859,6 @@ converse.plugins.add('converse-rosterview', {
859859
},
860860

861861
reset () {
862-
_converse.roster.reset();
863862
this.removeAll();
864863
this.render().update();
865864
return this;
@@ -943,7 +942,7 @@ converse.plugins.add('converse-rosterview', {
943942
/* -------- Event Handlers ----------- */
944943
_converse.api.listen.on('chatBoxesInitialized', () => {
945944
function highlightRosterItem (chatbox) {
946-
const contact = _converse.roster.findWhere({'jid': chatbox.get('jid')});
945+
const contact = _converse.roster && _converse.roster.findWhere({'jid': chatbox.get('jid')});
947946
if (contact !== undefined) {
948947
contact.trigger('highlight');
949948
}

src/headless/converse-bookmarks.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ converse.plugins.add('converse-bookmarks', {
9393

9494
_converse.Bookmark = Backbone.Model;
9595

96-
_converse.Bookmarks = Backbone.Collection.extend({
96+
_converse.Bookmarks = _converse.Collection.extend({
9797
model: _converse.Bookmark,
9898
comparator: (item) => item.get('name').toLowerCase(),
9999

src/headless/converse-bosh.js

+1
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@ converse.plugins.add('converse-bosh', {
107107
sessionStorage.removeItem(`${id}-${id}`);
108108
} else {
109109
_converse.bosh_session.destroy();
110+
_converse.bosh_session.browserStorage._clear();
110111
delete _converse.bosh_session;
111112
}
112113
});

0 commit comments

Comments
 (0)