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
|
// TODO: This property should likely just be inlined into
|
||||||
// having the MessageListView code that needs to access it
|
// having the MessageListView code that needs to access it
|
||||||
// query .data.filter directly.
|
// 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.
|
// 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;
|
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
|
// MessageListData is a core data structure for keeping track of a
|
||||||
// contiguous block of messages matching a given narrow that can
|
// contiguous block of messages matching a given narrow that can
|
||||||
// be displayed in a Zulip message feed.
|
// be displayed in a Zulip message feed.
|
||||||
@@ -64,6 +69,10 @@ export class MessageListData {
|
|||||||
this._selected_id = -1;
|
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(
|
set_add_messages_callback(
|
||||||
callback: (messages: Message[], rows_order_changed: boolean) => void,
|
callback: (messages: Message[], rows_order_changed: boolean) => void,
|
||||||
): void {
|
): void {
|
||||||
|
|||||||
@@ -97,6 +97,7 @@ export function set_current(msg_list: MessageList | undefined): void {
|
|||||||
function delete_message_list(message_list: MessageList): void {
|
function delete_message_list(message_list: MessageList): void {
|
||||||
message_list.view.$list.remove();
|
message_list.view.$list.remove();
|
||||||
rendered_message_lists.delete(message_list.id);
|
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 {
|
export function update_current_message_list(msg_list: MessageList | undefined): void {
|
||||||
|
|||||||
Reference in New Issue
Block a user