fix: Shows informative error on UI when file upload limit is reached (#2961)
This commit is contained in:
committed by
GitHub
parent
5d1f6ca963
commit
844b7a7a2b
@@ -134,7 +134,7 @@ export class FetchRequestHandler implements RequestHandlerInterface {
|
|||||||
response.data.error = {
|
response.data.error = {
|
||||||
message: ErrorMessage.RateLimited,
|
message: ErrorMessage.RateLimited,
|
||||||
}
|
}
|
||||||
} else {
|
} else if (!response.data.error.message) {
|
||||||
response.data.error.message = ErrorMessage.RateLimited
|
response.data.error.message = ErrorMessage.RateLimited
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ export interface FilesApiInterface {
|
|||||||
encryptedBytes: Uint8Array,
|
encryptedBytes: Uint8Array,
|
||||||
): Promise<boolean>
|
): Promise<boolean>
|
||||||
|
|
||||||
closeUploadSession(valetToken: string, ownershipType: FileOwnershipType): Promise<boolean>
|
closeUploadSession(valetToken: string, ownershipType: FileOwnershipType): Promise<boolean | ClientDisplayableError>
|
||||||
|
|
||||||
downloadFile(params: DownloadFileParams): Promise<ClientDisplayableError | undefined>
|
downloadFile(params: DownloadFileParams): Promise<ClientDisplayableError | undefined>
|
||||||
|
|
||||||
|
|||||||
@@ -227,7 +227,11 @@ export class FileService extends AbstractService implements FilesClientInterface
|
|||||||
vault && vault.isSharedVaultListing() ? 'shared-vault' : 'user',
|
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')
|
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',
|
operation.vault && operation.vault.isSharedVaultListing() ? 'shared-vault' : 'user',
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if (uploadSessionClosed instanceof ClientDisplayableError) {
|
||||||
|
return uploadSessionClosed
|
||||||
|
}
|
||||||
|
|
||||||
if (!uploadSessionClosed) {
|
if (!uploadSessionClosed) {
|
||||||
return new ClientDisplayableError('Could not close upload session')
|
return new ClientDisplayableError('Could not close upload session')
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -821,7 +821,10 @@ export class LegacyApiService
|
|||||||
return response.data.success
|
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(
|
const url = joinPaths(
|
||||||
this.getFilesHost(),
|
this.getFilesHost(),
|
||||||
ownershipType === 'user' ? Paths.v1.closeUploadSession : Paths.v1.closeSharedVaultUploadSession,
|
ownershipType === 'user' ? Paths.v1.closeUploadSession : Paths.v1.closeSharedVaultUploadSession,
|
||||||
@@ -835,7 +838,7 @@ export class LegacyApiService
|
|||||||
})
|
})
|
||||||
|
|
||||||
if (isErrorResponse(response)) {
|
if (isErrorResponse(response)) {
|
||||||
return false
|
return ClientDisplayableError.FromNetworkError(response)
|
||||||
}
|
}
|
||||||
|
|
||||||
return response.data.success
|
return response.data.success
|
||||||
|
|||||||
@@ -524,9 +524,9 @@ export class FilesController extends AbstractViewController<FilesControllerEvent
|
|||||||
if (operation instanceof ClientDisplayableError) {
|
if (operation instanceof ClientDisplayableError) {
|
||||||
addToast({
|
addToast({
|
||||||
type: ToastType.Error,
|
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
|
const initialProgress = operation.getProgress().percentComplete
|
||||||
@@ -595,7 +595,7 @@ export class FilesController extends AbstractViewController<FilesControllerEvent
|
|||||||
type: ToastType.Error,
|
type: ToastType.Error,
|
||||||
message: uploadedFile.text,
|
message: uploadedFile.text,
|
||||||
})
|
})
|
||||||
throw new Error(uploadedFile.text)
|
return undefined
|
||||||
}
|
}
|
||||||
|
|
||||||
if (onUploadFinish) {
|
if (onUploadFinish) {
|
||||||
|
|||||||
Reference in New Issue
Block a user