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.
This commit is contained in:
Aman Agrawal 2022-11-21 13:41:24 +00:00 committed by Tim Abbott
parent a0f42edaa2
commit fd422a4dd8
3 changed files with 12 additions and 29 deletions

View File

@ -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.

View File

@ -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();
});
});
}
}

View File

@ -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();