mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-04 05:53:43 +00:00 
			
		
		
		
	This commit extract send_messages.js to clean up code related
to the following things:
    * sending data to /json/report_send_time
    * restarting the event loop if events don't arrive on time
The code related to /json/report changes the following ways:
    * We track the state almost completely in the new
      send_messages.js module, with other modules just
      making one-line calls.
    * We no longer send "displayed" times to the servers, since
      we were kind of lying about them anyway.
    * We now explicitly track the state of each single sent
      message in its own object.
    * We now look up data related to the messages by local_id,
      instead of message_id.  The problem with message_id was
      that is was mutable.  Now we use local_id, and we extend
      the local_id concept to messages that don't get rendered
      client side.  We no longer need to react to the
      'message_id_changed' event to change our hash key.
    * The code used to live in many places:
        * various big chunks were scattered among compose.js,
          and those were all moved or reduced to one-line
          calls into the new module
        * echo.js continues to make basically one-line calls,
          but it no longer calls compose.report_as_received(),
          nor does it set the "start" time.
        * message_util.js used to report received events, but
          only when they finally got drawn in the home view;
          this code is gone now
The code related to restarting the event loop if events don't arrive
changes as follows:
    * The timer now gets set up from within
      send_messages.message_state.report_server_ack,
      where we can easily inspect the current state of the
      possibly-still-in-flight message.
    * The code to confirm that an event was received happens now
      in server_events.js, rather than later, so that we don't
      falsely blame the event loop  for a downstream bug.  (Plus
      it's easier to just do it one place.)
This change removes a fair amount of code from our node tests.  Some
of the removal is good stuff related to us completing killing off
unnecessary code.  Other removals are more expediency-driven, and
we should make another sweep at ramping up our coverage on compose.js,
with possibly a little more mocking of the new `send_messages` code
layer, since it's now abstracted better.
There is also some minor cleanup to echo.resend_message() in this
commit.
See #5968 for a detailed breakdown of the changes.
		
	
		
			
				
	
	
		
			31 lines
		
	
	
		
			696 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			31 lines
		
	
	
		
			696 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
var message_util = (function () {
 | 
						|
 | 
						|
var exports = {};
 | 
						|
 | 
						|
exports.do_unread_count_updates = function do_unread_count_updates(messages) {
 | 
						|
    unread.process_loaded_messages(messages);
 | 
						|
    unread_ui.update_unread_counts();
 | 
						|
    resize.resize_page_components();
 | 
						|
};
 | 
						|
 | 
						|
exports.add_messages = function add_messages(messages, msg_list, opts) {
 | 
						|
    if (!messages) {
 | 
						|
        return;
 | 
						|
    }
 | 
						|
 | 
						|
    opts = _.extend({messages_are_new: false, delay_render: false}, opts);
 | 
						|
 | 
						|
    loading.destroy_indicator($('#page_loading_indicator'));
 | 
						|
    $('#first_run_message').remove();
 | 
						|
 | 
						|
    msg_list.add_messages(messages, opts);
 | 
						|
};
 | 
						|
 | 
						|
 | 
						|
return exports;
 | 
						|
 | 
						|
}());
 | 
						|
if (typeof module !== 'undefined') {
 | 
						|
    module.exports = message_util;
 | 
						|
}
 |