瀏覽代碼

fix: graphql error notifications

Nicolas Giard 6 年之前
父節點
當前提交
959f2ebde1

+ 27 - 23
client/components/admin/admin-auth.vue

@@ -204,29 +204,33 @@ export default {
     },
     async save() {
       this.$store.commit(`loadingStart`, 'admin-auth-savestrategies')
-      await this.$apollo.mutate({
-        mutation: strategiesSaveMutation,
-        variables: {
-          config: {
-            audience: this.jwtAudience,
-            tokenExpiration: this.jwtExpiration,
-            tokenRenewal: this.jwtRenewablePeriod
-          },
-          strategies: this.strategies.map(str => _.pick(str, [
-            'isEnabled',
-            'key',
-            'config',
-            'selfRegistration',
-            'domainWhitelist',
-            'autoEnrollGroups'
-          ])).map(str => ({...str, config: str.config.map(cfg => ({...cfg, value: JSON.stringify({ v: cfg.value.value })}))}))
-        }
-      })
-      this.$store.commit('showNotification', {
-        message: 'Authentication configuration saved successfully.',
-        style: 'success',
-        icon: 'check'
-      })
+      try {
+        await this.$apollo.mutate({
+          mutation: strategiesSaveMutation,
+          variables: {
+            config: {
+              audience: this.jwtAudience,
+              tokenExpiration: this.jwtExpiration,
+              tokenRenewal: this.jwtRenewablePeriod
+            },
+            strategies: this.strategies.map(str => _.pick(str, [
+              'isEnabled',
+              'key',
+              'config',
+              'selfRegistration',
+              'domainWhitelist',
+              'autoEnrollGroups'
+            ])).map(str => ({...str, config: str.config.map(cfg => ({...cfg, value: JSON.stringify({ v: cfg.value.value })}))}))
+          }
+        })
+        this.$store.commit('showNotification', {
+          message: 'Authentication configuration saved successfully.',
+          style: 'success',
+          icon: 'check'
+        })
+      } catch (err) {
+        this.$store.commit('pushGraphError', err)
+      }
       this.$store.commit(`loadingStop`, 'admin-auth-savestrategies')
     }
   },

+ 1 - 5
client/components/admin/admin-general.vue

@@ -229,11 +229,7 @@ export default {
         this.siteTitle = this.config.title
         this.company = this.config.company
       } catch (err) {
-        this.$store.commit('showNotification', {
-          style: 'red',
-          message: err.message,
-          icon: 'warning'
-        })
+        this.$store.commit('pushGraphError', err)
       }
     }
   },

+ 2 - 10
client/components/admin/admin-groups-edit.vue

@@ -93,11 +93,7 @@ export default {
           icon: 'check'
         })
       } catch (err) {
-        this.$store.commit('showNotification', {
-          style: 'red',
-          message: err.message,
-          icon: 'warning'
-        })
+        this.$store.commit('pushGraphError', err)
       }
     },
     async deleteGroup() {
@@ -119,11 +115,7 @@ export default {
         })
         this.$router.replace('/groups')
       } catch (err) {
-        this.$store.commit('showNotification', {
-          style: 'red',
-          message: err.message,
-          icon: 'warning'
-        })
+        this.$store.commit('pushGraphError', err)
       }
     },
     async refresh() {

+ 1 - 5
client/components/admin/admin-groups.vue

@@ -149,11 +149,7 @@ export default {
           icon: 'check'
         })
       } catch (err) {
-        this.$store.commit('showNotification', {
-          style: 'red',
-          message: err.message,
-          icon: 'warning'
-        })
+        this.$store.commit('pushGraphError', err)
       }
     }
   },

+ 1 - 5
client/components/admin/admin-mail.vue

@@ -180,11 +180,7 @@ export default {
           icon: 'check'
         })
       } catch (err) {
-        this.$store.commit('showNotification', {
-          style: 'red',
-          message: err.message,
-          icon: 'warning'
-        })
+        this.$store.commit('pushGraphError', err)
       }
     }
   },

+ 1 - 5
client/components/admin/admin-navigation.vue

@@ -214,11 +214,7 @@ export default {
           throw new Error(_.get(resp, 'data.navigation.updateTree.responseResult.message', 'An unexpected error occured.'))
         }
       } catch (err) {
-        this.$store.commit('showNotification', {
-          message: err.message,
-          style: 'red',
-          icon: 'warning'
-        })
+        this.$store.commit('pushGraphError', err)
       }
       this.$store.commit(`loadingStop`, 'admin-navigation-save')
     },

+ 1 - 5
client/components/admin/admin-theme.vue

@@ -146,11 +146,7 @@ export default {
           throw new Error(resp.message)
         }
       } catch (err) {
-        this.$store.commit('showNotification', {
-          message: `Error: ${err.message}`,
-          style: 'error',
-          icon: 'warning'
-        })
+        this.$store.commit('pushGraphError', err)
       }
       this.$store.commit(`loadingStop`, 'admin-theme-save')
       this.loading = false

+ 7 - 0
client/store/index.js

@@ -47,6 +47,13 @@ export default new Vuex.Store({
     },
     updateNotificationState (state, newState) {
       state.notification.isActive = newState
+    },
+    pushGraphError (state, err) {
+      WIKI.$store.commit('showNotification', {
+        style: 'red',
+        message: _.get(err, 'graphQLErrors[0].message', err.message),
+        icon: 'warning'
+      })
     }
   },
   actions: { },

+ 1 - 0
server/graph/resolvers/group.js

@@ -1,5 +1,6 @@
 const graphHelper = require('../../helpers/graph')
 const safeRegex = require('safe-regex')
+const _ = require('lodash')
 
 /* global WIKI */