diff --git a/web/src/compose.js b/web/src/compose.js index fff13b9b37..17295cc63a 100644 --- a/web/src/compose.js +++ b/web/src/compose.js @@ -90,7 +90,7 @@ export function create_message_object() { type: compose_state.get_message_type(), content: compose_state.message_content(), sender_id: page_params.user_id, - queue_id: page_params.queue_id, + queue_id: server_events.queue_id, stream_id: undefined, }; message.topic = ""; diff --git a/web/src/server_events.js b/web/src/server_events.js index 822c3cff06..314f712866 100644 --- a/web/src/server_events.js +++ b/web/src/server_events.js @@ -16,6 +16,10 @@ import * as watchdog from "./watchdog"; // Docs: https://zulip.readthedocs.io/en/latest/subsystems/events-system.html +export let queue_id; +let last_event_id; +let event_queue_longpoll_timeout_seconds; + let waiting_on_homeview_load = true; let events_stored_while_loading = []; @@ -172,8 +176,8 @@ function get_events({dont_block = false} = {}) { watchdog.set_suspect_offline(true); } if (get_events_params.queue_id === undefined) { - get_events_params.queue_id = page_params.queue_id; - get_events_params.last_event_id = page_params.last_event_id; + get_events_params.queue_id = queue_id; + get_events_params.last_event_id = last_event_id; } if (get_events_xhr !== undefined) { @@ -190,7 +194,7 @@ function get_events({dont_block = false} = {}) { get_events_xhr = channel.get({ url: "/json/events", data: get_events_params, - timeout: page_params.event_queue_longpoll_timeout_seconds * 1000, + timeout: event_queue_longpoll_timeout_seconds * 1000, success(data) { watchdog.set_suspect_offline(false); try { @@ -283,7 +287,11 @@ export function home_view_loaded() { get_events_success([]); } -export function initialize() { +export function initialize(params) { + queue_id = params.queue_id; + last_event_id = params.last_event_id; + event_queue_longpoll_timeout_seconds = params.event_queue_longpoll_timeout_seconds; + reload.add_reload_hook(cleanup_event_queue); watchdog.on_unsuspend(() => { // Immediately poll for new events on unsuspend @@ -304,7 +312,7 @@ function cleanup_event_queue() { event_queue_expired = true; channel.del({ url: "/json/events", - data: {queue_id: page_params.queue_id}, + data: {queue_id}, ignore_reload: true, }); } diff --git a/web/src/transmit.js b/web/src/transmit.js index 29180cb4df..3c529fb984 100644 --- a/web/src/transmit.js +++ b/web/src/transmit.js @@ -109,7 +109,7 @@ export function reply_message(opts) { const reply = { sender_id: page_params.user_id, - queue_id: page_params.queue_id, + queue_id: server_events.queue_id, local_id, }; diff --git a/web/src/ui_init.js b/web/src/ui_init.js index 5d4084d631..7842a53906 100644 --- a/web/src/ui_init.js +++ b/web/src/ui_init.js @@ -481,6 +481,12 @@ export function initialize_everything() { const user_settings_params = pop_fields("user_settings"); const realm_settings_defaults_params = pop_fields("realm_user_settings_defaults"); const scheduled_messages_params = pop_fields("scheduled_messages"); + const server_events_params = pop_fields( + "queue_id", + "server_generation", + "event_queue_longpoll_timeout_seconds", + "last_event_id", + ); /* To store theme data for spectators, we need to initialize user_settings before setting the theme. */ @@ -613,7 +619,7 @@ export function initialize_everything() { overlays.initialize(); invite.initialize(); message_view_header.initialize(); - server_events.initialize(); + server_events.initialize(server_events_params); user_status.initialize(user_status_params); compose_recipient.initialize(); compose_pm_pill.initialize({ diff --git a/web/tests/transmit.test.js b/web/tests/transmit.test.js index 59d5c41f27..6ac12aee27 100644 --- a/web/tests/transmit.test.js +++ b/web/tests/transmit.test.js @@ -18,6 +18,7 @@ const sent_messages = mock_esm("../src/sent_messages", { }), start_send: noop, }); +const server_events = mock_esm("../src/server_events"); const people = zrequire("people"); const transmit = zrequire("transmit"); @@ -150,7 +151,7 @@ run_test("reply_message_stream", ({override}) => { }); page_params.user_id = 44; - page_params.queue_id = 66; + server_events.queue_id = 66; sent_messages.get_new_local_id = () => "99"; transmit.reply_message({ @@ -191,7 +192,7 @@ run_test("reply_message_private", ({override}) => { }); page_params.user_id = 155; - page_params.queue_id = 177; + server_events.queue_id = 177; sent_messages.get_new_local_id = () => "199"; transmit.reply_message({