fix: Shows informative error on UI when file upload limit is reached (#2961)

This commit is contained in:
Antonella Sgarlatta 2025-12-18 09:49:27 -03:00 committed by GitHub
parent 5d1f6ca963
commit 844b7a7a2b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 19 additions and 8 deletions

View file

@ -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
}
}

View file

@ -26,7 +26,7 @@ export interface FilesApiInterface {
encryptedBytes: Uint8Array,
): Promise<boolean>
closeUploadSession(valetToken: string, ownershipType: FileOwnershipType): Promise<boolean>
closeUploadSession(valetToken: string, ownershipType: FileOwnershipType): Promise<boolean | ClientDisplayableError>
downloadFile(params: DownloadFileParams): Promise<ClientDisplayableError | undefined>

View file

@ -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')
}

View file

@ -821,7 +821,10 @@ export class LegacyApiService
return response.data.success
}
public async closeUploadSession(valetToken: string, ownershipType: FileOwnershipType): Promise<boolean> {
public async closeUploadSession(
valetToken: string,
ownershipType: FileOwnershipType,
): Promise<boolean | ClientDisplayableError> {
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

View file

@ -524,9 +524,9 @@ export class FilesController extends AbstractViewController<FilesControllerEvent
if (operation instanceof ClientDisplayableError) {
addToast({
type: ToastType.Error,
message: 'Unable to start upload session',
message: operation.text,
})
throw new Error('Unable to start upload session')
return undefined
}
const initialProgress = operation.getProgress().percentComplete
@ -595,7 +595,7 @@ export class FilesController extends AbstractViewController<FilesControllerEvent
type: ToastType.Error,
message: uploadedFile.text,
})
throw new Error(uploadedFile.text)
return undefined
}
if (onUploadFinish) {