Rework expiring messages management
// FREEBIE
This commit is contained in:
parent
08e8c00329
commit
e4b9c51f88
6 changed files with 66 additions and 21 deletions
|
@ -5,12 +5,40 @@
|
|||
;(function() {
|
||||
'use strict';
|
||||
window.Whisper = window.Whisper || {};
|
||||
Whisper.ExpiringMessages = new (Whisper.MessageCollection.extend({
|
||||
initialize: function() {
|
||||
this.on('expired', this.remove);
|
||||
this.fetchExpiring();
|
||||
}
|
||||
}))();
|
||||
|
||||
function destroyExpiredMessages() {
|
||||
// Load messages that have expired and destroy them
|
||||
var expired = new Whisper.MessageCollection();
|
||||
expired.on('add', function(message) {
|
||||
console.log('message', message.get('sent_at'), 'expired');
|
||||
message.destroy();
|
||||
message.getConversation().trigger('expired', message);
|
||||
});
|
||||
expired.on('reset', checkExpiringMessages);
|
||||
|
||||
expired.fetchExpired();
|
||||
}
|
||||
|
||||
var timeout;
|
||||
function checkExpiringMessages() {
|
||||
// Look up the next expiring message and set a timer to destroy it
|
||||
var expiring = new Whisper.MessageCollection();
|
||||
expiring.once('add', function(next) {
|
||||
var expires_at = next.get('expires_at');
|
||||
console.log('next message expires', new Date(expires_at));
|
||||
|
||||
var wait = expires_at - Date.now();
|
||||
if (wait < 0) { wait = 0; }
|
||||
|
||||
clearTimeout(timeout);
|
||||
timeout = setTimeout(destroyExpiredMessages, wait);
|
||||
});
|
||||
expiring.fetchNextExpiring();
|
||||
}
|
||||
|
||||
window.ExpiringMessagesListener = {
|
||||
update: checkExpiringMessages
|
||||
};
|
||||
|
||||
var TimerOption = Backbone.Model.extend({
|
||||
getName: function() {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue