summaryrefslogtreecommitdiff
path: root/client/js/controllers/post_upload_controller.js
diff options
context:
space:
mode:
authorRuin0x11 <ipickering2@gmail.com>2021-05-07 23:02:59 -0700
committerRuin0x11 <ipickering2@gmail.com>2021-05-07 23:02:59 -0700
commitf4ca435657ae3882ce28fb3f427f9e0874733282 (patch)
tree2c403de2cecd986da5f8f3ee33c8071e0abda9b3 /client/js/controllers/post_upload_controller.js
parentca771495979b035ac670b850b10239b6e4f10dcc (diff)
If one post fails to upload, don't prevent the rest from uploading
Diffstat (limited to 'client/js/controllers/post_upload_controller.js')
-rw-r--r--client/js/controllers/post_upload_controller.js57
1 files changed, 32 insertions, 25 deletions
diff --git a/client/js/controllers/post_upload_controller.js b/client/js/controllers/post_upload_controller.js
index d317be5..cfebb0a 100644
--- a/client/js/controllers/post_upload_controller.js
+++ b/client/js/controllers/post_upload_controller.js
@@ -12,7 +12,7 @@ const PostUploadView = require("../views/post_upload_view.js");
const EmptyView = require("../views/empty_view.js");
const genericErrorMessage =
- "One of the posts needs your attention; " +
+ "One or more posts needs your attention; " +
'click "resume upload" when you\'re ready.';
class PostUploadController {
@@ -55,6 +55,7 @@ class PostUploadController {
_evtSubmit(e) {
this._view.disableForm();
this._view.clearMessages();
+ let anyFailures = false;
e.detail.uploadables
.reduce(
@@ -64,37 +65,43 @@ class PostUploadController {
uploadable,
e.detail.skipDuplicates
)
+ .catch((error) => {
+ anyFailures = true;
+ if (error.uploadable) {
+ if (error.similarPosts) {
+ error.uploadable.lookalikes = error.similarPosts;
+ this._view.updateUploadable(error.uploadable);
+ this._view.showInfo(
+ error.message,
+ error.uploadable
+ );
+ } else {
+ this._view.showError(
+ error.message,
+ error.uploadable
+ );
+ }
+ } else {
+ this._view.showError(
+ error.message,
+ error.uploadable
+ );
+ }
+ })
),
Promise.resolve()
)
.then(
() => {
- this._view.clearMessages();
- misc.disableExitConfirmation();
- const ctx = router.show(uri.formatClientLink("posts"));
- ctx.controller.showSuccess("Posts uploaded.");
- },
- (error) => {
- if (error.uploadable) {
- if (error.similarPosts) {
- error.uploadable.lookalikes = error.similarPosts;
- this._view.updateUploadable(error.uploadable);
- this._view.showInfo(genericErrorMessage);
- this._view.showInfo(
- error.message,
- error.uploadable
- );
- } else {
- this._view.showError(genericErrorMessage);
- this._view.showError(
- error.message,
- error.uploadable
- );
- }
+ if (anyFailures) {
+ this._view.showError(genericErrorMessage);
+ this._view.enableForm();
} else {
- this._view.showError(error.message);
+ this._view.clearMessages();
+ misc.disableExitConfirmation();
+ const ctx = router.show(uri.formatClientLink("posts"));
+ ctx.controller.showSuccess("Posts uploaded.");
}
- this._view.enableForm();
}
);
}