From 3ce6658d8df4c7370f2d5a8b497fddb9b6283083 Mon Sep 17 00:00:00 2001 From: Phil Hughes Date: Thu, 25 May 2017 11:58:40 +0100 Subject: Warn before moving issue in inline edit form [ci skip] --- .../javascripts/issue_show/components/app.vue | 10 +++++++++- .../issue_show/components/edit_actions.vue | 11 ++++++++++- app/controllers/concerns/issuable_actions.rb | 2 +- spec/javascripts/issue_show/components/app_spec.js | 22 +++++++++++++++++++++- 4 files changed, 41 insertions(+), 4 deletions(-) diff --git a/app/assets/javascripts/issue_show/components/app.vue b/app/assets/javascripts/issue_show/components/app.vue index 74614984097..9753dc49cf5 100644 --- a/app/assets/javascripts/issue_show/components/app.vue +++ b/app/assets/javascripts/issue_show/components/app.vue @@ -121,6 +121,14 @@ export default { this.showForm = false; }, updateIssuable() { + const canPostUpdate = this.store.formState.move_to_project_id !== 0 ? + confirm('Are you sure you want to move this issue to another project?') : true; // eslint-disable-line no-alert + + if (!canPostUpdate) { + eventHub.$emit('enable.submit.btn'); + return; + } + this.service.updateIssuable(this.store.formState) .then(res => res.json()) .then((data) => { @@ -149,7 +157,7 @@ export default { // Stop the poll so we don't get 404's with the issue not existing this.poll.stop(); - gl.utils.visitUrl(data.path); + gl.utils.visitUrl(data.web_url); }) .catch(() => { eventHub.$emit('close.form'); diff --git a/app/assets/javascripts/issue_show/components/edit_actions.vue b/app/assets/javascripts/issue_show/components/edit_actions.vue index e57b867f93b..df93d18774f 100644 --- a/app/assets/javascripts/issue_show/components/edit_actions.vue +++ b/app/assets/javascripts/issue_show/components/edit_actions.vue @@ -24,6 +24,9 @@ }, }, methods: { + enableSubmit() { + this.updateLoading = false; + }, updateIssuable() { this.updateLoading = true; eventHub.$emit('update.issuable'); @@ -40,6 +43,12 @@ } }, }, + created() { + eventHub.$on('enable.submit.btn', this.enableSubmit); + }, + beforeDestroy() { + eventHub.$off('enable.submit.btn', this.enableSubmit); + }, }; @@ -50,7 +59,7 @@ :class="{ disabled: updateLoading || !isSubmitEnabled }" type="submit" :disabled="updateLoading || !isSubmitEnabled" - @click="updateIssuable"> + @click.prevent="updateIssuable"> Save changes { canMove: true, endpoint: '/gitlab-org/gitlab-shell/issues/9/realtime_changes', issuableRef: '#1', - initialTitle: '', + initialTitleHtml: '', + initialTitleText: '', initialDescriptionHtml: '', initialDescriptionText: '', markdownPreviewUrl: '/', markdownDocs: '/', projectsAutocompleteUrl: '/', isConfidential: false, + projectNamespace: '/', + projectPath: '/', }, }).$mount(); }); @@ -224,6 +227,23 @@ describe('Issuable output', () => { }); }); + it('does not update issuable if project move confirm is false', (done) => { + spyOn(window, 'confirm').and.returnValue(false); + spyOn(vm.service, 'updateIssuable'); + + vm.store.formState.move_to_project_id = 1; + + vm.updateIssuable(); + + setTimeout(() => { + expect( + vm.service.updateIssuable, + ).not.toHaveBeenCalled(); + + done(); + }); + }); + it('closes form on error', (done) => { spyOn(window, 'Flash').and.callThrough(); spyOn(vm.service, 'updateIssuable').and.callFake(() => new Promise((resolve, reject) => { -- cgit v1.2.1 From 6becf288190b6883f71ae4b980db3239cd63f831 Mon Sep 17 00:00:00 2001 From: Phil Hughes Date: Fri, 26 May 2017 09:29:06 +0100 Subject: use formState to update loading of save button [ci skip] --- app/assets/javascripts/issue_show/components/app.vue | 3 ++- .../javascripts/issue_show/components/edit_actions.vue | 18 ++++-------------- app/assets/javascripts/issue_show/stores/index.js | 1 + 3 files changed, 7 insertions(+), 15 deletions(-) diff --git a/app/assets/javascripts/issue_show/components/app.vue b/app/assets/javascripts/issue_show/components/app.vue index 9753dc49cf5..ed367c780c6 100644 --- a/app/assets/javascripts/issue_show/components/app.vue +++ b/app/assets/javascripts/issue_show/components/app.vue @@ -114,6 +114,7 @@ export default { description: this.state.descriptionText, lockedWarningVisible: false, move_to_project_id: 0, + updateLoading: false, }); } }, @@ -125,7 +126,7 @@ export default { confirm('Are you sure you want to move this issue to another project?') : true; // eslint-disable-line no-alert if (!canPostUpdate) { - eventHub.$emit('enable.submit.btn'); + this.store.formState.updateLoading = false; return; } diff --git a/app/assets/javascripts/issue_show/components/edit_actions.vue b/app/assets/javascripts/issue_show/components/edit_actions.vue index df93d18774f..0750d21c15d 100644 --- a/app/assets/javascripts/issue_show/components/edit_actions.vue +++ b/app/assets/javascripts/issue_show/components/edit_actions.vue @@ -15,7 +15,6 @@ data() { return { deleteLoading: false, - updateLoading: false, }; }, computed: { @@ -24,11 +23,8 @@ }, }, methods: { - enableSubmit() { - this.updateLoading = false; - }, updateIssuable() { - this.updateLoading = true; + this.formState.updateLoading = true; eventHub.$emit('update.issuable'); }, closeForm() { @@ -43,12 +39,6 @@ } }, }, - created() { - eventHub.$on('enable.submit.btn', this.enableSubmit); - }, - beforeDestroy() { - eventHub.$off('enable.submit.btn', this.enableSubmit); - }, }; @@ -56,15 +46,15 @@