Refactor conversation list view
Pull apart UI classes for displaying and creating threads. Also get rid of ugly alert popup in favor of Whisper.notify.
This commit is contained in:
		
					parent
					
						
							
								1ec6b0aed6
							
						
					
				
			
			
				commit
				
					
						ce3c5eb909
					
				
			
		
					 5 changed files with 53 additions and 39 deletions
				
			
		| 
						 | 
				
			
			@ -19,6 +19,9 @@ textsecure.registerOnLoadFunction(function() {
 | 
			
		|||
	if (textsecure.storage.getUnencrypted("number_id") === undefined) {
 | 
			
		||||
		extension.navigator.tabs.create("options.html");
 | 
			
		||||
	} else {
 | 
			
		||||
 | 
			
		||||
		new Whisper.ConversationListView();
 | 
			
		||||
		new Whisper.ConversationComposeView({el: $('body')});
 | 
			
		||||
		$('.my-number').text(textsecure.storage.getUnencrypted("number_id").split(".")[0]);
 | 
			
		||||
		textsecure.storage.putUnencrypted("unreadCount", 0);
 | 
			
		||||
		extension.navigator.setBadgeText("");
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,7 +3,7 @@ var Whisper = Whisper || {};
 | 
			
		|||
(function () {
 | 
			
		||||
  'use strict';
 | 
			
		||||
 | 
			
		||||
  Whisper.ConversationListView = new (Backbone.View.extend({ // singleton
 | 
			
		||||
  Whisper.ConversationListView = Backbone.View.extend({
 | 
			
		||||
 | 
			
		||||
    tagName: 'ul',
 | 
			
		||||
    id: 'conversations',
 | 
			
		||||
| 
						 | 
				
			
			@ -24,41 +24,6 @@ var Whisper = Whisper || {};
 | 
			
		|||
      Whisper.Messages.fetch();
 | 
			
		||||
 | 
			
		||||
      this.$el.appendTo($('#inbox'));
 | 
			
		||||
 | 
			
		||||
      $('#send_link').click(function(e) {
 | 
			
		||||
        $('#send').fadeIn().find('input[type=text]').focus();
 | 
			
		||||
      });
 | 
			
		||||
 | 
			
		||||
      $('#send').click(function() {
 | 
			
		||||
        $('#send input[type=text]').focus();
 | 
			
		||||
      });
 | 
			
		||||
 | 
			
		||||
      $("#compose-cancel").click(function(e) {
 | 
			
		||||
        $('#send').hide();
 | 
			
		||||
        e.preventDefault();
 | 
			
		||||
      });
 | 
			
		||||
      $("#send").submit((function(e) {
 | 
			
		||||
        e.preventDefault();
 | 
			
		||||
        var numbers = [];
 | 
			
		||||
        var splitString = $("#send_numbers").val().split(",");
 | 
			
		||||
        for (var i = 0; i < splitString.length; i++) {
 | 
			
		||||
          try {
 | 
			
		||||
            numbers.push(textsecure.utils.verifyNumber(splitString[i]));
 | 
			
		||||
          } catch (numberError) {
 | 
			
		||||
            alert(numberError);
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
        $("#send_numbers").val('');
 | 
			
		||||
        numbers = _.filter(numbers, _.identity); // rm undefined, null, "", etc...
 | 
			
		||||
        if (numbers.length) {
 | 
			
		||||
          $('#send').hide();
 | 
			
		||||
          Whisper.Threads.findOrCreateForRecipient(numbers).trigger('select');
 | 
			
		||||
        } else {
 | 
			
		||||
          Whisper.notify('recipient missing or invalid');
 | 
			
		||||
          $('#send input[type=text]').focus();
 | 
			
		||||
        }
 | 
			
		||||
      }).bind(this));
 | 
			
		||||
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    addThread: function(thread) {
 | 
			
		||||
| 
						 | 
				
			
			@ -74,5 +39,5 @@ var Whisper = Whisper || {};
 | 
			
		|||
    addMessage: function(message) {
 | 
			
		||||
      message.thread().trigger('message', message);
 | 
			
		||||
    }
 | 
			
		||||
  }))();
 | 
			
		||||
  });
 | 
			
		||||
})();
 | 
			
		||||
							
								
								
									
										45
									
								
								js/views/conversations/new.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								js/views/conversations/new.js
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,45 @@
 | 
			
		|||
(function () {
 | 
			
		||||
  'use strict';
 | 
			
		||||
 | 
			
		||||
  Whisper.ConversationComposeView = Backbone.View.extend({
 | 
			
		||||
    events : {
 | 
			
		||||
      'click #send_link'      : 'show_send',
 | 
			
		||||
      'click #send'           : 'focus_send',
 | 
			
		||||
      'click #compose-cancel' : 'hide_send',
 | 
			
		||||
      'submit #send'          : 'submit_send'
 | 
			
		||||
    },
 | 
			
		||||
    show_send: function(e) {
 | 
			
		||||
      $('#send').fadeIn().find('input[type=text]').focus();
 | 
			
		||||
    },
 | 
			
		||||
    focus_send: function(e) {
 | 
			
		||||
      $('#send input[type=text]').focus();
 | 
			
		||||
    },
 | 
			
		||||
    hide_send: function(e) {
 | 
			
		||||
      $('#send').hide();
 | 
			
		||||
      e.preventDefault();
 | 
			
		||||
    },
 | 
			
		||||
    submit_send: function(e) {
 | 
			
		||||
      e.preventDefault();
 | 
			
		||||
      var numbers = [];
 | 
			
		||||
      var splitString = $("#send_numbers").val().split(",");
 | 
			
		||||
      for (var i = 0; i < splitString.length; i++) {
 | 
			
		||||
        try {
 | 
			
		||||
          numbers.push(textsecure.utils.verifyNumber(splitString[i]));
 | 
			
		||||
        } catch (numberError) {
 | 
			
		||||
          if (!numberError.countryCodeValid) {
 | 
			
		||||
            Whisper.notify('Invalid country code');
 | 
			
		||||
          }
 | 
			
		||||
          if (!numberError.numberValid) {
 | 
			
		||||
            Whisper.notify('Invalid number');
 | 
			
		||||
          }
 | 
			
		||||
          $('#send input[type=text]').focus();
 | 
			
		||||
          return;
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
      $("#send_numbers").val('');
 | 
			
		||||
      $('#send').hide();
 | 
			
		||||
      Whisper.Threads.findOrCreateForRecipient(numbers).trigger('select');
 | 
			
		||||
    }
 | 
			
		||||
  });
 | 
			
		||||
})();
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -66,8 +66,9 @@
 | 
			
		|||
	<script type="text/javascript" src="js/chromium.js"></script>
 | 
			
		||||
	<script type="text/javascript" src="js/views/notifications.js"></script>
 | 
			
		||||
	<script type="text/javascript" src="js/views/message.js"></script>
 | 
			
		||||
	<script type="text/javascript" src="js/views/conversation.js"></script>
 | 
			
		||||
	<script type="text/javascript" src="js/views/messages.js"></script>
 | 
			
		||||
	<script type="text/javascript" src="js/views/conversations/show.js"></script>
 | 
			
		||||
	<script type="text/javascript" src="js/views/conversations/index.js"></script>
 | 
			
		||||
	<script type="text/javascript" src="js/views/conversations/new.js"></script>
 | 
			
		||||
	<script type="text/javascript" src="js/popup.js"></script>
 | 
			
		||||
</body>
 | 
			
		||||
</html>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue