feat: 实现更新活动数据集元数据的功能,添加错误处理和文件写入逻辑

This commit is contained in:
Vixalie
2026-03-28 08:13:07 +08:00
parent cc84748451
commit 2d1d2c80e1

View File

@@ -1,8 +1,33 @@
import type { DatasetMeta, ImageMeta } from "$lib/types/meta";
import { writable } from "svelte/store";
import { join } from "@tauri-apps/api/path";
import { writeTextFile } from "@tauri-apps/plugin-fs";
import { get, writable } from "svelte/store";
export const openedDatasetDir = writable<string | null>(null);
export const activeDatasetMeta = writable<DatasetMeta | null>(null);
export const activeDatasetImageMetas = writable<ImageMeta[]>([]);
type DatasetMetaUpdater = Partial<DatasetMeta> | ((current: DatasetMeta) => DatasetMeta);
export async function updateActiveDatasetMeta(updater: DatasetMetaUpdater): Promise<DatasetMeta> {
const datasetDir = get(openedDatasetDir);
if (!datasetDir) {
throw new Error("Cannot update dataset meta: openedDatasetDir is null");
}
const currentMeta = get(activeDatasetMeta);
if (!currentMeta) {
throw new Error("Cannot update dataset meta: activeDatasetMeta is null");
}
const nextMeta =
typeof updater === "function" ? updater(currentMeta) : { ...currentMeta, ...updater };
const metaPath = await join(datasetDir, "meta.json");
await writeTextFile(metaPath, JSON.stringify(nextMeta, null, 2));
activeDatasetMeta.set(nextMeta);
return nextMeta;
}