diff --git a/background.html b/background.html
index 18a72e18..b7759385 100644
--- a/background.html
+++ b/background.html
@@ -24,6 +24,7 @@
+
diff --git a/js/inbox_controller.js b/js/inbox_controller.js
new file mode 100644
index 00000000..e28682e1
--- /dev/null
+++ b/js/inbox_controller.js
@@ -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 .
+ */
+
+;(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();
+})();
diff --git a/js/models/conversations.js b/js/models/conversations.js
index 1fcf3398..d20ad5f8 100644
--- a/js/models/conversations.js
+++ b/js/models/conversations.js
@@ -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,
- }));
}
+
});
})();
diff --git a/js/views/inbox_view.js b/js/views/inbox_view.js
index 08a163dc..0e5a496b 100644
--- a/js/views/inbox_view.js
+++ b/js/views/inbox_view.js
@@ -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: {
diff --git a/js/views/list_view.js b/js/views/list_view.js
index 96cee045..fce35ab4 100644
--- a/js/views/list_view.js
+++ b/js/views/list_view.js
@@ -55,6 +55,11 @@ var Whisper = Whisper || {};
this.$el.css('height', 'auto');
this.$el.css('overflow-y', 'auto');
}
+ },
+
+ render: function() {
+ this.addAll();
+ return this;
}
});
})();