2023-05-25 17:11:37 +02:00
|
|
|
<script setup lang="ts">
|
2023-05-26 12:25:26 +02:00
|
|
|
import { onMounted } from 'vue';
|
|
|
|
import { useRouter } from 'vue-router';
|
|
|
|
|
2023-05-25 20:59:33 +02:00
|
|
|
import { useAuth } from './composables/useAuth';
|
2023-05-26 12:25:26 +02:00
|
|
|
import { useSnackbar } from './composables/useSnackbar';
|
|
|
|
|
2023-05-25 17:11:37 +02:00
|
|
|
import NavMenu from './components/ui/NavMenu.vue';
|
2023-05-26 12:25:26 +02:00
|
|
|
import Snackbar from './components/ui/Snackbar.vue';
|
|
|
|
|
|
|
|
const router = useRouter();
|
|
|
|
const { loadingUserFinished } = useAuth();
|
|
|
|
const { showSnackbar } = useSnackbar();
|
|
|
|
|
|
|
|
onMounted(async () => {
|
|
|
|
await router.isReady();
|
2023-05-25 20:59:33 +02:00
|
|
|
|
2023-05-28 09:10:32 +02:00
|
|
|
const loginStatusHashes = ['#login-error', '#login-success'];
|
|
|
|
const routeHash = router.currentRoute.value.hash;
|
|
|
|
|
|
|
|
if (loginStatusHashes.includes(routeHash)) {
|
2023-05-26 12:25:26 +02:00
|
|
|
localStorage.removeItem('redirectPath');
|
2023-05-28 09:10:32 +02:00
|
|
|
|
2023-05-26 12:25:26 +02:00
|
|
|
showSnackbar({
|
2023-05-28 09:10:32 +02:00
|
|
|
status: routeHash.replace('#login-', '') as 'error' | 'success',
|
|
|
|
message:
|
|
|
|
routeHash === '#login-error'
|
|
|
|
? 'Failed to log you in'
|
|
|
|
: "You're logged in"
|
2023-05-26 12:25:26 +02:00
|
|
|
});
|
|
|
|
}
|
|
|
|
});
|
2023-05-25 17:11:37 +02:00
|
|
|
</script>
|
|
|
|
|
2023-05-23 08:19:09 +02:00
|
|
|
<template>
|
|
|
|
<v-app>
|
2023-05-26 12:25:26 +02:00
|
|
|
<Snackbar />
|
2023-05-25 17:11:37 +02:00
|
|
|
<NavMenu />
|
2023-05-23 08:19:09 +02:00
|
|
|
<v-main>
|
2023-05-25 20:59:33 +02:00
|
|
|
<section
|
2023-05-26 12:25:26 +02:00
|
|
|
v-if="!loadingUserFinished"
|
2023-05-25 20:59:33 +02:00
|
|
|
class="w-100 h-100 pb-4 d-flex justify-center align-center"
|
|
|
|
>
|
|
|
|
<v-progress-circular
|
2023-05-26 12:25:26 +02:00
|
|
|
:size="120"
|
2023-05-25 20:59:33 +02:00
|
|
|
:width="7"
|
2023-05-29 18:36:27 +02:00
|
|
|
color="primary"
|
2023-05-25 20:59:33 +02:00
|
|
|
indeterminate
|
|
|
|
></v-progress-circular>
|
|
|
|
</section>
|
2023-05-26 12:25:26 +02:00
|
|
|
<RouterView v-show="loadingUserFinished" />
|
2023-05-23 08:19:09 +02:00
|
|
|
</v-main>
|
|
|
|
</v-app>
|
|
|
|
</template>
|