User data loading

This commit is contained in:
2026-09-18 14:19:26 +03:00
parent 1619d39c14
commit a208ac40f8
+13 -4
View File
@@ -1,22 +1,31 @@
<script setup> <script setup>
import {ref, onMounted} from "vue"; import {ref, onMounted} from "vue";
import {loadToken, Anonymous} from "../scripts/load_token.js"; import {loadToken, Anonymous} from "../scripts/load_token.js";
import {request} from "../lib/gateway.js";
const Loading = Symbol("loading") const Loading = Symbol("loading")
const token = ref(Loading) const token = ref(Loading)
const userData = ref(Loading)
onMounted(() => { onMounted(async () => {
token.value = loadToken() let tokenData = loadToken()
token.value = tokenData
if(tokenData !== Anonymous) {
let response = await request("/user_data", {cors: true, token: tokenData.token})
userData.value = await response.json()
} else {
userData.value = null
}
}) })
</script> </script>
<template> <template>
<li :class="['nav-item', {'dropdown': (token !== Loading && token !== Anonymous)}]"> <li :class="['nav-item', {'dropdown': (token !== Loading && token !== Anonymous)}]">
<div v-if="token === Loading" class="placeholder"></div> <div v-if="token === Loading || userData === Loading" class="placeholder"></div>
<a v-else-if="token === Anonymous" class="nav-link" href="/login">Login</a> <a v-else-if="token === Anonymous" class="nav-link" href="/login">Login</a>
<template v-else> <template v-else>
<a href="#" class="btn btn-secondary dropdown-toggle" role="button" <a href="#" class="btn btn-secondary dropdown-toggle" role="button"
data-bs-toggle="dropdown">{{ token.username || "Username" }}</a> data-bs-toggle="dropdown">{{ userData.username || "Username" }}</a>
<ul class="dropdown-menu dropdown-menu-end"> <ul class="dropdown-menu dropdown-menu-end">
<li><a href="#" class="dropdown-item">Logout</a></li> <li><a href="#" class="dropdown-item">Logout</a></li>
</ul> </ul>