reduce filteredData concurrency to 1

This commit is contained in:
Abhinav 2023-01-19 17:19:12 +05:30
parent c283bda998
commit 9b76011171

View file

@ -1,6 +1,6 @@
import { GalleryContext } from 'pages/gallery'; import { GalleryContext } from 'pages/gallery';
import PreviewCard from './pages/gallery/PreviewCard'; import PreviewCard from './pages/gallery/PreviewCard';
import React, { useContext, useEffect, useState } from 'react'; import React, { useContext, useEffect, useRef, useState } from 'react';
import { EnteFile } from 'types/file'; import { EnteFile } from 'types/file';
import { styled } from '@mui/material'; import { styled } from '@mui/material';
import DownloadManager from 'services/downloadManager'; import DownloadManager from 'services/downloadManager';
@ -114,11 +114,22 @@ const PhotoFrame = ({
const router = useRouter(); const router = useRouter();
const [isSourceLoaded, setIsSourceLoaded] = useState(false); const [isSourceLoaded, setIsSourceLoaded] = useState(false);
const filteredData = useMemo(() => { const updateInProgress = useRef(false);
const updateRequired = useRef(false);
const [filteredData, setFilteredData] = useState<EnteFile[]>([]);
useEffect(() => {
const main = () => {
if (updateInProgress.current) {
updateRequired.current = true;
return;
}
updateInProgress.current = true;
const idSet = new Set(); const idSet = new Set();
const user: User = getData(LS_KEYS.USER); const user: User = getData(LS_KEYS.USER);
return files const filteredData = files
.map((item, index) => ({ .map((item, index) => ({
...item, ...item,
dataIndex: index, dataIndex: index,
@ -161,7 +172,10 @@ const PhotoFrame = ({
) { ) {
return false; return false;
} }
if (activeCollection === ARCHIVE_SECTION && !IsArchived(item)) { if (
activeCollection === ARCHIVE_SECTION &&
!IsArchived(item)
) {
return false; return false;
} }
@ -189,6 +203,16 @@ const PhotoFrame = ({
} }
return false; return false;
}); });
setFilteredData(filteredData);
updateInProgress.current = false;
if (updateRequired.current) {
updateRequired.current = false;
setTimeout(() => {
main();
}, 0);
}
};
main();
}, [ }, [
files, files,
deletedFileIds, deletedFileIds,