fix storage upload issue

This commit is contained in:
2021-01-23 17:29:06 +06:30
parent 348e374954
commit 3aea71571a
5 changed files with 246 additions and 27 deletions

View File

@@ -253,8 +253,10 @@ class PackageModel extends BaseModel {
package.fcsID = user.fcsID;
}
if (files != null) {
if (files.length > uploadPhotoLimit)
if (files.length > uploadPhotoLimit) {
throw Exception("Exceed number of file upload");
}
package.photoUrls = package.photoUrls == null ? [] : package.photoUrls;
String path = Path.join(pkg_files_path);
List<String> urls = await uploadFiles(path, files);
@@ -262,7 +264,16 @@ class PackageModel extends BaseModel {
package.photoUrls.add(url);
});
}
return Services.instance.packageService.createReceiving(package);
try {
return Services.instance.packageService.createReceiving(package);
} catch (e) {
try {
// delete uploaded photos if create fails
deleteStorageFromUrls(package.photoUrls);
} catch (e) {}
throw e;
}
}
Future<void> updateReceiving(User user, Package package, List<File> files,
@@ -274,9 +285,9 @@ class PackageModel extends BaseModel {
for (String url in deletedUrls) {
package.photoUrls.remove(url);
}
await deleteStorageFromUrls(deletedUrls);
}
List<String> uploadedURL = [];
if (files != null) {
var count = (package.photoUrls?.length ?? 0) +
files.length -
@@ -284,14 +295,25 @@ class PackageModel extends BaseModel {
if (count > uploadPhotoLimit)
throw Exception("Exceed number of file upload");
package.photoUrls = package.photoUrls == null ? [] : package.photoUrls;
String path = Path.join(pkg_files_path);
List<String> urls = await uploadFiles(path, files);
urls.forEach((url) {
uploadedURL = await uploadFiles(path, files);
uploadedURL.forEach((url) {
package.photoUrls.add(url);
});
}
await Services.instance.packageService.updateReceiving(package);
try {
await Services.instance.packageService.updateReceiving(package);
} catch (e) {
// delete newly uploaded photos if fails
try {
deleteStorageFromUrls(uploadedURL);
package.photoUrls.removeWhere((i) => uploadedURL.contains(i));
} catch (e) {}
throw e;
}
return deleteStorageFromUrls(deletedUrls);
}
Future<void> deleteReceiving(Package package) {
@@ -304,9 +326,9 @@ class PackageModel extends BaseModel {
for (String url in deletedUrls) {
package.photoUrls.remove(url);
}
await deleteStorageFromUrls(deletedUrls);
}
List<String> uploadedURL = [];
if (files != null) {
var count = (package.photoUrls?.length ?? 0) +
files.length -
@@ -316,13 +338,23 @@ class PackageModel extends BaseModel {
throw Exception("Exceed number of file upload");
package.photoUrls = package.photoUrls == null ? [] : package.photoUrls;
String path = Path.join(pkg_files_path);
List<String> urls = await uploadFiles(path, files);
urls.forEach((url) {
uploadedURL = await uploadFiles(path, files);
uploadedURL.forEach((url) {
package.photoUrls.add(url);
});
package.photoUrls.removeWhere((e) => deletedUrls.contains(e));
}
await Services.instance.packageService.updateProcessing(package);
try {
await Services.instance.packageService.updateProcessing(package);
} catch (e) {
// delete newly uploaded photos if fails
try {
deleteStorageFromUrls(uploadedURL);
package.photoUrls.removeWhere((i) => uploadedURL.contains(i));
} catch (e) {}
throw e;
}
return deleteStorageFromUrls(deletedUrls);
}
Future<void> deleteProcessing(Package package) {