22import { supabase } from ' @/lib/supabaseClient' ;
33import { useRouter } from ' vue-router' ;
44import { useLoggedInUserStore } from ' @/stores/loggedInUserStore' ;
5- import { onMounted } from ' vue' ;
5+ import { onMounted , ref } from ' vue' ;
66
77const router = useRouter ();
88const loggedInUserStore = useLoggedInUserStore ();
9+ const loading = ref (true );
910
1011const signOut = async () => {
1112 console .log (' Signing out' );
@@ -19,19 +20,42 @@ const signOut = async () => {
1920
2021onMounted (async () => {
2122 await loggedInUserStore .fetchLoggedInUser ();
23+ await delay (500 )
2224 if (! loggedInUserStore .user ) {
2325 router .push (' /user/create' );
2426 }
27+ loading .value = false ;
2528})
2629
30+
31+ function delay(ms : number ) {
32+ return new Promise (resolve => setTimeout (resolve , ms ));
33+ }
2734 </script >
2835
2936<template >
30- <section >
31- <div class =" grid gap-4" >
32- <h1 >Welcome, {{ loggedInUserStore.user?.username }}</h1 >
37+ <section class =" w-full" >
38+
39+ <div v-if =" loading" class =" w-[30%] mx-auto" >
40+ <div class =" bg-white rounded-lg shadow-md p-8 animate-pulse grid gap-4" >
41+ <!-- Header -->
42+ <div class =" flex gap-4 items-center" >
43+ <div class =" w-[10%] h-10 bg-gray-300 rounded mb-2 rounded-full" ></div >
44+ <div class =" w-2/3 h-4 bg-gray-300 rounded mb-2" ></div >
45+ </div >
46+ <!-- Body -->
47+ <div >
48+ <div class =" w-full h-8 bg-gray-300 rounded mb-2" ></div >
49+ <div class =" w-full h-8 bg-gray-300 rounded mb-2" ></div >
50+ <div class =" w-1/2 h-8 bg-gray-300 rounded" ></div >
51+ </div >
52+ </div >
53+ </div >
54+
55+ <div v-if =" !loading" class =" grid gap-6 w-[25%] mx-auto text-center" >
56+ <h1 class =" text-2xl" >Welcome, <strong >{{ loggedInUserStore.user?.username }}</strong ></h1 >
3357 <button type =" button" @click =" signOut"
34- class =" w-full bg-black text-white py-[9px] border-[1px] rounded-lg hover:bg-white hover:text-black border-white hover:border-black cursor-pointer transition-all duration-200 text-sm" >Log
58+ class =" w-[50%] bg-black text-white py-[9px] border-[1px] rounded-lg hover:bg-white hover:text-black border-white hover:border-black cursor-pointer transition-all duration-200 text-sm mx-auto " >Log
3559 out</button >
3660 </div >
3761 </section >
0 commit comments