diff --git a/packages/js-lib/src/core/DriveData/File/DriveFileTypes.ts b/packages/js-lib/src/core/DriveData/File/DriveFileTypes.ts index 4bd9f4e77..efb5fee61 100644 --- a/packages/js-lib/src/core/DriveData/File/DriveFileTypes.ts +++ b/packages/js-lib/src/core/DriveData/File/DriveFileTypes.ts @@ -89,6 +89,7 @@ export interface PayloadFile { payload: File | Blob; previewThumbnail?: EmbeddedThumb; descriptorContent?: string; + skipEncryption?: boolean; } type None = 0; diff --git a/packages/js-lib/src/core/DriveData/Upload/DriveFileUploadProvider.ts b/packages/js-lib/src/core/DriveData/Upload/DriveFileUploadProvider.ts index 195d9498a..a9a477614 100644 --- a/packages/js-lib/src/core/DriveData/Upload/DriveFileUploadProvider.ts +++ b/packages/js-lib/src/core/DriveData/Upload/DriveFileUploadProvider.ts @@ -36,7 +36,10 @@ export const uploadFile = async ( thumbnails?: ThumbnailFile[], encrypt = true, onVersionConflict?: () => Promise | void, - axiosConfig?: AxiosRequestConfig + options?: { + axiosConfig?: AxiosRequestConfig; + keyHeader?: KeyHeader | undefined; + } ): Promise => { isDebug && console.debug('request', new URL(`${dotYouClient.getEndpoint()}/drive/files/upload`).pathname, { @@ -47,9 +50,9 @@ export const uploadFile = async ( }); // Force isEncrypted on the metadata to match the encrypt flag - metadata.isEncrypted = encrypt; + metadata.isEncrypted = encrypt || !!options?.keyHeader; - const keyHeader = encrypt ? GenerateKeyHeader() : undefined; + const keyHeader = encrypt ? options?.keyHeader || GenerateKeyHeader() : undefined; const { systemFileType, ...strippedInstructions } = instructions; @@ -83,7 +86,7 @@ export const uploadFile = async ( data, systemFileType, onVersionConflict, - axiosConfig + options?.axiosConfig ); if (!uploadResult) return; @@ -266,6 +269,8 @@ export const reUploadFile = async ( thumbnails, encrypt, undefined, - axiosConfig + { + axiosConfig, + } ); }; diff --git a/packages/js-lib/src/core/DriveData/Upload/UploadHelpers.ts b/packages/js-lib/src/core/DriveData/Upload/UploadHelpers.ts index 55c6013b1..e24bec466 100644 --- a/packages/js-lib/src/core/DriveData/Upload/UploadHelpers.ts +++ b/packages/js-lib/src/core/DriveData/Upload/UploadHelpers.ts @@ -119,14 +119,15 @@ export const buildFormData = async ( if (payloads) { for (let i = 0; i < payloads.length; i++) { const payload = payloads[i]; - const encryptedPayload = keyHeader - ? await encryptWithKeyheader(payload.payload, { - ...keyHeader, - iv: - manifest?.PayloadDescriptors?.find((p) => p.payloadKey === payload.key)?.iv || - keyHeader.iv, - }) - : payload.payload; + const encryptedPayload = + keyHeader && !payload.skipEncryption + ? await encryptWithKeyheader(payload.payload, { + ...keyHeader, + iv: + manifest?.PayloadDescriptors?.find((p) => p.payloadKey === payload.key)?.iv || + keyHeader.iv, + }) + : payload.payload; data.append('payload', encryptedPayload, payload.key); }