4230b11f82
If some future client ever sends us an arbitrary timer value which we do not currently support, present it as a duration in seconds in timer update messages and ui, where we would otherwise have rendered nothing, e.g., "You set the timer to ." // FREEBIE
71 lines
1.9 KiB
JavaScript
71 lines
1.9 KiB
JavaScript
|
|
/*
|
|
* vim: ts=4:sw=4:expandtab
|
|
*/
|
|
;(function() {
|
|
'use strict';
|
|
window.Whisper = window.Whisper || {};
|
|
Whisper.ExpiringMessages = new (Whisper.MessageCollection.extend({
|
|
initialize: function() {
|
|
this.on('expired', this.remove);
|
|
this.fetchExpiring();
|
|
}
|
|
}))();
|
|
|
|
var TimerOption = Backbone.Model.extend({
|
|
getName: function() {
|
|
return i18n([
|
|
'timerOption', this.get('time'), this.get('unit'),
|
|
].join('_')) || moment.duration(this.get('time'), this.get('unit')).humanize();
|
|
},
|
|
getAbbreviated: function() {
|
|
return i18n([
|
|
'timerOption', this.get('time'), this.get('unit'), 'abbreviated'
|
|
].join('_'));
|
|
}
|
|
});
|
|
Whisper.ExpirationTimerOptions = new (Backbone.Collection.extend({
|
|
model: TimerOption,
|
|
getName: function(seconds) {
|
|
if (!seconds) {
|
|
seconds = 0;
|
|
}
|
|
var o = this.findWhere({seconds: seconds});
|
|
if (o) { return o.getName(); }
|
|
else {
|
|
return [seconds, 'seconds'].join(' ');
|
|
}
|
|
},
|
|
getAbbreviated: function(seconds) {
|
|
if (!seconds) {
|
|
seconds = 0;
|
|
}
|
|
var o = this.findWhere({seconds: seconds});
|
|
if (o) { return o.getAbbreviated(); }
|
|
else {
|
|
return [seconds, 's'].join('');
|
|
}
|
|
}
|
|
}))([
|
|
[ 0, 'seconds' ],
|
|
[ 5, 'seconds' ],
|
|
[ 10, 'seconds' ],
|
|
[ 30, 'seconds' ],
|
|
[ 1, 'minute' ],
|
|
[ 5, 'minutes' ],
|
|
[ 30, 'minutes' ],
|
|
[ 1, 'hour' ],
|
|
[ 6, 'hours' ],
|
|
[ 12, 'hours' ],
|
|
[ 1, 'day' ],
|
|
[ 1, 'week' ],
|
|
].map(function(o) {
|
|
var duration = moment.duration(o[0], o[1]); // 5, 'seconds'
|
|
return {
|
|
time: o[0],
|
|
unit: o[1],
|
|
seconds: duration.asSeconds()
|
|
};
|
|
}));
|
|
|
|
})();
|