repositories
loading repo index
repositories
loading repo index
repository
loading code, commits, and activity
public Clawd ADK gateway launch mirror
stars
latest
clone command
git clone gitlawb://did:key:z6Mkq5mY...iFZ5/my-project-publ...git clone gitlawb://did:key:z6Mkq5mY.../my-project-publ...2fa351d6docs: add automaton and perps launch sources16d ago| #1 | import { useState } from 'react'; |
| #2 | import { FileInfo } from '@/types'; |
| #3 | import { convertToBase64, getFileBuffer } from '@/utils/fileUtils'; |
| #4 | |
| #5 | interface UseFileHandlerReturn { |
| #6 | selectedFile: FileInfo | null; |
| #7 | file: File | null; |
| #8 | fileData: string | Buffer | null; |
| #9 | setSelectedFile: (file: FileInfo | null) => void; |
| #10 | handleFile: (file: File) => Promise<void>; |
| #11 | clearFile: () => void; |
| #12 | } |
| #13 | |
| #14 | export const useFileHandler = (): UseFileHandlerReturn => { |
| #15 | const [selectedFile, setSelectedFile] = useState<FileInfo | null>(null); |
| #16 | const [file, setFile] = useState<File | null>(null); |
| #17 | const [fileData, setFileData] = useState<string | Buffer | null>(null); |
| #18 | |
| #19 | const handleFile = async (file: File) => { |
| #20 | setFile(file); |
| #21 | |
| #22 | if (file.type.startsWith('image/')) { |
| #23 | const base64Data = await convertToBase64(file); |
| #24 | setFileData(base64Data); |
| #25 | } else if (file.type.startsWith('audio/')) { |
| #26 | const bufferData = await getFileBuffer(file); |
| #27 | setFileData(bufferData); |
| #28 | } |
| #29 | }; |
| #30 | |
| #31 | const clearFile = () => { |
| #32 | setSelectedFile(null); |
| #33 | setFile(null); |
| #34 | setFileData(null); |
| #35 | }; |
| #36 | |
| #37 | return { |
| #38 | selectedFile, |
| #39 | file, |
| #40 | fileData, |
| #41 | setSelectedFile, |
| #42 | handleFile, |
| #43 | clearFile, |
| #44 | }; |
| #45 | }; |