UNPKG

evermark-sdk

Version:

Unified SDK for robust image handling and content management with storage orchestration

73 lines 2.66 kB
/** * Main hook implementing your 3-step storage flow * MINIMAL CHANGES: Fixed import paths only */ import { useState, useCallback, useRef, useEffect } from 'react'; import { StorageOrchestrator } from '../../storage/storage-orchestrator.js'; export function useStorageFlow(options) { const { storageConfig, autoStart = false, debug = false } = options; const [status, setStatus] = useState('idle'); const [result, setResult] = useState(null); const [progress, setProgress] = useState(null); const [error, setError] = useState(null); const [lastInput, setLastInput] = useState(null); const orchestratorRef = useRef(null); // Initialize orchestrator useEffect(() => { orchestratorRef.current = new StorageOrchestrator(storageConfig); }, [storageConfig]); const startFlow = useCallback(async (input) => { if (!orchestratorRef.current) return; try { setStatus('checking'); setError(null); setProgress(null); setResult(null); setLastInput(input); if (debug) console.log('[StorageFlow] Starting flow with input:', input); const flowResult = await orchestratorRef.current.ensureImageInSupabase(input, (progressUpdate) => { setProgress(progressUpdate); if (progressUpdate.phase === 'uploading') { setStatus('transferring'); } }); setResult(flowResult); setStatus('complete'); setProgress({ phase: 'complete', percentage: 100, message: 'Flow complete' }); if (debug) console.log('[StorageFlow] Flow completed:', flowResult); } catch (err) { const errorMessage = err instanceof Error ? err.message : 'Storage flow failed'; setError(errorMessage); setStatus('failed'); setProgress(null); if (debug) console.error('[StorageFlow] Flow failed:', err); } }, [debug]); const reset = useCallback(() => { setStatus('idle'); setResult(null); setProgress(null); setError(null); setLastInput(null); }, []); const retry = useCallback(async () => { if (lastInput) await startFlow(lastInput); }, [lastInput, startFlow]); return { status, result, progress, error, isProcessing: status === 'checking' || status === 'transferring', startFlow, reset, retry }; } //# sourceMappingURL=useStorageFlow.js.map