From 2d6d9f30e1dc8e902ecaa9a9f6e2a4a6a73b6fe9 Mon Sep 17 00:00:00 2001 From: Oni-Men Date: Wed, 28 Aug 2019 08:00:05 +0900 Subject: ページURLが他と重複してたらエラーを投げるように (#5354) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * [Page]nameが重複したときの処理を追加 * page-editor側のerr.idにuuidを適用 * refactor * uuidをわけた --- .../common/views/pages/page-editor/page-editor.vue | 54 +++++++++++++--------- 1 file changed, 31 insertions(+), 23 deletions(-) (limited to 'src/client') diff --git a/src/client/app/common/views/pages/page-editor/page-editor.vue b/src/client/app/common/views/pages/page-editor/page-editor.vue index b29bbd4d35..b8db59da41 100644 --- a/src/client/app/common/views/pages/page-editor/page-editor.vue +++ b/src/client/app/common/views/pages/page-editor/page-editor.vue @@ -220,37 +220,38 @@ export default Vue.extend({ methods: { save() { + const options = { + title: this.title.trim(), + name: this.name.trim(), + summary: this.summary, + font: this.font, + hideTitleWhenPinned: this.hideTitleWhenPinned, + alignCenter: this.alignCenter, + content: this.content, + variables: this.variables, + eyeCatchingImageId: this.eyeCatchingImageId, + }; + if (this.pageId) { - this.$root.api('pages/update', { - pageId: this.pageId, - title: this.title.trim(), - name: this.name.trim(), - summary: this.summary, - font: this.font, - hideTitleWhenPinned: this.hideTitleWhenPinned, - alignCenter: this.alignCenter, - content: this.content, - variables: this.variables, - eyeCatchingImageId: this.eyeCatchingImageId, - }).then(page => { + options.pageId = this.pageId; + this.$root.api('pages/update', options) + .then(page => { this.currentName = this.name.trim(); this.$root.dialog({ type: 'success', text: this.$t('page-updated') }); + }).catch(err => { + if(err.id == '2298a392-d4a1-44c5-9ebb-ac1aeaa5a9ab'){ + this.$root.dialog({ + type: 'error', + text: this.$t('name-already-exists') + }); + } }); } else { - this.$root.api('pages/create', { - title: this.title.trim(), - name: this.name.trim(), - summary: this.summary, - font: this.font, - hideTitleWhenPinned: this.hideTitleWhenPinned, - alignCenter: this.alignCenter, - content: this.content, - variables: this.variables, - eyeCatchingImageId: this.eyeCatchingImageId, - }).then(page => { + this.$root.api('pages/create', options) + .then(page => { this.pageId = page.id; this.currentName = this.name.trim(); this.$root.dialog({ @@ -258,6 +259,13 @@ export default Vue.extend({ text: this.$t('page-created') }); this.$router.push(`/i/pages/edit/${this.pageId}`); + }).catch(err => { + if(err.id == '4650348e-301c-499a-83c9-6aa988c66bc1'){ + this.$root.dialog({ + type: 'error', + text: this.$t('name-already-exists') + }); + } }); } }, -- cgit v1.2.3-freya