diff --git a/packages/core/src/components/Uploader/Uploader.tsx b/packages/core/src/components/Uploader/Uploader.tsx index f72ec61..7d69ef0 100644 --- a/packages/core/src/components/Uploader/Uploader.tsx +++ b/packages/core/src/components/Uploader/Uploader.tsx @@ -22,6 +22,10 @@ export interface UploaderProps { * Whether or not we should use the file's name when uploading */ storeOriginalFilename?: boolean + /** + * Whether or not to include the file URL in the Sanity document. This is useful if file URLs needs to be validated before fetched. This defaults to true. + */ + includeFileURL?: boolean // FIELD INPUT CONTEXT /** diff --git a/packages/core/src/components/Uploader/useUpload.tsx b/packages/core/src/components/Uploader/useUpload.tsx index dcba1af..1089a4d 100644 --- a/packages/core/src/components/Uploader/useUpload.tsx +++ b/packages/core/src/components/Uploader/useUpload.tsx @@ -25,6 +25,7 @@ const useUpload = ({ vendorConfig, sanityClient, storeOriginalFilename = true, + includeFileURL = true, onSuccess, }: UploaderProps): useUploadReturn => { const toast = useToast() @@ -51,6 +52,7 @@ const useUpload = ({ file: context.file as File, storeOriginalFilename, }), + includeFileURL, onError: (error) => callback({ type: 'VENDOR_ERROR', diff --git a/packages/core/src/types.ts b/packages/core/src/types.ts index bfb7a3b..277b2d2 100644 --- a/packages/core/src/types.ts +++ b/packages/core/src/types.ts @@ -49,6 +49,10 @@ export interface VendorConfiguration { * Use this instead of file.name as it respects users' storeOriginalFilename options. */ fileName: string + /** + * Whether or not to include the file URL in the Sanity document. This is useful if file URLs needs to be validated before fetched. This defaults to true. + */ + includeFileURL: boolean /** * Credentials as configured by your plugin. */ diff --git a/packages/firebase/src/config.ts b/packages/firebase/src/config.ts index 980c8f4..2b11703 100644 --- a/packages/firebase/src/config.ts +++ b/packages/firebase/src/config.ts @@ -53,6 +53,7 @@ const config: VendorConfiguration = { onSuccess, file, fileName, + includeFileURL, updateProgress, }) => { const firebaseClient = getFirebaseClient(credentials as FirebaseCredentials) @@ -76,11 +77,14 @@ const config: VendorConfiguration = { onError(error) }, async () => { - const downloadURL = await uploadTask.snapshot.ref.getDownloadURL() + let downloadURL: string | null = null + if (includeFileURL) { + downloadURL = await uploadTask.snapshot.ref.getDownloadURL() + } const metadata = await uploadTask.snapshot.ref.getMetadata() onSuccess({ - fileURL: downloadURL, + fileURL: includeFileURL ? downloadURL : null, firebase: { bucket: metadata.bucket, contentDisposition: metadata.contentDisposition,