()
| 191 | } |
| 192 | |
| 193 | export function useFileState() { |
| 194 | const [files, setFiles] = useState<File[]>([]); |
| 195 | |
| 196 | const addFiles = useEvent((newFiles: File[]) => { |
| 197 | if (newFiles.length === 0) { |
| 198 | return; |
| 199 | } |
| 200 | |
| 201 | const totalSize = newFiles.reduce((size, file) => size + file.size, 0); |
| 202 | if (totalSize > MAX_ATTACHMENT_SIZE) { |
| 203 | toast({ |
| 204 | title: "File size exceeded", |
| 205 | description: "Attachments must be under 50 MB", |
| 206 | variant: "danger", |
| 207 | }); |
| 208 | return; |
| 209 | } |
| 210 | |
| 211 | setFiles((prev) => [...prev, ...newFiles]); |
| 212 | }); |
| 213 | |
| 214 | const clearFiles = () => setFiles([]); |
| 215 | const removeFile = (fileToRemove: File) => |
| 216 | setFiles((prev) => prev.filter((f) => f !== fileToRemove)); |
| 217 | |
| 218 | return { files, addFiles, clearFiles, removeFile }; |
| 219 | } |
no test coverage detected
searching dependent graphs…