diff --git a/client/entry-client.jsx b/client/entry-client.jsx
index e69de29..bcbb351 100644
--- a/client/entry-client.jsx
+++ b/client/entry-client.jsx
@@ -0,0 +1,4 @@
+import { hydrate } from 'preact'
+import { App } from './App.jsx'
+
+hydrate(
, document.body)
diff --git a/client/entry-server.jsx b/client/entry-server.jsx
index e69de29..a8d3392 100644
--- a/client/entry-server.jsx
+++ b/client/entry-server.jsx
@@ -0,0 +1,6 @@
+import renderToString from 'preact-render-to-string'
+import { App } from './App.jsx'
+
+export function render(url) {
+ return renderToString(
)
+}
diff --git a/client/hooks.jsx b/client/hooks.jsx
index 3e941af..d5dc0f7 100644
--- a/client/hooks.jsx
+++ b/client/hooks.jsx
@@ -1,15 +1,24 @@
import { useEffect, useState } from 'preact/hooks'
export const useUser = () => {
- const [username, setUsername] = useState(null)
+ const [user, setUser] = useState(null)
+
+ const logout = () => {
+ setUser(null)
+ }
useEffect(async () => {
const res = await fetch(`/api/current-user`, {
credentials: 'include',
})
- const username = await res.json()
- setUsername(username)
+
+ if (res.ok) {
+ const user = await res.json()
+ setUser(user)
+ }
}, [])
- return { username }
+ console.log(user)
+
+ return [user, logout]
}
diff --git a/client/pages/Home.jsx b/client/pages/Home.jsx
index 93d7c19..4a70b6a 100644
--- a/client/pages/Home.jsx
+++ b/client/pages/Home.jsx
@@ -1,15 +1,19 @@
+import { route } from 'preact-router'
+
import { Problem } from '../components/Problem.jsx'
import { useUser } from '../hooks.jsx'
export const HomePage = () => {
- const { username } = useUser()
+ console.log('rendering homepage')
+
+ const [user, logout] = useUser()
- const logout = async () => {
+ const handleLogout = async () => {
await fetch(`/api/logout`, {
method: 'POST',
})
- location.reload()
+ logout()
}
const problems = Array.from({ length: 20 }, (_, i) => ({
@@ -24,10 +28,10 @@ export const HomePage = () => {
PHC / Problemi
- {username ? (
+ {user ? (
<>
- Logged in as {username} (
- logout()}>
+ Logged in as {user.username} (
+
Logout
)
diff --git a/client/pages/Login.jsx b/client/pages/Login.jsx
index 0615eee..87132b7 100644
--- a/client/pages/Login.jsx
+++ b/client/pages/Login.jsx
@@ -1,3 +1,5 @@
+import { route } from 'preact-router'
+
import { useState } from 'preact/hooks'
export const LoginPage = () => {
@@ -14,7 +16,7 @@ export const LoginPage = () => {
}),
})
- location.href = '/#/'
+ route('/')
}
return (
diff --git a/index.html b/index.html
index 686e6bf..460314a 100644
--- a/index.html
+++ b/index.html
@@ -18,10 +18,11 @@
rel="stylesheet"
/>
-
-
+
+
-
+
+