narrow: Add "(guest)" to user names in narrow title.

This commit adds "(guest)" to user names in the narrow title when
enable_guest_user_indicator setting is enabled in the organization.
The indicator, based on the setting, is added for DM narrows and
for "sender:" narrows.
This commit is contained in:
Sahil Batra 2023-09-15 23:30:42 +05:30 committed by Tim Abbott
parent 70c9d0765f
commit 268aab3cda
2 changed files with 80 additions and 3 deletions

View File

@ -706,10 +706,15 @@ export class Filter {
) {
const emails = this.operands("dm")[0].split(",");
const names = emails.map((email) => {
if (!people.get_by_email(email)) {
const person = people.get_by_email(email);
if (!person) {
return email;
}
return people.get_by_email(email).full_name;
if (people.should_add_guest_user_indicator(person.user_id)) {
return $t({defaultMessage: "{name} (guest)"}, {name: person.full_name});
}
return person.full_name;
});
// We use join to handle the addition of a comma and space after every name
@ -725,8 +730,14 @@ export class Filter {
if (people.is_my_user_id(user.user_id)) {
return $t({defaultMessage: "Messages sent by you"});
}
sender = user.full_name;
if (people.should_add_guest_user_indicator(user.user_id)) {
sender = $t({defaultMessage: "{name} (guest)"}, {name: user.full_name});
} else {
sender = user.full_name;
}
}
return $t(
{defaultMessage: "Messages sent by {sender}"},
{

View File

@ -35,9 +35,17 @@ const steve = {
full_name: "steve",
};
const alice = {
email: "alice@example.com",
user_id: 33,
full_name: "alice",
is_guest: true,
};
people.add_active_user(me);
people.add_active_user(joe);
people.add_active_user(steve);
people.add_active_user(alice);
people.initialize_current_user(me.user_id);
function assert_same_operators(result, terms) {
@ -1523,6 +1531,7 @@ test("navbar_helpers", () => {
}
const sender = [{operator: "sender", operand: joe.email}];
const guest_sender = [{operator: "sender", operand: alice.email}];
const in_home = [{operator: "in", operand: "home"}];
const in_all = [{operator: "in", operand: "all"}];
const is_starred = [{operator: "is", operand: "starred"}];
@ -1547,6 +1556,10 @@ test("navbar_helpers", () => {
];
const dm = [{operator: "dm", operand: "joe@example.com"}];
const dm_group = [{operator: "dm", operand: "joe@example.com,STEVE@foo.com"}];
const dm_with_guest = [{operator: "dm", operand: "alice@example.com"}];
const dm_group_including_guest = [
{operator: "dm", operand: "alice@example.com,joe@example.com"},
];
const dm_group_including_missing_person = [
{operator: "dm", operand: "joe@example.com,STEVE@foo.com,sally@doesnotexist.com"},
];
@ -1571,6 +1584,13 @@ test("navbar_helpers", () => {
title: "translated: Messages sent by " + joe.full_name,
redirect_url_with_search: "/#narrow/sender/" + joe.user_id + "-joe",
},
{
operator: guest_sender,
is_common_narrow: true,
icon: undefined,
title: "translated: Messages sent by translated: alice (guest)",
redirect_url_with_search: "/#narrow/sender/" + alice.user_id + "-alice",
},
{
operator: is_starred,
is_common_narrow: true,
@ -1677,6 +1697,21 @@ test("navbar_helpers", () => {
title: properly_separated_names([joe.full_name, steve.full_name]),
redirect_url_with_search: "/#narrow/dm/" + joe.user_id + "," + steve.user_id + "-group",
},
{
operator: dm_with_guest,
is_common_narrow: true,
icon: "envelope",
title: "translated: alice (guest)",
redirect_url_with_search:
"/#narrow/dm/" + alice.user_id + "-" + parseOneAddress(alice.email).local,
},
{
operator: dm_group_including_guest,
is_common_narrow: true,
icon: "envelope",
title: "translated: alice (guest), joe",
redirect_url_with_search: "/#narrow/dm/" + joe.user_id + "," + alice.user_id + "-group",
},
{
operator: dm_group_including_missing_person,
is_common_narrow: true,
@ -1718,6 +1753,8 @@ test("navbar_helpers", () => {
},
];
page_params.realm_enable_guest_user_indicator = true;
for (const test_case of test_cases) {
test_helpers(test_case);
}
@ -1774,6 +1811,35 @@ test("navbar_helpers", () => {
test_get_title(stream_topic_search_operator_test_case);
page_params.realm_enable_guest_user_indicator = false;
const guest_user_test_cases_without_indicator = [
{
operator: guest_sender,
is_common_narrow: true,
icon: undefined,
title: "translated: Messages sent by alice",
redirect_url_with_search: "/#narrow/sender/" + alice.user_id + "-alice",
},
{
operator: dm_with_guest,
is_common_narrow: true,
icon: "envelope",
title: properly_separated_names([alice.full_name]),
redirect_url_with_search:
"/#narrow/dm/" + alice.user_id + "-" + parseOneAddress(alice.email).local,
},
{
operator: dm_group_including_guest,
is_common_narrow: true,
icon: "envelope",
title: properly_separated_names([alice.full_name, joe.full_name]),
redirect_url_with_search:
"/#narrow/dm/" + Number(alice.user_id) + "," + joe.user_id + "-group",
},
];
test_get_title(guest_user_test_cases_without_indicator);
// this is actually wrong, but the code is currently not robust enough to throw an error here
// also, used as an example of triggering last return statement.
const default_redirect = {