2024-03-10 17:36:22 +01:00
|
|
|
/*
|
|
|
|
|
* Copyright (C) Contributors to the Suwayomi project
|
|
|
|
|
*
|
|
|
|
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
|
|
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
|
|
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
import { TBaseTracker, TTrackRecord } from '@/lib/data/Trackers.ts';
|
|
|
|
|
import { TrackerUntrackedCard } from '@/components/tracker/TrackerUntrackedCard.tsx';
|
|
|
|
|
import { TrackerSearch } from '@/components/tracker/TrackerSearch.tsx';
|
2024-03-17 18:42:48 +01:00
|
|
|
import { TrackerActiveCard } from '@/components/tracker/TrackerActiveCard.tsx';
|
2024-03-10 17:36:22 +01:00
|
|
|
|
|
|
|
|
export enum TrackerMode {
|
|
|
|
|
UNTRACKED,
|
|
|
|
|
SEARCH,
|
|
|
|
|
INFO,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export const TrackerCard = ({
|
|
|
|
|
tracker,
|
|
|
|
|
mangaId,
|
|
|
|
|
trackRecord,
|
|
|
|
|
mode,
|
|
|
|
|
setSearchMode,
|
|
|
|
|
}: {
|
|
|
|
|
tracker: TBaseTracker;
|
|
|
|
|
mangaId: number;
|
|
|
|
|
trackRecord?: TTrackRecord;
|
|
|
|
|
mode: TrackerMode;
|
|
|
|
|
setSearchMode: (id?: number) => void;
|
|
|
|
|
}) => {
|
|
|
|
|
if (mode === TrackerMode.UNTRACKED) {
|
|
|
|
|
return <TrackerUntrackedCard tracker={tracker} onClick={() => setSearchMode(tracker.id)} />;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (mode === TrackerMode.SEARCH) {
|
|
|
|
|
return (
|
|
|
|
|
<TrackerSearch
|
|
|
|
|
mangaId={mangaId}
|
|
|
|
|
tracker={tracker}
|
|
|
|
|
trackedId={trackRecord?.remoteId}
|
|
|
|
|
closeSearchMode={() => setSearchMode(undefined)}
|
|
|
|
|
/>
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
2024-03-17 18:42:48 +01:00
|
|
|
if (mode === TrackerMode.INFO && !trackRecord) {
|
|
|
|
|
throw new Error(`TrackerCard: unable to find track record for tracker "${tracker.id}" of manga "${mangaId}"}`);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return (
|
|
|
|
|
<TrackerActiveCard
|
|
|
|
|
trackRecord={trackRecord!}
|
|
|
|
|
onClick={() => {
|
|
|
|
|
setSearchMode(tracker.id);
|
|
|
|
|
}}
|
|
|
|
|
/>
|
|
|
|
|
);
|
2024-03-10 17:36:22 +01:00
|
|
|
};
|