Skip to content

Commit 72a7077

Browse files
committed
feature(login) watch user state in nav
1 parent 9199439 commit 72a7077

File tree

2 files changed

+24
-18
lines changed

2 files changed

+24
-18
lines changed

components/User.vue

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,16 @@
11
<script setup lang="ts">
2-
import { IUser } from "~/types/IUser";
32
import { ref } from "@vue/reactivity";
43
import { userLogout } from "~/composables/useAuth";
54
import { onClickOutside } from '@vueuse/core'
65
7-
const user = useState('user')
8-
const initalCheck = await useLoggedIn()
9-
const isLoggedIn = ref(initalCheck)
6+
107
const logout = userLogout
118
const hideActions = ref(true)
129
const userActions = ref(null)
1310
14-
async function checkIfLoggedIn() {
15-
const check = await useLoggedIn()
16-
isLoggedIn.value = check
17-
}
18-
19-
watch(user, async () => {
20-
await checkIfLoggedIn()
21-
}, { deep: true });
22-
11+
defineProps({
12+
isLoggedIn: Boolean
13+
})
2314
2415
onClickOutside(userActions, () => hideActions.value = true)
2516

components/layout/navbar.vue

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,29 @@ const showSideDrawer = ref(false)
55
const logout = userLogout
66
const router = useRouter()
77
8+
const user = useState('user')
9+
const initalCheck = await useLoggedIn()
10+
const isLoggedIn = ref(initalCheck)
11+
812
router.afterEach(() => {
913
showSideDrawer.value = false
1014
})
1115
12-
const user = useState('user')
1316
const setColorTheme = (newTheme: Theme) => {
1417
useColorMode().preference = newTheme
1518
}
19+
20+
async function checkIfLoggedIn() {
21+
const check = await useLoggedIn()
22+
isLoggedIn.value = check
23+
}
24+
25+
watch(user, async () => {
26+
await checkIfLoggedIn()
27+
}, { deep: true });
28+
29+
30+
1631
</script>
1732

1833
<template>
@@ -130,7 +145,7 @@ const setColorTheme = (newTheme: Theme) => {
130145
</svg>
131146
</span>
132147

133-
<User class="hidden md:block" />
148+
<User :isLoggedIn="isLoggedIn" class="hidden md:block" />
134149

135150
<span class="hidden md:flex items-center justify-end md:flex-1 lg:w-0">
136151
<!-- <nuxt-link v-if="!user" to="/login"
@@ -288,7 +303,7 @@ const setColorTheme = (newTheme: Theme) => {
288303
<span class="flex-1 ml-3 whitespace-nowrap">Ask Jack</span>
289304
</NuxtLink>
290305
</li>
291-
<li v-if="!user">
306+
<li v-if="!isLoggedIn">
292307
<NuxtLink to="/login"
293308
class="flex items-center p-2 text-base font-normal text-gray-900 rounded-lg dark:text-white hover:bg-gray-100 dark:hover:bg-gray-700">
294309
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5"
@@ -299,7 +314,7 @@ const setColorTheme = (newTheme: Theme) => {
299314
<span class="flex-1 ml-3 whitespace-nowrap">Sign In</span>
300315
</NuxtLink>
301316
</li>
302-
<li v-if="!user">
317+
<li v-if="!isLoggedIn">
303318
<NuxtLink to="/register"
304319
class="flex items-center p-2 text-base font-normal text-gray-900 rounded-lg dark:text-white hover:bg-gray-100 dark:hover:bg-gray-700">
305320
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5"
@@ -311,7 +326,7 @@ const setColorTheme = (newTheme: Theme) => {
311326
<span class="flex-1 ml-3 whitespace-nowrap">Sign Up</span>
312327
</NuxtLink>
313328
</li>
314-
<li @click="logout" v-if="user">
329+
<li @click="logout" v-if="isLoggedIn">
315330
<span to="/register"
316331
class="flex items-center p-2 text-base font-normal text-gray-900 rounded-lg dark:text-white hover:bg-gray-100 dark:hover:bg-gray-700">
317332
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5"

0 commit comments

Comments
 (0)