mirror of https://github.com/zulip/zulip.git
recent_conversation: Move click handlers out to an initialize function.
We are moving in the direction of removing click_handlers library.
This commit is contained in:
parent
6e6fb47e20
commit
4debef64e7
|
@ -1,5 +1,4 @@
|
|||
import $ from "jquery";
|
||||
import _ from "lodash";
|
||||
import tippy from "tippy.js";
|
||||
import WinChan from "winchan";
|
||||
|
||||
|
@ -30,7 +29,6 @@ import * as navigate from "./navigate";
|
|||
import * as notifications from "./notifications";
|
||||
import * as overlays from "./overlays";
|
||||
import {page_params} from "./page_params";
|
||||
import * as people from "./people";
|
||||
import * as pm_list from "./pm_list";
|
||||
import * as popovers from "./popovers";
|
||||
import * as reactions from "./reactions";
|
||||
|
@ -46,7 +44,6 @@ import * as stream_popover from "./stream_popover";
|
|||
import * as topic_list from "./topic_list";
|
||||
import * as ui_util from "./ui_util";
|
||||
import {parse_html} from "./ui_util";
|
||||
import * as unread_ops from "./unread_ops";
|
||||
import * as user_profile from "./user_profile";
|
||||
import * as util from "./util";
|
||||
|
||||
|
@ -399,111 +396,6 @@ export function initialize() {
|
|||
muted_topics_ui.mute_or_unmute_topic($(e.target), false);
|
||||
});
|
||||
|
||||
// RECENT TOPICS
|
||||
|
||||
$("#recent_topics_table").on("click", ".participant_profile", function (e) {
|
||||
const participant_user_id = Number.parseInt($(this).attr("data-user-id"), 10);
|
||||
e.stopPropagation();
|
||||
const user = people.get_by_user_id(participant_user_id);
|
||||
popovers.show_user_info_popover(this, user);
|
||||
});
|
||||
|
||||
$("body").on("keydown", ".on_hover_topic_mute", ui_util.convert_enter_to_click);
|
||||
|
||||
$("body").on("click", "#recent_topics_table .on_hover_topic_unmute", (e) => {
|
||||
e.stopPropagation();
|
||||
const $elt = $(e.target);
|
||||
const topic_row_index = $elt.closest("tr").index();
|
||||
recent_topics_ui.focus_clicked_element(topic_row_index, recent_topics_ui.COLUMNS.mute);
|
||||
muted_topics_ui.mute_or_unmute_topic($elt, false);
|
||||
});
|
||||
|
||||
$("body").on("keydown", ".on_hover_topic_unmute", ui_util.convert_enter_to_click);
|
||||
|
||||
$("body").on("click", "#recent_topics_table .on_hover_topic_mute", (e) => {
|
||||
e.stopPropagation();
|
||||
const $elt = $(e.target);
|
||||
const topic_row_index = $elt.closest("tr").index();
|
||||
recent_topics_ui.focus_clicked_element(topic_row_index, recent_topics_ui.COLUMNS.mute);
|
||||
muted_topics_ui.mute_or_unmute_topic($elt, true);
|
||||
});
|
||||
|
||||
$("body").on("click", "#recent_topics_search", (e) => {
|
||||
e.stopPropagation();
|
||||
recent_topics_ui.change_focused_element($(e.target), "click");
|
||||
});
|
||||
|
||||
$("body").on("click", "#recent_topics_table .on_hover_topic_read", (e) => {
|
||||
e.stopPropagation();
|
||||
const $elt = $(e.currentTarget);
|
||||
const topic_row_index = $elt.closest("tr").index();
|
||||
recent_topics_ui.focus_clicked_element(topic_row_index, recent_topics_ui.COLUMNS.read);
|
||||
const user_ids_string = $elt.attr("data-user-ids-string");
|
||||
if (user_ids_string) {
|
||||
// PM row
|
||||
unread_ops.mark_pm_as_read(user_ids_string);
|
||||
} else {
|
||||
// Stream row
|
||||
const stream_id = Number.parseInt($elt.attr("data-stream-id"), 10);
|
||||
const topic = $elt.attr("data-topic-name");
|
||||
unread_ops.mark_topic_as_read(stream_id, topic);
|
||||
}
|
||||
recent_topics_ui.change_focused_element($elt, "down_arrow");
|
||||
});
|
||||
|
||||
$("body").on("keydown", ".on_hover_topic_read", ui_util.convert_enter_to_click);
|
||||
|
||||
$("body").on("click", ".btn-recent-filters", (e) => {
|
||||
e.stopPropagation();
|
||||
if (page_params.is_spectator) {
|
||||
// Filter buttons are disabled for spectator.
|
||||
return;
|
||||
}
|
||||
|
||||
recent_topics_ui.change_focused_element($(e.target), "click");
|
||||
recent_topics_ui.set_filter(e.currentTarget.dataset.filter);
|
||||
recent_topics_ui.update_filters_view();
|
||||
recent_topics_ui.revive_current_focus();
|
||||
});
|
||||
|
||||
$("body").on("click", "td.recent_topic_stream", (e) => {
|
||||
e.stopPropagation();
|
||||
const topic_row_index = $(e.target).closest("tr").index();
|
||||
recent_topics_ui.focus_clicked_element(topic_row_index, recent_topics_ui.COLUMNS.stream);
|
||||
window.location.href = $(e.currentTarget).find("a").attr("href");
|
||||
});
|
||||
|
||||
$("body").on("click", "td.recent_topic_name", (e) => {
|
||||
e.stopPropagation();
|
||||
// The element's parent may re-render while it is being passed to
|
||||
// other functions, so, we get topic_key first.
|
||||
const $topic_row = $(e.target).closest("tr");
|
||||
const topic_key = $topic_row.attr("id").slice("recent_conversation:".length);
|
||||
const topic_row_index = $topic_row.index();
|
||||
recent_topics_ui.focus_clicked_element(
|
||||
topic_row_index,
|
||||
recent_topics_ui.COLUMNS.topic,
|
||||
topic_key,
|
||||
);
|
||||
window.location.href = $(e.currentTarget).find("a").attr("href");
|
||||
});
|
||||
|
||||
// Search for all table rows (this combines stream & topic names)
|
||||
$("body").on(
|
||||
"keyup",
|
||||
"#recent_topics_search",
|
||||
_.debounce(() => {
|
||||
recent_topics_ui.update_filters_view();
|
||||
// Wait for user to go idle before initiating search.
|
||||
}, 300),
|
||||
);
|
||||
|
||||
$("body").on("click", "#recent_topics_search_clear", (e) => {
|
||||
e.stopPropagation();
|
||||
$("#recent_topics_search").val("");
|
||||
recent_topics_ui.update_filters_view();
|
||||
});
|
||||
|
||||
// RECIPIENT BARS
|
||||
|
||||
function get_row_id_for_narrowing(narrow_link_elem) {
|
||||
|
|
|
@ -16,12 +16,14 @@ import {localstorage} from "./localstorage";
|
|||
import * as message_store from "./message_store";
|
||||
import * as message_util from "./message_util";
|
||||
import * as message_view_header from "./message_view_header";
|
||||
import * as muted_topics_ui from "./muted_topics_ui";
|
||||
import * as narrow from "./narrow";
|
||||
import * as narrow_state from "./narrow_state";
|
||||
import * as navigate from "./navigate";
|
||||
import {page_params} from "./page_params";
|
||||
import * as people from "./people";
|
||||
import * as pm_list from "./pm_list";
|
||||
import * as popovers from "./popovers";
|
||||
import * as recent_senders from "./recent_senders";
|
||||
import {get, process_message, topics} from "./recent_topics_data";
|
||||
import {
|
||||
|
@ -38,7 +40,9 @@ import * as sub_store from "./sub_store";
|
|||
import * as timerender from "./timerender";
|
||||
import * as top_left_corner from "./top_left_corner";
|
||||
import * as ui from "./ui";
|
||||
import * as ui_util from "./ui_util";
|
||||
import * as unread from "./unread";
|
||||
import * as unread_ops from "./unread_ops";
|
||||
import * as unread_ui from "./unread_ui";
|
||||
import * as user_status from "./user_status";
|
||||
import * as user_topics from "./user_topics";
|
||||
|
@ -1211,4 +1215,103 @@ export function initialize() {
|
|||
// selected for spectators.
|
||||
filters = new Set(ls.get(ls_key));
|
||||
}
|
||||
|
||||
$("#recent_topics_table").on("click", ".participant_profile", function (e) {
|
||||
const participant_user_id = Number.parseInt($(this).attr("data-user-id"), 10);
|
||||
e.stopPropagation();
|
||||
const user = people.get_by_user_id(participant_user_id);
|
||||
popovers.show_user_info_popover(this, user);
|
||||
});
|
||||
|
||||
$("body").on("keydown", ".on_hover_topic_mute", ui_util.convert_enter_to_click);
|
||||
|
||||
$("body").on("click", "#recent_topics_table .on_hover_topic_unmute", (e) => {
|
||||
e.stopPropagation();
|
||||
const $elt = $(e.target);
|
||||
const topic_row_index = $elt.closest("tr").index();
|
||||
focus_clicked_element(topic_row_index, COLUMNS.mute);
|
||||
muted_topics_ui.mute_or_unmute_topic($elt, false);
|
||||
});
|
||||
|
||||
$("body").on("keydown", ".on_hover_topic_unmute", ui_util.convert_enter_to_click);
|
||||
|
||||
$("body").on("click", "#recent_topics_table .on_hover_topic_mute", (e) => {
|
||||
e.stopPropagation();
|
||||
const $elt = $(e.target);
|
||||
const topic_row_index = $elt.closest("tr").index();
|
||||
focus_clicked_element(topic_row_index, COLUMNS.mute);
|
||||
muted_topics_ui.mute_or_unmute_topic($elt, true);
|
||||
});
|
||||
|
||||
$("body").on("click", "#recent_topics_search", (e) => {
|
||||
e.stopPropagation();
|
||||
change_focused_element($(e.target), "click");
|
||||
});
|
||||
|
||||
$("body").on("click", "#recent_topics_table .on_hover_topic_read", (e) => {
|
||||
e.stopPropagation();
|
||||
const $elt = $(e.currentTarget);
|
||||
const topic_row_index = $elt.closest("tr").index();
|
||||
focus_clicked_element(topic_row_index, COLUMNS.read);
|
||||
const user_ids_string = $elt.attr("data-user-ids-string");
|
||||
if (user_ids_string) {
|
||||
// PM row
|
||||
unread_ops.mark_pm_as_read(user_ids_string);
|
||||
} else {
|
||||
// Stream row
|
||||
const stream_id = Number.parseInt($elt.attr("data-stream-id"), 10);
|
||||
const topic = $elt.attr("data-topic-name");
|
||||
unread_ops.mark_topic_as_read(stream_id, topic);
|
||||
}
|
||||
change_focused_element($elt, "down_arrow");
|
||||
});
|
||||
|
||||
$("body").on("keydown", ".on_hover_topic_read", ui_util.convert_enter_to_click);
|
||||
|
||||
$("body").on("click", ".btn-recent-filters", (e) => {
|
||||
e.stopPropagation();
|
||||
if (page_params.is_spectator) {
|
||||
// Filter buttons are disabled for spectator.
|
||||
return;
|
||||
}
|
||||
|
||||
change_focused_element($(e.target), "click");
|
||||
set_filter(e.currentTarget.dataset.filter);
|
||||
update_filters_view();
|
||||
revive_current_focus();
|
||||
});
|
||||
|
||||
$("body").on("click", "td.recent_topic_stream", (e) => {
|
||||
e.stopPropagation();
|
||||
const topic_row_index = $(e.target).closest("tr").index();
|
||||
focus_clicked_element(topic_row_index, COLUMNS.stream);
|
||||
window.location.href = $(e.currentTarget).find("a").attr("href");
|
||||
});
|
||||
|
||||
$("body").on("click", "td.recent_topic_name", (e) => {
|
||||
e.stopPropagation();
|
||||
// The element's parent may re-render while it is being passed to
|
||||
// other functions, so, we get topic_key first.
|
||||
const $topic_row = $(e.target).closest("tr");
|
||||
const topic_key = $topic_row.attr("id").slice("recent_conversation:".length);
|
||||
const topic_row_index = $topic_row.index();
|
||||
focus_clicked_element(topic_row_index, COLUMNS.topic, topic_key);
|
||||
window.location.href = $(e.currentTarget).find("a").attr("href");
|
||||
});
|
||||
|
||||
// Search for all table rows (this combines stream & topic names)
|
||||
$("body").on(
|
||||
"keyup",
|
||||
"#recent_topics_search",
|
||||
_.debounce(() => {
|
||||
update_filters_view();
|
||||
// Wait for user to go idle before initiating search.
|
||||
}, 300),
|
||||
);
|
||||
|
||||
$("body").on("click", "#recent_topics_search_clear", (e) => {
|
||||
e.stopPropagation();
|
||||
$("#recent_topics_search").val("");
|
||||
update_filters_view();
|
||||
});
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue