From 527769ec5e5046dc15c656932c5c3894ca335e2c Mon Sep 17 00:00:00 2001
From: schroda <50052685+schroda@users.noreply.github.com>
Date: Thu, 23 Apr 2026 15:18:35 +0200
Subject: [PATCH] Support library batch selection migration
Closes #1089
---
.../manga/components/MangaActionMenuItems.tsx | 25 ++----
.../manga/components/cards/MangaCard.tsx | 15 +++-
src/features/manga/services/Mangas.ts | 50 +++++------
src/features/migration/Migration.constants.ts | 2 +-
src/features/migration/Migration.types.ts | 6 +-
src/features/migration/MigrationManager.ts | 84 +++++++++++++++----
.../migration/components/MigrationCard.tsx | 23 ++---
.../components/MigrationSourceList.tsx | 10 +--
.../migration/screens/MigrationExecute.tsx | 2 +-
.../migration/screens/MigrationSearch.tsx | 2 +-
.../MigrationSelectDestinationSources.tsx | 4 +-
.../screens/MigrationSelectMangas.tsx | 28 ++-----
.../screens/MigrationSelectSource.tsx | 7 +-
src/lib/graphql/generated/graphql.ts | 34 ++++----
src/lib/graphql/manga/MangaFragments.ts | 4 +-
src/lib/graphql/source/SourceFragments.ts | 10 ---
src/lib/graphql/source/SourceQuery.ts | 10 +--
17 files changed, 172 insertions(+), 144 deletions(-)
diff --git a/src/features/manga/components/MangaActionMenuItems.tsx b/src/features/manga/components/MangaActionMenuItems.tsx
index 8cc7ea47..60d53281 100644
--- a/src/features/manga/components/MangaActionMenuItems.tsx
+++ b/src/features/manga/components/MangaActionMenuItems.tsx
@@ -15,7 +15,6 @@ import FavoriteBorderIcon from '@mui/icons-material/FavoriteBorder';
import Label from '@mui/icons-material/Label';
import { useMemo, useState } from 'react';
import SyncAltIcon from '@mui/icons-material/SyncAlt';
-import { Link } from 'react-router-dom';
import SyncIcon from '@mui/icons-material/Sync';
import Dialog from '@mui/material/Dialog';
import { AwaitableComponent } from 'awaitable-component';
@@ -35,7 +34,6 @@ import { NestedMenuItem } from '@/base/components/menu/NestedMenuItem.tsx';
import type { MangaChapterStatFieldsFragment, MangaType } from '@/lib/graphql/generated/graphql.ts';
import type { MangaAction, MangaDownloadInfo, MangaIdInfo, MangaUnreadInfo } from '@/features/manga/Manga.types.ts';
import { MANGA_ACTION_TO_TRANSLATION } from '@/features/manga/Manga.constants.ts';
-import { AppRoutes } from '@/base/AppRoute.constants.ts';
import { CategorySelect } from '@/features/category/components/CategorySelect.tsx';
import { STABLE_EMPTY_ARRAY } from '@/base/Base.constants.ts';
@@ -57,7 +55,7 @@ type Props =
export const MangaActionMenuItems = ({
manga,
handleSelection,
- selectedMangas: passedSelectedMangas,
+ selectedMangas = STABLE_EMPTY_ARRAY,
onClose,
setHideMenu,
}: Props) => {
@@ -66,7 +64,6 @@ export const MangaActionMenuItems = ({
const [isTrackDialogOpen, setIsTrackDialogOpen] = useState(false);
const isSingleMode = !!manga;
- const selectedMangas = passedSelectedMangas ?? STABLE_EMPTY_ARRAY;
const getMenuItemTitle = createGetMenuItemTitle(isSingleMode, MANGA_ACTION_TO_TRANSLATION);
const shouldShowMenuItem = createShouldShowMenuItem(isSingleMode);
@@ -148,19 +145,11 @@ export const MangaActionMenuItems = ({
title={getMenuItemTitle('mark_as_unread', readMangas.length)}
/>
)}
- {isSingleMode && (
-
-
-
- )}
+