mirror of https://github.com/zulip/zulip.git
people: Fix `get_mention_syntax` when `full_name` matches wildcard.
When quoting a reply or mentioning a person having full name matching wildcard mention, in such case, `get_mention_syntax` doesn't return mention syntax of format: **full_name|user_id**. As a result, a normal user can't mention such users and users who can mention them may unwillingly trigger wildcard mention. This commit fixes such issue.
This commit is contained in:
parent
b636a9199b
commit
78b59fa756
|
@ -233,6 +233,18 @@ const plain_noah = {
|
||||||
full_name: "Nooaah Emerson",
|
full_name: "Nooaah Emerson",
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const all1 = {
|
||||||
|
email: "all1@example.com",
|
||||||
|
user_id: 1202,
|
||||||
|
full_name: "all",
|
||||||
|
};
|
||||||
|
|
||||||
|
const all2 = {
|
||||||
|
email: "all2@example.com",
|
||||||
|
user_id: 1203,
|
||||||
|
full_name: "all",
|
||||||
|
};
|
||||||
|
|
||||||
// This is for error checking--never actually
|
// This is for error checking--never actually
|
||||||
// tell people.js about this user.
|
// tell people.js about this user.
|
||||||
const unknown_user = {
|
const unknown_user = {
|
||||||
|
@ -1014,6 +1026,16 @@ test_people("get_mention_syntax", () => {
|
||||||
assert.equal(people.get_mention_syntax("Stephen King", 601), "@**Stephen King|601**");
|
assert.equal(people.get_mention_syntax("Stephen King", 601), "@**Stephen King|601**");
|
||||||
assert.equal(people.get_mention_syntax("Stephen King", 602), "@**Stephen King|602**");
|
assert.equal(people.get_mention_syntax("Stephen King", 602), "@**Stephen King|602**");
|
||||||
assert.equal(people.get_mention_syntax("Maria Athens", 603), "@**Maria Athens**");
|
assert.equal(people.get_mention_syntax("Maria Athens", 603), "@**Maria Athens**");
|
||||||
|
|
||||||
|
// Following tests handle a special case when `full_name` matches with a wildcard.
|
||||||
|
//
|
||||||
|
// At this point, there is no duplicate full name, `all`, so we should still get
|
||||||
|
// mention syntax with `user_id` appended to it.
|
||||||
|
people.add_active_user(all1);
|
||||||
|
assert.equal(people.get_mention_syntax("all", 1202), "@**all|1202**");
|
||||||
|
|
||||||
|
people.add_active_user(all2);
|
||||||
|
assert.equal(people.get_mention_syntax("all", 1203), "@**all|1203**");
|
||||||
});
|
});
|
||||||
|
|
||||||
test_people("initialize", () => {
|
test_people("initialize", () => {
|
||||||
|
|
|
@ -1108,13 +1108,20 @@ export function get_mention_syntax(full_name, user_id, silent) {
|
||||||
if (!user_id) {
|
if (!user_id) {
|
||||||
blueslip.warn("get_mention_syntax called without user_id.");
|
blueslip.warn("get_mention_syntax called without user_id.");
|
||||||
}
|
}
|
||||||
if (is_duplicate_full_name(full_name) && user_id) {
|
if (
|
||||||
|
(is_duplicate_full_name(full_name) || full_name_matches_wildcard_mention(full_name)) &&
|
||||||
|
user_id
|
||||||
|
) {
|
||||||
mention += "|" + user_id;
|
mention += "|" + user_id;
|
||||||
}
|
}
|
||||||
mention += "**";
|
mention += "**";
|
||||||
return mention;
|
return mention;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function full_name_matches_wildcard_mention(full_name) {
|
||||||
|
return ["all", "everyone", "stream"].includes(full_name);
|
||||||
|
}
|
||||||
|
|
||||||
export function _add_user(person) {
|
export function _add_user(person) {
|
||||||
/*
|
/*
|
||||||
This is common code to add any user, even
|
This is common code to add any user, even
|
||||||
|
|
Loading…
Reference in New Issue