File size: 1,209 Bytes
d325ede
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
/**
 * useModelLoader — Lightweight helper for handling a model URL that is already produced.
 *
 * This hook no longer calls backend APIs. It simply normalizes load state for a provided URL.
 */
import { useState, useEffect, useCallback } from 'react';
import type { ModelStats } from '../types';

interface UseModelLoaderReturn {
  modelUrl: string | null;
  stats: ModelStats | null;
  isLoading: boolean;
  error: string | null;
  reload: () => void;
}

export function useModelLoader(jobId: string): UseModelLoaderReturn {
  const [modelUrl, setModelUrl] = useState<string | null>(null);
  const [stats, setStats] = useState<ModelStats | null>(null);
  const [isLoading, setIsLoading] = useState(false);
  const [error, setError] = useState<string | null>(null);

  const loadModel = useCallback(async () => {
    setError(null);
    setIsLoading(true);

    if (!jobId) {
      setModelUrl(null);
      setStats(null);
      setIsLoading(false);
      return;
    }

    setModelUrl(jobId);
    setStats(null);
    setIsLoading(false);
  }, [jobId]);

  useEffect(() => {
    loadModel();
  }, [loadModel]);

  return {
    modelUrl,
    stats,
    isLoading,
    error,
    reload: loadModel,
  };
}