From 55826bb8c9cdc2dffb409e51a3fc1eed967da99b Mon Sep 17 00:00:00 2001 From: kolaente Date: Sat, 8 Jan 2022 15:44:33 +0100 Subject: [PATCH] fix: make sure the app is fully ready before trying to redirect to the login page --- src/components/misc/ready.vue | 13 ++++++++++++- src/router/index.ts | 6 +----- src/store/index.js | 3 +-- 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/src/components/misc/ready.vue b/src/components/misc/ready.vue index 07ee0ffa..fd5fe92d 100644 --- a/src/components/misc/ready.vue +++ b/src/components/misc/ready.vue @@ -52,6 +52,12 @@ import NoAuthWrapper from '@/components/misc/no-auth-wrapper.vue' import {ERROR_NO_API_URL} from '@/helpers/checkAndSetApiUrl' import {useOnline} from '@/composables/useOnline' +import {useRouter, useRoute} from 'vue-router' +import {checkAuth} from '@/router' + +const router = useRouter() +const route = useRoute() + const store = useStore() const ready = computed(() => store.state.vikunjaReady) @@ -63,7 +69,12 @@ const showLoading = computed(() => !ready.value && error.value === '') async function load() { try { await store.dispatch('loadApp') - } catch(e: any) { + const redirectTo = checkAuth(route) + if (typeof redirectTo !== 'undefined') { + await router.push(redirectTo) + } + store.commit('vikunjaReady', true) + } catch (e: any) { error.value = e } } diff --git a/src/router/index.ts b/src/router/index.ts index 7b28a509..3f999c70 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -575,11 +575,7 @@ const router = createRouter({ ], }) -router.beforeEach((to) => { - return checkAuth(to) -}) - -function checkAuth(route: RouteLocation) { +export function checkAuth(route: RouteLocation) { const authUser = store.getters['auth/authUser'] const authLinkShare = store.getters['auth/authLinkShare'] diff --git a/src/store/index.js b/src/store/index.js index 37c74ae8..2b4663bf 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -136,10 +136,9 @@ export const store = createStore({ commit(CURRENT_LIST, currentList) }, - async loadApp({commit, dispatch}) { + async loadApp({dispatch}) { await checkAndSetApiUrl(window.API_URL) await dispatch('auth/checkAuth') - commit('vikunjaReady', true) }, }, })