implement currentUser store

This commit is contained in:
Ilion Beyst 2022-03-22 18:10:39 +01:00
parent 6ab8db31c3
commit 2b5a80a032
3 changed files with 14 additions and 10 deletions

View file

@ -1,11 +1,11 @@
<script lang="ts">
import { get_session_token } from "$lib/auth";
import { currentUser } from "$lib/stores/current_user";
import { onMount } from "svelte";
let user = null;
onMount(async () => {
// TODO: currentUser won't be set if the navbar component is not created.
const session_token = get_session_token();
if (!session_token) {
return;
@ -23,19 +23,20 @@
throw response.statusText;
}
user = await response.json();
const user = await response.json();
currentUser.set(user);
});
function signOut() {
// TODO: destroy session on server
user = null;
currentUser.set(null);
}
</script>
<div class="user-controls">
{#if user}
{#if $currentUser}
<div class="current-user-name">
{user["username"]}
{$currentUser["username"]}
</div>
<div class="sign-out" on:click={signOut}>Sign out</div>
{:else}

View file

@ -0,0 +1,3 @@
import { writable } from "svelte/store";
export const currentUser = writable(null);

View file

@ -1,6 +1,7 @@
<script lang="ts">
import { get_session_token, set_session_token } from "$lib/auth";
import { goto } from "$app/navigation";
import { currentUser } from "$lib/stores/current_user";
let username: string | undefined;
let password: string | undefined;
@ -24,7 +25,8 @@
let token = response.headers.get("Token");
set_session_token(token);
let user = await response.json();
const user = await response.json();
currentUser.set(user);
goto("/");
}
@ -35,7 +37,6 @@
}
</script>
<div class="page-card">
<div class="page-card-content">
<h1 class="page-card-header">Sign in</h1>
@ -49,7 +50,6 @@
</div>
</div>
<style lang="scss">
@import "src/styles/account_forms.scss";
</style>