chatboxes.js 1.2 KB

123456789101112131415161718192021222324252627282930313233343536
  1. import { Collection } from "@converse/skeletor/src/collection";
  2. import { _converse, api } from "../../core.js";
  3. const ChatBoxes = Collection.extend({
  4. comparator: 'time_opened',
  5. model (attrs, options) {
  6. return new _converse.ChatBox(attrs, options);
  7. },
  8. onChatBoxesFetched (collection) {
  9. collection.filter(c => !c.isValid()).forEach(c => c.destroy());
  10. /**
  11. * Triggered once all chat boxes have been recreated from the browser cache
  12. * @event _converse#chatBoxesFetched
  13. * @type { object }
  14. * @property { _converse.ChatBox | _converse.ChatRoom } chatbox
  15. * @property { XMLElement } stanza
  16. * @example _converse.api.listen.on('chatBoxesFetched', obj => { ... });
  17. * @example _converse.api.waitUntil('chatBoxesFetched').then(() => { ... });
  18. */
  19. api.trigger('chatBoxesFetched');
  20. },
  21. onConnected (reconnecting) {
  22. if (reconnecting) { return; }
  23. this.browserStorage = _converse.createStore(`converse.chatboxes-${_converse.bare_jid}`);
  24. this.fetch({
  25. 'add': true,
  26. 'success': c => this.onChatBoxesFetched(c)
  27. });
  28. }
  29. });
  30. export default ChatBoxes;