diff --git a/packages/api/src/Domain/Http/FetchRequestHandler.ts b/packages/api/src/Domain/Http/FetchRequestHandler.ts index 1b44e2450..da77b8f1d 100644 --- a/packages/api/src/Domain/Http/FetchRequestHandler.ts +++ b/packages/api/src/Domain/Http/FetchRequestHandler.ts @@ -134,7 +134,7 @@ export class FetchRequestHandler implements RequestHandlerInterface { response.data.error = { message: ErrorMessage.RateLimited, } - } else { + } else if (!response.data.error.message) { response.data.error.message = ErrorMessage.RateLimited } } diff --git a/packages/files/src/Domain/Api/FilesApiInterface.ts b/packages/files/src/Domain/Api/FilesApiInterface.ts index f09c72785..fe87e340b 100644 --- a/packages/files/src/Domain/Api/FilesApiInterface.ts +++ b/packages/files/src/Domain/Api/FilesApiInterface.ts @@ -26,7 +26,7 @@ export interface FilesApiInterface { encryptedBytes: Uint8Array, ): Promise - closeUploadSession(valetToken: string, ownershipType: FileOwnershipType): Promise + closeUploadSession(valetToken: string, ownershipType: FileOwnershipType): Promise downloadFile(params: DownloadFileParams): Promise diff --git a/packages/services/src/Domain/Files/FileService.ts b/packages/services/src/Domain/Files/FileService.ts index 10d4d04b5..219e4788d 100644 --- a/packages/services/src/Domain/Files/FileService.ts +++ b/packages/services/src/Domain/Files/FileService.ts @@ -227,7 +227,11 @@ export class FileService extends AbstractService implements FilesClientInterface vault && vault.isSharedVaultListing() ? 'shared-vault' : 'user', ) - if (isErrorResponse(uploadSessionStarted) || !uploadSessionStarted.data.uploadId) { + if (isErrorResponse(uploadSessionStarted)) { + return ClientDisplayableError.FromNetworkError(uploadSessionStarted) + } + + if (!uploadSessionStarted.data.uploadId) { return new ClientDisplayableError('Could not start upload session') } @@ -259,6 +263,10 @@ export class FileService extends AbstractService implements FilesClientInterface operation.vault && operation.vault.isSharedVaultListing() ? 'shared-vault' : 'user', ) + if (uploadSessionClosed instanceof ClientDisplayableError) { + return uploadSessionClosed + } + if (!uploadSessionClosed) { return new ClientDisplayableError('Could not close upload session') } diff --git a/packages/snjs/lib/Services/Api/ApiService.ts b/packages/snjs/lib/Services/Api/ApiService.ts index 92347c6b0..ca259c8a5 100644 --- a/packages/snjs/lib/Services/Api/ApiService.ts +++ b/packages/snjs/lib/Services/Api/ApiService.ts @@ -821,7 +821,10 @@ export class LegacyApiService return response.data.success } - public async closeUploadSession(valetToken: string, ownershipType: FileOwnershipType): Promise { + public async closeUploadSession( + valetToken: string, + ownershipType: FileOwnershipType, + ): Promise { const url = joinPaths( this.getFilesHost(), ownershipType === 'user' ? Paths.v1.closeUploadSession : Paths.v1.closeSharedVaultUploadSession, @@ -835,7 +838,7 @@ export class LegacyApiService }) if (isErrorResponse(response)) { - return false + return ClientDisplayableError.FromNetworkError(response) } return response.data.success diff --git a/packages/web/src/javascripts/Controllers/FilesController.ts b/packages/web/src/javascripts/Controllers/FilesController.ts index 91f6f2d03..d33843df9 100644 --- a/packages/web/src/javascripts/Controllers/FilesController.ts +++ b/packages/web/src/javascripts/Controllers/FilesController.ts @@ -524,9 +524,9 @@ export class FilesController extends AbstractViewController