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 && (
-
-
-
+
)}
>