From 232b1a416a9adb8eb56e4b24f05768bc89513c6d Mon Sep 17 00:00:00 2001 From: Audric Ackermann Date: Mon, 5 Oct 2020 15:14:06 +1100 Subject: [PATCH] do not refresh group panel media if length of media did not change --- .../session/SessionGroupSettings.tsx | 30 ++++++++++++++----- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/ts/components/session/SessionGroupSettings.tsx b/ts/components/session/SessionGroupSettings.tsx index e1095c55f..d9f674d8c 100644 --- a/ts/components/session/SessionGroupSettings.tsx +++ b/ts/components/session/SessionGroupSettings.tsx @@ -38,7 +38,13 @@ interface Props { onSetDisappearingMessages: (seconds: number) => void; } -class SessionGroupSettings extends React.Component { +interface State { + documents: Array; + media: Array; + onItemClick: any; +} + +class SessionGroupSettings extends React.Component { public constructor(props: Props) { super(props); @@ -67,17 +73,27 @@ class SessionGroupSettings extends React.Component { setTimeout(() => { this.getMediaGalleryProps() .then(({ documents, media, onItemClick }) => { - this.setState({ - documents, - media, - onItemClick, - }); + const { documents: oldDocs, media: oldMedias } = this.state; + if ( + oldDocs.length !== documents.length || + oldMedias.length !== media.length + ) { + this.setState({ + documents, + media, + onItemClick, + }); + } }) .ignore(); }, mediaScanInterval); } - public async getMediaGalleryProps() { + public async getMediaGalleryProps(): Promise<{ + documents: Array; + media: Array; + onItemClick: any; + }> { // We fetch more documents than media as they don’t require to be loaded // into memory right away. Revisit this once we have infinite scrolling: const DEFAULT_MEDIA_FETCH_COUNT = 50;