From b269f6ad90e8196408f89c69813154c7b7e60145 Mon Sep 17 00:00:00 2001 From: Merlin <4706504+MerlinScheurer@users.noreply.github.com> Date: Fri, 8 Nov 2024 06:15:56 +0100 Subject: [PATCH] Fix download aggs refresh only on video finished (#800) --- frontend/src/api/loader/loadDownloadQueue.ts | 7 ++++++- frontend/src/pages/Download.tsx | 20 +++++++++++++++++--- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/frontend/src/api/loader/loadDownloadQueue.ts b/frontend/src/api/loader/loadDownloadQueue.ts index 5e2f11a3..f9628deb 100644 --- a/frontend/src/api/loader/loadDownloadQueue.ts +++ b/frontend/src/api/loader/loadDownloadQueue.ts @@ -2,8 +2,13 @@ import defaultHeaders from '../../configuration/defaultHeaders'; import getApiUrl from '../../configuration/getApiUrl'; import getFetchCredentials from '../../configuration/getFetchCredentials'; import isDevEnvironment from '../../functions/isDevEnvironment'; +import { DownloadResponseType } from '../../pages/Download'; -const loadDownloadQueue = async (page: number, channelId: string | null, showIgnored: boolean) => { +const loadDownloadQueue = async ( + page: number, + channelId: string | null, + showIgnored: boolean, +): Promise => { const apiUrl = getApiUrl(); const searchParams = new URLSearchParams(); diff --git a/frontend/src/pages/Download.tsx b/frontend/src/pages/Download.tsx index a51ba376..02564e3c 100644 --- a/frontend/src/pages/Download.tsx +++ b/frontend/src/pages/Download.tsx @@ -65,6 +65,8 @@ const Download = () => { const [downloadPending, setDownloadPending] = useState(false); const [rescanPending, setRescanPending] = useState(false); + const [lastVideoCount, setLastVideoCount] = useState(0); + const [downloadQueueText, setDownloadQueueText] = useState(''); const [downloadResponse, setDownloadResponse] = useState(); @@ -120,10 +122,14 @@ const Download = () => { currentPage !== pagination?.current_page ) { const videos = await loadDownloadQueue(currentPage, channelFilterFromUrl, showIgnored); - const downloadAggs = await loadDownloadAggs(); + + const videoCount = videos?.paginate?.total_hits; + + if (videoCount && lastVideoCount !== videoCount) { + setLastVideoCount(videoCount); + } setDownloadResponse(videos); - setDownloadAggsResponse(downloadAggs); setRefresh(false); } })(); @@ -132,6 +138,14 @@ const Download = () => { // eslint-disable-next-line react-hooks/exhaustive-deps }, [refresh, currentPage, downloadPending]); + useEffect(() => { + (async () => { + const downloadAggs = await loadDownloadAggs(); + + setDownloadAggsResponse(downloadAggs); + })(); + }, [lastVideoCount]); + useEffect(() => { setRefresh(true); }, [channelFilterFromUrl]); @@ -339,7 +353,7 @@ const Download = () => { {downloadList && downloadList?.map(download => { return ( - +