CreepURL / frontend /src /hooks /useTransform.ts
Dipan04's picture
Initial commit
d6e2363
Raw
History Blame Contribute Delete
996 Bytes
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 }
}