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 }
}