Sort bulk migration execution page entries
This commit is contained in:
46
src/features/migration/MigrationEntries.ts
Normal file
46
src/features/migration/MigrationEntries.ts
Normal file
@@ -0,0 +1,46 @@
|
||||
/*
|
||||
* Copyright (C) Contributors to the Suwayomi project
|
||||
*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
*/
|
||||
|
||||
import type { MigrationEntryStatus, TMigrationEntry } from '@/features/migration/Migration.types.ts';
|
||||
|
||||
export class MigrationEntries {
|
||||
public static getExcluded(entries: TMigrationEntry[]): TMigrationEntry[] {
|
||||
return entries.filter((entry) => entry.isExcluded);
|
||||
}
|
||||
|
||||
public static getHaveStatus(entries: TMigrationEntry[], ...statuses: MigrationEntryStatus[]): TMigrationEntry[] {
|
||||
return entries.filter((entry) => statuses.includes(entry.status));
|
||||
}
|
||||
|
||||
public static getHaveStatusSorted(
|
||||
entries: TMigrationEntry[],
|
||||
...statuses: MigrationEntryStatus[]
|
||||
): TMigrationEntry[] {
|
||||
return MigrationEntries.getHaveStatus(entries, ...statuses).toSorted((a, b) =>
|
||||
a.mangaTitle.localeCompare(b.mangaTitle),
|
||||
);
|
||||
}
|
||||
|
||||
public static getActiveEntriesSorted(
|
||||
entries: TMigrationEntry[],
|
||||
activeStatus: MigrationEntryStatus,
|
||||
...statuses: MigrationEntryStatus[]
|
||||
): TMigrationEntry[] {
|
||||
return MigrationEntries.getHaveStatus(entries, ...statuses).toSorted((a, b) => {
|
||||
if (a.status === activeStatus && b.status !== activeStatus) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (a.status !== activeStatus && b.status === activeStatus) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
return a.mangaTitle.localeCompare(b.mangaTitle);
|
||||
});
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user