feat: initial bulk file upload dialog

This commit is contained in:
2025-10-12 00:43:31 +00:00
parent bcc0f9f5e2
commit 0e460370da
10 changed files with 558 additions and 80 deletions

View File

@@ -0,0 +1,31 @@
import { atom } from "jotai"
import { atomFamily } from "jotai/utils"
type FileUpload = {
id: string
progress: number
}
export const fileUploadsAtom = atom<Record<string, FileUpload>>({})
export const fileUploadAtomFamily = atomFamily((id: string) =>
atom(
(get) => get(fileUploadsAtom)[id],
(get, set, progress: number) => {
const fileUploads = { ...get(fileUploadsAtom) }
fileUploads[id] = { id, progress }
set(fileUploadsAtom, fileUploads)
},
),
)
export const clearFileUploadAtom = atom(null, (get, set, id: string) => {
const fileUploads = { ...get(fileUploadsAtom) }
delete fileUploads[id]
fileUploadAtomFamily.remove(id)
set(fileUploadsAtom, fileUploads)
})
export const hasFileUploadsAtom = atom(
(get) => Object.keys(get(fileUploadsAtom)).length > 0,
)