(function() { 'use strict'; window.Whisper = window.Whisper || {}; Whisper.ConversationListView = Whisper.ListView.extend({ tagName: 'div', itemView: Whisper.ConversationListItemView, updateLocation: function(conversation) { var $el = this.$('.' + conversation.cid); if (!$el || !$el.length) { console.log( 'updateLocation: did not find element for conversation', conversation.idForLogging() ); return; } if ($el.length > 1) { console.log( 'updateLocation: found more than one element for conversation', conversation.idForLogging() ); return; } var $allConversations = this.$('.conversation-list-item'); var inboxCollection = getInboxCollection(); var index = inboxCollection.indexOf(conversation); var elIndex = $allConversations.index($el); if (elIndex < 0) { console.log( '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 { var targetConversation = inboxCollection.at(index - 1); var target = this.$('.' + targetConversation.cid); $el.insertAfter(target); } if ($('.selected').length) { $('.selected')[0].scrollIntoView({ block: 'nearest', }); } }, removeItem: function(conversation) { var $el = this.$('.' + conversation.cid); if ($el && $el.length > 0) { $el.remove(); } }, }); })();