racemash/src/App.vue

55 lines
1.3 KiB
Vue
Raw Normal View History

<script setup lang="ts">
import { onMounted } from 'vue';
import { useRouter } from 'vue-router';
2023-05-25 20:59:33 +02:00
import { useAuth } from './composables/useAuth';
import { useSnackbar } from './composables/useSnackbar';
import NavMenu from './components/ui/NavMenu.vue';
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)) {
localStorage.removeItem('redirectPath');
2023-05-28 09:10:32 +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"
});
}
});
</script>
2023-05-23 08:19:09 +02:00
<template>
<v-app>
<Snackbar />
<NavMenu />
2023-05-23 08:19:09 +02:00
<v-main>
2023-05-25 20:59:33 +02:00
<section
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
:size="120"
2023-05-25 20:59:33 +02:00
:width="7"
color="indigo"
indeterminate
></v-progress-circular>
</section>
<RouterView v-show="loadingUserFinished" />
2023-05-23 08:19:09 +02:00
</v-main>
</v-app>
</template>