From 8910be2ceb07762c72b8d6674b68f30e0f2f8e12 Mon Sep 17 00:00:00 2001 From: Audric Ackermann Date: Fri, 24 Jul 2020 15:54:40 +1000 Subject: [PATCH] remove unused class and files --- js/views/conversation_list_item_view.js | 69 -------- js/views/conversation_list_view.js | 71 -------- js/views/conversation_search_view.js | 177 -------------------- test/views/conversation_search_view_test.js | 67 -------- 4 files changed, 384 deletions(-) delete mode 100644 js/views/conversation_list_item_view.js delete mode 100644 js/views/conversation_list_view.js delete mode 100644 js/views/conversation_search_view.js delete mode 100644 test/views/conversation_search_view_test.js diff --git a/js/views/conversation_list_item_view.js b/js/views/conversation_list_item_view.js deleted file mode 100644 index 06459a19e..000000000 --- a/js/views/conversation_list_item_view.js +++ /dev/null @@ -1,69 +0,0 @@ -/* 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; - }, - } - ); -})(); diff --git a/js/views/conversation_list_view.js b/js/views/conversation_list_view.js deleted file mode 100644 index 6d49ce854..000000000 --- a/js/views/conversation_list_view.js +++ /dev/null @@ -1,71 +0,0 @@ -/* 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, - getCollection() { - return getInboxCollection(); - }, - 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 = this.getCollection(); - 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(); - } - }, - }); -})(); diff --git a/js/views/conversation_search_view.js b/js/views/conversation_search_view.js deleted file mode 100644 index e1920e099..000000000 --- a/js/views/conversation_search_view.js +++ /dev/null @@ -1,177 +0,0 @@ -/* global ConversationController, i18n, textsecure, Whisper */ - -// eslint-disable-next-line func-names -(function() { - 'use strict'; - - window.Whisper = window.Whisper || {}; - - const isSearchable = conversation => conversation.isSearchable(); - - Whisper.NewContactView = Whisper.View.extend({ - templateName: 'new-contact', - className: 'conversation-list-item contact', - events: { - click: 'validate', - }, - initialize() { - this.listenTo(this.model, 'change', this.render); // auto update - }, - render_attributes() { - // Show the appropriate message based on model validity - const message = - this.model && this.model.isValid() - ? i18n('startConversation') - : i18n('invalidNumberError'); - return { - number: message, - title: this.model.getNumber(), - avatar: this.model.getAvatar(), - }; - }, - validate() { - if (this.model.isValid()) { - this.$el.addClass('valid'); - } else { - this.$el.removeClass('valid'); - } - }, - }); - - Whisper.ConversationSearchView = Whisper.View.extend({ - className: 'conversation-search', - initialize(options) { - this.$input = options.input; - this.$new_contact = this.$('.new-contact'); - - this.typeahead = new Whisper.ConversationCollection(); - this.collection = new Whisper.ConversationCollection([], { - comparator(m) { - return m.getTitle().toLowerCase(); - }, - }); - this.listenTo(this.collection, 'select', conversation => { - this.resetTypeahead(); - this.trigger('open', conversation); - }); - - // View to display the matched contacts from typeahead - this.typeahead_view = new Whisper.ConversationListView({ - collection: this.collection, - }); - this.$el.append(this.typeahead_view.el); - this.initNewContact(); - this.pending = Promise.resolve(); - }, - - events: { - 'click .new-contact': 'createConversation', - }, - - filterContacts() { - const query = this.$input.val().trim(); - if (query.length) { - // Update the contact model - this.new_contact_view.model.set('id', query); - this.new_contact_view.render().$el.hide(); - this.new_contact_view.validate(); - this.hideHints(); - - // NOTE: Temporarily allow `then` until we convert the entire file - // to `async` / `await`: - /* eslint-disable more/no-then */ - this.pending = this.pending.then(() => - this.typeahead.search(query).then(() => { - let results = this.typeahead.filter(isSearchable); - const noteToSelf = i18n('noteToSelf'); - if (noteToSelf.toLowerCase().indexOf(query.toLowerCase()) !== -1) { - const ourNumber = textsecure.storage.user.getNumber(); - const conversation = ConversationController.get(ourNumber); - if (conversation) { - // ensure that we don't have duplicates in our results - results = results.filter(item => item.id !== ourNumber); - results.unshift(conversation); - } - } - - this.typeahead_view.collection.reset(results); - - // This will allow us to show the last message when searching - this.typeahead_view.collection.forEach(c => c.updateLastMessage()); - - // Show the new contact view if we already have results - if (this.typeahead_view.collection.length === 0) { - this.new_contact_view.$el.show(); - } - }) - ); - /* eslint-enable more/no-then */ - this.trigger('show'); - } else { - this.resetTypeahead(); - } - }, - - initNewContact() { - if (this.new_contact_view) { - this.new_contact_view.undelegateEvents(); - this.new_contact_view.$el.hide(); - } - const model = new Whisper.Conversation({ type: 'private' }); - this.new_contact_view = new Whisper.NewContactView({ - el: this.$new_contact, - model, - }).render(); - }, - - async createConversation() { - const isValidNumber = this.new_contact_view.model.isValid(); - if (!isValidNumber) { - this.$input.focus(); - return; - } - - const newConversationId = this.new_contact_view.model.id; - const conversation = await ConversationController.getOrCreateAndWait( - newConversationId, - 'private' - ); - this.trigger('open', conversation); - this.initNewContact(); - this.resetTypeahead(); - }, - - reset() { - this.delegateEvents(); - this.typeahead_view.delegateEvents(); - this.new_contact_view.delegateEvents(); - this.resetTypeahead(); - }, - - resetTypeahead() { - this.hideHints(); - this.new_contact_view.$el.hide(); - this.$input.val('').focus(); - this.typeahead_view.collection.reset([]); - this.trigger('hide'); - }, - - showHints() { - if (!this.hintView) { - this.hintView = new Whisper.HintView({ - className: 'contact placeholder', - content: i18n('newPhoneNumber'), - }).render(); - this.hintView.$el.insertAfter(this.$input); - } - this.hintView.$el.show(); - }, - - hideHints() { - if (this.hintView) { - this.hintView.remove(); - this.hintView = null; - } - }, - }); -})(); diff --git a/test/views/conversation_search_view_test.js b/test/views/conversation_search_view_test.js deleted file mode 100644 index 93eda548b..000000000 --- a/test/views/conversation_search_view_test.js +++ /dev/null @@ -1,67 +0,0 @@ -/* global $, Whisper */ - -describe('ConversationSearchView', () => { - describe('Searching for left groups', () => { - let convo; - - before(() => { - convo = new Whisper.ConversationCollection().add({ - id: '1-search-view', - name: 'i left this group', - members: [], - type: 'group', - left: true, - }); - - return window.Signal.Data.saveConversation(convo.attributes, { - Conversation: Whisper.Conversation, - }); - }); - describe('with no messages', () => { - let input; - let view; - - before(done => { - input = $(''); - view = new Whisper.ConversationSearchView({ input }).render(); - view.$input.val('left'); - view.filterContacts(); - view.typeahead_view.collection.on('reset', () => { - done(); - }); - }); - it('should not surface left groups with no messages', () => { - assert.isUndefined( - view.typeahead_view.collection.get(convo.id), - 'got left group' - ); - }); - }); - describe('with messages', () => { - let input; - let view; - before(async () => { - input = $(''); - view = new Whisper.ConversationSearchView({ input }).render(); - convo.set({ id: '2-search-view', left: false }); - - await window.Signal.Data.saveConversation(convo.attributes, { - Conversation: Whisper.Conversation, - }); - - view.$input.val('left'); - view.filterContacts(); - - return new Promise(resolve => { - view.typeahead_view.collection.on('reset', resolve); - }); - }); - it('should surface left groups with messages', () => { - assert.isDefined( - view.typeahead_view.collection.get(convo.id), - 'got left group' - ); - }); - }); - }); -});