diff --git a/packages/app/src/components/Home/CurrentUser/CurrentUser.tsx b/packages/app/src/components/Home/CurrentUser/CurrentUser.tsx index cb2511d..af7d897 100644 --- a/packages/app/src/components/Home/CurrentUser/CurrentUser.tsx +++ b/packages/app/src/components/Home/CurrentUser/CurrentUser.tsx @@ -1,6 +1,6 @@ import {createAsync, useAction, useSubmission} from '@solidjs/router'; -import {getUser, logout} from '~/lib/server/session'; -import {Show, useTransition} from 'solid-js'; +import {loggedInUser, logout} from '~/lib/server/session'; +import {Show} from 'solid-js'; import {badge, currentUser} from './CurrentUser.css'; import {Models} from 'appwrite'; import {Icon} from '#ui/components/Icon'; @@ -11,10 +11,10 @@ import { DropdownMenuItem, DropdownMenuTrigger, } from '@codeui/kit'; -import {signupWithGithub} from '../../../lib/server/appwrite'; +import {signupWithGithub} from '~/lib/server/appwrite'; export function CurrentUserBar() { - const user = createAsync(() => getUser()); + const user = createAsync(() => loggedInUser()); const initials = (user: Models.User) => { if (user.name) { diff --git a/packages/app/src/components/Home/Home.tsx b/packages/app/src/components/Home/Home.tsx index 1cc5b3b..a409614 100644 --- a/packages/app/src/components/Home/Home.tsx +++ b/packages/app/src/components/Home/Home.tsx @@ -12,14 +12,9 @@ import { Show, Suspense, } from 'solid-js'; -import {StateProvider} from 'statebuilder'; -import { - getGithubData, - getGithubRepo, - getGithubRepoWorkflowFiles, -} from '~/lib/githubApi'; +import {getGithubData} from '~/lib/githubApi'; +import {loggedInUser} from '~/lib/server/session'; import {createScratch} from '../../lib/scratchApi'; -import {getLoggedInUser} from '../../lib/server/appwrite'; import {CurrentUserBar} from './CurrentUser/CurrentUser'; import {HomeFooter} from './Footer/Footer'; import { @@ -53,7 +48,7 @@ export const route = { }; export function Home() { - const user = createAsync(() => getLoggedInUser(), {deferStream: true}); + const user = createAsync(() => loggedInUser()); const isCreatingScratch = useSubmission(createScratch); const [params] = useSearchParams(); diff --git a/packages/app/src/lib/server/appwrite.ts b/packages/app/src/lib/server/appwrite.ts index cb90a0f..7886ba9 100644 --- a/packages/app/src/lib/server/appwrite.ts +++ b/packages/app/src/lib/server/appwrite.ts @@ -1,7 +1,7 @@ import {Account, Client, Databases, OAuthProvider} from 'node-appwrite'; import {getHeaders} from 'vinxi/http'; import {getSession} from './session'; -import {action, redirect} from '@solidjs/router'; +import {action, cache, redirect} from '@solidjs/router'; export async function createSessionClient() { 'use server'; diff --git a/packages/app/src/lib/server/session.ts b/packages/app/src/lib/server/session.ts index 0deea83..6cda597 100644 --- a/packages/app/src/lib/server/session.ts +++ b/packages/app/src/lib/server/session.ts @@ -1,7 +1,7 @@ -import {useSession} from 'vinxi/http'; +import {action, cache, redirect} from '@solidjs/router'; import {Models as NodeModels} from 'node-appwrite'; +import {useSession} from 'vinxi/http'; import {getLoggedInUser} from './appwrite'; -import {action, redirect} from '@solidjs/router'; export function getSession() { 'use server'; @@ -20,6 +20,8 @@ export async function getUser(): Promise | null> { return getLoggedInUser(); } +export const loggedInUser = cache(async () => getLoggedInUser(), 'logged-user'); + export async function logoutSession() { 'use server'; try {