summaryrefslogtreecommitdiff
path: root/client/js/controllers/post_upload_controller.js
diff options
context:
space:
mode:
authorrr- <rr-@sakuya.pl>2016-09-29 21:36:59 +0200
committerrr- <rr-@sakuya.pl>2016-09-29 21:55:20 +0200
commit7862fecbc990a580970aaeef9de5667da268cc9f (patch)
tree2fa6cac7d3bbda913d10db8328f93cf37d9cbf13 /client/js/controllers/post_upload_controller.js
parent049a0dc351db6a16c20cc23e8d63303e49b38bad (diff)
client/posts: add upload cancelling
Diffstat (limited to 'client/js/controllers/post_upload_controller.js')
-rw-r--r--client/js/controllers/post_upload_controller.js13
1 files changed, 12 insertions, 1 deletions
diff --git a/client/js/controllers/post_upload_controller.js b/client/js/controllers/post_upload_controller.js
index c9da651..4defd5e 100644
--- a/client/js/controllers/post_upload_controller.js
+++ b/client/js/controllers/post_upload_controller.js
@@ -10,6 +10,8 @@ const EmptyView = require('../views/empty_view.js');
class PostUploadController {
constructor() {
+ this._lastPromise = null;
+
if (!api.hasPrivilege('posts:create')) {
this._view = new EmptyView();
this._view.showError('You don\'t have privileges to upload posts.');
@@ -23,6 +25,7 @@ class PostUploadController {
});
this._view.addEventListener('change', e => this._evtChange(e));
this._view.addEventListener('submit', e => this._evtSubmit(e));
+ this._view.addEventListener('cancel', e => this._evtCancel(e));
}
_evtChange(e) {
@@ -34,6 +37,12 @@ class PostUploadController {
this._view.clearMessages();
}
+ _evtCancel(e) {
+ if (this._lastPromise) {
+ this._lastPromise.abort();
+ }
+ }
+
_evtSubmit(e) {
this._view.disableForm();
this._view.clearMessages();
@@ -48,7 +57,9 @@ class PostUploadController {
} else {
post.newContent = uploadable.file;
}
- return post.save(uploadable.anonymous)
+ let modelPromise = post.save(uploadable.anonymous);
+ this._lastPromise = modelPromise;
+ return modelPromise
.then(() => {
this._view.removeUploadable(uploadable);
return Promise.resolve();