mirror of
https://github.com/zulip/zulip.git
synced 2025-11-04 22:13:26 +00:00
Previously, we would call `rerender_messages_view()` in order to rerender messages after user renames or avatar updates. This would lead to rerendering the entire message list for every change, regardless of whether any specific message had changed or not. This used to be acceptable because user renames and avatar updates were rare events, however, as we plan to show user status emoji near user names and updates to those would be more frequent than is affordable, this commit implements `rerender_messages_view_for_user(user_id)` which only rerenders messages which have actually been changed. This commit is, thus, both an optimisation for the existing code and a prep-commit for the user status emoji.
46 lines
1.4 KiB
JavaScript
46 lines
1.4 KiB
JavaScript
import * as message_list from "./message_list";
|
|
import * as message_lists from "./message_lists";
|
|
import * as message_store from "./message_store";
|
|
import * as people from "./people";
|
|
|
|
function rerender_messages_view() {
|
|
for (const list of [message_lists.home, message_list.narrowed]) {
|
|
if (list === undefined) {
|
|
continue;
|
|
}
|
|
if (list.table_name !== undefined) {
|
|
list.rerender_view();
|
|
}
|
|
}
|
|
}
|
|
|
|
function rerender_messages_view_for_user(user_id) {
|
|
for (const list of [message_lists.home, message_list.narrowed]) {
|
|
if (list?.table_name === undefined) {
|
|
continue;
|
|
}
|
|
const messages = list.data.get_messages_sent_by_user(user_id);
|
|
if (messages.length === 0) {
|
|
continue;
|
|
}
|
|
list.view.rerender_messages(messages);
|
|
}
|
|
}
|
|
|
|
export function update_stream_name(stream_id, new_name) {
|
|
message_store.update_property("stream_name", new_name, {stream_id});
|
|
rerender_messages_view();
|
|
}
|
|
|
|
export function update_user_full_name(user_id, full_name) {
|
|
message_store.update_property("sender_full_name", full_name, {user_id});
|
|
rerender_messages_view_for_user(user_id);
|
|
}
|
|
|
|
export function update_avatar(user_id, avatar_url) {
|
|
let url = avatar_url;
|
|
url = people.format_small_avatar_url(url);
|
|
message_store.update_property("small_avatar_url", url, {user_id});
|
|
rerender_messages_view_for_user(user_id);
|
|
}
|