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
This commit is contained in:
schroda
2024-04-03 22:34:48 +02:00
committed by GitHub
parent 26cbe15964
commit 568aaebc3e
2 changed files with 11 additions and 8 deletions

View File

@@ -8,14 +8,16 @@
import { useNavigate } from 'react-router-dom'; import { useNavigate } from 'react-router-dom';
import { Box } from '@mui/material'; import { Box } from '@mui/material';
import { useMemo, useState } from 'react'; import { useEffect, useMemo, useState } from 'react';
import DialogContent from '@mui/material/DialogContent'; import DialogContent from '@mui/material/DialogContent';
import { useTranslation } from 'react-i18next';
import { requestManager } from '@/lib/requests/RequestManager.ts'; import { requestManager } from '@/lib/requests/RequestManager.ts';
import { EmptyView } from '@/components/util/EmptyView.tsx'; import { EmptyView } from '@/components/util/EmptyView.tsx';
import { LoadingPlaceholder } from '@/components/util/LoadingPlaceholder.tsx'; import { LoadingPlaceholder } from '@/components/util/LoadingPlaceholder.tsx';
import { Trackers } from '@/lib/data/Trackers.ts'; import { Trackers } from '@/lib/data/Trackers.ts';
import { TrackerCard, TrackerMode } from '@/components/tracker/TrackerCard.tsx'; import { TrackerCard, TrackerMode } from '@/components/tracker/TrackerCard.tsx';
import { TManga } from '@/typings.ts'; import { TManga } from '@/typings.ts';
import { makeToast } from '@/components/util/Toast.tsx';
const getTrackerMode = (id: number, trackersInUse: number[], searchModeForTracker?: number): TrackerMode => { const getTrackerMode = (id: number, trackersInUse: number[], searchModeForTracker?: number): TrackerMode => {
if (id === searchModeForTracker) { if (id === searchModeForTracker) {
@@ -30,6 +32,7 @@ const getTrackerMode = (id: number, trackersInUse: number[], searchModeForTracke
}; };
export const TrackManga = ({ manga }: { manga: Pick<TManga, 'id' | 'trackRecords'> }) => { export const TrackManga = ({ manga }: { manga: Pick<TManga, 'id' | 'trackRecords'> }) => {
const { t } = useTranslation();
const navigate = useNavigate(); const navigate = useNavigate();
const [searchModeForTracker, setSearchModeForTracker] = useState<number>(); const [searchModeForTracker, setSearchModeForTracker] = useState<number>();
@@ -44,6 +47,12 @@ export const TrackManga = ({ manga }: { manga: Pick<TManga, 'id' | 'trackRecords
const isSearchActive = searchModeForTracker !== undefined; const isSearchActive = searchModeForTracker !== undefined;
const OptionalDialogContent = useMemo(() => (isSearchActive ? Box : DialogContent), [isSearchActive]); const OptionalDialogContent = useMemo(() => (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( const trackerComponents = useMemo(
() => () =>
loggedInTrackers.map((tracker) => { loggedInTrackers.map((tracker) => {

View File

@@ -29,7 +29,7 @@ import {
} from '@mui/material'; } from '@mui/material';
import MoreVertIcon from '@mui/icons-material/MoreVert'; import MoreVertIcon from '@mui/icons-material/MoreVert';
import PopupState, { bindDialog, bindMenu, bindTrigger } from 'material-ui-popup-state'; 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 { requestManager } from '@/lib/requests/RequestManager.ts';
import { Trackers, TTrackRecord, UNSET_DATE } from '@/lib/data/Trackers.ts'; import { Trackers, TTrackRecord, UNSET_DATE } from '@/lib/data/Trackers.ts';
import { ListPreference } from '@/components/sourceConfiguration/ListPreference.tsx'; 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')); .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 ( return (
<Card sx={CARD_STYLING}> <Card sx={CARD_STYLING}>
<CardContent sx={{ padding: 0 }}> <CardContent sx={{ padding: 0 }}>