From fe2adb5b89d58ba4f8baef0b74b719ae13ca60d2 Mon Sep 17 00:00:00 2001 From: Dermot Duffy Date: Wed, 9 Aug 2023 21:32:53 -0700 Subject: [PATCH] Reduce number of event listeners. --- src/components/media-grid.ts | 2 -- src/utils/media-grid-controller.ts | 26 ++++++++++---------------- 2 files changed, 10 insertions(+), 18 deletions(-) diff --git a/src/components/media-grid.ts b/src/components/media-grid.ts index f43b1c92..4b5b27b1 100644 --- a/src/components/media-grid.ts +++ b/src/components/media-grid.ts @@ -2,8 +2,6 @@ // TODO: Investigate query spam during a grid load // TODO: Is the query reset in card.ts correct for media filter multi-camera queries that are not all cameras? // TODO: Do I need column max? -// TODO: Can SELECT_CHILD_EVENTS only be 'click' and it still work on Android? -// TODO: With live autoplay off only white frames appear? import { CSSResultGroup, diff --git a/src/utils/media-grid-controller.ts b/src/utils/media-grid-controller.ts index ac79a60d..c6633c3f 100644 --- a/src/utils/media-grid-controller.ts +++ b/src/utils/media-grid-controller.ts @@ -29,8 +29,6 @@ export interface MediaGridConstructorOptions { idAttribute?: string; } -const SELECT_CHILD_EVENTS = ['click', 'touchend']; - export class MediaGridController { protected _host: HTMLElement; @@ -216,27 +214,23 @@ export class MediaGridController { this._throttledLayout(); } - protected _removeChildEventListeners(child: MediaGridChild): void { - for (const event of SELECT_CHILD_EVENTS) { - child.removeEventListener(event, this._handleSelectGridCellEvent, { - capture: true, - }); - } + protected _addChildEventListeners(child: MediaGridChild): void { + child.addEventListener('click', this._handleSelectGridCellEvent, { + capture: true, + }); - child.removeEventListener( + child.addEventListener( 'frigate-card:media:loaded', this._handleMediaLoadedInfoEvent, ); } - protected _addChildEventListeners(child: MediaGridChild): void { - for (const event of SELECT_CHILD_EVENTS) { - child.addEventListener(event, this._handleSelectGridCellEvent, { - capture: true, - }); - } + protected _removeChildEventListeners(child: MediaGridChild): void { + child.removeEventListener('click', this._handleSelectGridCellEvent, { + capture: true, + }); - child.addEventListener( + child.removeEventListener( 'frigate-card:media:loaded', this._handleMediaLoadedInfoEvent, );