Move "getMigratable" function to "MigrationEntries"
This commit is contained in:
@@ -6,7 +6,8 @@
|
|||||||
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import type { MigrationEntryStatus, TMigrationEntry } from '@/features/migration/Migration.types.ts';
|
import type { MigratableEntry, TMigrationEntry } from '@/features/migration/Migration.types.ts';
|
||||||
|
import { MigrationEntryStatus } from '@/features/migration/Migration.types.ts';
|
||||||
|
|
||||||
export class MigrationEntries {
|
export class MigrationEntries {
|
||||||
public static getExcluded(entries: TMigrationEntry[]): TMigrationEntry[] {
|
public static getExcluded(entries: TMigrationEntry[]): TMigrationEntry[] {
|
||||||
@@ -43,4 +44,14 @@ export class MigrationEntries {
|
|||||||
return a.mangaTitle.localeCompare(b.mangaTitle);
|
return a.mangaTitle.localeCompare(b.mangaTitle);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static getMigratable(entries: TMigrationEntry[]): MigratableEntry[] {
|
||||||
|
return Object.values(entries).filter(
|
||||||
|
(entry): entry is MigratableEntry =>
|
||||||
|
[MigrationEntryStatus.SEARCH_COMPLETE, MigrationEntryStatus.MIGRATING].includes(entry.status) &&
|
||||||
|
!entry.isExcluded &&
|
||||||
|
entry.selectedMatchMangaId != null &&
|
||||||
|
entry.selectedMatchSourceId != null,
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -66,6 +66,7 @@ import { ZustandUtil } from '@/lib/zustand/ZustandUtil.ts';
|
|||||||
import { getErrorMessage } from '@/lib/HelperFunctions.ts';
|
import { getErrorMessage } from '@/lib/HelperFunctions.ts';
|
||||||
import isEqual from 'lodash/fp/isEqual';
|
import isEqual from 'lodash/fp/isEqual';
|
||||||
import uniqBy from 'lodash/fp/uniqBy';
|
import uniqBy from 'lodash/fp/uniqBy';
|
||||||
|
import { MigrationEntries } from '@/features/migration/MigrationEntries.ts';
|
||||||
|
|
||||||
const RESUMABLE_PHASES: readonly MigrationPhase[] = [MigrationPhase.SEARCHING, MigrationPhase.MIGRATING];
|
const RESUMABLE_PHASES: readonly MigrationPhase[] = [MigrationPhase.SEARCHING, MigrationPhase.MIGRATING];
|
||||||
|
|
||||||
@@ -407,22 +408,10 @@ export class MigrationManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static getMigratableEntries(): MigratableEntry[] {
|
|
||||||
const { entries } = MigrationManager.getState();
|
|
||||||
|
|
||||||
return Object.values(entries).filter(
|
|
||||||
(entry): entry is MigratableEntry =>
|
|
||||||
[MigrationEntryStatus.SEARCH_COMPLETE, MigrationEntryStatus.MIGRATING].includes(entry.status) &&
|
|
||||||
!entry.isExcluded &&
|
|
||||||
entry.selectedMatchMangaId != null &&
|
|
||||||
entry.selectedMatchSourceId != null,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
static async startMigration(options: Omit<MigrateOptions, 'mangaIdToMigrateTo'>): Promise<void> {
|
static async startMigration(options: Omit<MigrateOptions, 'mangaIdToMigrateTo'>): Promise<void> {
|
||||||
MigrationManager.ensureIsInValidPhase([MigrationPhase.SEARCHING]);
|
MigrationManager.ensureIsInValidPhase([MigrationPhase.SEARCHING]);
|
||||||
|
|
||||||
const migratableEntries = MigrationManager.getMigratableEntries();
|
const migratableEntries = MigrationEntries.getMigratable(Object.values(MigrationManager.getState().entries));
|
||||||
|
|
||||||
await Confirmation.show({
|
await Confirmation.show({
|
||||||
title: t`Migration information`,
|
title: t`Migration information`,
|
||||||
@@ -529,7 +518,7 @@ export class MigrationManager {
|
|||||||
if (resumeMigrationPhase) {
|
if (resumeMigrationPhase) {
|
||||||
assertIsDefined(migrateOptions);
|
assertIsDefined(migrateOptions);
|
||||||
|
|
||||||
const migratableEntries = MigrationManager.getMigratableEntries();
|
const migratableEntries = MigrationEntries.getMigratable(Object.values(entries));
|
||||||
|
|
||||||
MigrationManager.updateState((draft) => {
|
MigrationManager.updateState((draft) => {
|
||||||
migratableEntries.forEach((entry) => {
|
migratableEntries.forEach((entry) => {
|
||||||
@@ -544,8 +533,10 @@ export class MigrationManager {
|
|||||||
|
|
||||||
assertIsDefined(searchOptions);
|
assertIsDefined(searchOptions);
|
||||||
|
|
||||||
const pendingEntries = Object.values(entries).filter((entry) =>
|
const pendingEntries = MigrationEntries.getHaveStatus(
|
||||||
[MigrationEntryStatus.PENDING, MigrationEntryStatus.SEARCHING].includes(entry.status),
|
Object.values(entries),
|
||||||
|
MigrationEntryStatus.PENDING,
|
||||||
|
MigrationEntryStatus.SEARCHING,
|
||||||
);
|
);
|
||||||
|
|
||||||
MigrationManager.updateState((draft) => {
|
MigrationManager.updateState((draft) => {
|
||||||
|
|||||||
@@ -59,7 +59,7 @@ export const MigrationSearch = () => {
|
|||||||
[entryList],
|
[entryList],
|
||||||
);
|
);
|
||||||
|
|
||||||
const hasMigratableEntries = useMemo(() => !!MigrationManager.getMigratableEntries().length, [entryList]);
|
const hasMigratableEntries = useMemo(() => !!MigrationEntries.getMigratable(entryList).length, [entryList]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
|
|||||||
Reference in New Issue
Block a user