Changes concerning caching of data in the browser.
- Add new configuration setting messages_storage - Hardcode the storage for roster contacts and chatroom occupants to `sessionStorage`.
This commit is contained in:
parent
95a0b91afa
commit
b8aaf751d2
@ -2,6 +2,8 @@
|
|||||||
|
|
||||||
## 1.0.7 (Unreleased)
|
## 1.0.7 (Unreleased)
|
||||||
- Continuously attempt to resurrect dead connections when `auto_reconnect` is `true`. [jcbrand]
|
- Continuously attempt to resurrect dead connections when `auto_reconnect` is `true`. [jcbrand]
|
||||||
|
- Add new configuration setting [message_storage](https://conversejs.org/docs/html/configuration.html#message_storage) [jcbrand]
|
||||||
|
- Hardcode the storage for roster contacts and chatroom occupants to `sessionStorage`. [jcbrand]
|
||||||
|
|
||||||
## 1.0.6 (2016-08-12)
|
## 1.0.6 (2016-08-12)
|
||||||
- #632 Offline and Logout states do not properly update once users start
|
- #632 Offline and Logout states do not properly update once users start
|
||||||
|
@ -178,7 +178,7 @@ archived_messages_page_size
|
|||||||
|
|
||||||
* Default: ``20``
|
* Default: ``20``
|
||||||
|
|
||||||
See also: `message_archiving`
|
See also: `message_archiving`_
|
||||||
|
|
||||||
This feature applies to `XEP-0313: Message Archive Management (MAM) <https://xmpp.org/extensions/xep-0313.html>`_
|
This feature applies to `XEP-0313: Message Archive Management (MAM) <https://xmpp.org/extensions/xep-0313.html>`_
|
||||||
and will only take effect if your server supports MAM.
|
and will only take effect if your server supports MAM.
|
||||||
@ -634,6 +634,28 @@ Message carbons is the XEP (Jabber protocol extension) specifically drafted to
|
|||||||
solve this problem, while `forward_messages`_ uses
|
solve this problem, while `forward_messages`_ uses
|
||||||
`stanza forwarding <http://www.xmpp.org/extensions/xep-0297.html>`_
|
`stanza forwarding <http://www.xmpp.org/extensions/xep-0297.html>`_
|
||||||
|
|
||||||
|
message_storage
|
||||||
|
----------------
|
||||||
|
|
||||||
|
* Default: ``session``
|
||||||
|
|
||||||
|
Valid options: ``session``, ``local``.
|
||||||
|
|
||||||
|
This option determines the type of `browser storage <https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Storage>`_
|
||||||
|
(``localStorage`` or ``sessionStorage``) used by converse.js to cache messages (private and group).
|
||||||
|
|
||||||
|
The main difference between the two is that `sessionStorage` only persists while
|
||||||
|
the current tab or window containing a converse.js instance is open. As soon as
|
||||||
|
it's closed, the data is cleared.
|
||||||
|
|
||||||
|
Data in `localStorage` on the other hand is kept indefinitely, which can have
|
||||||
|
privacy implications on public computers or when multiple people are using the
|
||||||
|
same computer.
|
||||||
|
|
||||||
|
See also the `storage`_ option, which applies to other cached data, such as
|
||||||
|
which chats you have open, what features the XMPP server supports and what
|
||||||
|
your online status is.
|
||||||
|
|
||||||
muc_history_max_stanzas
|
muc_history_max_stanzas
|
||||||
-----------------------
|
-----------------------
|
||||||
|
|
||||||
@ -838,26 +860,39 @@ storage
|
|||||||
|
|
||||||
Valid options: ``session``, ``local``.
|
Valid options: ``session``, ``local``.
|
||||||
|
|
||||||
This option determines the type of `storage <https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Storage>`_
|
This option determines the type of `browser storage <https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Storage>`_
|
||||||
(``localStorage`` or ``sessionStorage``) used by converse.js to cache user data.
|
(``localStorage`` or ``sessionStorage``) used by converse.js to cache user data.
|
||||||
|
|
||||||
Originally converse.js used only localStorage, however sessionStorage is from a
|
Originally converse.js used only `localStorage`, however `sessionStorage` is from a
|
||||||
privacy perspective a better choice.
|
privacy perspective a better choice.
|
||||||
|
|
||||||
The main difference between the two is that sessionStorage only persists while
|
The main difference between the two is that `sessionStorage` only persists while
|
||||||
the current tab or window containing a converse.js instance is open. As soon as
|
the current tab or window containing a converse.js instance is open. As soon as
|
||||||
it's closed, the data is cleared.
|
it's closed, the data is cleared.
|
||||||
|
|
||||||
Data in localStorage on the other hand is kept indefinitely.
|
Data in `localStorage` on the other hand is kept indefinitely.
|
||||||
|
|
||||||
|
The data that is cached includes which chats you had open, what features the
|
||||||
|
XMPP server supports and what your online status was.
|
||||||
|
|
||||||
|
Since version 1.0.7, the store for messages is now configurable separately with
|
||||||
|
the `message_storage`_ option, to allow you to cache messages for longer in the
|
||||||
|
browser (with `localStorage`) while still using `sessionStorage` for other
|
||||||
|
data.
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
Since version 0.8.0, the use of local storage is not recommended. The
|
Between versions 0.8.0 and 1.0.7, setting the value of this option to "local"
|
||||||
statuses (online, away, busy etc.) of your roster contacts are cached in
|
is not recommended. The statuses (online, away, busy etc.) of your roster
|
||||||
the browser storage. If you use local storage, these values are stored for
|
contacts are cached in the browser storage. If you use local storage, these
|
||||||
multiple sessions, and they will likely become out of sync with your contacts'
|
values are stored for multiple sessions, and they will likely become out of
|
||||||
actual statuses. The session storage doesn't have this problem, because
|
sync with your contacts' actual statuses. The session storage doesn't have
|
||||||
roster contact statuses will not become out of sync in a single session,
|
this problem, because roster contact statuses will not become out of sync in
|
||||||
only across more than one session.
|
a single session, only across more than one session.
|
||||||
|
|
||||||
|
Since version 1.0.7, the "storage" option doesn't apply anymore to how roster
|
||||||
|
contacts and their statuses are stored (they're now always stored in session
|
||||||
|
storage), to address the above issue.
|
||||||
|
|
||||||
|
|
||||||
sticky_controlbox
|
sticky_controlbox
|
||||||
-----------------
|
-----------------
|
||||||
|
@ -242,6 +242,7 @@
|
|||||||
show_only_online_users: false,
|
show_only_online_users: false,
|
||||||
sid: undefined,
|
sid: undefined,
|
||||||
storage: 'session',
|
storage: 'session',
|
||||||
|
message_storage: 'session',
|
||||||
strict_plugin_dependencies: false,
|
strict_plugin_dependencies: false,
|
||||||
synchronize_availability: true, // Set to false to not sync with other clients or with resource name of the particular client that it should synchronize with
|
synchronize_availability: true, // Set to false to not sync with other clients or with resource name of the particular client that it should synchronize with
|
||||||
visible_toolbar_buttons: {
|
visible_toolbar_buttons: {
|
||||||
@ -640,10 +641,10 @@
|
|||||||
|
|
||||||
this.initRoster = function () {
|
this.initRoster = function () {
|
||||||
this.roster = new this.RosterContacts();
|
this.roster = new this.RosterContacts();
|
||||||
this.roster.browserStorage = new Backbone.BrowserStorage[this.storage](
|
this.roster.browserStorage = new Backbone.BrowserStorage.session(
|
||||||
b64_sha1('converse.contacts-'+this.bare_jid));
|
b64_sha1('converse.contacts-'+this.bare_jid));
|
||||||
this.rostergroups = new converse.RosterGroups();
|
this.rostergroups = new converse.RosterGroups();
|
||||||
this.rostergroups.browserStorage = new Backbone.BrowserStorage[converse.storage](
|
this.rostergroups.browserStorage = new Backbone.BrowserStorage.session(
|
||||||
b64_sha1('converse.roster.groups'+converse.bare_jid));
|
b64_sha1('converse.roster.groups'+converse.bare_jid));
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1212,7 +1213,7 @@
|
|||||||
|
|
||||||
initialize: function () {
|
initialize: function () {
|
||||||
this.messages = new converse.Messages();
|
this.messages = new converse.Messages();
|
||||||
this.messages.browserStorage = new Backbone.BrowserStorage[converse.storage](
|
this.messages.browserStorage = new Backbone.BrowserStorage[converse.message_storage](
|
||||||
b64_sha1('converse.messages'+this.get('jid')+converse.bare_jid));
|
b64_sha1('converse.messages'+this.get('jid')+converse.bare_jid));
|
||||||
this.save({
|
this.save({
|
||||||
// The chat_state will be set to ACTIVE once the chat box is opened
|
// The chat_state will be set to ACTIVE once the chat box is opened
|
||||||
|
@ -204,7 +204,7 @@
|
|||||||
model: new converse.ChatRoomOccupants({nick: this.model.get('nick')})
|
model: new converse.ChatRoomOccupants({nick: this.model.get('nick')})
|
||||||
});
|
});
|
||||||
var id = b64_sha1('converse.occupants'+converse.bare_jid+this.model.get('id')+this.model.get('nick'));
|
var id = b64_sha1('converse.occupants'+converse.bare_jid+this.model.get('id')+this.model.get('nick'));
|
||||||
this.occupantsview.model.browserStorage = new Backbone.BrowserStorage[converse.storage](id);
|
this.occupantsview.model.browserStorage = new Backbone.BrowserStorage.session(id);
|
||||||
this.occupantsview.chatroomview = this;
|
this.occupantsview.chatroomview = this;
|
||||||
|
|
||||||
this.render().$el.hide();
|
this.render().$el.hide();
|
||||||
|
Loading…
Reference in New Issue
Block a user