From cff81d2419b6e29e90c1dfb5f36df6579c8e0852 Mon Sep 17 00:00:00 2001 From: Ramon Wenger Date: Mon, 11 Apr 2022 15:58:08 +0200 Subject: [PATCH] Update frontend error handling for school class form --- client/src/mixins/add-school-class.js | 2 -- client/src/pages/createClass.vue | 26 ++++++++++++-------------- 2 files changed, 12 insertions(+), 16 deletions(-) diff --git a/client/src/mixins/add-school-class.js b/client/src/mixins/add-school-class.js index 18aea523..8a336b09 100644 --- a/client/src/mixins/add-school-class.js +++ b/client/src/mixins/add-school-class.js @@ -12,12 +12,10 @@ export default { ...me.schoolClasses, schoolClass ]; - // me.schoolClasses.edges const selectedClass = { id: schoolClass.id, __typename: 'SchoolClassNode' }; - //me.selectedClass const data = { me: { ...me, diff --git a/client/src/pages/createClass.vue b/client/src/pages/createClass.vue index cd55b31f..0451a3e1 100644 --- a/client/src/pages/createClass.vue +++ b/client/src/pages/createClass.vue @@ -5,6 +5,7 @@ title="Klasse erfassen" ok-text="Klasse erfassen" label-text="Name" + :error="error" cancel-text="Abbrechen" @input="updateName" @cancel="cancel" @@ -16,14 +17,13 @@ import addSchoolClassMixin from '@/mixins/add-school-class'; import CREATE_CLASS_MUTATION from '@/graphql/gql/mutations/createClass.gql'; - import MY_SCHOOL_CLASS_QUERY from '@/graphql/gql/queries/mySchoolClass'; import JoinForm from '@/components/profile/JoinForm'; export default { mixins: [addSchoolClassMixin], components: { - JoinForm + JoinForm, }, data: () => ({ @@ -35,11 +35,8 @@ updateName(event) { this.name = event.target.value; this.error = ''; - // todo: display error - throw new Error('Not Implemented'); }, createClass(name) { - let self = this; this.$apollo.mutate({ mutation: CREATE_CLASS_MUTATION, variables: { @@ -47,15 +44,16 @@ name, }, }, - update(store, {data: {createSchoolClass: {schoolClass}}}) { - self.addSchoolClass(store, schoolClass); - self.$router.push({ - name: 'my-class', - }); + update: (store, {data: {createSchoolClass: {result}}}) => { + if (result.__typename === 'DuplicateName') { + this.error = result.reason; + } else { + this.addSchoolClass(store, result); + this.$router.push({ + name: 'my-class', + }); + } }, - refetchQueries: [{ - query: MY_SCHOOL_CLASS_QUERY, - }], }); }, cancel() { @@ -66,7 +64,7 @@