38 lines
1.2 KiB
JavaScript
38 lines
1.2 KiB
JavaScript
import { Collection } from "@converse/skeletor/src/collection";
|
|
import { _converse, api } from "../../core.js";
|
|
import { initStorage } from '@converse/headless/utils/storage.js';
|
|
|
|
const ChatBoxes = Collection.extend({
|
|
comparator: 'time_opened',
|
|
|
|
model (attrs, options) {
|
|
return new _converse.ChatBox(attrs, options);
|
|
},
|
|
|
|
onChatBoxesFetched (collection) {
|
|
collection.filter(c => !c.isValid()).forEach(c => c.destroy());
|
|
/**
|
|
* Triggered once all chat boxes have been recreated from the browser cache
|
|
* @event _converse#chatBoxesFetched
|
|
* @type { object }
|
|
* @property { _converse.ChatBox | _converse.ChatRoom } chatbox
|
|
* @property { Element } stanza
|
|
* @example _converse.api.listen.on('chatBoxesFetched', obj => { ... });
|
|
* @example _converse.api.waitUntil('chatBoxesFetched').then(() => { ... });
|
|
*/
|
|
api.trigger('chatBoxesFetched');
|
|
},
|
|
|
|
onConnected (reconnecting) {
|
|
if (reconnecting) { return; }
|
|
initStorage(this, `converse.chatboxes-${_converse.bare_jid}`);
|
|
this.fetch({
|
|
'add': true,
|
|
'success': c => this.onChatBoxesFetched(c)
|
|
});
|
|
}
|
|
});
|
|
|
|
|
|
export default ChatBoxes;
|