diff --git a/src/App.vue b/src/App.vue index b9f8711..94bbfbb 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,5 +1,5 @@ @@ -9,6 +9,9 @@ import { storeToRefs } from 'pinia' import { computed, watch } from 'vue' import { useRoute } from 'vue-router' import { useModalStore } from '@/store/modal' +import { useAuthStore } from '@/store/auth' +import { useGetMeQuery } from '@/services/query/auth' +import { tokenService } from '@/services/api/token-service' import AdminLayout from '@/layouts/AdminLayout.vue' import PublicLayout from '@/layouts/PublicLayout.vue' import StudentLayout from '@/layouts/StudentLayout.vue' @@ -25,6 +28,26 @@ const layouts = { const currentLayout = computed(() => layouts[route.meta?.layout] || PublicLayout) +const authStore = useAuthStore() + +const hasToken = computed(() => tokenService.hasToken()) + +const { + data: me, + isLoading: isMeLoading, + isFetched: isMeFetched, +} = useGetMeQuery({ enabled: hasToken }) + +watch( + me, + (value) => { + if (value) authStore.setUser(value) + }, + { immediate: true } +) + +const isReady = computed(() => !hasToken.value || isMeFetched.value || !isMeLoading.value) + const { modals } = storeToRefs(useModalStore()) watch( () => modals.value.length, diff --git a/src/components/form/VoiceRecorder.vue b/src/components/form/VoiceRecorder.vue index d13ab3b..45ce784 100644 --- a/src/components/form/VoiceRecorder.vue +++ b/src/components/form/VoiceRecorder.vue @@ -46,7 +46,7 @@