mirror of
https://github.com/kmc7468/arkvault.git
synced 2026-11-04 08:10:28 +09:00
파일 시스템 관련 상태와 변경 로직을 도메인 모듈로 통합하여 캐시가 자동으로 갱신되도록 개선하고 오류를 토스트로 표시하도록 변경
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
2ce73aa331
commit
4e82c5e556
67 files changed
+1091
-1082
No files matched your search
@@ -0,0 +1,54 @@
|
||||
import {
|
||||
getDirectoryInfo,
|
||||
getFileInfo,
|
||||
setDirectoryFavorite,
|
||||
setFileFavorite,
|
||||
type LocalDirectoryInfo,
|
||||
type SummarizedFileInfo,
|
||||
} from "#lib/features/filesystem/index.js";
|
||||
import { sortEntries } from "#lib/utils/index.js";
|
||||
import { trpc } from "#trpc/client.js";
|
||||
|
||||
export type FavoriteEntry =
|
||||
| { type: "directory"; name: string; details: LocalDirectoryInfo }
|
||||
| { type: "file"; name: string; details: SummarizedFileInfo };
|
||||
|
||||
export const getFavoriteEntries = async () => {
|
||||
const favorites = await trpc.favorites.get.query();
|
||||
const [directories, files] = await Promise.all([
|
||||
Promise.all(
|
||||
favorites.directories.map((directory) =>
|
||||
getDirectoryInfo(directory.id, { serverResponse: { ...directory, isFavorite: true } }),
|
||||
),
|
||||
),
|
||||
Promise.all(
|
||||
favorites.files.map((file) =>
|
||||
getFileInfo(file.id, { serverResponse: { ...file, isFavorite: true } }),
|
||||
),
|
||||
),
|
||||
]);
|
||||
return [
|
||||
...sortEntries(
|
||||
directories.map((directory): FavoriteEntry => ({
|
||||
type: "directory",
|
||||
name: directory.name!,
|
||||
details: directory as LocalDirectoryInfo,
|
||||
})),
|
||||
),
|
||||
...sortEntries(
|
||||
files.map((file): FavoriteEntry => ({
|
||||
type: "file",
|
||||
name: file.name!,
|
||||
details: file as SummarizedFileInfo,
|
||||
})),
|
||||
),
|
||||
];
|
||||
};
|
||||
|
||||
export const removeFavorite = async ({ type, details }: FavoriteEntry) => {
|
||||
if (type === "directory") {
|
||||
await setDirectoryFavorite(details, false);
|
||||
} else {
|
||||
await setFileFavorite(details, false);
|
||||
}
|
||||
};
|
||||
Reference in new issue
Block a user