初始仓库迁移
Some checks failed
CI / verify (push) Has been cancelled

This commit is contained in:
2026-04-04 23:57:06 +08:00
parent 80986b790d
commit c49c64896a
18446 changed files with 532435 additions and 2 deletions

View File

@@ -0,0 +1,45 @@
import { useState } from 'react';
import { saveJsonObject } from './jsonClient';
type UseJsonSaveOptions = {
endpoint: string;
payload: Record<string, unknown>;
validate?: () => string[];
successMessage: string;
errorMessage: string;
};
export function useJsonSave({
endpoint,
payload,
validate,
successMessage,
errorMessage,
}: UseJsonSaveOptions) {
const [isSaving, setIsSaving] = useState(false);
const [saveMessage, setSaveMessage] = useState<string | null>(null);
const save = async () => {
setIsSaving(true);
setSaveMessage(null);
const validationErrors = validate?.() ?? [];
if (validationErrors.length > 0) {
setSaveMessage(validationErrors.slice(0, 3).join(' | '));
setIsSaving(false);
return;
}
try {
await saveJsonObject(endpoint, payload);
setSaveMessage(successMessage);
} catch (error) {
setSaveMessage(error instanceof Error ? error.message : errorMessage);
} finally {
setIsSaving(false);
}
};
return { isSaving, saveMessage, save };
}