Add support for deleting a conversation
Note that the conversation record is not actually destroyed, merely marked inactive, preserving the contact name, photo, etc...
This commit is contained in:
parent
7b23e24b71
commit
8257fa7478
4 changed files with 25 additions and 3 deletions
|
@ -50,6 +50,7 @@
|
|||
<li>by <a href="http://whispersystems.org">Open Whisper Systems</a></li>
|
||||
<li><a href="http://support.whispersystems.org/">Need Help?</a></li>
|
||||
</ul>
|
||||
<button class='destroy'>Delete this conversation</button>
|
||||
</div>
|
||||
</div>
|
||||
</script>
|
||||
|
|
|
@ -89,6 +89,13 @@
|
|||
options = options || {};
|
||||
options.conditions = {conversationId: this.id };
|
||||
return this.messageCollection.fetch(options);
|
||||
},
|
||||
|
||||
destroyMessages: function() {
|
||||
var models = this.messageCollection.models;
|
||||
this.messageCollection.reset([]);
|
||||
_.each(models, function(message) { message.destroy(); });
|
||||
return this.save({active: false});
|
||||
}
|
||||
});
|
||||
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
(function () {
|
||||
'use strict';
|
||||
'use strict';
|
||||
window.Whisper = window.Whisper || {};
|
||||
|
||||
Whisper.ConversationView = Backbone.View.extend({
|
||||
|
@ -39,7 +39,17 @@
|
|||
|
||||
events: {
|
||||
'submit .send': 'sendMessage',
|
||||
'close': 'remove'
|
||||
'close': 'remove',
|
||||
'click .destroy': 'destroyMessages'
|
||||
},
|
||||
|
||||
destroyMessages: function(e) {
|
||||
if (confirm("Permanently delete this conversation?")) {
|
||||
this.model.destroyMessages();
|
||||
this.model.collection.remove(this.model);
|
||||
this.remove();
|
||||
this.model.trigger('destroy');
|
||||
}
|
||||
},
|
||||
|
||||
sendMessage: function(e) {
|
||||
|
|
|
@ -32,7 +32,11 @@
|
|||
collection : this.conversations
|
||||
});
|
||||
|
||||
this.conversations.fetch({reset: true}).then(function() {
|
||||
this.conversations.fetch({ reset: true }).then(function() {
|
||||
this.conversations.reset(
|
||||
//TODO: Add an index to support this operation at the db level
|
||||
this.conversations.filter(function(c) { return c.get('active'); })
|
||||
);
|
||||
if (this.conversations.length) {
|
||||
this.conversations.at(0).trigger('render');
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue