diff options
| author | Hunternif <hunternif@gmail.com> | 2019-04-10 21:25:15 +0700 |
|---|---|---|
| committer | Hunternif <hunternif@gmail.com> | 2019-04-10 22:15:30 +0700 |
| commit | 8904d6c9d83af79c67f4dc8da56bba844298782f (patch) | |
| tree | 430936387b740ce6dfa3c852b8a30b10530450ac /client/js/controllers/post_upload_controller.js | |
| parent | 9c1db76434312c3dcfcb8b075cd79fd8a7e5fd12 (diff) | |
client/upload: add checkboxes to copy common tags to existing posts
Diffstat (limited to 'client/js/controllers/post_upload_controller.js')
| -rw-r--r-- | client/js/controllers/post_upload_controller.js | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/client/js/controllers/post_upload_controller.js b/client/js/controllers/post_upload_controller.js index ccd6f94..4868042 100644 --- a/client/js/controllers/post_upload_controller.js +++ b/client/js/controllers/post_upload_controller.js @@ -59,7 +59,7 @@ class PostUploadController { e.detail.uploadables.reduce( (promise, uploadable) => promise.then(() => this._uploadSinglePost( - uploadable, e.detail.skipDuplicates)), + uploadable, e.detail.skipDuplicates, e.detail.copyTagsToOriginals)), Promise.resolve()) .then(() => { this._view.clearMessages(); @@ -86,7 +86,7 @@ class PostUploadController { }); } - _uploadSinglePost(uploadable, skipDuplicates) { + _uploadSinglePost(uploadable, skipDuplicates, copyTagsToOriginals) { progress.start(); let reverseSearchPromise = Promise.resolve(); if (!uploadable.lookalikesConfirmed) { @@ -99,13 +99,18 @@ class PostUploadController { if (searchResult) { // notify about exact duplicate if (searchResult.exactPost) { - if (skipDuplicates) { + if (copyTagsToOriginals) { + return this._copyTagsToOriginalAndSave(uploadable, searchResult.exactPost); + } else if (skipDuplicates) { this._view.removeUploadable(uploadable); return Promise.resolve(); } else { let error = new Error('Post already uploaded ' + `(@${searchResult.exactPost.id})`); error.uploadable = uploadable; + error.similarPosts = [ + {distance: 0, post: searchResult.exactPost} + ]; return Promise.reject(error); } } @@ -119,6 +124,8 @@ class PostUploadController { error.similarPosts = searchResult.similarPosts; return Promise.reject(error); } + } else if (uploadable.foundOriginal) { + return this._copyTagsToOriginalAndSave(uploadable, uploadable.foundOriginal); } // no duplicates, proceed with saving @@ -153,6 +160,17 @@ class PostUploadController { post.newContent = uploadable.url || uploadable.file; return post; } + + _copyTagsToOriginalAndSave(uploadable, original) { + uploadable.tags.map(tag => original.tags.addByName(tag)); + let savePromise = original.save() + .then(() => { + this._view.removeUploadable(uploadable); + return Promise.resolve(); + }); + this._lastCancellablePromise = savePromise; + return savePromise; + } } module.exports = router => { |