From 3c4321e62560181ed277044b143e7e05c5677c82 Mon Sep 17 00:00:00 2001 From: schroda <50052685+schroda@users.noreply.github.com> Date: Sat, 19 Jul 2025 16:53:02 +0200 Subject: [PATCH] Extract tracker search track button --- .../tracker/components/TrackerSearch.tsx | 96 ++++++++++++------- 1 file changed, 59 insertions(+), 37 deletions(-) diff --git a/src/modules/tracker/components/TrackerSearch.tsx b/src/modules/tracker/components/TrackerSearch.tsx index 956607af..1eacf5ea 100644 --- a/src/modules/tracker/components/TrackerSearch.tsx +++ b/src/modules/tracker/components/TrackerSearch.tsx @@ -35,7 +35,59 @@ import { MangaType } from '@/lib/graphql/generated/graphql.ts'; import { MangaIdInfo } from '@/modules/manga/Manga.types.ts'; import { getErrorMessage } from '@/lib/HelperFunctions.ts'; import { applyStyles } from '@/modules/core/utils/ApplyStyles.ts'; -import { Tracker, TTrackerBase } from '@/modules/tracker/Tracker.types.ts'; +import { Tracker, TrackerIdInfo, TTrackerBase } from '@/modules/tracker/Tracker.types.ts'; + +const TrackButton = ({ + mangaId, + selectedTrackerRemoteId, + trackerId, + closeSearchMode, +}: { + trackerId: TrackerIdInfo['id']; + mangaId: MangaIdInfo['id']; + selectedTrackerRemoteId: string | undefined; + closeSearchMode: () => void; +}) => { + const { t } = useTranslation(); + const [bindTracker, bindTrackerMutation] = requestManager.useBindTracker(); + + const trackManga = () => { + if (selectedTrackerRemoteId === undefined) { + return; + } + + bindTracker({ variables: { mangaId, remoteId: selectedTrackerRemoteId, trackerId } }) + .then(() => { + makeToast(t('manga.action.track.add.label.success'), 'success'); + closeSearchMode(); + }) + .catch((e) => makeToast(t('manga.action.track.add.label.error'), 'error', getErrorMessage(e))); + }; + + return ( + + + + ); +}; export const TrackerSearch = ({ manga, @@ -72,8 +124,6 @@ export const TrackerSearch = ({ trackerSearch.abortRequest(new Error(`MangaTrackerSearchCard(${tracker.id}, ${manga.id}): search changed`)); }, [searchString]); - const [bindTracker, bindTrackerMutation] = requestManager.useBindTracker(); - const showTrackButton = useMemo( () => @@ -82,19 +132,6 @@ export const TrackerSearch = ({ [selectedTrackerRemoteId, searchResults], ) && !hasError; - const trackManga = () => { - if (selectedTrackerRemoteId === undefined) { - return; - } - - bindTracker({ variables: { mangaId: manga.id, remoteId: selectedTrackerRemoteId, trackerId: tracker.id } }) - .then(() => { - makeToast(t('manga.action.track.add.label.success'), 'success'); - closeSearchMode(); - }) - .catch((e) => makeToast(t('manga.action.track.add.label.error'), 'error', getErrorMessage(e))); - }; - return ( <> @@ -179,27 +216,12 @@ export const TrackerSearch = ({ ))} {showTrackButton && ( - - - + )}