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/todo_widget.js",
|
||||||
"web/src/topic_list.js",
|
"web/src/topic_list.js",
|
||||||
"web/src/topic_popover.js",
|
"web/src/topic_popover.js",
|
||||||
"web/src/topic_zoom.js",
|
|
||||||
"web/src/tutorial.js",
|
"web/src/tutorial.js",
|
||||||
"web/src/types.ts",
|
"web/src/types.ts",
|
||||||
"web/src/typing.js",
|
"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_list from "./stream_list";
|
||||||
import * as stream_popover from "./stream_popover";
|
import * as stream_popover from "./stream_popover";
|
||||||
import * as topic_list from "./topic_list";
|
import * as topic_list from "./topic_list";
|
||||||
import * as topic_zoom from "./topic_zoom";
|
|
||||||
import * as ui_util from "./ui_util";
|
import * as ui_util from "./ui_util";
|
||||||
import {parse_html} from "./ui_util";
|
import {parse_html} from "./ui_util";
|
||||||
import * as user_topics from "./user_topics";
|
import * as user_topics from "./user_topics";
|
||||||
|
@ -730,8 +729,8 @@ export function initialize() {
|
||||||
);
|
);
|
||||||
const scroll_position = $left_sidebar_scrollbar.scrollTop();
|
const scroll_position = $left_sidebar_scrollbar.scrollTop();
|
||||||
|
|
||||||
if (topic_zoom.is_zoomed_in()) {
|
if (stream_list.is_zoomed_in()) {
|
||||||
topic_zoom.zoom_out();
|
stream_list.zoom_out();
|
||||||
}
|
}
|
||||||
|
|
||||||
// This next bit of logic is a bit subtle; this header
|
// 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_list from "./stream_list";
|
||||||
import * as stream_popover from "./stream_popover";
|
import * as stream_popover from "./stream_popover";
|
||||||
import * as stream_settings_ui from "./stream_settings_ui";
|
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 unread_ops from "./unread_ops";
|
||||||
import * as user_card_popover from "./user_card_popover";
|
import * as user_card_popover from "./user_card_popover";
|
||||||
import * as user_group_popover from "./user_group_popover";
|
import * as user_group_popover from "./user_group_popover";
|
||||||
|
@ -349,8 +348,8 @@ export function process_escape_key(e) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (topic_zoom.is_zoomed_in()) {
|
if (stream_list.is_zoomed_in()) {
|
||||||
topic_zoom.zoom_out();
|
stream_list.zoom_out();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -23,14 +23,70 @@ import * as stream_data from "./stream_data";
|
||||||
import * as stream_list_sort from "./stream_list_sort";
|
import * as stream_list_sort from "./stream_list_sort";
|
||||||
import * as sub_store from "./sub_store";
|
import * as sub_store from "./sub_store";
|
||||||
import * as topic_list from "./topic_list";
|
import * as topic_list from "./topic_list";
|
||||||
import * as topic_zoom from "./topic_zoom";
|
|
||||||
import * as ui_util from "./ui_util";
|
import * as ui_util from "./ui_util";
|
||||||
import * as unread from "./unread";
|
import * as unread from "./unread";
|
||||||
|
|
||||||
|
let pending_stream_list_rerender = false;
|
||||||
|
let zoomed_in = false;
|
||||||
|
|
||||||
export let stream_cursor;
|
export let stream_cursor;
|
||||||
|
|
||||||
let has_scrolled = false;
|
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(
|
export function update_count_in_dom(
|
||||||
$stream_li,
|
$stream_li,
|
||||||
stream_counts,
|
stream_counts,
|
||||||
|
@ -197,7 +253,7 @@ export function build_stream_list(force_rerender) {
|
||||||
elems.push(sidebar_row.get_li());
|
elems.push(sidebar_row.get_li());
|
||||||
}
|
}
|
||||||
|
|
||||||
topic_zoom.clear_topics();
|
clear_topics();
|
||||||
$parent.empty();
|
$parent.empty();
|
||||||
|
|
||||||
const any_pinned_streams =
|
const any_pinned_streams =
|
||||||
|
@ -491,17 +547,17 @@ function set_stream_unread_count(
|
||||||
}
|
}
|
||||||
|
|
||||||
export function update_streams_sidebar(force_rerender) {
|
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
|
// We do our best to update topics that are displayed
|
||||||
// in case user zoomed in. Streams list will be updated,
|
// in case user zoomed in. Streams list will be updated,
|
||||||
// once the user zooms out. This avoids user being zoomed out
|
// once the user zooms out. This avoids user being zoomed out
|
||||||
// when a new message causes streams to re-arrange.
|
// when a new message causes streams to re-arrange.
|
||||||
const filter = narrow_state.filter();
|
const filter = narrow_state.filter();
|
||||||
update_stream_sidebar_for_narrow(filter);
|
update_stream_sidebar_for_narrow(filter);
|
||||||
topic_zoom.set_pending_stream_list_rerender(true);
|
set_pending_stream_list_rerender(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
topic_zoom.set_pending_stream_list_rerender(false);
|
set_pending_stream_list_rerender(false);
|
||||||
|
|
||||||
build_stream_list(force_rerender);
|
build_stream_list(force_rerender);
|
||||||
|
|
||||||
|
@ -624,7 +680,7 @@ export function update_stream_sidebar_for_narrow(filter) {
|
||||||
const stream_id = info.stream_id;
|
const stream_id = info.stream_id;
|
||||||
|
|
||||||
if (!stream_id) {
|
if (!stream_id) {
|
||||||
topic_zoom.clear_topics();
|
clear_topics();
|
||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -637,7 +693,7 @@ export function update_stream_sidebar_for_narrow(filter) {
|
||||||
// stopped appearing from March 2018 until at least
|
// stopped appearing from March 2018 until at least
|
||||||
// April 2020, so if it appears again, something regressed.
|
// April 2020, so if it appears again, something regressed.
|
||||||
blueslip.error("No stream_li for subscribed stream", {stream_id});
|
blueslip.error("No stream_li for subscribed stream", {stream_id});
|
||||||
topic_zoom.clear_topics();
|
clear_topics();
|
||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -651,7 +707,7 @@ export function update_stream_sidebar_for_narrow(filter) {
|
||||||
$stream_li.addClass("stream-expanded");
|
$stream_li.addClass("stream-expanded");
|
||||||
|
|
||||||
if (stream_id !== topic_list.active_stream_id()) {
|
if (stream_id !== topic_list.active_stream_id()) {
|
||||||
topic_zoom.clear_topics();
|
clear_topics();
|
||||||
}
|
}
|
||||||
|
|
||||||
topic_list.rebuild($stream_li, stream_id);
|
topic_list.rebuild($stream_li, stream_id);
|
||||||
|
@ -668,7 +724,7 @@ export function handle_narrow_activated(filter) {
|
||||||
|
|
||||||
export function handle_message_view_deactivated() {
|
export function handle_message_view_deactivated() {
|
||||||
deselect_stream_items();
|
deselect_stream_items();
|
||||||
topic_zoom.clear_topics();
|
clear_topics();
|
||||||
}
|
}
|
||||||
|
|
||||||
function focus_stream_filter(e) {
|
function focus_stream_filter(e) {
|
||||||
|
@ -711,6 +767,20 @@ export function initialize({on_stream_click}) {
|
||||||
update_subscribe_to_more_streams_link();
|
update_subscribe_to_more_streams_link();
|
||||||
initialize_stream_cursor();
|
initialize_stream_cursor();
|
||||||
set_event_handlers({on_stream_click});
|
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}) {
|
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 tippyjs from "./tippyjs";
|
||||||
import * as topic_list from "./topic_list";
|
import * as topic_list from "./topic_list";
|
||||||
import * as topic_popover from "./topic_popover";
|
import * as topic_popover from "./topic_popover";
|
||||||
import * as topic_zoom from "./topic_zoom";
|
|
||||||
import * as transmit from "./transmit";
|
import * as transmit from "./transmit";
|
||||||
import * as tutorial from "./tutorial";
|
import * as tutorial from "./tutorial";
|
||||||
import * as typeahead_helper from "./typeahead_helper";
|
import * as typeahead_helper from "./typeahead_helper";
|
||||||
|
@ -713,7 +712,6 @@ export function initialize_everything() {
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
topic_zoom.initialize();
|
|
||||||
drafts.initialize();
|
drafts.initialize();
|
||||||
drafts_overlay_ui.initialize();
|
drafts_overlay_ui.initialize();
|
||||||
sent_messages.initialize();
|
sent_messages.initialize();
|
||||||
|
|
Loading…
Reference in New Issue