File size: 951 Bytes
15d2f30
de03c4e
 
 
 
15d2f30
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
de03c4e
 
 
15d2f30
 
 
 
de03c4e
 
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
import { useState } from "react";
import usePyodideBackend from "./usePyodideBackend.ts";

export default function useAppLogic() {
  const { getBackend, backendReady } = usePyodideBackend();

  const [sampleImageUrl, setSampleImageUrl] = useState<string | null>(null);
  const [sampleLabel, setSampleLabel] = useState<string | null>(null);

  async function onImageFolderUpload(files: File[]) {
    if (!backendReady) {
      return;
    }

    await getBackend().handleImageFolderUpload(files);
  }

  async function getRandomSample() {
    if (!backendReady) {
      return;
    }

    const { imageUrl, label } = await getBackend().handleGetRandomSample();
    setSampleImageUrl(prev => {
      if (prev) {
        URL.revokeObjectURL(prev);
      }
      return imageUrl;
    });

    setSampleLabel(label);
  }

  return {
    getBackend,
    backendReady,
    onImageFolderUpload,
    getRandomSample,
    sampleImageUrl,
    sampleLabel,
  };
}