compose: Use the new endpoint to create scheduled messages.

This commit is contained in:
Aman Agrawal 2023-04-20 02:34:08 +00:00 committed by Tim Abbott
parent d60d6e9115
commit 5baa0dc313
5 changed files with 73 additions and 12 deletions

View File

@ -804,14 +804,35 @@ export function reset_compose_scheduling_state(reset_edit_state = true) {
} }
function schedule_message_to_custom_date() { function schedule_message_to_custom_date() {
const request = create_message_object(); const compose_message_object = create_message_object();
const selected_send_later_time = popover_menus.get_selected_send_later_time();
request.content = `/schedule ${selected_send_later_time}\n` + request.content; const deliver_at = popover_menus.get_formatted_selected_send_later_time();
// If this is an edit request `scheduled_message_id` will be defined. const send_later_time = popover_menus.get_selected_send_later_time();
let scheduled_message_id; const scheduled_delivery_timestamp = Math.floor(Date.parse(send_later_time) / 1000);
if ($("#compose-textarea").attr("data-scheduled-message-id")) {
scheduled_message_id = $("#compose-textarea").attr("data-scheduled-message-id"); const message_type = compose_message_object.type;
$("#compose-textarea").removeAttr("data-scheduled-message-id"); let req_type;
if (message_type === "private") {
req_type = "direct";
} else {
req_type = message_type;
} }
reminder.schedule_message(request, clear_compose_box, scheduled_message_id);
const scheduled_message_data = {
type: req_type,
to: JSON.stringify(compose_message_object.to),
topic: compose_message_object.topic,
content: compose_message_object.content,
scheduled_delivery_timestamp,
};
// If this is an edit request `scheduled_message_id` will be defined.
if ($("#compose-textarea").attr("data-scheduled-message-id")) {
scheduled_message_data.scheduled_message_id = $("#compose-textarea").attr(
"data-scheduled-message-id",
);
}
scheduled_messages.send_request_to_schedule_message(scheduled_message_data, deliver_at);
} }

View File

@ -82,6 +82,13 @@ export function is_time_selected_for_schedule() {
} }
export function get_selected_send_later_time() { export function get_selected_send_later_time() {
if (!selected_send_later_time) {
return undefined;
}
return selected_send_later_time;
}
export function get_formatted_selected_send_later_time() {
if (!selected_send_later_time) { if (!selected_send_later_time) {
return undefined; return undefined;
} }
@ -863,7 +870,7 @@ export function initialize() {
possible_send_later_today = false; possible_send_later_today = false;
} }
const formatted_send_later_time = get_selected_send_later_time(); const formatted_send_later_time = get_formatted_selected_send_later_time();
instance.setContent( instance.setContent(
parse_html( parse_html(

View File

@ -3,9 +3,12 @@ import $ from "jquery";
import * as channel from "./channel"; import * as channel from "./channel";
import * as compose from "./compose"; import * as compose from "./compose";
import * as compose_actions from "./compose_actions"; import * as compose_actions from "./compose_actions";
import * as compose_banner from "./compose_banner";
import * as compose_fade from "./compose_fade"; import * as compose_fade from "./compose_fade";
import * as compose_ui from "./compose_ui"; import * as compose_ui from "./compose_ui";
import {$t} from "./i18n";
import * as narrow from "./narrow"; import * as narrow from "./narrow";
import * as notifications from "./notifications";
import * as overlays from "./overlays"; import * as overlays from "./overlays";
import * as people from "./people"; import * as people from "./people";
import * as popover_menus from "./popover_menus"; import * as popover_menus from "./popover_menus";
@ -68,6 +71,36 @@ export function edit_scheduled_message(scheduled_msg_id) {
popover_menus.show_schedule_confirm_button(scheduled_msg.formatted_send_at_time, true); popover_menus.show_schedule_confirm_button(scheduled_msg.formatted_send_at_time, true);
} }
export function send_request_to_schedule_message(scheduled_message_data, deliver_at) {
const success = function () {
compose.clear_compose_box();
notifications.notify_above_composebox(
$t({defaultMessage: `Your message has been scheduled for {deliver_at}.`}, {deliver_at}),
"scheduled_message_banner",
"/#scheduled",
"",
$t({defaultMessage: "View scheduled messages"}),
);
};
const error = function (xhr) {
const response = channel.xhr_error_message("Error sending message", xhr);
compose_ui.hide_compose_spinner();
compose_banner.show_error_message(
response,
compose_banner.CLASSNAMES.generic_compose_error,
$("#compose-textarea"),
);
};
channel.post({
url: "/json/scheduled_messages",
data: scheduled_message_data,
success,
error,
});
}
export function delete_scheduled_message(scheduled_msg_id) { export function delete_scheduled_message(scheduled_msg_id) {
channel.del({ channel.del({
url: "/json/scheduled_messages/" + scheduled_msg_id, url: "/json/scheduled_messages/" + scheduled_msg_id,

View File

@ -38,7 +38,7 @@ function format(scheduled_messages) {
msg_render_context.is_stream = false; msg_render_context.is_stream = false;
msg_render_context.recipients = people.get_recipients(msg.to.join(",")); msg_render_context.recipients = people.get_recipients(msg.to.join(","));
} }
const time = new Date(msg.deliver_at); const time = new Date(msg.scheduled_delivery_timestamp * 1000);
msg_render_context.full_date_time = timerender.get_full_datetime(time); msg_render_context.full_date_time = timerender.get_full_datetime(time);
msg_render_context.formatted_send_at_time = date_fns.format(time, "MMM d yyyy h:mm a"); msg_render_context.formatted_send_at_time = date_fns.format(time, "MMM d yyyy h:mm a");
formatted_msgs.push(msg_render_context); formatted_msgs.push(msg_render_context);

View File

@ -654,7 +654,7 @@ export function initialize() {
return false; return false;
} }
const send_at_time = popover_menus.get_selected_send_later_time(); const send_at_time = popover_menus.get_formatted_selected_send_later_time();
instance.setContent( instance.setContent(
parse_html( parse_html(
$t( $t(