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;