refactor: Move "send button" related code from compose_validate.js.

This commit moves "send button" related code from
`compose_validate.js` to `compose.js` as it makes more
sense there.
This commit is contained in:
Riken Shah 2021-07-13 19:25:31 +00:00 committed by Tim Abbott
parent 2e4a333133
commit 644cd18dfd
4 changed files with 41 additions and 35 deletions

View File

@ -546,7 +546,7 @@ test_ui("finish", ({override}) => {
})();
(function test_when_compose_validation_succeed() {
$("#compose-textarea").hide();
// Testing successfully sending of a message.
$("#compose .undo_markdown_preview").show();
$("#compose .preview_message_area").show();
$("#compose .markdown_preview").hide();
@ -564,12 +564,36 @@ test_ui("finish", ({override}) => {
send_message_called = true;
});
assert.ok(compose.finish());
assert.equal($("#sending-indicator").text(), "translated: Sending...");
assert.ok($("#compose-textarea").visible());
assert.ok(!$("#compose .undo_markdown_preview").visible());
assert.ok(!$("#compose .preview_message_area").visible());
assert.ok($("#compose .markdown_preview").visible());
assert.ok(send_message_called);
assert.ok(compose_finished_event_checked);
// Testing successful scheduling of message.
$("#compose .undo_markdown_preview").show();
$("#compose .preview_message_area").show();
$("#compose .markdown_preview").hide();
$("#compose-textarea").val("foobarfoobar");
compose_state.set_message_type("stream");
override(compose_state, "stream_name", () => "social");
override(people, "get_by_user_id", () => []);
compose_finished_event_checked = false;
let schedule_message = false;
override(reminder, "schedule_message", () => {
schedule_message = true;
});
reminder.is_deferred_delivery = () => true;
assert.ok(compose.finish());
assert.equal($("#sending-indicator").text(), "translated: Scheduling...");
assert.ok($("#compose-textarea").visible());
assert.ok(!$("#compose .undo_markdown_preview").visible());
assert.ok(!$("#compose .preview_message_area").visible());
assert.ok($("#compose .markdown_preview").visible());
assert.ok(schedule_message);
assert.ok(compose_finished_event_checked);
})();
});

View File

@ -13,7 +13,6 @@ set_global("document", {location: {}});
const channel = mock_esm("../../static/js/channel");
const compose_actions = mock_esm("../../static/js/compose_actions");
const compose_state = zrequire("compose_state");
const reminder = mock_esm("../../static/js/reminder");
const ui_util = mock_esm("../../static/js/ui_util");
const compose_pm_pill = zrequire("compose_pm_pill");
@ -113,7 +112,6 @@ test_ui("validate_stream_message_address_info", ({mock_template}) => {
test_ui("validate", ({override, mock_template}) => {
override(compose_actions, "update_placeholder_text", () => {});
override(reminder, "is_deferred_delivery", () => false);
function initialize_pm_pill() {
$.clear_all_elements();
@ -144,17 +142,13 @@ test_ui("validate", ({override, mock_template}) => {
initialize_pm_pill();
assert.ok(!compose_validate.validate());
assert.ok(!$("#sending-indicator").visible());
assert.ok(!$("#compose-send-button").is_focused());
assert.equal($("#compose-send-button").prop("disabled"), false);
assert.equal(
$("#compose-error-msg").html(),
$t_html({defaultMessage: "You have nothing to send!"}),
);
reminder.is_deferred_delivery = () => true;
compose_validate.validate();
assert.equal($("#sending-indicator").text(), "translated: Scheduling...");
reminder.is_deferred_delivery = () => {};
add_content_to_compose_box();
let zephyr_checked = false;
@ -312,8 +306,6 @@ test_ui("test_wildcard_mention_allowed", () => {
});
test_ui("validate_stream_message", ({override, mock_template}) => {
override(reminder, "is_deferred_delivery", () => false);
// This test is in kind of continuation to test_validate but since it is
// primarily used to get coverage over functions called from validate()
// we are separating it up in different test. Though their relative position
@ -362,9 +354,7 @@ test_ui("validate_stream_message", ({override, mock_template}) => {
);
});
test_ui("test_validate_stream_message_post_policy_admin_only", ({override}) => {
override(reminder, "is_deferred_delivery", () => false);
test_ui("test_validate_stream_message_post_policy_admin_only", () => {
// This test is in continuation with test_validate but it has been separated out
// for better readability. Their relative position of execution should not be changed.
// Although the position with respect to test_validate_stream_message does not matter
@ -401,9 +391,7 @@ test_ui("test_validate_stream_message_post_policy_admin_only", ({override}) => {
);
});
test_ui("test_validate_stream_message_post_policy_moderators_only", ({override}) => {
override(reminder, "is_deferred_delivery", () => false);
test_ui("test_validate_stream_message_post_policy_moderators_only", () => {
page_params.is_admin = false;
page_params.is_moderator = false;
page_params.is_guest = false;
@ -440,9 +428,7 @@ test_ui("test_validate_stream_message_post_policy_moderators_only", ({override})
);
});
test_ui("test_validate_stream_message_post_policy_full_members_only", ({override}) => {
override(reminder, "is_deferred_delivery", () => false);
test_ui("test_validate_stream_message_post_policy_full_members_only", () => {
page_params.is_admin = false;
page_params.is_guest = true;
const sub = {
@ -499,11 +485,9 @@ test_ui("test_check_overflow_text", () => {
assert.ok(!textarea.hasClass("over_limit"));
});
test_ui("test_message_overflow", ({override}) => {
test_ui("test_message_overflow", () => {
page_params.max_message_length = 10000;
override(reminder, "is_deferred_delivery", () => false);
const sub = {
stream_id: 101,
name: "social",

View File

@ -266,6 +266,11 @@ export function enter_with_preview_open() {
}
}
function show_sending_indicator(whats_happening) {
$("#sending-indicator").text(whats_happening);
$("#sending-indicator").show();
}
export function finish() {
clear_preview_area();
clear_invites();
@ -283,6 +288,12 @@ export function finish() {
return undefined;
}
$("#compose-send-button").prop("disabled", true).trigger("blur");
if (reminder.is_deferred_delivery(message_content)) {
show_sending_indicator($t({defaultMessage: "Scheduling..."}));
} else {
show_sending_indicator($t({defaultMessage: "Sending..."}));
}
if (!compose_validate.validate()) {
// If the message failed validation, hide the sending indicator.
$("#sending-indicator").hide();

View File

@ -8,11 +8,10 @@ import * as channel from "./channel";
import * as compose_error from "./compose_error";
import * as compose_pm_pill from "./compose_pm_pill";
import * as compose_state from "./compose_state";
import {$t, $t_html} from "./i18n";
import {$t_html} from "./i18n";
import {page_params} from "./page_params";
import * as peer_data from "./peer_data";
import * as people from "./people";
import * as reminder from "./reminder";
import * as settings_config from "./settings_config";
import * as stream_data from "./stream_data";
import * as util from "./util";
@ -48,11 +47,6 @@ export function clear_all_everyone_warnings() {
$("#compose-send-status").hide();
}
function show_sending_indicator(whats_happening) {
$("#sending-indicator").text(whats_happening);
$("#sending-indicator").show();
}
function show_announce_warnings(stream_id) {
const stream_count = peer_data.get_subscriber_count(stream_id) || 0;
@ -513,14 +507,7 @@ export function warn_for_text_overflow_when_tries_to_send() {
}
export function validate() {
$("#compose-send-button").prop("disabled", true).trigger("blur");
const message_content = compose_state.message_content();
if (reminder.is_deferred_delivery(message_content)) {
show_sending_indicator($t({defaultMessage: "Scheduling..."}));
} else {
show_sending_indicator($t({defaultMessage: "Sending..."}));
}
if (/^\s*$/.test(message_content)) {
// Avoid showing an error message when "enter sends" is enabled,
// as it is more likely that the user has hit "Enter" accidentally.