Parse storage quota exceeded errors
This commit is contained in:
parent
73d3012635
commit
417e83987c
3 changed files with 85 additions and 31 deletions
|
@ -98,6 +98,9 @@ class SyncService {
|
|||
} on NoActiveSubscriptionError {
|
||||
Bus.instance.fire(SyncStatusUpdate(SyncStatus.error,
|
||||
error: NoActiveSubscriptionError()));
|
||||
} on StorageLimitExceededError {
|
||||
Bus.instance.fire(SyncStatusUpdate(SyncStatus.error,
|
||||
error: StorageLimitExceededError()));
|
||||
} catch (e, s) {
|
||||
_logger.severe(e, s);
|
||||
Bus.instance.fire(SyncStatusUpdate(SyncStatus.error));
|
||||
|
@ -287,7 +290,7 @@ class SyncService {
|
|||
futures.add(future);
|
||||
}
|
||||
try {
|
||||
await Future.wait(futures);
|
||||
await Future.wait(futures, eagerError: true);
|
||||
} on InvalidFileError {
|
||||
// Do nothing
|
||||
} catch (e, s) {
|
||||
|
|
|
@ -138,6 +138,41 @@ class _SyncIndicatorState extends State<SyncIndicator> {
|
|||
],
|
||||
),
|
||||
);
|
||||
} else if (_event.error is StorageLimitExceededError) {
|
||||
return Container(
|
||||
child: Column(
|
||||
children: [
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: [
|
||||
Icon(
|
||||
Icons.error_outline,
|
||||
color: Theme.of(context).accentColor,
|
||||
),
|
||||
Padding(padding: EdgeInsets.all(4)),
|
||||
Text("storage quota exceeded, backups paused"),
|
||||
],
|
||||
),
|
||||
Padding(padding: EdgeInsets.all(6)),
|
||||
Container(
|
||||
width: double.infinity,
|
||||
height: 64,
|
||||
padding: const EdgeInsets.fromLTRB(80, 0, 80, 0),
|
||||
child: button("upgrade", onPressed: () {
|
||||
Navigator.of(context).push(
|
||||
MaterialPageRoute(
|
||||
builder: (BuildContext context) {
|
||||
return SubscriptionPage();
|
||||
},
|
||||
),
|
||||
);
|
||||
}),
|
||||
),
|
||||
Padding(padding: EdgeInsets.all(8)),
|
||||
],
|
||||
),
|
||||
);
|
||||
} else {
|
||||
return Container(
|
||||
child: Column(
|
||||
|
|
|
@ -319,23 +319,30 @@ class FileUploader {
|
|||
"decryptionHeader": metadataDecryptionHeader,
|
||||
}
|
||||
};
|
||||
final response = await _dio.post(
|
||||
Configuration.instance.getHttpEndpoint() + "/files",
|
||||
options:
|
||||
Options(headers: {"X-Auth-Token": Configuration.instance.getToken()}),
|
||||
data: request,
|
||||
);
|
||||
final data = response.data;
|
||||
file.uploadedFileID = data["id"];
|
||||
file.collectionID = collectionID;
|
||||
file.updationTime = data["updationTime"];
|
||||
file.ownerID = data["ownerID"];
|
||||
file.encryptedKey = encryptedKey;
|
||||
file.keyDecryptionNonce = keyDecryptionNonce;
|
||||
file.fileDecryptionHeader = fileDecryptionHeader;
|
||||
file.thumbnailDecryptionHeader = thumbnailDecryptionHeader;
|
||||
file.metadataDecryptionHeader = metadataDecryptionHeader;
|
||||
return file;
|
||||
try {
|
||||
final response = await _dio.post(
|
||||
Configuration.instance.getHttpEndpoint() + "/files",
|
||||
options: Options(
|
||||
headers: {"X-Auth-Token": Configuration.instance.getToken()}),
|
||||
data: request,
|
||||
);
|
||||
final data = response.data;
|
||||
file.uploadedFileID = data["id"];
|
||||
file.collectionID = collectionID;
|
||||
file.updationTime = data["updationTime"];
|
||||
file.ownerID = data["ownerID"];
|
||||
file.encryptedKey = encryptedKey;
|
||||
file.keyDecryptionNonce = keyDecryptionNonce;
|
||||
file.fileDecryptionHeader = fileDecryptionHeader;
|
||||
file.thumbnailDecryptionHeader = thumbnailDecryptionHeader;
|
||||
file.metadataDecryptionHeader = metadataDecryptionHeader;
|
||||
return file;
|
||||
} on DioError catch (e) {
|
||||
if (e.response.statusCode == 426) {
|
||||
throw StorageLimitExceededError();
|
||||
}
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
Future<File> _updateFile(
|
||||
|
@ -362,19 +369,26 @@ class FileUploader {
|
|||
"decryptionHeader": metadataDecryptionHeader,
|
||||
}
|
||||
};
|
||||
final response = await _dio.post(
|
||||
Configuration.instance.getHttpEndpoint() + "/files",
|
||||
options:
|
||||
Options(headers: {"X-Auth-Token": Configuration.instance.getToken()}),
|
||||
data: request,
|
||||
);
|
||||
final data = response.data;
|
||||
file.uploadedFileID = data["id"];
|
||||
file.updationTime = data["updationTime"];
|
||||
file.fileDecryptionHeader = fileDecryptionHeader;
|
||||
file.thumbnailDecryptionHeader = thumbnailDecryptionHeader;
|
||||
file.metadataDecryptionHeader = metadataDecryptionHeader;
|
||||
return file;
|
||||
try {
|
||||
final response = await _dio.post(
|
||||
Configuration.instance.getHttpEndpoint() + "/files",
|
||||
options: Options(
|
||||
headers: {"X-Auth-Token": Configuration.instance.getToken()}),
|
||||
data: request,
|
||||
);
|
||||
final data = response.data;
|
||||
file.uploadedFileID = data["id"];
|
||||
file.updationTime = data["updationTime"];
|
||||
file.fileDecryptionHeader = fileDecryptionHeader;
|
||||
file.thumbnailDecryptionHeader = thumbnailDecryptionHeader;
|
||||
file.metadataDecryptionHeader = metadataDecryptionHeader;
|
||||
return file;
|
||||
} on DioError catch (e) {
|
||||
if (e.response.statusCode == 426) {
|
||||
throw StorageLimitExceededError();
|
||||
}
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
Future<UploadURL> _getUploadURL() async {
|
||||
|
@ -460,3 +474,5 @@ class WiFiUnavailableError extends Error {}
|
|||
class SyncStopRequestedError extends Error {}
|
||||
|
||||
class NoActiveSubscriptionError extends Error {}
|
||||
|
||||
class StorageLimitExceededError extends Error {}
|
||||
|
|
Loading…
Add table
Reference in a new issue