diff --git a/web/components/editor/image-modal.tsx b/web/components/editor/image-modal.tsx index cf1c8346..efa820fd 100644 --- a/web/components/editor/image-modal.tsx +++ b/web/components/editor/image-modal.tsx @@ -22,32 +22,33 @@ export function ImageModal(props: { const { upload, open, setOpen } = props return ( - { - setOpen(false) - upload.mutate(files) - }} - className="relative block w-full rounded-lg border-2 border-dashed border-gray-300 p-12 text-center hover:border-gray-400 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2" - > - - - Upload an image file - - - ), - }, - { - title: 'Dream', - content: , - }, - ]} - /> + + { + setOpen(false) + upload.mutate(files) + }} + className="relative block w-full rounded-lg border-2 border-dashed border-gray-300 p-12 text-center hover:border-gray-400 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2" + > + + + Upload an image file + + + ), + }, + { + title: 'Dream', + content: , + }, + ]} + /> + ) } diff --git a/web/pages/api/v0/dream.ts b/web/pages/api/v0/dream.ts index 6b809a81..f9a0c930 100644 --- a/web/pages/api/v0/dream.ts +++ b/web/pages/api/v0/dream.ts @@ -69,36 +69,22 @@ const ONE_YEAR_SECS = 60 * 60 * 24 * 365 async function upload(buffer: Buffer) { const filename = `${nanoid(10)}.png` 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}`, contentType: 'image/png', }) - - let resolvePromise: (url: string) => void - let rejectPromise: (reason?: any) => void - - const promise = new Promise((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 }