mirror of
https://github.com/signalapp/Signal-Desktop.git
synced 2026-04-28 12:23:31 +01:00
Renames extension.windows.beforeUnload to onSuspend, to match the underlying chrome api call. onClosed fires when the frontend app window is closed, while onSuspend fires when the background page is closed or refreshed (which amounts to an app restart). Frontend views are initialized iff the inbox window is opened, and so should always be listening to onClosed in order to know when they are no longer needed. // FREEBIE
59 lines
1.9 KiB
JavaScript
59 lines
1.9 KiB
JavaScript
/*
|
|
* vim: ts=4:sw=4:expandtab
|
|
*/
|
|
(function () {
|
|
'use strict';
|
|
window.Whisper = window.Whisper || {};
|
|
|
|
// list of conversations, showing user/group and last message sent
|
|
Whisper.ConversationListItemView = Whisper.View.extend({
|
|
tagName: 'div',
|
|
className: function() {
|
|
return 'conversation-list-item contact ' + this.model.cid;
|
|
},
|
|
templateName: 'conversation-preview',
|
|
events: {
|
|
'click': 'select'
|
|
},
|
|
initialize: function() {
|
|
this.listenTo(this.model, 'change', this.render); // auto update
|
|
this.listenTo(this.model, 'destroy', this.remove); // auto update
|
|
this.listenTo(this.model, 'opened', this.markSelected); // auto update
|
|
extension.windows.onClosed(this.stopListening.bind(this));
|
|
},
|
|
|
|
markSelected: function() {
|
|
this.$el.addClass('selected').siblings('.selected').removeClass('selected');
|
|
},
|
|
|
|
select: function(e) {
|
|
this.markSelected();
|
|
this.$el.trigger('select', this.model);
|
|
},
|
|
|
|
render: function() {
|
|
this.$el.html(
|
|
Mustache.render(_.result(this,'template', ''), {
|
|
title: this.model.getTitle(),
|
|
last_message: this.model.get('lastMessage'),
|
|
last_message_timestamp: moment(this.model.get('timestamp')).format('MMM D'),
|
|
number: this.model.getNumber(),
|
|
avatar: this.model.getAvatar()
|
|
}, this.render_partials())
|
|
);
|
|
|
|
twemoji.parse(this.el, { base: '/images/twemoji/', size: 16 });
|
|
|
|
var unread = this.model.get('unreadCount');
|
|
if (unread > 0) {
|
|
this.$el.addClass('unread');
|
|
} else {
|
|
this.$el.removeClass('unread');
|
|
}
|
|
|
|
return this;
|
|
}
|
|
|
|
});
|
|
})();
|