/* global Whisper, getInboxCollection, $ */ // eslint-disable-next-line func-names (function() { 'use strict'; window.Whisper = window.Whisper || {}; Whisper.ConversationListView = Whisper.ListView.extend({ tagName: 'div', itemView: Whisper.ConversationListItemView, updateLocation(conversation) { const $el = this.$(`.${conversation.cid}`); if (!$el || !$el.length) { window.log.warn( 'updateLocation: did not find element for conversation', conversation.idForLogging() ); return; } if ($el.length > 1) { window.log.warn( 'updateLocation: found more than one element for conversation', conversation.idForLogging() ); return; } const $allConversations = this.$('.conversation-list-item'); const inboxCollection = getInboxCollection(); const index = inboxCollection.indexOf(conversation); const elIndex = $allConversations.index($el); if (elIndex < 0) { window.log.warn( 'updateLocation: did not find index for conversation', conversation.idForLogging() ); } if (index === elIndex) { return; } if (index === 0) { this.$el.prepend($el); } else if (index === this.collection.length - 1) { this.$el.append($el); } else { const targetConversation = inboxCollection.at(index - 1); const target = this.$(`.${targetConversation.cid}`); $el.insertAfter(target); } if ($('.selected').length) { $('.selected')[0].scrollIntoView({ block: 'nearest', }); } }, removeItem(conversation) { const $el = this.$(`.${conversation.cid}`); if ($el && $el.length > 0) { $el.remove(); } }, }); })();