mirror of
https://github.com/zulip/zulip.git
synced 2025-11-14 19:06:09 +00:00
message_list_data: Track if the data is rendered using message list id.
This is an easy way to track if a MessageListData is rendered. Storing MessageList object would make us liable to cleanup the MessageList object when the data is no longer in use. Note that this is more like "likely / past rendered message list id", we will have to check currently rendered message list data to verify if the data object is really rendered.
This commit is contained in:
@@ -48,6 +48,8 @@ export class MessageList {
|
||||
});
|
||||
}
|
||||
|
||||
this.data.set_rendered_message_list_id(this.id);
|
||||
|
||||
// TODO: This property should likely just be inlined into
|
||||
// having the MessageListView code that needs to access it
|
||||
// query .data.filter directly.
|
||||
|
||||
@@ -46,6 +46,11 @@ export class MessageListData {
|
||||
// This is a callback that is called when messages are added to the message list.
|
||||
add_messages_callback?: (messages: Message[], recipient_order_changed: boolean) => void;
|
||||
|
||||
// ID of the MessageList for which this MessageListData is the data.
|
||||
// Using ID instead of the MessageList object itself to avoid circular dependencies
|
||||
// and to allow MessageList objects to be easily garbage collected.
|
||||
rendered_message_list_id: number | undefined;
|
||||
|
||||
// MessageListData is a core data structure for keeping track of a
|
||||
// contiguous block of messages matching a given narrow that can
|
||||
// be displayed in a Zulip message feed.
|
||||
@@ -64,6 +69,10 @@ export class MessageListData {
|
||||
this._selected_id = -1;
|
||||
}
|
||||
|
||||
set_rendered_message_list_id(rendered_message_list_id: number | undefined): void {
|
||||
this.rendered_message_list_id = rendered_message_list_id;
|
||||
}
|
||||
|
||||
set_add_messages_callback(
|
||||
callback: (messages: Message[], rows_order_changed: boolean) => void,
|
||||
): void {
|
||||
|
||||
@@ -97,6 +97,7 @@ export function set_current(msg_list: MessageList | undefined): void {
|
||||
function delete_message_list(message_list: MessageList): void {
|
||||
message_list.view.$list.remove();
|
||||
rendered_message_lists.delete(message_list.id);
|
||||
message_list.data.set_rendered_message_list_id(undefined);
|
||||
}
|
||||
|
||||
export function update_current_message_list(msg_list: MessageList | undefined): void {
|
||||
|
||||
Reference in New Issue
Block a user