파일/디렉터리 목록 정렬 재구현

This commit is contained in:
static
2025-01-06 21:15:23 +09:00
parent 10b7472ee9
commit 183a3590a9
6 changed files with 128 additions and 40 deletions

View File

@@ -0,0 +1,30 @@
import { get, type Writable } from "svelte/store";
import type { DirectoryInfo, FileInfo } from "$lib/stores";
export enum SortBy {
NAME_ASC,
NAME_DESC,
}
type SortFunc = (a: DirectoryInfo | FileInfo | null, b: DirectoryInfo | FileInfo | null) => number;
const sortByNameAsc: SortFunc = (a, b) => {
if (a && b) return a.name!.localeCompare(b.name!);
return 0;
};
const sortByNameDesc: SortFunc = (a, b) => -sortByNameAsc(a, b);
export const sortEntries = <T extends DirectoryInfo | FileInfo>(
entries: Writable<T | null>[],
sortBy: SortBy = SortBy.NAME_ASC,
) => {
let sortFunc: SortFunc;
if (sortBy === SortBy.NAME_ASC) {
sortFunc = sortByNameAsc;
} else {
sortFunc = sortByNameDesc;
}
entries.sort((a, b) => sortFunc(get(a), get(b)));
};