/* global Whisper, Signal, Backbone */ // eslint-disable-next-line func-names (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() { return `conversation-list-item contact ${this.model.cid}`; }, templateName: 'conversation-preview', initialize() { this.listenTo(this.model, 'destroy', this.remove); }, remove() { if (this.childView) { this.childView.remove(); this.childView = null; } Backbone.View.prototype.remove.call(this); }, getProps() { return this.model.getPropsForListItem(); }, render() { if (this.childView) { this.childView.remove(); this.childView = null; } const props = this.getProps(); this.childView = new Whisper.ReactWrapperView({ className: 'list-item-wrapper', Component: Signal.Components.ConversationListItem, props, }); const update = () => this.childView.update(this.getProps()); this.listenTo(this.model, 'change', update); this.$el.append(this.childView.el); return this; }, }); // list of conversations, showing user/group and last message sent Whisper.ConversationContactListItemView = Whisper.ConversationListItemView.extend( { getProps() { // We don't want to show a timestamp or a message const props = this.model.getPropsForListItem(); delete props.lastMessage; delete props.lastUpdated; delete props.isSelected; return props; }, } ); })();