mirror of
https://github.com/zulip/zulip.git
synced 2025-11-15 03:11:54 +00:00
The default label for empty narrows depends on whether it's a stream/topic narrow or a PMs narrow. We leave some default text in compose.hbs for reply label because it take some time for the js to display the correct label.
106 lines
3.9 KiB
JavaScript
106 lines
3.9 KiB
JavaScript
import $ from "jquery";
|
|
|
|
import * as compose_actions from "./compose_actions";
|
|
import {$t} from "./i18n";
|
|
import * as message_lists from "./message_lists";
|
|
import * as message_store from "./message_store";
|
|
import * as narrow_state from "./narrow_state";
|
|
import * as people from "./people";
|
|
import * as popovers from "./popovers";
|
|
import * as recent_topics from "./recent_topics";
|
|
|
|
function set_reply_button_label(label) {
|
|
$(".compose_reply_button_label").text(label);
|
|
}
|
|
|
|
export function set_standard_text_for_reply_button() {
|
|
set_reply_button_label($t({defaultMessage: "Compose message"}));
|
|
}
|
|
|
|
export function update_reply_recipient_label(message) {
|
|
if (message === undefined) {
|
|
if (message_lists.current.empty()) {
|
|
// For empty narrows where there's a clear reply target,
|
|
// i.e. stream+topic or a single PM conversation, we label
|
|
// the button as replying to the thread.
|
|
if (narrow_state.narrowed_to_topic()) {
|
|
message = {
|
|
stream: narrow_state.stream(),
|
|
topic: narrow_state.topic(),
|
|
};
|
|
} else if (narrow_state.pm_string()) {
|
|
// TODO: This is a total hack. Ideally, we'd rework
|
|
// this to not duplicate the actual compose_actions.js
|
|
// logic for what happens when you click the button,
|
|
// and not call into random modules with hacky fake
|
|
// "message" objects.
|
|
const user_ids = people.user_ids_string_to_ids_array(narrow_state.pm_string());
|
|
const user_ids_dicts = user_ids.map((user_id) => ({id: user_id}));
|
|
message = {
|
|
display_reply_to: message_store.get_pm_full_names({
|
|
type: "private",
|
|
display_recipient: user_ids_dicts,
|
|
}),
|
|
};
|
|
} else {
|
|
set_standard_text_for_reply_button();
|
|
}
|
|
} else {
|
|
message = message_lists.current.selected_message();
|
|
}
|
|
}
|
|
|
|
let recipient_label = "";
|
|
if (message) {
|
|
if (message.stream && message.topic) {
|
|
recipient_label = "#" + message.stream + " > " + message.topic;
|
|
} else if (message.display_reply_to) {
|
|
recipient_label = message.display_reply_to;
|
|
}
|
|
set_reply_button_label(
|
|
$t({defaultMessage: "Message {recipient_label}"}, {recipient_label}),
|
|
);
|
|
} else {
|
|
set_standard_text_for_reply_button();
|
|
}
|
|
}
|
|
|
|
export function initialize() {
|
|
// When the message selection changes, change the label on the Reply button.
|
|
$(document).on("message_selected.zulip", () => {
|
|
if (recent_topics.is_visible()) {
|
|
// message_selected events can occur with recent topics
|
|
// open due to "All messages" loading in the background,
|
|
// so we return without calling changing button state.
|
|
return;
|
|
}
|
|
|
|
update_reply_recipient_label();
|
|
});
|
|
|
|
// Click handlers for buttons in the compose compose box.
|
|
$("body").on("click", ".compose_stream_button", () => {
|
|
popovers.hide_mobile_message_buttons_popover();
|
|
compose_actions.start("stream", {trigger: "new topic button"});
|
|
});
|
|
|
|
$("body").on("click", ".compose_private_button", () => {
|
|
popovers.hide_mobile_message_buttons_popover();
|
|
compose_actions.start("private");
|
|
});
|
|
|
|
$("body").on("click", ".compose_mobile_stream_button", () => {
|
|
popovers.hide_mobile_message_buttons_popover();
|
|
compose_actions.start("stream", {trigger: "new topic button"});
|
|
});
|
|
|
|
$("body").on("click", ".compose_mobile_private_button", () => {
|
|
popovers.hide_mobile_message_buttons_popover();
|
|
compose_actions.start("private");
|
|
});
|
|
|
|
$("body").on("click", ".compose_reply_button", () => {
|
|
compose_actions.respond_to_message({trigger: "reply button"});
|
|
});
|
|
}
|