diff --git a/src/services/uploadService.ts b/src/services/uploadService.ts index 9a4e6fe10..60fbc85cf 100644 --- a/src/services/uploadService.ts +++ b/src/services/uploadService.ts @@ -473,6 +473,7 @@ class UploadService { private async uploadToBucket(file: ProcessedFile): Promise { try { let fileObjectKey, thumbnailObjectKey; + const uploadURLs = await this.fetchUploadURLSeparately(); if (isDataStream(file.file.encryptedData)) { const { chunkCount, stream } = file.file.encryptedData; const uploadPartCount = Math.ceil( @@ -488,14 +489,14 @@ class UploadService { uploadPartCount ); } else { - const fileUploadURL = await this.getUploadURL(); + const fileUploadURL = uploadURLs.pop(); fileObjectKey = await this.putFile( fileUploadURL, file.file.encryptedData, file.filename ); } - const thumbnailUploadURL = await this.getUploadURL(); + const thumbnailUploadURL = uploadURLs.pop(); thumbnailObjectKey = await this.putFile( thumbnailUploadURL, file.thumbnail.encryptedData as Uint8Array, @@ -1042,6 +1043,26 @@ class UploadService { } } } + private async fetchUploadURLSeparately(): Promise<[UploadURL, UploadURL]> { + try { + const token = getToken(); + if (!token) { + return; + } + const response = await HTTPService.get( + `${ENDPOINT}/files/upload-urls`, + { + count: 2, + }, + { 'X-Auth-Token': token } + ); + + return response.data['urls']; + } catch (e) { + console.log('failed to fetch url '); + throw e; + } + } } export default new UploadService();