narrow-banner: Check private message policy for empty narrow title.

For narrows that focus on private messages ("is:private", "pm-with",
"group-pm-with"), we want to check the organization private message
policy and set an empty narrow title that matches that policy.

For these narrows with invalid users, we prioritize that message
for the empty narrow title, instead of the private message policy
message.

Fixes #21889.
This commit is contained in:
Lauryn Menard 2022-10-31 20:40:22 +01:00 committed by Tim Abbott
parent 1fce1c3c73
commit f06143bc7c
2 changed files with 107 additions and 22 deletions

View File

@ -15,6 +15,7 @@ const people = zrequire("people");
const stream_data = zrequire("stream_data");
const {Filter} = zrequire("../js/filter");
const narrow = zrequire("narrow");
const settings_config = zrequire("settings_config");
const compose_pm_pill = mock_esm("../../static/js/compose_pm_pill");
mock_esm("../../static/js/spectators", {
@ -296,6 +297,22 @@ run_test("show_empty_narrow_message", ({mock_template}) => {
),
);
// organization has disabled sending private messages
page_params.realm_private_message_policy =
settings_config.private_message_policy_values.disabled.code;
set_filter([["is", "private"]]);
hide_all_empty_narrow_messages();
narrow_banner.show_empty_narrow_message();
assert.equal(
$(".empty_feed_notice_main").html(),
empty_narrow_html(
"translated: You are not allowed to send private messages in this organization.",
),
);
// sending private messages enabled
page_params.realm_private_message_policy =
settings_config.private_message_policy_values.by_anyone.code;
set_filter([["is", "private"]]);
hide_all_empty_narrow_messages();
narrow_banner.show_empty_narrow_message();
@ -323,6 +340,11 @@ run_test("show_empty_narrow_message", ({mock_template}) => {
empty_narrow_html("translated: No topics are marked as resolved."),
);
// organization has disabled sending private messages
page_params.realm_private_message_policy =
settings_config.private_message_policy_values.disabled.code;
// prioritize information about invalid user(s) in narrow/search
set_filter([["pm-with", ["Yo"]]]);
hide_all_empty_narrow_messages();
narrow_banner.show_empty_narrow_message();
@ -340,6 +362,19 @@ run_test("show_empty_narrow_message", ({mock_template}) => {
empty_narrow_html("translated: One or more of these users do not exist!"),
);
set_filter([["pm-with", "alice@example.com"]]);
hide_all_empty_narrow_messages();
narrow_banner.show_empty_narrow_message();
assert.equal(
$(".empty_feed_notice_main").html(),
empty_narrow_html(
"translated: You are not allowed to send private messages in this organization.",
),
);
// sending private messages enabled
page_params.realm_private_message_policy =
settings_config.private_message_policy_values.by_anyone.code;
set_filter([["pm-with", "alice@example.com"]]);
hide_all_empty_narrow_messages();
narrow_banner.show_empty_narrow_message();
@ -375,6 +410,32 @@ run_test("show_empty_narrow_message", ({mock_template}) => {
),
);
// organization has disabled sending private messages
page_params.realm_private_message_policy =
settings_config.private_message_policy_values.disabled.code;
// prioritize information about invalid user in narrow/search
set_filter([["group-pm-with", ["Yo"]]]);
hide_all_empty_narrow_messages();
narrow_banner.show_empty_narrow_message();
assert.equal(
$(".empty_feed_notice_main").html(),
empty_narrow_html("translated: This user does not exist!"),
);
set_filter([["group-pm-with", "alice@example.com"]]);
hide_all_empty_narrow_messages();
narrow_banner.show_empty_narrow_message();
assert.equal(
$(".empty_feed_notice_main").html(),
empty_narrow_html(
"translated: You are not allowed to send group private messages in this organization.",
),
);
// sending private messages enabled
page_params.realm_private_message_policy =
settings_config.private_message_policy_values.by_anyone.code;
set_filter([["group-pm-with", "alice@example.com"]]);
hide_all_empty_narrow_messages();
narrow_banner.show_empty_narrow_message();
@ -386,14 +447,6 @@ run_test("show_empty_narrow_message", ({mock_template}) => {
),
);
set_filter([["group-pm-with", ["Yo"]]]);
hide_all_empty_narrow_messages();
narrow_banner.show_empty_narrow_message();
assert.equal(
$(".empty_feed_notice_main").html(),
empty_narrow_html("translated: This user does not exist!"),
);
set_filter([["sender", "ray@example.com"]]);
hide_all_empty_narrow_messages();
narrow_banner.show_empty_narrow_message();

View File

@ -5,6 +5,7 @@ import {narrow_error} from "./narrow_error";
import * as narrow_state from "./narrow_state";
import {page_params} from "./page_params";
import * as people from "./people";
import * as settings_config from "./settings_config";
import * as spectators from "./spectators";
import * as stream_data from "./stream_data";
@ -186,6 +187,17 @@ function pick_empty_narrow_banner() {
};
case "private":
// You have no private messages.
if (
page_params.realm_private_message_policy ===
settings_config.private_message_policy_values.disabled.code
) {
return {
title: $t({
defaultMessage:
"You are not allowed to send private messages in this organization.",
}),
};
}
return {
title: $t({defaultMessage: "You have no private messages yet!"}),
html: $t_html(
@ -280,6 +292,17 @@ function pick_empty_narrow_banner() {
title: $t({defaultMessage: "One or more of these users do not exist!"}),
};
}
if (
page_params.realm_private_message_policy ===
settings_config.private_message_policy_values.disabled.code
) {
return {
title: $t({
defaultMessage:
"You are not allowed to send private messages in this organization.",
}),
};
}
if (!first_operand.includes(",")) {
// You have no private messages with this person
if (people.is_current_user(first_operand)) {
@ -345,26 +368,35 @@ function pick_empty_narrow_banner() {
title: $t({defaultMessage: "This user does not exist!"}),
};
case "group-pm-with":
if (people.get_by_email(first_operand)) {
if (!people.get_by_email(first_operand)) {
return {
title: $t({defaultMessage: "This user does not exist!"}),
};
}
if (
page_params.realm_private_message_policy ===
settings_config.private_message_policy_values.disabled.code
) {
return {
title: $t({
defaultMessage: "You have no group private messages with this person yet!",
defaultMessage:
"You are not allowed to send group private messages in this organization.",
}),
html: $t_html(
{
defaultMessage: "Why not <z-link>start the conversation</z-link>?",
},
{
"z-link": (content_html) =>
`<a href="#" class="empty_feed_compose_private">${content_html.join(
"",
)}</a>`,
},
),
};
}
return {
title: $t({defaultMessage: "This user does not exist!"}),
title: $t({
defaultMessage: "You have no group private messages with this person yet!",
}),
html: $t_html(
{
defaultMessage: "Why not <z-link>start the conversation</z-link>?",
},
{
"z-link": (content_html) =>
`<a href="#" class="empty_feed_compose_private">${content_html}</a>`,
},
),
};
}
return default_banner;