habits.andr33v.ru/app/pages/index.vue

61 lines
1.2 KiB
Vue

<template>
<div class="dashboard">
<div v-if="isAuthenticated && user">
<h2>Welcome Back, {{ user.nickname }}!</h2>
<p>Your village and habits await.</p>
<div class="quick-links">
<NuxtLink to="/village">Go to Village</NuxtLink>
<NuxtLink to="/habits">Check Habits</NuxtLink>
</div>
</div>
<div v-else>
<!-- You can show a loading indicator here if you want -->
<p>Loading...</p>
</div>
</div>
</template>
<script setup lang="ts">
const { user, isAuthenticated } = useAuth();
watchEffect(() => {
// Wait until the initial fetch is done and then decide.
// isAuthenticated becomes false if the fetch fails (e.g., 401)
// or true if it succeeds. We redirect only when we are sure.
if (process.client && isAuthenticated.value === false) {
navigateTo('/login');
}
});
</script>
<style scoped>
.dashboard {
text-align: center;
padding: 40px 20px;
}
h2 {
margin-bottom: 10px;
}
p {
margin-bottom: 20px;
color: #4c566a;
}
.quick-links {
display: flex;
justify-content: center;
gap: 20px;
}
.quick-links a {
display: inline-block;
padding: 10px 20px;
background-color: #81a1c1;
color: white;
text-decoration: none;
border-radius: 5px;
}
</style>