mirror of https://github.com/zulip/zulip.git
scheduled_messages: Move update_send_later_options.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
This commit is contained in:
parent
3e4def9c88
commit
b50e500dae
|
@ -1,7 +1,6 @@
|
|||
import $ from "jquery";
|
||||
|
||||
import render_compose_banner from "../templates/compose_banner/compose_banner.hbs";
|
||||
import render_send_later_modal_options from "../templates/send_later_modal_options.hbs";
|
||||
|
||||
import * as channel from "./channel";
|
||||
import * as compose from "./compose";
|
||||
|
@ -16,7 +15,6 @@ import * as sub_store from "./sub_store";
|
|||
import * as timerender from "./timerender";
|
||||
|
||||
export const MINIMUM_SCHEDULED_MESSAGE_DELAY_SECONDS = 5 * 60;
|
||||
export const SCHEDULING_MODAL_UPDATE_INTERVAL_IN_MILLISECONDS = 60 * 1000;
|
||||
|
||||
// scheduled_messages_data is a dictionary where key=scheduled_message_id and value=scheduled_messages
|
||||
export const scheduled_messages_data = {};
|
||||
|
@ -297,27 +295,3 @@ export function initialize(scheduled_messages_params) {
|
|||
e.stopPropagation();
|
||||
});
|
||||
}
|
||||
|
||||
// This function is exported for unit testing purposes.
|
||||
export function should_update_send_later_options(date) {
|
||||
const current_minute = date.getMinutes();
|
||||
const current_hour = date.getHours();
|
||||
|
||||
if (current_hour === 0 && current_minute === 0) {
|
||||
// We need to rerender the available options at midnight,
|
||||
// since Monday could become in range.
|
||||
return true;
|
||||
}
|
||||
|
||||
// Rerender at MINIMUM_SCHEDULED_MESSAGE_DELAY_SECONDS before the
|
||||
// hour, so we don't offer a 4:00PM send time at 3:59 PM.
|
||||
return current_minute === 60 - MINIMUM_SCHEDULED_MESSAGE_DELAY_SECONDS / 60;
|
||||
}
|
||||
|
||||
export function update_send_later_options() {
|
||||
const now = new Date();
|
||||
if (should_update_send_later_options(now)) {
|
||||
const filtered_send_opts = get_filtered_send_opts(now);
|
||||
$("#send_later_options").replaceWith(render_send_later_modal_options(filtered_send_opts));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,6 +2,7 @@ import $ from "jquery";
|
|||
import {delegate} from "tippy.js";
|
||||
|
||||
import render_send_later_modal from "../templates/send_later_modal.hbs";
|
||||
import render_send_later_modal_options from "../templates/send_later_modal_options.hbs";
|
||||
import render_send_later_popover from "../templates/send_later_popover.hbs";
|
||||
|
||||
import * as compose from "./compose";
|
||||
|
@ -13,6 +14,8 @@ import * as scheduled_messages from "./scheduled_messages";
|
|||
import * as timerender from "./timerender";
|
||||
import {parse_html} from "./ui_util";
|
||||
|
||||
export const SCHEDULING_MODAL_UPDATE_INTERVAL_IN_MILLISECONDS = 60 * 1000;
|
||||
|
||||
let selected_send_later_timestamp;
|
||||
|
||||
export function get_selected_send_later_timestamp() {
|
||||
|
@ -63,8 +66,8 @@ export function open_send_later_menu() {
|
|||
autoremove: true,
|
||||
on_show() {
|
||||
interval = setInterval(
|
||||
scheduled_messages.update_send_later_options,
|
||||
scheduled_messages.SCHEDULING_MODAL_UPDATE_INTERVAL_IN_MILLISECONDS,
|
||||
update_send_later_options,
|
||||
SCHEDULING_MODAL_UPDATE_INTERVAL_IN_MILLISECONDS,
|
||||
);
|
||||
|
||||
const $send_later_modal = $("#send_later_modal");
|
||||
|
@ -172,3 +175,27 @@ export function initialize() {
|
|||
},
|
||||
});
|
||||
}
|
||||
|
||||
// This function is exported for unit testing purposes.
|
||||
export function should_update_send_later_options(date) {
|
||||
const current_minute = date.getMinutes();
|
||||
const current_hour = date.getHours();
|
||||
|
||||
if (current_hour === 0 && current_minute === 0) {
|
||||
// We need to rerender the available options at midnight,
|
||||
// since Monday could become in range.
|
||||
return true;
|
||||
}
|
||||
|
||||
// Rerender at MINIMUM_SCHEDULED_MESSAGE_DELAY_SECONDS before the
|
||||
// hour, so we don't offer a 4:00PM send time at 3:59 PM.
|
||||
return current_minute === 60 - scheduled_messages.MINIMUM_SCHEDULED_MESSAGE_DELAY_SECONDS / 60;
|
||||
}
|
||||
|
||||
export function update_send_later_options() {
|
||||
const now = new Date();
|
||||
if (should_update_send_later_options(now)) {
|
||||
const filtered_send_opts = scheduled_messages.get_filtered_send_opts(now);
|
||||
$("#send_later_options").replaceWith(render_send_later_modal_options(filtered_send_opts));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,6 +6,7 @@ const {zrequire} = require("./lib/namespace");
|
|||
const {run_test} = require("./lib/test");
|
||||
|
||||
const scheduled_messages = zrequire("scheduled_messages");
|
||||
const scheduled_messages_popover = zrequire("scheduled_messages_popover");
|
||||
|
||||
const per_day_stamps = {
|
||||
"2023-04-30": {
|
||||
|
@ -164,7 +165,7 @@ run_test("should_update_send_later_options", () => {
|
|||
// We should rerender at midnight
|
||||
const start_of_the_day = new Date();
|
||||
start_of_the_day.setHours(0, 0);
|
||||
assert.ok(scheduled_messages.should_update_send_later_options(start_of_the_day));
|
||||
assert.ok(scheduled_messages_popover.should_update_send_later_options(start_of_the_day));
|
||||
|
||||
function get_minutes_to_hour(minutes) {
|
||||
const date = new Date();
|
||||
|
@ -179,10 +180,10 @@ run_test("should_update_send_later_options", () => {
|
|||
const current_time = get_minutes_to_hour(minute);
|
||||
if (minute === 55) {
|
||||
// Should rerender
|
||||
assert.ok(scheduled_messages.should_update_send_later_options(current_time));
|
||||
assert.ok(scheduled_messages_popover.should_update_send_later_options(current_time));
|
||||
} else {
|
||||
// Should not rerender
|
||||
assert.ok(!scheduled_messages.should_update_send_later_options(current_time));
|
||||
assert.ok(!scheduled_messages_popover.should_update_send_later_options(current_time));
|
||||
}
|
||||
}
|
||||
});
|
||||
|
|
Loading…
Reference in New Issue