From d7ff2d77ae75549aebf578ca68a1a98075b4960d Mon Sep 17 00:00:00 2001 From: juls0730 <62722391+juls0730@users.noreply.github.com> Date: Mon, 30 Sep 2024 01:06:57 -0500 Subject: [PATCH] better types --- ui/composables/useUser.ts | 23 ++++++++++++++++++----- ui/layouts/admin.vue | 4 ++-- ui/middleware/admin.ts | 2 +- ui/pages/admin/index.vue | 30 +++++++++++++++++++++++------- ui/pages/admin/users/[id]/edit.vue | 2 +- ui/pages/admin/users/index.vue | 3 +-- ui/pages/admin/users/new.vue | 9 +++++---- ui/pages/login.vue | 2 +- ui/pages/signup.vue | 2 +- 9 files changed, 53 insertions(+), 24 deletions(-) diff --git a/ui/composables/useUser.ts b/ui/composables/useUser.ts index 54fdb61..1b11854 100644 --- a/ui/composables/useUser.ts +++ b/ui/composables/useUser.ts @@ -1,9 +1,22 @@ -import type { User } from '~/types/user' +import type { Plan, User } from '~/types/user' import { useFetch } from '#app' +const uninitializedUser = { + id: "", + username: "", + email: "", + plan: { + id: 0, + max_storage: 0 + }, + usage: 0, + created_at: "", + is_admin: false +} + export const useUser = () => { // Global state for storing the user - const user = useState('user', () => { return { fetched: false, user: {} } }) + const user = useState('user', () => { return { fetched: false, user: uninitializedUser } }) // Fetch the user only if it's uninitialized (i.e., null) const getUser = async () => { @@ -24,9 +37,9 @@ export const useUser = () => { } user.value.user = data.value - } catch (e) { + } catch (e: any) { console.error(e.message) - user.value.user = {} + user.value.user = uninitializedUser } } @@ -37,7 +50,7 @@ export const useUser = () => { // Clear the user data (e.g., on logout) const resetUser = () => { - user.value.user = {} + user.value.user = uninitializedUser } return { diff --git a/ui/layouts/admin.vue b/ui/layouts/admin.vue index 8386cd7..69df947 100644 --- a/ui/layouts/admin.vue +++ b/ui/layouts/admin.vue @@ -9,7 +9,7 @@ definePageMeta({ const user = await getUser(); const route = useRoute(); -const accordionMapping = { +const accordionMapping: Record = { '/admin/users': '', '/admin/config/settings': 'item-2', '/admin': 'item-1', @@ -30,7 +30,7 @@ const isActiveLink = (path: string) => route.path === path;