mirror of
https://github.com/zulip/zulip.git
synced 2025-11-10 00:46:03 +00:00
103 lines
3.8 KiB
JavaScript
103 lines
3.8 KiB
JavaScript
import $ from "jquery";
|
|
|
|
import * as channel from "./channel";
|
|
import * as compose from "./compose";
|
|
import * as compose_actions from "./compose_actions";
|
|
import * as compose_fade from "./compose_fade";
|
|
import * as compose_ui from "./compose_ui";
|
|
import * as narrow from "./narrow";
|
|
import * as overlays from "./overlays";
|
|
import * as people from "./people";
|
|
import * as popover_menus from "./popover_menus";
|
|
|
|
// This is only updated when user opens the scheduled messages overlay.
|
|
export let scheduled_messages_data = [];
|
|
|
|
export function override_scheduled_messages_data(data) {
|
|
scheduled_messages_data = data;
|
|
}
|
|
|
|
export function edit_scheduled_message(scheduled_msg_id) {
|
|
const scheduled_msg = scheduled_messages_data.find(
|
|
(msg) => msg.message_id === scheduled_msg_id,
|
|
);
|
|
|
|
let compose_args;
|
|
|
|
if (scheduled_msg.type === "stream") {
|
|
compose_args = {
|
|
type: "stream",
|
|
stream: scheduled_msg.stream_name,
|
|
topic: scheduled_msg.topic,
|
|
content: scheduled_msg.content,
|
|
};
|
|
} else {
|
|
const recipient_emails = [];
|
|
if (scheduled_msg.to) {
|
|
for (const recipient_id of scheduled_msg.to) {
|
|
recipient_emails.push(people.get_by_user_id(recipient_id).email);
|
|
}
|
|
}
|
|
compose_args = {
|
|
type: scheduled_msg.type,
|
|
private_message_recipient: recipient_emails.join(","),
|
|
content: scheduled_msg.content,
|
|
};
|
|
}
|
|
|
|
if (compose_args.type === "stream") {
|
|
narrow.activate(
|
|
[
|
|
{operator: "stream", operand: compose_args.stream},
|
|
{operator: "topic", operand: compose_args.topic},
|
|
],
|
|
{trigger: "edit scheduled message"},
|
|
);
|
|
} else {
|
|
narrow.activate([{operator: "pm-with", operand: compose_args.private_message_recipient}], {
|
|
trigger: "edit scheduled message",
|
|
});
|
|
}
|
|
|
|
overlays.close_overlay("scheduled");
|
|
compose_fade.clear_compose();
|
|
compose.clear_preview_area();
|
|
compose_actions.start(compose_args.type, compose_args);
|
|
compose_ui.autosize_textarea($("#compose-textarea"));
|
|
$("#compose-textarea").attr("data-scheduled-message-id", scheduled_msg_id);
|
|
popover_menus.show_schedule_confirm_button(scheduled_msg.formatted_send_at_time, true);
|
|
}
|
|
|
|
export function delete_scheduled_message(scheduled_msg_id) {
|
|
channel.del({
|
|
url: "/json/scheduled_messages/" + scheduled_msg_id,
|
|
success() {
|
|
// TODO: Do this via events received from the server in server_events_dispatch.
|
|
if (overlays.scheduled_messages_open()) {
|
|
$(
|
|
`#scheduled_messages_overlay .scheduled-message-row[data-message-id=${scheduled_msg_id}]`,
|
|
).remove();
|
|
}
|
|
if ($("#compose-textarea").attr("data-scheduled-message-id")) {
|
|
const compose_scheduled_msg_id = $("#compose-textarea").attr(
|
|
"data-scheduled-message-id",
|
|
);
|
|
// If user deleted the scheduled message which is being edited in compose, we clear
|
|
// the scheduled message id from there which converts this editing state into a normal
|
|
// schedule message state. So, clicking "Schedule" will now create a new scheduled message.
|
|
if (compose_scheduled_msg_id === scheduled_msg_id) {
|
|
$("#compose-textarea").removeAttr("data-scheduled-message-id");
|
|
}
|
|
}
|
|
},
|
|
});
|
|
}
|
|
|
|
export function delete_scheduled_message_if_sent_directly() {
|
|
// Delete old scheduled message if it was sent.
|
|
if ($("#compose-textarea").attr("data-scheduled-message-id")) {
|
|
delete_scheduled_message($("#compose-textarea").attr("data-scheduled-message-id"));
|
|
$("#compose-textarea").removeAttr("data-scheduled-message-id");
|
|
}
|
|
}
|