import { useState } from 'react'; import { saveEditorJsonResource, type EditorJsonResourceId, } from './editorApiClient'; type UseJsonSaveOptions = { resourceId: EditorJsonResourceId; payload: Record; validate?: () => string[]; successMessage: string; errorMessage: string; }; export function useJsonSave({ resourceId, payload, validate, successMessage, errorMessage, }: UseJsonSaveOptions) { const [isSaving, setIsSaving] = useState(false); const [saveMessage, setSaveMessage] = useState(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 saveEditorJsonResource(resourceId, payload, errorMessage); setSaveMessage(successMessage); } catch (error) { setSaveMessage(error instanceof Error ? error.message : errorMessage); } finally { setIsSaving(false); } }; return { isSaving, saveMessage, save }; }