Bladeren bron

Merge pull request #40 from ente-io/handle_file_too_large_err

Vishnu Mohandas 3 jaren geleden
bovenliggende
commit
ed50f0bb79
2 gewijzigde bestanden met toevoegingen van 9 en 2 verwijderingen
  1. 3 0
      lib/core/errors.dart
  2. 6 2
      lib/utils/file_uploader.dart

+ 3 - 0
lib/core/errors.dart

@@ -14,6 +14,9 @@ class NoActiveSubscriptionError extends Error {}
 
 class StorageLimitExceededError extends Error {}
 
+// error when file size + current usage >= storage plan limit + buffer
+class FileTooLargeForPlanError extends Error {}
+
 class SilentlyCancelUploadsError extends Error {}
 
 class UserCancelledUploadError extends Error {}

+ 6 - 2
lib/utils/file_uploader.dart

@@ -383,7 +383,9 @@ class FileUploader {
       _logger.info("File upload complete for " + remoteFile.toString());
       return remoteFile;
     } catch (e, s) {
-      if (!(e is NoActiveSubscriptionError || e is StorageLimitExceededError)) {
+      if (!(e is NoActiveSubscriptionError ||
+          e is StorageLimitExceededError ||
+          e is FileTooLargeForPlanError)) {
         _logger.severe("File upload failed for " + file.toString(), e, s);
       }
       rethrow;
@@ -465,7 +467,9 @@ class FileUploader {
       file.metadataDecryptionHeader = metadataDecryptionHeader;
       return file;
     } on DioError catch (e) {
-      if (e.response?.statusCode == 426) {
+      if (e.response?.statusCode == 413) {
+        throw FileTooLargeForPlanError();
+      } else if (e.response?.statusCode == 426) {
         _onStorageLimitExceeded();
       } else if (attempt < kMaximumUploadAttempts) {
         _logger.info("Upload file failed, will retry in 3 seconds");