mirror of
https://github.com/zulip/zulip.git
synced 2025-11-02 04:53:36 +00:00
recent_topics: Save offset when navigating from narrow or "all".
This is partially a prep commit to correctly saving/restoring the position of the blue message select box when using browser back/forward navigation, and partially a bug fix that ensures that switching from "all_messages" to "recent_topics" preserves one's position in "all_messages". Note that this is with regards to saving the visual position of the selected message, not about saving "which message was selected".
This commit is contained in:
@@ -97,9 +97,10 @@ mock_esm("../../static/js/muted_topics", {
|
||||
return false;
|
||||
},
|
||||
});
|
||||
mock_esm("../../static/js/narrow", {
|
||||
const narrow = mock_esm("../../static/js/narrow", {
|
||||
set_narrow_title: noop,
|
||||
hide_mark_as_read_turned_off_banner: noop,
|
||||
has_shown_message_list_view: true,
|
||||
});
|
||||
mock_esm("../../static/js/recent_senders", {
|
||||
get_topic_recent_senders: () => [1, 2],
|
||||
@@ -338,7 +339,9 @@ function test(label, f) {
|
||||
});
|
||||
}
|
||||
|
||||
test("test_recent_topics_show", ({mock_template}) => {
|
||||
test("test_recent_topics_show", ({mock_template, override}) => {
|
||||
override(narrow, "save_pre_narrow_offset_for_reload", () => {});
|
||||
|
||||
// Note: unread count and urls are fake,
|
||||
// since they are generated in external libraries
|
||||
// and are not to be tested here.
|
||||
|
||||
@@ -114,6 +114,7 @@ export function save_pre_narrow_offset_for_reload() {
|
||||
}
|
||||
|
||||
export let narrow_title = "home";
|
||||
export let has_shown_message_list_view = false;
|
||||
|
||||
export function set_narrow_title(title) {
|
||||
narrow_title = title;
|
||||
@@ -292,6 +293,7 @@ export function activate(raw_operators, opts) {
|
||||
// populating the new narrow, so we update our narrow_state.
|
||||
// From here on down, any calls to the narrow_state API will
|
||||
// reflect the upcoming narrow.
|
||||
has_shown_message_list_view = true;
|
||||
narrow_state.set_current_filter(filter);
|
||||
|
||||
const excludes_muted_topics = narrow_state.excludes_muted_topics();
|
||||
@@ -882,6 +884,7 @@ export function deactivate(coming_from_recent_topics = false) {
|
||||
}
|
||||
|
||||
narrow_state.reset_current_filter();
|
||||
has_shown_message_list_view = true;
|
||||
|
||||
$("body").removeClass("narrowed_view");
|
||||
$("#zfilt").removeClass("focused_table");
|
||||
|
||||
@@ -622,6 +622,10 @@ export function complete_rerender() {
|
||||
}
|
||||
|
||||
export function show() {
|
||||
if (narrow.has_shown_message_list_view) {
|
||||
narrow.save_pre_narrow_offset_for_reload();
|
||||
}
|
||||
|
||||
if (is_visible()) {
|
||||
// If we're already visible, E.g. because the user hit Esc
|
||||
// while already in the recent topics view, do nothing.
|
||||
|
||||
Reference in New Issue
Block a user