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