signal-desktop/js/views/conversation_list_item_view.js
lilia f042378a37 Upgrade emoji support and switch to apple emoji
Use emojijs for replacing unicode with image tags for display. We were
already using it to replace colons with unicode. Additionally it has
a companion data repo that is kept up to date with images from all
the common image sets.

// FREEBIE
2016-09-01 11:51:53 -07:00

64 lines
2.2 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() {
// auto update
this.listenTo(this.model, 'change', _.debounce(this.render.bind(this), 1000));
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));
this.timeStampView = new Whisper.TimestampView({brief: true});
},
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: this.model.get('timestamp'),
number: this.model.getNumber(),
avatar: this.model.getAvatar(),
unreadCount: this.model.get('unreadCount')
}, this.render_partials())
);
this.timeStampView.setElement(this.$('.last-timestamp'));
this.timeStampView.update();
emoji_util.parse(this.$('.name'));
emoji_util.parse(this.$('.last-message'));
var unread = this.model.get('unreadCount');
if (unread > 0) {
this.$el.addClass('unread');
} else {
this.$el.removeClass('unread');
}
return this;
}
});
})();