From 568aaebc3e5954c66e7829fffe84974bebb59af0 Mon Sep 17 00:00:00 2001 From: schroda <50052685+schroda@users.noreply.github.com> Date: Wed, 3 Apr 2024 22:34:48 +0200 Subject: [PATCH] Trigger refresh only when initially open the track component (#704) Due to triggering the refresh in the TrackerActiveCard it was triggered everytime this component got rendered, which was also the case when closing the track search --- src/components/tracker/TrackManga.tsx | 11 ++++++++++- src/components/tracker/TrackerActiveCard.tsx | 8 +------- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/components/tracker/TrackManga.tsx b/src/components/tracker/TrackManga.tsx index 33f1c194..3b748588 100644 --- a/src/components/tracker/TrackManga.tsx +++ b/src/components/tracker/TrackManga.tsx @@ -8,14 +8,16 @@ import { useNavigate } from 'react-router-dom'; import { Box } from '@mui/material'; -import { useMemo, useState } from 'react'; +import { useEffect, useMemo, useState } from 'react'; import DialogContent from '@mui/material/DialogContent'; +import { useTranslation } from 'react-i18next'; import { requestManager } from '@/lib/requests/RequestManager.ts'; import { EmptyView } from '@/components/util/EmptyView.tsx'; import { LoadingPlaceholder } from '@/components/util/LoadingPlaceholder.tsx'; import { Trackers } from '@/lib/data/Trackers.ts'; import { TrackerCard, TrackerMode } from '@/components/tracker/TrackerCard.tsx'; import { TManga } from '@/typings.ts'; +import { makeToast } from '@/components/util/Toast.tsx'; const getTrackerMode = (id: number, trackersInUse: number[], searchModeForTracker?: number): TrackerMode => { if (id === searchModeForTracker) { @@ -30,6 +32,7 @@ const getTrackerMode = (id: number, trackersInUse: number[], searchModeForTracke }; export const TrackManga = ({ manga }: { manga: Pick }) => { + const { t } = useTranslation(); const navigate = useNavigate(); const [searchModeForTracker, setSearchModeForTracker] = useState(); @@ -44,6 +47,12 @@ export const TrackManga = ({ manga }: { manga: Pick (isSearchActive ? Box : DialogContent), [isSearchActive]); + useEffect(() => { + Promise.all(manga.trackRecords.nodes.map((trackRecord) => requestManager.fetchTrackBind(trackRecord.id))).catch( + () => makeToast(t('tracking.error.label.could_not_fetch_track_info'), 'error'), + ); + }, [manga.id]); + const trackerComponents = useMemo( () => loggedInTrackers.map((tracker) => { diff --git a/src/components/tracker/TrackerActiveCard.tsx b/src/components/tracker/TrackerActiveCard.tsx index 35eb9d21..183602cb 100644 --- a/src/components/tracker/TrackerActiveCard.tsx +++ b/src/components/tracker/TrackerActiveCard.tsx @@ -29,7 +29,7 @@ import { } from '@mui/material'; import MoreVertIcon from '@mui/icons-material/MoreVert'; import PopupState, { bindDialog, bindMenu, bindTrigger } from 'material-ui-popup-state'; -import { useEffect, useMemo, useState } from 'react'; +import { useMemo, useState } from 'react'; import { requestManager } from '@/lib/requests/RequestManager.ts'; import { Trackers, TTrackRecord, UNSET_DATE } from '@/lib/data/Trackers.ts'; import { ListPreference } from '@/components/sourceConfiguration/ListPreference.tsx'; @@ -235,12 +235,6 @@ export const TrackerActiveCard = ({ .response.catch(() => makeToast(t('global.error.label.failed_to_save_changes'), 'error')); }; - useEffect(() => { - requestManager - .fetchTrackBind(trackRecord.id) - .response.catch(() => makeToast(t('tracking.error.label.could_not_fetch_track_info'), 'error')); - }, [trackRecord.id]); - return (