release v2.0.0 #4
			
				
			
		
		
		
	|  | @ -3,7 +3,7 @@ import { Loading } from 'quasar'; | ||||||
| 
 | 
 | ||||||
| // "async" is optional;
 | // "async" is optional;
 | ||||||
| // more info on params: https://quasar.dev/quasar-cli/cli-documentation/boot-files#Anatomy-of-a-boot-file
 | // more info on params: https://quasar.dev/quasar-cli/cli-documentation/boot-files#Anatomy-of-a-boot-file
 | ||||||
| export default boot(async (/* { app, router, Vue ... } */) => { | export default boot((/* { app, router, Vue ... } */) => { | ||||||
|   Loading.setDefaults({ |   Loading.setDefaults({ | ||||||
|     spinner: () => import('src/components/loading/DarkCircularProgress.vue') |     spinner: () => import('src/components/loading/DarkCircularProgress.vue') | ||||||
|   }); |   }); | ||||||
|  |  | ||||||
|  | @ -1,5 +1,6 @@ | ||||||
| <template> | <template> | ||||||
|   <q-card class="col-12"> |   <q-card class="col-12"> | ||||||
|  |     <q-linear-progress indeterminate rounded color="primary" v-if="loading" /> | ||||||
|     <q-form @submit="save" @reset="reset"> |     <q-form @submit="save" @reset="reset"> | ||||||
|       <q-card-section class="fit row justify-start content-center items-center"> |       <q-card-section class="fit row justify-start content-center items-center"> | ||||||
|         <q-input |         <q-input | ||||||
|  | @ -81,6 +82,7 @@ | ||||||
|         /> |         /> | ||||||
|       </q-card-section> |       </q-card-section> | ||||||
|       <q-card-actions align="right"> |       <q-card-actions align="right"> | ||||||
|  |         <q-btn label="test" @click="$store.dispatch('user/getUser')" /> | ||||||
|         <q-btn label="Reset" type="reset" /> |         <q-btn label="Reset" type="reset" /> | ||||||
|         <q-btn color="primary" type="submit" label="Speichern" /> |         <q-btn color="primary" type="submit" label="Speichern" /> | ||||||
|       </q-card-actions> |       </q-card-actions> | ||||||
|  | @ -164,6 +166,12 @@ export default defineComponent({ | ||||||
|       ); |       ); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     const loading = computed(() => { | ||||||
|  |       return ( | ||||||
|  |         store.state.user.getUserLoading || store.state.user.updateUserLoading | ||||||
|  |       ); | ||||||
|  |     }); | ||||||
|  | 
 | ||||||
|     return { |     return { | ||||||
|       user, |       user, | ||||||
|       firstname, |       firstname, | ||||||
|  | @ -177,7 +185,8 @@ export default defineComponent({ | ||||||
|       isEmail, |       isEmail, | ||||||
|       notEmpty, |       notEmpty, | ||||||
|       save, |       save, | ||||||
|       reset |       reset, | ||||||
|  |       loading | ||||||
|     }; |     }; | ||||||
|   } |   } | ||||||
| }); | }); | ||||||
|  |  | ||||||
|  | @ -53,7 +53,12 @@ export default defineComponent({ | ||||||
|       console.log(sessions.value); |       console.log(sessions.value); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     const sessionsLoading = computed(() => store.state.sessions.loading); |     const sessionsLoading = computed( | ||||||
|  |       () => | ||||||
|  |         store.state.sessions.loading || | ||||||
|  |         store.state.user.getUserLoading || | ||||||
|  |         store.state.user.updateUserLoading | ||||||
|  |     ); | ||||||
| 
 | 
 | ||||||
|     return { |     return { | ||||||
|       showRootGetters, |       showRootGetters, | ||||||
|  |  | ||||||
|  | @ -7,7 +7,8 @@ import { LocalStorage, Loading } from 'quasar'; | ||||||
| import { Router } from 'src/router'; | import { Router } from 'src/router'; | ||||||
| 
 | 
 | ||||||
| export interface UserStateInterface extends LoginResponse { | export interface UserStateInterface extends LoginResponse { | ||||||
|   loginLoading: boolean; |   updateUserLoading: boolean; | ||||||
|  |   getUserLoading: boolean; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| export interface LoginResponse { | export interface LoginResponse { | ||||||
|  | @ -35,18 +36,29 @@ const empty_user: FG.User = { | ||||||
| const state: UserStateInterface = { | const state: UserStateInterface = { | ||||||
|   user: empty_user, |   user: empty_user, | ||||||
|   session: empty_session, |   session: empty_session, | ||||||
|   loginLoading: false |   updateUserLoading: false, | ||||||
|  |   getUserLoading: false | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| const mutations: MutationTree<UserStateInterface> = { | const mutations: MutationTree<UserStateInterface> = { | ||||||
|   setUser(state, data: FG.User) { |   setUser(state, data: FG.User) { | ||||||
|     state.user = data; |     state.user = data; | ||||||
|   }, |   }, | ||||||
|  |   updateUser(state, data: { [index: string]: string }) { | ||||||
|  |     Object.keys(data).forEach(key => { | ||||||
|  |       if ((<{ [index: string]: any }>state.user)[key] === data[key]) { | ||||||
|  |         (<{ [index: string]: any }>state.user)[key] = data[key]; | ||||||
|  |       } | ||||||
|  |     }); | ||||||
|  |   }, | ||||||
|   setSession(state, data: FG.Session) { |   setSession(state, data: FG.Session) { | ||||||
|     state.session = data; |     state.session = data; | ||||||
|   }, |   }, | ||||||
|   setLoginLoading(state, data: boolean) { |   setLoading( | ||||||
|     state.loginLoading = data; |     state, | ||||||
|  |     data: { key: 'updateUserLoading' | 'getUserLoading'; data: boolean } | ||||||
|  |   ) { | ||||||
|  |     state[data.key] = data.data; | ||||||
|   }, |   }, | ||||||
|   showState(state) { |   showState(state) { | ||||||
|     console.log(state); |     console.log(state); | ||||||
|  | @ -55,7 +67,6 @@ const mutations: MutationTree<UserStateInterface> = { | ||||||
| 
 | 
 | ||||||
| const actions: ActionTree<UserStateInterface, StateInterface> = { | const actions: ActionTree<UserStateInterface, StateInterface> = { | ||||||
|   login({ commit }, data: LoginData) { |   login({ commit }, data: LoginData) { | ||||||
|     commit('setLoginLoading', true); |  | ||||||
|     Loading.show({ |     Loading.show({ | ||||||
|       message: 'Du wirst eingeloggt' |       message: 'Du wirst eingeloggt' | ||||||
|     }); |     }); | ||||||
|  | @ -75,7 +86,6 @@ const actions: ActionTree<UserStateInterface, StateInterface> = { | ||||||
|         console.exception(error); |         console.exception(error); | ||||||
|       }) |       }) | ||||||
|       .finally(() => { |       .finally(() => { | ||||||
|         commit('setLoginLoading', false); |  | ||||||
|         Loading.hide(); |         Loading.hide(); | ||||||
|       }); |       }); | ||||||
|   }, |   }, | ||||||
|  | @ -101,15 +111,34 @@ const actions: ActionTree<UserStateInterface, StateInterface> = { | ||||||
|     }); |     }); | ||||||
|   }, |   }, | ||||||
| 
 | 
 | ||||||
|   updateUser({ commit, state }, data) { |   getUser({ commit, state }) { | ||||||
|     commit('setLoginLoading', true); |     commit('setLoading', { key: 'getUserLoading', data: true }); | ||||||
|  |     axios | ||||||
|  |       .get(`/users/${state.user.userid}`) | ||||||
|  |       .then((response: AxiosResponse<FG.User>) => { | ||||||
|  |         commit('setUser', response.data); | ||||||
|  |         LocalStorage.set('user', response.data); | ||||||
|  |       }) | ||||||
|  |       .catch(err => { | ||||||
|  |         console.warn(err); | ||||||
|  |       }) | ||||||
|  |       .finally(() => { | ||||||
|  |         commit('setLoading', { key: 'getUserLoading', data: false }); | ||||||
|  |       }); | ||||||
|  |   }, | ||||||
|  | 
 | ||||||
|  |   updateUser({ commit, state, dispatch }, data) { | ||||||
|  |     commit('setLoading', { key: 'updateUserLoading', data: true }); | ||||||
|     axios |     axios | ||||||
|       .put(`/users/${state.user.userid}`, data) |       .put(`/users/${state.user.userid}`, data) | ||||||
|  |       .then(() => { | ||||||
|  |         void dispatch('getUser'); | ||||||
|  |       }) | ||||||
|       .catch(error => { |       .catch(error => { | ||||||
|         console.log(error); |         console.log(error); | ||||||
|       }) |       }) | ||||||
|       .finally(() => { |       .finally(() => { | ||||||
|         commit('setLoginLoading', false); |         commit('setLoading', { key: 'updateUserLoading', data: false }); | ||||||
|       }); |       }); | ||||||
|   }, |   }, | ||||||
| 
 | 
 | ||||||
|  | @ -133,8 +162,8 @@ const getters: GetterTree<UserStateInterface, StateInterface> = { | ||||||
|   session({ session }) { |   session({ session }) { | ||||||
|     return session; |     return session; | ||||||
|   }, |   }, | ||||||
|   loginLoading({ loginLoading }) { |   loading({ updateUserLoading, getUserLoading }) { | ||||||
|     return loginLoading; |     return updateUserLoading || getUserLoading; | ||||||
|   } |   } | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue