From 2fb9baafb45d1f95a5528224882bdca7bcbfbf82 Mon Sep 17 00:00:00 2001 From: Tim Abbott Date: Thu, 30 Jan 2014 14:50:18 -0500 Subject: [PATCH] Start running get_events immediately on page load. Previously, we waited until we'd fully loaded the home view to start calling get_events, which: (A) didn't make sense non-message related events (B) resulted in our throwing "get_updates not started" errors when users sent a message before the home view was fully loaded. This commit only fixes problem (B); to fix problem (A) we will need to change the event capture code to only capture some events. (imported from commit 2aacd6bdfd1e7d7707e3a724f1fde7da4a556538) --- static/js/server_events.js | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/static/js/server_events.js b/static/js/server_events.js index 34fefd7cf4..2cbfd59fbe 100644 --- a/static/js/server_events.js +++ b/static/js/server_events.js @@ -5,6 +5,7 @@ var exports = {}; var waiting_on_homeview_load = true; var events_stored_during_tutorial = []; +var events_stored_while_loading = []; var get_events_xhr; var get_events_timeout; @@ -35,6 +36,16 @@ function get_events_success(events) { events_stored_during_tutorial = []; } + if (waiting_on_homeview_load) { + events_stored_while_loading = events_stored_while_loading.concat(events); + return; + } + + if (events_stored_while_loading.length > 0) { + events = events_stored_while_loading.concat(events); + events_stored_while_loading = []; + } + _.each(events, function (event) { switch (event.type) { case 'message': @@ -163,7 +174,7 @@ function get_events_success(events) { } } -exports.get_events = function get_events(options) { +function get_events(options) { options = _.extend({dont_block: false}, options); exports.get_events_params.pointer = furthest_read; @@ -226,7 +237,7 @@ exports.get_events = function get_events(options) { get_events_timeout = setTimeout(get_events, retry_sec*1000); } }); -}; +} exports.assert_get_events_running = function assert_get_events_running(error_message) { if (get_events_xhr === undefined && get_events_timeout === undefined) { @@ -236,17 +247,16 @@ exports.assert_get_events_running = function assert_get_events_running(error_mes }; exports.restart_get_events = function restart_get_events(options) { - exports.get_events(options); + get_events(options); }; exports.force_get_events = function force_get_events() { - get_events_timeout = setTimeout(exports.get_events, 0); + get_events_timeout = setTimeout(get_events, 0); }; exports.home_view_loaded = function home_view_loaded() { waiting_on_homeview_load = false; - exports.get_events(); - + get_events_success([]); $(document).trigger("home_view_loaded.zulip"); }; @@ -271,6 +281,7 @@ $(function () { get_events_failures = 0; exports.restart_get_events({dont_block: true}); }); + get_events(); }); function cleanup_event_queue() {