Fix more detached DOM leaks (#10806)

This commit is contained in:
Michael Telatynski 2023-05-09 08:50:57 +01:00 committed by GitHub
parent 84786ad342
commit bf641d1823
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 9 additions and 4 deletions

View File

@ -54,6 +54,8 @@ export default class AutoHideScrollbar<T extends keyof JSX.IntrinsicElements> ex
if (this.containerRef.current && this.props.onScroll) {
this.containerRef.current.removeEventListener("scroll", this.props.onScroll);
}
this.props.wrappedRef?.(null);
}
public render(): React.ReactNode {

View File

@ -220,7 +220,7 @@ export default class MessagePanel extends React.Component<IProps, IState> {
// opaque readreceipt info for each userId; used by ReadReceiptMarker
// to manage its animations
private readonly readReceiptMap: { [userId: string]: IReadReceiptInfo } = {};
private readReceiptMap: { [userId: string]: IReadReceiptInfo } = {};
// Track read receipts by event ID. For each _shown_ event ID, we store
// the list of read receipts to display:
@ -301,6 +301,7 @@ export default class MessagePanel extends React.Component<IProps, IState> {
this.isMounted = false;
this.props.room?.currentState.off(RoomStateEvent.Update, this.calculateRoomMembersCount);
SettingsStore.unwatchSetting(this.showTypingNotificationsWatcherRef);
this.readReceiptMap = {};
}
public componentDidUpdate(prevProps: IProps, prevState: IState): void {

View File

@ -194,7 +194,7 @@ export default class ScrollPanel extends React.Component<IProps> {
private bottomGrowth: number;
private minListHeight: number;
private heightUpdateInProgress: boolean;
private divScroll: HTMLDivElement;
private divScroll: HTMLDivElement | null = null;
public constructor(props: IProps) {
super(props);
@ -226,6 +226,8 @@ export default class ScrollPanel extends React.Component<IProps> {
this.unmounted = true;
this.props.resizeNotifier?.removeListener("middlePanelResizedNoisy", this.onResize);
this.divScroll = null;
}
private onScroll = (ev: Event): void => {

View File

@ -250,8 +250,8 @@ interface IState {
export class UnwrappedEventTile extends React.Component<EventTileProps, IState> {
private suppressReadReceiptAnimation: boolean;
private isListeningForReceipts: boolean;
private tile = React.createRef<IEventTileType>();
private replyChain = React.createRef<ReplyChain>();
private tile = createRef<IEventTileType>();
private replyChain = createRef<ReplyChain>();
public readonly ref = createRef<HTMLElement>();