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/.
|
||||
*/
|
||||
|
||||
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 {
|
||||
public static getExcluded(entries: TMigrationEntry[]): TMigrationEntry[] {
|
||||
@@ -43,4 +44,14 @@ export class MigrationEntries {
|
||||
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 isEqual from 'lodash/fp/isEqual';
|
||||
import uniqBy from 'lodash/fp/uniqBy';
|
||||
import { MigrationEntries } from '@/features/migration/MigrationEntries.ts';
|
||||
|
||||
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> {
|
||||
MigrationManager.ensureIsInValidPhase([MigrationPhase.SEARCHING]);
|
||||
|
||||
const migratableEntries = MigrationManager.getMigratableEntries();
|
||||
const migratableEntries = MigrationEntries.getMigratable(Object.values(MigrationManager.getState().entries));
|
||||
|
||||
await Confirmation.show({
|
||||
title: t`Migration information`,
|
||||
@@ -529,7 +518,7 @@ export class MigrationManager {
|
||||
if (resumeMigrationPhase) {
|
||||
assertIsDefined(migrateOptions);
|
||||
|
||||
const migratableEntries = MigrationManager.getMigratableEntries();
|
||||
const migratableEntries = MigrationEntries.getMigratable(Object.values(entries));
|
||||
|
||||
MigrationManager.updateState((draft) => {
|
||||
migratableEntries.forEach((entry) => {
|
||||
@@ -544,8 +533,10 @@ export class MigrationManager {
|
||||
|
||||
assertIsDefined(searchOptions);
|
||||
|
||||
const pendingEntries = Object.values(entries).filter((entry) =>
|
||||
[MigrationEntryStatus.PENDING, MigrationEntryStatus.SEARCHING].includes(entry.status),
|
||||
const pendingEntries = MigrationEntries.getHaveStatus(
|
||||
Object.values(entries),
|
||||
MigrationEntryStatus.PENDING,
|
||||
MigrationEntryStatus.SEARCHING,
|
||||
);
|
||||
|
||||
MigrationManager.updateState((draft) => {
|
||||
|
||||
@@ -59,7 +59,7 @@ export const MigrationSearch = () => {
|
||||
[entryList],
|
||||
);
|
||||
|
||||
const hasMigratableEntries = useMemo(() => !!MigrationManager.getMigratableEntries().length, [entryList]);
|
||||
const hasMigratableEntries = useMemo(() => !!MigrationEntries.getMigratable(entryList).length, [entryList]);
|
||||
|
||||
return (
|
||||
<>
|
||||
|
||||
Reference in New Issue
Block a user