From f2bbe8596a7294317290077335c9f074af6e6e63 Mon Sep 17 00:00:00 2001 From: Michael Dausmann Date: Wed, 5 Apr 2023 00:28:30 +1000 Subject: [PATCH] refactor and restructure pinia store and trpc routers + add members list to account store --- components/AppHeader.vue | 10 +-- lib/services/user.account.service.ts | 9 ++ pages/account.vue | 26 +++++- pages/dashboard.vue | 18 ++-- pages/pricing.vue | 4 +- server/api/trpc/[trpc].ts | 8 +- ...er.account.router.ts => account.router.ts} | 22 +++-- server/trpc/routers/auth.router.ts | 10 +++ stores/account.store.ts | 73 +++++++++++++++ stores/app.store.ts | 89 ------------------- stores/auth.store.ts | 35 ++++++++ stores/notes.store.ts | 29 ++++++ 12 files changed, 214 insertions(+), 119 deletions(-) rename server/trpc/routers/{user.account.router.ts => account.router.ts} (82%) create mode 100644 server/trpc/routers/auth.router.ts create mode 100644 stores/account.store.ts delete mode 100644 stores/app.store.ts create mode 100644 stores/auth.store.ts create mode 100644 stores/notes.store.ts diff --git a/components/AppHeader.vue b/components/AppHeader.vue index b5353aa..c6d1357 100644 --- a/components/AppHeader.vue +++ b/components/AppHeader.vue @@ -4,15 +4,15 @@ const supabase = useSupabaseAuthClient(); const user = useSupabaseUser(); - const store = useAppStore() - const { activeMembership } = storeToRefs(store); + const authStore = useAuthStore() + const { activeMembership } = storeToRefs(authStore); const { $client } = useNuxtApp(); - const { data: dbUser } = await $client.userAccount.getDBUser.useQuery(); + const { data: dbUser } = await $client.auth.getDBUser.useQuery(); onMounted(async () => { - await store.initUser(); + await authStore.initUser(); }); async function signout() { @@ -37,7 +37,7 @@

Switch Account.. - diff --git a/lib/services/user.account.service.ts b/lib/services/user.account.service.ts index 896c4ee..b51833c 100644 --- a/lib/services/user.account.service.ts +++ b/lib/services/user.account.service.ts @@ -45,6 +45,15 @@ export default class UserAccountService { }); } + async getAccountMembers(account_id: number): Promise { + return prisma_client.membership.findMany({ + where: { account_id }, + include: { + user: true + } + }); + } + async updateAccountStipeCustomerId (account_id: number, stripe_customer_id: string){ return await prisma_client.account.update({ where: { id: account_id }, diff --git a/pages/account.vue b/pages/account.vue index 5fd1cba..4526838 100644 --- a/pages/account.vue +++ b/pages/account.vue @@ -2,11 +2,20 @@ import { storeToRefs } from 'pinia'; import { ACCOUNT_ACCESS } from '@prisma/client'; - const store = useAppStore(); - const { activeMembership } = storeToRefs(store); + const authStore = useAuthStore(); + const { activeMembership } = storeToRefs(authStore); + const accountStore = useAccountStore(); + const { activeAccountMembers } = storeToRefs(accountStore) + const config = useRuntimeConfig(); const newAccountName = ref(""); + watchEffect(async () => { + if (activeMembership.value) { + await accountStore.getActiveAccountMembers(); + } + }) + function formatDate(date: Date | undefined){ if(!date){ return ""; } return new Intl.DateTimeFormat('default', {dateStyle: 'long'}).format(date); @@ -15,13 +24,18 @@ diff --git a/pages/dashboard.vue b/pages/dashboard.vue index 62ad8ce..3a9bbce 100644 --- a/pages/dashboard.vue +++ b/pages/dashboard.vue @@ -5,19 +5,21 @@ middleware: ['auth'], }); - const store = useAppStore(); - const { notes } = storeToRefs(store); // ensure the notes list is reactive + const authStore = useAuthStore(); + const { activeMembership } = storeToRefs(authStore); + const notesStore = useNotesStore(); + const { notes } = storeToRefs(notesStore); // ensure the notes list is reactive + + watchEffect(async () => { + if (activeMembership.value) { + await notesStore.fetchNotesForCurrentUser(); + } + }) diff --git a/pages/pricing.vue b/pages/pricing.vue index 2c1d791..70f209c 100644 --- a/pages/pricing.vue +++ b/pages/pricing.vue @@ -2,8 +2,8 @@ import { storeToRefs } from 'pinia'; import { ACCOUNT_ACCESS } from '@prisma/client'; - const store = useAppStore() - const { activeMembership } = storeToRefs(store); + const authStore = useAuthStore() + const { activeMembership } = storeToRefs(authStore);