mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-08-01 17:39:55 +08:00
fix(nbstore): improve blob size error handling with human-readable limit (#12027)
Closes: [BS-3332](https://linear.app/affine-design/issue/BS-3332/错误信息) <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - **Bug Fixes** - Improved error messages when file uploads exceed the allowed size, now showing the maximum file size limit in a human-readable format. - Enhanced status updates for oversized files by displaying clear error messages during blob uploads. - **Style** - Error messages for file size limits are now more user-friendly and informative. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
This commit is contained in:
@@ -95,7 +95,7 @@ export class CloudBlobStorage extends BlobStorageBase {
|
||||
try {
|
||||
const blobSizeLimit = await this.getBlobSizeLimit();
|
||||
if (blob.data.byteLength > blobSizeLimit) {
|
||||
throw new OverSizeError();
|
||||
throw new OverSizeError(this.humanReadableBlobSizeLimitCache);
|
||||
}
|
||||
await this.connection.gql({
|
||||
query: setBlobMutation,
|
||||
@@ -113,10 +113,10 @@ export class CloudBlobStorage extends BlobStorageBase {
|
||||
throw new OverCapacityError();
|
||||
}
|
||||
if (userFriendlyError.is('BLOB_QUOTA_EXCEEDED')) {
|
||||
throw new OverSizeError();
|
||||
throw new OverSizeError(this.humanReadableBlobSizeLimitCache);
|
||||
}
|
||||
if (userFriendlyError.is('CONTENT_TOO_LARGE')) {
|
||||
throw new OverSizeError();
|
||||
throw new OverSizeError(this.humanReadableBlobSizeLimitCache);
|
||||
}
|
||||
throw err;
|
||||
}
|
||||
@@ -148,6 +148,7 @@ export class CloudBlobStorage extends BlobStorageBase {
|
||||
}));
|
||||
}
|
||||
|
||||
private humanReadableBlobSizeLimitCache: string | null = null;
|
||||
private blobSizeLimitCache: number | null = null;
|
||||
private blobSizeLimitCacheTime = 0;
|
||||
private async getBlobSizeLimit() {
|
||||
@@ -164,6 +165,8 @@ export class CloudBlobStorage extends BlobStorageBase {
|
||||
variables: { id: this.options.id },
|
||||
});
|
||||
|
||||
this.humanReadableBlobSizeLimitCache =
|
||||
res.workspace.quota.humanReadable.blobLimit;
|
||||
this.blobSizeLimitCache = res.workspace.quota.blobLimit;
|
||||
this.blobSizeLimitCacheTime = Date.now();
|
||||
return this.blobSizeLimitCache;
|
||||
|
||||
@@ -16,7 +16,7 @@ export class HttpConnection extends DummyConnection {
|
||||
|
||||
const timeout = 15000;
|
||||
const timeoutId = setTimeout(() => {
|
||||
abortController.abort('timeout');
|
||||
abortController.abort(new Error('request timeout'));
|
||||
}, timeout);
|
||||
|
||||
const res = await globalThis
|
||||
|
||||
Reference in New Issue
Block a user