Move inbox collection to the background page

No more waiting, no more messy fetch logic. Background page
bootstraps the inbox and keeps it up to date.
pull/749/head
lilia 10 years ago
parent a5bc261365
commit 44b1e5c88e

@ -24,6 +24,7 @@
<script type="text/javascript" src="js/models/conversations.js"></script>
<script type="text/javascript" src="js/chromium.js"></script>
<script type="text/javascript" src="js/inbox_controller.js"></script>
<script type="text/javascript" src="js/bimap.js"></script>
<script type="text/javascript" src="js/background.js"></script>

@ -0,0 +1,46 @@
/* vim: ts=4:sw=4:expandtab
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
;(function() {
'use strict';
/*
* Provides a persistent collection of conversations for
* the inbox view. Automatically updates when messages are received.
*
*/
window.inbox = new Whisper.ConversationCollection([], {
comparator: function(model) {
return -model.active_at;
}
});
function fetch() {
window.inbox.fetch({
reset: true,
index: {
name: 'inbox', // 'inbox' index on active_at
order: 'desc' // ORDER timestamp DESC
}
// TODO pagination/infinite scroll
// limit: 10, offset: page*10,
});
}
extension.on('message', fetch);
fetch();
})();

@ -229,17 +229,7 @@
only: number
}
});
},
fetchActive: function(options) {
return this.fetch(_.extend(options, {
index: {
name: 'inbox', // 'inbox' index on active_at
order: 'desc' // ORDER timestamp DESC
}
// TODO pagination/infinite scroll
// limit: 10, offset: page*10,
}));
}
});
})();

@ -29,22 +29,11 @@
this.newConversationView = new Whisper.NewConversationView();
this.newConversationView.$el.hide().appendTo(this.$gutter);
this.conversations = new Whisper.ConversationCollection();
this.inbox = new Whisper.ConversationListView({
el : this.$contacts,
collection : this.conversations
});
collection : bg.inbox
}).render();
this.$el.addClass('loading');
this.conversations.fetchActive({reset: true}).then(function() {
this.inbox.resize();
this.$el.removeClass('loading');
window.conversations = this.conversations; // debug
}.bind(this));
extension.on('message', function() {
this.conversations.fetchActive({reset: true});
}.bind(this));
window.addEventListener('resize', this.inbox.resize.bind(this.inbox));
},
events: {

@ -55,6 +55,11 @@ var Whisper = Whisper || {};
this.$el.css('height', 'auto');
this.$el.css('overflow-y', 'auto');
}
},
render: function() {
this.addAll();
return this;
}
});
})();

Loading…
Cancel
Save