File size: 916 Bytes
82d1e90
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import { useEffect, useState } from "react"
import { useFilePicker } from "use-file-picker"

import { useStore } from "../../app/store"
import { ClapEntity, getClapAssetSourceType } from "@aitube/clap"
import { useOpenPictureFile } from "./useOpenPictureFile"

export function useEntityPicture(entity?: ClapEntity) {
  const defaultPicture = entity?.imageId
  const [currentPicture, setCurrentPicture] = useState(defaultPicture)
  const { file, openFilePicker } = useOpenPictureFile()
  const setMainCharacterImage = useStore(s => s.setMainCharacterImage)

  const newPicture = file || currentPicture || defaultPicture

  useEffect(() => {
    setCurrentPicture(newPicture)
    if (!newPicture) { return }
    
    if (entity) {
      entity.imageId = newPicture
    } else {
      setMainCharacterImage(newPicture)
    }
  }, [newPicture, JSON.stringify(entity)])

  return { picture: newPicture, openFilePicker }
}