mirror of
https://github.com/zulip/zulip.git
synced 2025-11-23 07:52:35 +00:00
read_receipts: Disable showing read receipts for Notification Bot msgs.
The implementation is simple, we just check if the the message sender is a notification bot to decide if we should show the read receipts list. We also update the modal content styling to match the padding at the top of the modal. Fixes #22905
This commit is contained in:
@@ -7,6 +7,7 @@ import render_read_receipts_modal from "../templates/read_receipts_modal.hbs";
|
||||
import * as channel from "./channel";
|
||||
import {$t, $t_html} from "./i18n";
|
||||
import * as loading from "./loading";
|
||||
import * as message_store from "./message_store";
|
||||
import * as overlays from "./overlays";
|
||||
import * as people from "./people";
|
||||
import * as popovers from "./popovers";
|
||||
@@ -17,53 +18,64 @@ export function show_user_list(message_id) {
|
||||
overlays.open_modal("read_receipts_modal", {
|
||||
autoremove: true,
|
||||
on_show: () => {
|
||||
loading.make_indicator($("#read_receipts_modal .loading_indicator"));
|
||||
channel.get({
|
||||
url: `/json/messages/${message_id}/read_receipts`,
|
||||
success(data) {
|
||||
const users = data.user_ids.map((id) => {
|
||||
const user = people.get_by_user_id(id);
|
||||
return {
|
||||
user_id: user.user_id,
|
||||
full_name: user.full_name,
|
||||
avatar_url: people.small_avatar_url_for_person(user),
|
||||
};
|
||||
});
|
||||
users.sort(people.compare_by_name);
|
||||
const message = message_store.get(message_id);
|
||||
if (message.sender_email === "notification-bot@zulip.com") {
|
||||
$("#read_receipts_modal .read_receipts_info").text(
|
||||
$t({
|
||||
defaultMessage:
|
||||
"Read receipts are not available for Notification Bot messages.",
|
||||
}),
|
||||
);
|
||||
$("#read_receipts_modal .modal__content").addClass("compact");
|
||||
} else {
|
||||
loading.make_indicator($("#read_receipts_modal .loading_indicator"));
|
||||
channel.get({
|
||||
url: `/json/messages/${message_id}/read_receipts`,
|
||||
success(data) {
|
||||
const users = data.user_ids.map((id) => {
|
||||
const user = people.get_by_user_id(id);
|
||||
return {
|
||||
user_id: user.user_id,
|
||||
full_name: user.full_name,
|
||||
avatar_url: people.small_avatar_url_for_person(user),
|
||||
};
|
||||
});
|
||||
users.sort(people.compare_by_name);
|
||||
|
||||
loading.destroy_indicator($("#read_receipts_modal .loading_indicator"));
|
||||
if (users.length === 0) {
|
||||
$("#read_receipts_modal .read_receipts_info").text(
|
||||
$t({defaultMessage: "No one has read this message yet."}),
|
||||
);
|
||||
} else {
|
||||
$("#read_receipts_modal .read_receipts_info").html(
|
||||
$t_html(
|
||||
{
|
||||
defaultMessage:
|
||||
"{num_of_people, plural, one {This message has been <z-link>read</z-link> by {num_of_people} person:} other {This message has been <z-link>read</z-link> by {num_of_people} people:}}",
|
||||
},
|
||||
{
|
||||
num_of_people: users.length,
|
||||
"z-link": (content_html) =>
|
||||
`<a href="/help/read-receipts">${content_html}</a>`,
|
||||
},
|
||||
),
|
||||
);
|
||||
$("#read_receipts_modal .modal__container").addClass(
|
||||
"showing_read_receipts_list",
|
||||
);
|
||||
$("#read_receipts_modal .modal__content").append(
|
||||
render_read_receipts({users}),
|
||||
);
|
||||
new SimpleBar($("#read_receipts_modal .modal__content")[0]);
|
||||
}
|
||||
},
|
||||
error(xhr) {
|
||||
ui_report.error("", xhr, $("#read_receipts_error"));
|
||||
loading.destroy_indicator($("#read_receipts_modal .loading_indicator"));
|
||||
},
|
||||
});
|
||||
loading.destroy_indicator($("#read_receipts_modal .loading_indicator"));
|
||||
if (users.length === 0) {
|
||||
$("#read_receipts_modal .read_receipts_info").text(
|
||||
$t({defaultMessage: "No one has read this message yet."}),
|
||||
);
|
||||
} else {
|
||||
$("#read_receipts_modal .read_receipts_info").html(
|
||||
$t_html(
|
||||
{
|
||||
defaultMessage:
|
||||
"{num_of_people, plural, one {This message has been <z-link>read</z-link> by {num_of_people} person:} other {This message has been <z-link>read</z-link> by {num_of_people} people:}}",
|
||||
},
|
||||
{
|
||||
num_of_people: users.length,
|
||||
"z-link": (content_html) =>
|
||||
`<a href="/help/read-receipts">${content_html}</a>`,
|
||||
},
|
||||
),
|
||||
);
|
||||
$("#read_receipts_modal .modal__container").addClass(
|
||||
"showing_read_receipts_list",
|
||||
);
|
||||
$("#read_receipts_modal .modal__content").append(
|
||||
render_read_receipts({users}),
|
||||
);
|
||||
new SimpleBar($("#read_receipts_modal .modal__content")[0]);
|
||||
}
|
||||
},
|
||||
error(xhr) {
|
||||
ui_report.error("", xhr, $("#read_receipts_error"));
|
||||
loading.destroy_indicator($("#read_receipts_modal .loading_indicator"));
|
||||
},
|
||||
});
|
||||
}
|
||||
},
|
||||
on_hide: () => {
|
||||
// Ensure any user info popovers are closed
|
||||
|
||||
@@ -668,6 +668,13 @@ strong {
|
||||
/* Setting a maximum height is just for aesthetics; the modal looks
|
||||
weird if its aspect ratio gets too stretched. */
|
||||
max-height: 480px;
|
||||
|
||||
/* For the notification bot error, we want to keep the modal clean and small.
|
||||
The 16px padding is intended to match the padding at the top of the modal. */
|
||||
&.compact {
|
||||
min-height: unset;
|
||||
padding-bottom: 16px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -109,6 +109,8 @@ IGNORED_PHRASES = [
|
||||
# Use in compose box.
|
||||
r"to send",
|
||||
r"to add a new line",
|
||||
# Used in showing Notification Bot read receipts message
|
||||
"Notification Bot",
|
||||
]
|
||||
|
||||
# Sort regexes in descending order of their lengths. As a result, the
|
||||
|
||||
Reference in New Issue
Block a user