More cleanups

This commit is contained in:
Austin Chen 2022-10-06 11:32:16 -04:00
parent 88b7064b66
commit 3391e3fb2e
2 changed files with 42 additions and 55 deletions

View File

@ -22,8 +22,8 @@ export function ImageModal(props: {
const { upload, open, setOpen } = props const { upload, open, setOpen } = props
return ( return (
<Modal open={open} setOpen={setOpen}> <Modal open={open} setOpen={setOpen}>
<Col className="gap-2 rounded bg-white p-6">
<Tabs <Tabs
className="gap-2 rounded bg-white p-6"
tabs={[ tabs={[
{ {
title: 'Upload file', title: 'Upload file',
@ -48,6 +48,7 @@ export function ImageModal(props: {
}, },
]} ]}
/> />
</Col>
</Modal> </Modal>
) )
} }

View File

@ -69,36 +69,22 @@ const ONE_YEAR_SECS = 60 * 60 * 24 * 365
async function upload(buffer: Buffer) { async function upload(buffer: Buffer) {
const filename = `${nanoid(10)}.png` const filename = `${nanoid(10)}.png`
const storageRef = ref(storage, `dream/${filename}`) const storageRef = ref(storage, `dream/${filename}`)
const uploadTask = uploadBytesResumable(storageRef, buffer, {
function promisifiedUploadBytes(...args: any[]) {
return new Promise((resolve, reject) => {
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
const task = uploadBytesResumable(...args)
task.on(
'state_changed',
null,
(e: Error) => reject(e),
() => getDownloadURL(task.snapshot.ref).then(resolve)
)
})
}
return promisifiedUploadBytes(storageRef, buffer, {
cacheControl: `public, max-age=${ONE_YEAR_SECS}`, cacheControl: `public, max-age=${ONE_YEAR_SECS}`,
contentType: 'image/png', contentType: 'image/png',
}) })
let resolvePromise: (url: string) => void
let rejectPromise: (reason?: any) => void
const promise = new Promise<string>((resolve, reject) => {
resolvePromise = resolve
rejectPromise = reject
})
const unsubscribe = uploadTask.on(
'state_changed',
(_snapshot) => {},
(error) => {
// A full list of error codes is available at
// https://firebase.google.com/docs/storage/web/handle-errors
rejectPromise(error)
unsubscribe()
},
() => {
getDownloadURL(uploadTask.snapshot.ref).then((downloadURL) => {
resolvePromise(downloadURL)
})
unsubscribe()
}
)
return await promise
} }