From 68aea3403f251c59336e439e5b5bc9655eff521f Mon Sep 17 00:00:00 2001 From: schroda <50052685+schroda@users.noreply.github.com> Date: Fri, 18 Oct 2024 21:50:43 +0200 Subject: [PATCH] Fetch latest track data from tracker only once Everytime the data was updated, the array changed and triggered the useEffect again, resulting in another request to get the latest data from the tracker --- src/modules/tracker/components/TrackManga.tsx | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/modules/tracker/components/TrackManga.tsx b/src/modules/tracker/components/TrackManga.tsx index ba2eebcc..8e75ea6c 100644 --- a/src/modules/tracker/components/TrackManga.tsx +++ b/src/modules/tracker/components/TrackManga.tsx @@ -8,7 +8,7 @@ import { useNavigate } from 'react-router-dom'; import Box from '@mui/material/Box'; -import { useEffect, useMemo, useState } from 'react'; +import { useEffect, useMemo, useRef, useState } from 'react'; import DialogContent from '@mui/material/DialogContent'; import { useTranslation } from 'react-i18next'; import { requestManager } from '@/lib/requests/RequestManager.ts'; @@ -68,7 +68,13 @@ export const TrackManga = ({ manga }: { manga: MangaIdInfo & Pick { + if (!mangaTrackRecords.length || fetchedLatestTrackDataRef.current) { + return; + } + + fetchedLatestTrackDataRef.current = true; Promise.all( mangaTrackRecords.map((trackRecord) => requestManager.fetchTrackBind(trackRecord.id).response), ).catch(() => makeToast(t('tracking.error.label.could_not_fetch_track_info'), 'error'));