From 8cecca2451b8737548a82f06af53200756968e04 Mon Sep 17 00:00:00 2001 From: schroda <50052685+schroda@users.noreply.github.com> Date: Mon, 18 May 2026 22:02:13 +0200 Subject: [PATCH] Fix missing migration manual search title --- src/features/global-search/screens/SearchAll.tsx | 7 ++++--- src/features/manga/components/MangaToolbarMenu.tsx | 4 ++-- src/features/migration/MigrationManager.ts | 8 +++++++- .../migration-entry/MigrationDestinationEntry.tsx | 8 +------- .../components/migration-entry/MigrationEntry.tsx | 9 +-------- .../MigrationEntrySearchExcludeActions.tsx | 11 ++--------- src/i18n/locales/en.po | 9 +++++++-- 7 files changed, 24 insertions(+), 32 deletions(-) diff --git a/src/features/global-search/screens/SearchAll.tsx b/src/features/global-search/screens/SearchAll.tsx index 6b43b031..aa46294b 100644 --- a/src/features/global-search/screens/SearchAll.tsx +++ b/src/features/global-search/screens/SearchAll.tsx @@ -59,6 +59,7 @@ import { SearchParam } from '@/base/Base.types.ts'; import { MigrationManager } from '@/features/migration/MigrationManager.ts'; import { assertIsDefined } from '@/base/Asserts.ts'; import { ReactRouter } from '@/lib/react-router/ReactRouter.ts'; +import { SubpathUtil } from '@/lib/utils/SubpathUtil.ts'; type SourceLoadingState = { isLoading: boolean; hasResults: boolean; emptySearch: boolean; error: any }; type SourceToLoadingStateMap = Map; @@ -249,10 +250,10 @@ export const SearchAll = ({ }) => { const { t } = useLingui(); const navigate = useNavigate(); - const { pathname, state } = useLocation<{ mangaTitle?: string; shouldShowOnlyPinnedSources?: boolean }>(); + const { state } = useLocation<{ title?: string; shouldShowOnlyPinnedSources?: boolean }>(); const { ref: filterHeaderRef, height: filterHeaderHeight } = useElementSize(); - const isMigrateMode = pathname.startsWith('/migrate/source') || pathname.startsWith('/migrate/manual-search'); + const isMigrateMode = SubpathUtil.getPathname().startsWith(AppRoutes.migrate.path); const { mangaId } = useParams<{ mangaId?: string }>() ?? STABLE_EMPTY_OBJECT; const [query] = useQueryParam(SearchParam.QUERY, StringParam); @@ -317,7 +318,7 @@ export const SearchAll = ({ ); useAppTitleAndAction( - isMigrateMode ? t`Migrate "${state?.mangaTitle}"` : t`Global Search`, + isMigrateMode ? state?.title : t`Global Search`, <> { manga.id, manga.title, )} - state={{ mangaTitle: manga.title }} + state={{ title: t`Migrate "${manga.title}"` }} style={{ textDecoration: 'none', color: 'inherit' }} > @@ -168,7 +168,7 @@ export const MangaToolbarMenu = ({ manga, onRefresh, refreshing }: IProps) => { manga.id, manga.title, )} - state={{ mangaTitle: manga.title }} + state={{ title: t`Migrate "${manga.title}"` }} style={{ textDecoration: 'none', color: 'inherit' }} > diff --git a/src/features/migration/MigrationManager.ts b/src/features/migration/MigrationManager.ts index 37992335..edaee85a 100644 --- a/src/features/migration/MigrationManager.ts +++ b/src/features/migration/MigrationManager.ts @@ -321,7 +321,7 @@ export class MigrationManager { ReactRouter.navigate( AppRoutes.migrate.childRoutes.singleMangaSearch.path(manga.sourceId, manga.id, manga.title), { - state: { mangaTitle: manga.title }, + state: { title: t`Migrate "${manga.title}"` }, }, ); @@ -645,6 +645,12 @@ export class MigrationManager { }); } + static openManualSearch(mangaId: MangaIdInfo['id'], title: string): void { + ReactRouter.navigate(AppRoutes.migrate.childRoutes.manualSearch.path(mangaId, title), { + state: { title: t`Manual migration search for "${title}"` }, + }); + } + static getState(): MigrationState { return migrationStore.getState(); } diff --git a/src/features/migration/components/migration-entry/MigrationDestinationEntry.tsx b/src/features/migration/components/migration-entry/MigrationDestinationEntry.tsx index 8fabf34a..7b248042 100644 --- a/src/features/migration/components/migration-entry/MigrationDestinationEntry.tsx +++ b/src/features/migration/components/migration-entry/MigrationDestinationEntry.tsx @@ -13,7 +13,6 @@ import { MediaQuery } from '@/base/utils/MediaQuery.tsx'; import { MigrationEntryCard } from '@/features/migration/components/migration-entry/MigrationEntryCard.tsx'; import { MigrationEntryCardContent } from '@/features/migration/components/migration-entry/MigrationEntryCardContent.tsx'; import { ENTRY_STATUS_TRANSLATION } from '@/features/migration/Migration.constants.ts'; -import { ReactRouter } from '@/lib/react-router/ReactRouter.ts'; import { AppRoutes } from '@/base/AppRoute.constants.ts'; import { MigrationManager } from '@/features/migration/MigrationManager.ts'; import { extractGraphqlExceptionInfo } from '@/lib/HelperFunctions.ts'; @@ -61,12 +60,7 @@ const EntryStatus = ({ startIcon={} variant="contained" onClick={() => { - ReactRouter.navigate( - AppRoutes.migrate.childRoutes.manualSearch.path(sourceMangaId, sourceMangaTitle), - { - state: { mangaTitle: sourceMangaTitle }, - }, - ); + MigrationManager.openManualSearch(sourceMangaId, sourceMangaTitle); }} >{t`Manual search`} )} diff --git a/src/features/migration/components/migration-entry/MigrationEntry.tsx b/src/features/migration/components/migration-entry/MigrationEntry.tsx index ccbf0416..085f2075 100644 --- a/src/features/migration/components/migration-entry/MigrationEntry.tsx +++ b/src/features/migration/components/migration-entry/MigrationEntry.tsx @@ -14,8 +14,6 @@ import { MediaQuery } from '@/base/utils/MediaQuery.tsx'; import { applyStyles } from '@/base/utils/ApplyStyles.ts'; import { MigrationSourceEntry } from '@/features/migration/components/migration-entry/MigrationSourceEntry.tsx'; import { MigrationDestinationEntry } from '@/features/migration/components/migration-entry/MigrationDestinationEntry.tsx'; -import { ReactRouter } from '@/lib/react-router/ReactRouter.ts'; -import { AppRoutes } from '@/base/AppRoute.constants.ts'; import { MigrationMatchedEntry } from '@/features/migration/components/migration-entry/MigrationMatchedEntry.tsx'; import { MigrationEntrySearchExcludeActions } from '@/features/migration/components/migration-entry/MigrationEntrySearchExcludeActions.tsx'; import Typography from '@mui/material/Typography'; @@ -70,12 +68,7 @@ const MigrationEntryMobile = memo( startIcon={} variant="text" onClick={() => { - ReactRouter.navigate( - AppRoutes.migrate.childRoutes.manualSearch.path(mangaId, mangaTitle), - { - state: { mangaTitle: mangaTitle }, - }, - ); + MigrationManager.openManualSearch(mangaId, mangaTitle); }} >{t`Manual search`} diff --git a/src/features/migration/components/migration-entry/MigrationEntrySearchExcludeActions.tsx b/src/features/migration/components/migration-entry/MigrationEntrySearchExcludeActions.tsx index e147c752..742febbc 100644 --- a/src/features/migration/components/migration-entry/MigrationEntrySearchExcludeActions.tsx +++ b/src/features/migration/components/migration-entry/MigrationEntrySearchExcludeActions.tsx @@ -10,8 +10,6 @@ import type { MangaIdInfo } from '@/features/manga/Manga.types.ts'; import { MediaQuery } from '@/base/utils/MediaQuery.tsx'; import { CustomTooltip } from '@/base/components/CustomTooltip.tsx'; import { CustomButtonIcon } from '@/base/components/buttons/CustomButtonIcon.tsx'; -import { ReactRouter } from '@/lib/react-router/ReactRouter.ts'; -import { AppRoutes } from '@/base/AppRoute.constants.ts'; import { MigrationManager } from '@/features/migration/MigrationManager.ts'; import IconButton from '@mui/material/IconButton'; import { useLingui } from '@lingui/react/macro'; @@ -71,12 +69,7 @@ export const MigrationEntrySearchExcludeActions = ({ flexGrow: Number(!otherResultsCount), }} onClick={() => { - ReactRouter.navigate( - AppRoutes.migrate.childRoutes.manualSearch.path(mangaId, mangaTitle), - { - state: { mangaTitle: mangaTitle }, - }, - ); + MigrationManager.openManualSearch(mangaId, mangaTitle); }} > @@ -113,7 +106,7 @@ export const MigrationEntrySearchExcludeActions = ({ { - ReactRouter.navigate(AppRoutes.migrate.childRoutes.manualSearch.path(mangaId, mangaTitle)); + MigrationManager.openManualSearch(mangaId, mangaTitle); }} > diff --git a/src/i18n/locales/en.po b/src/i18n/locales/en.po index 0718b968..5ac3e6a0 100644 --- a/src/i18n/locales/en.po +++ b/src/i18n/locales/en.po @@ -2259,6 +2259,10 @@ msgstr "Manhua" msgid "Manhwa" msgstr "Manhwa" +#: src/features/migration/MigrationManager.ts +msgid "Manual migration search for \"{title}\"" +msgstr "Manual migration search for \"{title}\"" + #: src/features/migration/components/migration-entry/MigrationDestinationEntry.tsx #: src/features/migration/components/migration-entry/MigrationEntry.tsx #: src/features/migration/components/migration-entry/MigrationEntrySearchExcludeActions.tsx @@ -2329,8 +2333,9 @@ msgstr "Menu" msgid "Migrate" msgstr "Migrate" -#. placeholder {0}: state?.mangaTitle -#: src/features/global-search/screens/SearchAll.tsx +#. placeholder {0}: manga.title +#: src/features/manga/components/MangaToolbarMenu.tsx +#: src/features/migration/MigrationManager.ts msgid "Migrate \"{0}\"" msgstr "Migrate \"{0}\""