diff --git a/src/components/LoginForm.vue b/src/components/LoginForm.vue
index ef8d732..de1c7d2 100644
--- a/src/components/LoginForm.vue
+++ b/src/components/LoginForm.vue
@@ -1,6 +1,6 @@
diff --git a/src/components/TopNav.astro b/src/components/TopNav.astro
new file mode 100644
index 0000000..d810479
--- /dev/null
+++ b/src/components/TopNav.astro
@@ -0,0 +1,36 @@
+---
+import Link from './top_nav/Link.astro'
+import UserAction from './top_nav/UserAction.vue'
+---
+
+
+
+
\ No newline at end of file
diff --git a/src/components/scripts/user_store.js b/src/components/scripts/user_store.js
index eee75e1..9b1a0bf 100644
--- a/src/components/scripts/user_store.js
+++ b/src/components/scripts/user_store.js
@@ -1,17 +1,18 @@
-import {$user} from "../stores/user.js";
+import {$user, setAnonUser, setLoggedInUser} from "../stores/user.js";
const LOCAL_STORAGE_KEY="user"
$user.subscribe(value => {
- if(value == null) return;
+ if(value == null || !value.initialized) return;
localStorage[LOCAL_STORAGE_KEY] = JSON.stringify(value)
})
window.addEventListener('load', () => {
let data = localStorage[LOCAL_STORAGE_KEY]
- if (data == null) { return }
+ if (data == null) { return setAnonUser() }
data = JSON.parse(data)
- if (data == null || data.token == null) { return }
- if(Date.parse(data.expiresAt) < Date()) { return } // TODO: this should probably have more logic
- $user.set(data)
+ if (data == null || data.token == null) { return setAnonUser() }
+ if(Date.parse(data.expiresAt) < Date()) { return setAnonUser() }
+
+ setLoggedInUser(data.token, data.expiresAt)
})
\ No newline at end of file
diff --git a/src/components/stores/user.js b/src/components/stores/user.js
index 01f30b4..a022427 100644
--- a/src/components/stores/user.js
+++ b/src/components/stores/user.js
@@ -1,3 +1,11 @@
import { atom } from 'nanostores'
-export const $user = atom(null)
+export const $user = atom({})
+
+export function setAnonUser() {
+ $user.set({initialized: true})
+}
+
+export function setLoggedInUser(token, expiresAt) {
+ $user.set({initialized: true, loggedIn: true, token: token, expiresAt: expiresAt})
+}
\ No newline at end of file
diff --git a/src/components/top_nav/Link.astro b/src/components/top_nav/Link.astro
new file mode 100644
index 0000000..98e211b
--- /dev/null
+++ b/src/components/top_nav/Link.astro
@@ -0,0 +1,8 @@
+---
+const {href} = Astro.props
+const isActive = Astro.url.pathname.startsWith(href)
+---
+
+
+