mirror of
https://github.com/zulip/zulip.git
synced 2025-11-22 15:31:20 +00:00
stream_popover: Inline register_stream_handlers.
Also register these click handlers just on the popover itself directly in the onMount helper, like we do with all the other popover_menus.js functions.
This commit is contained in:
@@ -127,9 +127,92 @@ function build_stream_popover(opts) {
|
||||
$popover.addClass("stream-popover-root");
|
||||
instance.setContent(ui_util.parse_html(content));
|
||||
},
|
||||
onMount() {
|
||||
onMount(instance) {
|
||||
const $popper = $(instance.popper);
|
||||
show_left_sidebar_menu_icon(elt);
|
||||
register_stream_handlers();
|
||||
|
||||
// Stream settings
|
||||
$popper.on("click", ".open_stream_settings", (e) => {
|
||||
const sub = stream_popover_sub(e);
|
||||
hide_stream_popover();
|
||||
|
||||
const stream_edit_hash = hash_util.stream_edit_url(sub);
|
||||
browser_history.go_to_location(stream_edit_hash);
|
||||
});
|
||||
|
||||
// Pin/unpin
|
||||
$popper.on("click", ".pin_to_top", (e) => {
|
||||
const sub = stream_popover_sub(e);
|
||||
hide_stream_popover();
|
||||
stream_settings_ui.toggle_pin_to_top_stream(sub);
|
||||
e.stopPropagation();
|
||||
});
|
||||
|
||||
// Mark all messages in stream as read
|
||||
$popper.on("click", ".mark_stream_as_read", (e) => {
|
||||
const sub = stream_popover_sub(e);
|
||||
hide_stream_popover();
|
||||
unread_ops.mark_stream_as_read(sub.stream_id);
|
||||
e.stopPropagation();
|
||||
});
|
||||
|
||||
// Mute/unmute
|
||||
$popper.on("click", ".toggle_stream_muted", (e) => {
|
||||
const sub = stream_popover_sub(e);
|
||||
hide_stream_popover();
|
||||
stream_settings_ui.set_muted(sub, !sub.is_muted);
|
||||
e.stopPropagation();
|
||||
});
|
||||
|
||||
// New topic in stream menu
|
||||
$popper.on("click", ".popover_new_topic_button", (e) => {
|
||||
const sub = stream_popover_sub(e);
|
||||
hide_stream_popover();
|
||||
|
||||
compose_actions.start("stream", {
|
||||
trigger: "popover new topic button",
|
||||
stream: sub.name,
|
||||
topic: "",
|
||||
});
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
});
|
||||
|
||||
// Unsubscribe
|
||||
$popper.on("click", ".popover_sub_unsub_button", function (e) {
|
||||
$(this).toggleClass("unsub");
|
||||
$(this).closest(".popover").fadeOut(500).delay(500).remove();
|
||||
|
||||
const sub = stream_popover_sub(e);
|
||||
stream_settings_ui.sub_or_unsub(sub);
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
});
|
||||
|
||||
// Choose a different color.
|
||||
$popper.on("click", ".choose_stream_color", (e) => {
|
||||
const $popover = $(e.target).closest(".streams_popover");
|
||||
const $colorpicker = $popover.find(".colorpicker-container").find(".colorpicker");
|
||||
$(".colorpicker-container").show();
|
||||
$colorpicker.spectrum("destroy");
|
||||
$colorpicker.spectrum(stream_color.sidebar_popover_colorpicker_options_full);
|
||||
// In theory this should clean up the old color picker,
|
||||
// but this seems a bit flaky -- the new colorpicker
|
||||
// doesn't fire until you click a button, but the buttons
|
||||
// have been hidden. We work around this by just manually
|
||||
// fixing it up here.
|
||||
$colorpicker.parent().find(".sp-container").removeClass("sp-buttons-disabled");
|
||||
$(e.target).hide();
|
||||
|
||||
$(".streams_popover").on("click", "a.sp-cancel", () => {
|
||||
hide_stream_popover();
|
||||
});
|
||||
if ($(window).width() <= media_breakpoints_num.md) {
|
||||
$(".popover-inner").hide().fadeIn(300);
|
||||
$(".popover").addClass("colorpicker-popover");
|
||||
}
|
||||
e.stopPropagation();
|
||||
});
|
||||
},
|
||||
onHidden() {
|
||||
hide_stream_popover();
|
||||
@@ -416,88 +499,3 @@ export function register_click_handlers() {
|
||||
e.stopPropagation();
|
||||
});
|
||||
}
|
||||
|
||||
export function register_stream_handlers() {
|
||||
// Stream settings
|
||||
$("body").one("click", ".open_stream_settings", (e) => {
|
||||
const sub = stream_popover_sub(e);
|
||||
hide_stream_popover();
|
||||
|
||||
const stream_edit_hash = hash_util.stream_edit_url(sub);
|
||||
browser_history.go_to_location(stream_edit_hash);
|
||||
});
|
||||
|
||||
// Pin/unpin
|
||||
$("body").one("click", ".pin_to_top", (e) => {
|
||||
const sub = stream_popover_sub(e);
|
||||
hide_stream_popover();
|
||||
stream_settings_ui.toggle_pin_to_top_stream(sub);
|
||||
e.stopPropagation();
|
||||
});
|
||||
|
||||
// Mark all messages in stream as read
|
||||
$("body").one("click", ".mark_stream_as_read", (e) => {
|
||||
const sub = stream_popover_sub(e);
|
||||
hide_stream_popover();
|
||||
unread_ops.mark_stream_as_read(sub.stream_id);
|
||||
e.stopPropagation();
|
||||
});
|
||||
|
||||
// Mute/unmute
|
||||
$("body").one("click", ".toggle_stream_muted", (e) => {
|
||||
const sub = stream_popover_sub(e);
|
||||
hide_stream_popover();
|
||||
stream_settings_ui.set_muted(sub, !sub.is_muted);
|
||||
e.stopPropagation();
|
||||
});
|
||||
|
||||
// New topic in stream menu
|
||||
$("body").one("click", ".popover_new_topic_button", (e) => {
|
||||
const sub = stream_popover_sub(e);
|
||||
hide_stream_popover();
|
||||
|
||||
compose_actions.start("stream", {
|
||||
trigger: "popover new topic button",
|
||||
stream: sub.name,
|
||||
topic: "",
|
||||
});
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
});
|
||||
|
||||
// Unsubscribe
|
||||
$("body").one("click", ".popover_sub_unsub_button", function (e) {
|
||||
$(this).toggleClass("unsub");
|
||||
$(this).closest(".popover").fadeOut(500).delay(500).remove();
|
||||
|
||||
const sub = stream_popover_sub(e);
|
||||
stream_settings_ui.sub_or_unsub(sub);
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
});
|
||||
|
||||
// Choose a different color.
|
||||
$("body").one("click", ".choose_stream_color", (e) => {
|
||||
const $popover = $(e.target).closest(".streams_popover");
|
||||
const $colorpicker = $popover.find(".colorpicker-container").find(".colorpicker");
|
||||
$(".colorpicker-container").show();
|
||||
$colorpicker.spectrum("destroy");
|
||||
$colorpicker.spectrum(stream_color.sidebar_popover_colorpicker_options_full);
|
||||
// In theory this should clean up the old color picker,
|
||||
// but this seems a bit flaky -- the new colorpicker
|
||||
// doesn't fire until you click a button, but the buttons
|
||||
// have been hidden. We work around this by just manually
|
||||
// fixing it up here.
|
||||
$colorpicker.parent().find(".sp-container").removeClass("sp-buttons-disabled");
|
||||
$(e.target).hide();
|
||||
|
||||
$(".streams_popover").on("click", "a.sp-cancel", () => {
|
||||
hide_stream_popover();
|
||||
});
|
||||
if ($(window).width() <= media_breakpoints_num.md) {
|
||||
$(".popover-inner").hide().fadeIn(300);
|
||||
$(".popover").addClass("colorpicker-popover");
|
||||
}
|
||||
e.stopPropagation();
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user