File size: 996 Bytes
d6e2363 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | import { useState } from 'react'
import { transformURL, TransformResponse } from '@/services/api'
export type GenerationState = 'idle' | 'loading' | 'success' | 'error'
export function useTransform() {
const [state, setState] = useState<GenerationState>('idle')
const [result, setResult] = useState<TransformResponse | null>(null)
const [error, setError] = useState<string | null>(null)
const transform = async (url: string, destructionLevel: number) => {
setState('loading')
setError(null)
try {
const data = await transformURL({ url, destruction_level: destructionLevel })
setResult(data)
setState('success')
} catch (err: unknown) {
const message =
err instanceof Error ? err.message : 'Something went wrong. The packet was lost.'
setError(message)
setState('error')
}
}
const reset = () => {
setState('idle')
setResult(null)
setError(null)
}
return { state, result, error, transform, reset }
}
|