diff options
| author | rr- <rr-@sakuya.pl> | 2016-09-29 21:36:59 +0200 |
|---|---|---|
| committer | rr- <rr-@sakuya.pl> | 2016-09-29 21:55:20 +0200 |
| commit | 7862fecbc990a580970aaeef9de5667da268cc9f (patch) | |
| tree | 2fa6cac7d3bbda913d10db8328f93cf37d9cbf13 /client/js/controllers/post_upload_controller.js | |
| parent | 049a0dc351db6a16c20cc23e8d63303e49b38bad (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.js | 13 |
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(); |