|  |  |  | /* | 
					
						
							|  |  |  |  * vim: ts=4:sw=4:expandtab | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | (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); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |         removeItem: function(conversation) { | 
					
						
							|  |  |  |             var $el = this.$('.' + conversation.cid); | 
					
						
							|  |  |  |             if ($el && $el.length > 0) { | 
					
						
							|  |  |  |                 $el.remove(); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | })(); |