From fd422a4dd81ea6f611d4c3586be74e8c2803830c Mon Sep 17 00:00:00 2001 From: Aman Agrawal Date: Mon, 21 Nov 2022 13:41:24 +0000 Subject: [PATCH] resize: Call `resize_app` after hiding recent topics first time. See the code comment for why it is being called. We also remove the unused `message_feed_shown` which was added to be used for this purpose. I decided to not call this with `requestAnimationFrame` since it is changing position of elements in DOM and not letting browser do a reflow after that can lead to wrong calculations later on. --- static/js/recent_topics_ui.js | 14 ++++++++++++-- static/js/resize.js | 26 -------------------------- static/js/ui_init.js | 1 - 3 files changed, 12 insertions(+), 29 deletions(-) diff --git a/static/js/recent_topics_ui.js b/static/js/recent_topics_ui.js index 3fd67ff37a..48a869669d 100644 --- a/static/js/recent_topics_ui.js +++ b/static/js/recent_topics_ui.js @@ -18,6 +18,7 @@ import * as message_util from "./message_util"; import * as message_view_header from "./message_view_header"; import * as narrow from "./narrow"; import * as narrow_state from "./narrow_state"; +import * as navbar_alerts from "./navbar_alerts"; import * as navigate from "./navigate"; import {page_params} from "./page_params"; import * as people from "./people"; @@ -43,6 +44,7 @@ import * as user_status from "./user_status"; import * as user_topics from "./user_topics"; let topics_widget; +let message_list_displayed_before; // Sets the number of avatars to display. // Rest of the avatars, if present, are displayed as {+x} const MAX_AVATAR = 4; @@ -893,8 +895,16 @@ export function hide() { // before it completely re-rerenders. message_view_header.render_title_area(); - // Fire our custom event - $("#message_feed_container").trigger("message_feed_shown"); + if (!message_list_displayed_before) { + // Hack: If the app is loaded directly to recent topics, then we + // need to arrange to call navbar_alerts.resize_app when we first + // visit a message list. This is a workaround for bugs where the + // floating recipient bar will be invisible (as well as other + // alignment issues) when they are initially rendered in the + // background because recent topics is displayed. + message_list_displayed_before = true; + navbar_alerts.resize_app(); + } // This makes sure user lands on the selected message // and not always at the top of the narrow. diff --git a/static/js/resize.js b/static/js/resize.js index 5d1f4f6007..1bf2846b44 100644 --- a/static/js/resize.js +++ b/static/js/resize.js @@ -9,7 +9,6 @@ import * as message_viewport from "./message_viewport"; import * as navbar_alerts from "./navbar_alerts"; import * as navigate from "./navigate"; import * as popovers from "./popovers"; -import * as recent_topics_util from "./recent_topics_util"; import * as util from "./util"; function get_new_heights() { @@ -185,28 +184,3 @@ export function handler() { navigate.scroll_to_selected(); } } - -export function initialize() { - // Hack: If the app is loaded directly to recent topics, then we - // need to arrange to call navbar_alerts.resize_app when we first - // visit a message list. This is a workaround for bugs where the - // floating recipient bar will be invisible (as well as other - // alignment issues) when they are initially rendered in the - // background because recent topics is displayed. - - if (recent_topics_util.is_visible()) { - // We bind the handler for the message_feed_container shown event, such - // that it will only get executed once. - // - // The selector here is based on #gear-menu, to take advantage - // of the Bootstrap the 'show' event handler on that legacy - // data-toggle element. - $('#gear-menu a[data-toggle="tab"][href="#message_feed_container"]').one("show", () => { - // We use a requestAnimationFrame here to prevent this call from - // causing a forced reflow. - window.requestAnimationFrame(() => { - navbar_alerts.resize_app(); - }); - }); - } -} diff --git a/static/js/ui_init.js b/static/js/ui_init.js index 7395c9891b..5d72309dbc 100644 --- a/static/js/ui_init.js +++ b/static/js/ui_init.js @@ -671,7 +671,6 @@ export function initialize_everything() { // All overlays must be initialized before hashchange.js hashchange.initialize(); - resize.initialize(); unread_ui.initialize(); activity.initialize();