mirror of https://github.com/zulip/zulip.git
topic_zoom: Merge into stream_list.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
This commit is contained in:
parent
a43ea3efaa
commit
27991bd5b0
|
@ -234,7 +234,6 @@ EXEMPT_FILES = make_set(
|
|||
"web/src/todo_widget.js",
|
||||
"web/src/topic_list.js",
|
||||
"web/src/topic_popover.js",
|
||||
"web/src/topic_zoom.js",
|
||||
"web/src/tutorial.js",
|
||||
"web/src/types.ts",
|
||||
"web/src/typing.js",
|
||||
|
|
|
@ -41,7 +41,6 @@ import * as starred_messages_ui from "./starred_messages_ui";
|
|||
import * as stream_list from "./stream_list";
|
||||
import * as stream_popover from "./stream_popover";
|
||||
import * as topic_list from "./topic_list";
|
||||
import * as topic_zoom from "./topic_zoom";
|
||||
import * as ui_util from "./ui_util";
|
||||
import {parse_html} from "./ui_util";
|
||||
import * as user_topics from "./user_topics";
|
||||
|
@ -730,8 +729,8 @@ export function initialize() {
|
|||
);
|
||||
const scroll_position = $left_sidebar_scrollbar.scrollTop();
|
||||
|
||||
if (topic_zoom.is_zoomed_in()) {
|
||||
topic_zoom.zoom_out();
|
||||
if (stream_list.is_zoomed_in()) {
|
||||
stream_list.zoom_out();
|
||||
}
|
||||
|
||||
// This next bit of logic is a bit subtle; this header
|
||||
|
|
|
@ -52,7 +52,6 @@ import * as stream_data from "./stream_data";
|
|||
import * as stream_list from "./stream_list";
|
||||
import * as stream_popover from "./stream_popover";
|
||||
import * as stream_settings_ui from "./stream_settings_ui";
|
||||
import * as topic_zoom from "./topic_zoom";
|
||||
import * as unread_ops from "./unread_ops";
|
||||
import * as user_card_popover from "./user_card_popover";
|
||||
import * as user_group_popover from "./user_group_popover";
|
||||
|
@ -349,8 +348,8 @@ export function process_escape_key(e) {
|
|||
return true;
|
||||
}
|
||||
|
||||
if (topic_zoom.is_zoomed_in()) {
|
||||
topic_zoom.zoom_out();
|
||||
if (stream_list.is_zoomed_in()) {
|
||||
stream_list.zoom_out();
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
@ -23,14 +23,70 @@ import * as stream_data from "./stream_data";
|
|||
import * as stream_list_sort from "./stream_list_sort";
|
||||
import * as sub_store from "./sub_store";
|
||||
import * as topic_list from "./topic_list";
|
||||
import * as topic_zoom from "./topic_zoom";
|
||||
import * as ui_util from "./ui_util";
|
||||
import * as unread from "./unread";
|
||||
|
||||
let pending_stream_list_rerender = false;
|
||||
let zoomed_in = false;
|
||||
|
||||
export let stream_cursor;
|
||||
|
||||
let has_scrolled = false;
|
||||
|
||||
export function is_zoomed_in() {
|
||||
return zoomed_in;
|
||||
}
|
||||
|
||||
function zoom_in() {
|
||||
const stream_id = topic_list.active_stream_id();
|
||||
|
||||
popovers.hide_all();
|
||||
pm_list.close();
|
||||
topic_list.zoom_in();
|
||||
zoom_in_topics({
|
||||
stream_id,
|
||||
});
|
||||
|
||||
zoomed_in = true;
|
||||
}
|
||||
|
||||
export function set_pending_stream_list_rerender(value) {
|
||||
pending_stream_list_rerender = value;
|
||||
}
|
||||
|
||||
export function zoom_out() {
|
||||
if (pending_stream_list_rerender) {
|
||||
update_streams_sidebar(true);
|
||||
}
|
||||
const $stream_li = topic_list.get_stream_li();
|
||||
|
||||
popovers.hide_all();
|
||||
topic_list.zoom_out();
|
||||
zoom_out_topics();
|
||||
|
||||
if ($stream_li) {
|
||||
scroll_stream_into_view($stream_li);
|
||||
}
|
||||
|
||||
zoomed_in = false;
|
||||
}
|
||||
|
||||
export function clear_topics() {
|
||||
const $stream_li = topic_list.get_stream_li();
|
||||
|
||||
topic_list.close();
|
||||
|
||||
if (zoomed_in) {
|
||||
zoom_out_topics();
|
||||
|
||||
if ($stream_li) {
|
||||
scroll_stream_into_view($stream_li);
|
||||
}
|
||||
}
|
||||
|
||||
zoomed_in = false;
|
||||
}
|
||||
|
||||
export function update_count_in_dom(
|
||||
$stream_li,
|
||||
stream_counts,
|
||||
|
@ -197,7 +253,7 @@ export function build_stream_list(force_rerender) {
|
|||
elems.push(sidebar_row.get_li());
|
||||
}
|
||||
|
||||
topic_zoom.clear_topics();
|
||||
clear_topics();
|
||||
$parent.empty();
|
||||
|
||||
const any_pinned_streams =
|
||||
|
@ -491,17 +547,17 @@ function set_stream_unread_count(
|
|||
}
|
||||
|
||||
export function update_streams_sidebar(force_rerender) {
|
||||
if (!force_rerender && topic_zoom.is_zoomed_in()) {
|
||||
if (!force_rerender && is_zoomed_in()) {
|
||||
// We do our best to update topics that are displayed
|
||||
// in case user zoomed in. Streams list will be updated,
|
||||
// once the user zooms out. This avoids user being zoomed out
|
||||
// when a new message causes streams to re-arrange.
|
||||
const filter = narrow_state.filter();
|
||||
update_stream_sidebar_for_narrow(filter);
|
||||
topic_zoom.set_pending_stream_list_rerender(true);
|
||||
set_pending_stream_list_rerender(true);
|
||||
return;
|
||||
}
|
||||
topic_zoom.set_pending_stream_list_rerender(false);
|
||||
set_pending_stream_list_rerender(false);
|
||||
|
||||
build_stream_list(force_rerender);
|
||||
|
||||
|
@ -624,7 +680,7 @@ export function update_stream_sidebar_for_narrow(filter) {
|
|||
const stream_id = info.stream_id;
|
||||
|
||||
if (!stream_id) {
|
||||
topic_zoom.clear_topics();
|
||||
clear_topics();
|
||||
return undefined;
|
||||
}
|
||||
|
||||
|
@ -637,7 +693,7 @@ export function update_stream_sidebar_for_narrow(filter) {
|
|||
// stopped appearing from March 2018 until at least
|
||||
// April 2020, so if it appears again, something regressed.
|
||||
blueslip.error("No stream_li for subscribed stream", {stream_id});
|
||||
topic_zoom.clear_topics();
|
||||
clear_topics();
|
||||
return undefined;
|
||||
}
|
||||
|
||||
|
@ -651,7 +707,7 @@ export function update_stream_sidebar_for_narrow(filter) {
|
|||
$stream_li.addClass("stream-expanded");
|
||||
|
||||
if (stream_id !== topic_list.active_stream_id()) {
|
||||
topic_zoom.clear_topics();
|
||||
clear_topics();
|
||||
}
|
||||
|
||||
topic_list.rebuild($stream_li, stream_id);
|
||||
|
@ -668,7 +724,7 @@ export function handle_narrow_activated(filter) {
|
|||
|
||||
export function handle_message_view_deactivated() {
|
||||
deselect_stream_items();
|
||||
topic_zoom.clear_topics();
|
||||
clear_topics();
|
||||
}
|
||||
|
||||
function focus_stream_filter(e) {
|
||||
|
@ -711,6 +767,20 @@ export function initialize({on_stream_click}) {
|
|||
update_subscribe_to_more_streams_link();
|
||||
initialize_stream_cursor();
|
||||
set_event_handlers({on_stream_click});
|
||||
|
||||
$("#stream_filters").on("click", ".show-more-topics", (e) => {
|
||||
zoom_in();
|
||||
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
});
|
||||
|
||||
$(".show-all-streams").on("click", (e) => {
|
||||
zoom_out();
|
||||
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
});
|
||||
}
|
||||
|
||||
export function set_event_handlers({on_stream_click}) {
|
||||
|
|
|
@ -1,79 +0,0 @@
|
|||
import $ from "jquery";
|
||||
|
||||
import * as pm_list from "./pm_list";
|
||||
import * as popovers from "./popovers";
|
||||
import * as stream_list from "./stream_list";
|
||||
import * as topic_list from "./topic_list";
|
||||
|
||||
let pending_stream_list_rerender = false;
|
||||
let zoomed_in = false;
|
||||
|
||||
export function is_zoomed_in() {
|
||||
return zoomed_in;
|
||||
}
|
||||
|
||||
function zoom_in() {
|
||||
const stream_id = topic_list.active_stream_id();
|
||||
|
||||
popovers.hide_all();
|
||||
pm_list.close();
|
||||
topic_list.zoom_in();
|
||||
stream_list.zoom_in_topics({
|
||||
stream_id,
|
||||
});
|
||||
|
||||
zoomed_in = true;
|
||||
}
|
||||
|
||||
export function set_pending_stream_list_rerender(value) {
|
||||
pending_stream_list_rerender = value;
|
||||
}
|
||||
|
||||
export function zoom_out() {
|
||||
if (pending_stream_list_rerender) {
|
||||
stream_list.update_streams_sidebar(true);
|
||||
}
|
||||
const $stream_li = topic_list.get_stream_li();
|
||||
|
||||
popovers.hide_all();
|
||||
topic_list.zoom_out();
|
||||
stream_list.zoom_out_topics();
|
||||
|
||||
if ($stream_li) {
|
||||
stream_list.scroll_stream_into_view($stream_li);
|
||||
}
|
||||
|
||||
zoomed_in = false;
|
||||
}
|
||||
|
||||
export function clear_topics() {
|
||||
const $stream_li = topic_list.get_stream_li();
|
||||
|
||||
topic_list.close();
|
||||
|
||||
if (zoomed_in) {
|
||||
stream_list.zoom_out_topics();
|
||||
|
||||
if ($stream_li) {
|
||||
stream_list.scroll_stream_into_view($stream_li);
|
||||
}
|
||||
}
|
||||
|
||||
zoomed_in = false;
|
||||
}
|
||||
|
||||
export function initialize() {
|
||||
$("#stream_filters").on("click", ".show-more-topics", (e) => {
|
||||
zoom_in();
|
||||
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
});
|
||||
|
||||
$(".show-all-streams").on("click", (e) => {
|
||||
zoom_out();
|
||||
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
});
|
||||
}
|
|
@ -124,7 +124,6 @@ import * as timerender from "./timerender";
|
|||
import * as tippyjs from "./tippyjs";
|
||||
import * as topic_list from "./topic_list";
|
||||
import * as topic_popover from "./topic_popover";
|
||||
import * as topic_zoom from "./topic_zoom";
|
||||
import * as transmit from "./transmit";
|
||||
import * as tutorial from "./tutorial";
|
||||
import * as typeahead_helper from "./typeahead_helper";
|
||||
|
@ -713,7 +712,6 @@ export function initialize_everything() {
|
|||
);
|
||||
},
|
||||
});
|
||||
topic_zoom.initialize();
|
||||
drafts.initialize();
|
||||
drafts_overlay_ui.initialize();
|
||||
sent_messages.initialize();
|
||||
|
|
Loading…
Reference in New Issue