From 4f6181bc66b78d33bd222cacfe6d7f920d32ecfe Mon Sep 17 00:00:00 2001 From: tobinio Date: Wed, 14 May 2025 09:18:11 +0200 Subject: [PATCH] move dataInit code to composable --- app/composables/useInitData.ts | 55 ++++++++++++++++++++++++++++++++++ app/pages/index.vue | 54 ++------------------------------- nuxt.config.ts | 3 -- package.json | 2 +- 4 files changed, 58 insertions(+), 56 deletions(-) create mode 100644 app/composables/useInitData.ts diff --git a/app/composables/useInitData.ts b/app/composables/useInitData.ts new file mode 100644 index 0000000..0ccd13a --- /dev/null +++ b/app/composables/useInitData.ts @@ -0,0 +1,55 @@ +import { useLoginToken } from "./login/useLoginToken"; + +export async function useInitdata() { + const todoStore = useTodoStore(); + const tagStore = useTagStore(); + + const Init = { + client() { + todoStore.initSSE(); + tagStore.initSSE(); + }, + async data() { + await Promise.all([todoStore.fetch(), tagStore.fetch()]); + }, + async all() { + Init.client(); + await Init.data(); + }, + }; + + function reset() { + todoStore.reset(); + tagStore.reset(); + } + + const token = useLoginToken(); + + onMounted(async () => { + if (token.value) { + Init.client(); + + const fetch = useRequestFetch(); + const data = await fetch("/api/auth/renew", { + ...useFetchOptions(), + }).catch(async (err) => { + //todo - show in toast + console.warn(err); + return undefined; + }); + + if (data) { + token.value = data.token; + } + } + + watch(token, async () => { + if (token.value) Init.all(); + else reset(); + }); + }); + + await callOnce(async () => { + if (token.value) await Init.data(); + }); +} diff --git a/app/pages/index.vue b/app/pages/index.vue index 3167784..5a8e4b1 100644 --- a/app/pages/index.vue +++ b/app/pages/index.vue @@ -1,58 +1,8 @@