2024-06-29 17:27:46 +01:00
|
|
|
<script>
|
2024-06-29 19:52:52 +01:00
|
|
|
import '$lib/app.css';
|
2024-06-29 17:27:46 +01:00
|
|
|
import Navigation from '$lib/ui/Navigation.svelte';
|
|
|
|
import Widgets from '$lib/ui/Widgets.svelte';
|
2024-07-01 03:41:02 +01:00
|
|
|
import { client, Client } from '$lib/client/client.js';
|
2024-06-30 21:39:37 +01:00
|
|
|
import { get } from 'svelte/store';
|
|
|
|
|
2024-07-01 03:41:02 +01:00
|
|
|
let ready = new Promise(resolve => {
|
|
|
|
if (get(client)) {
|
|
|
|
return resolve();
|
|
|
|
}
|
|
|
|
let new_client = new Client();
|
|
|
|
new_client.load();
|
|
|
|
|
|
|
|
return new_client.getUser().then(user => {
|
|
|
|
if (!user) {
|
|
|
|
client.set(new_client);
|
|
|
|
return resolve();
|
|
|
|
}
|
|
|
|
new_client.user = user;
|
|
|
|
client.set(new_client);
|
|
|
|
return resolve();
|
|
|
|
});
|
|
|
|
});
|
2024-06-29 17:27:46 +01:00
|
|
|
</script>
|
|
|
|
|
2024-06-30 17:37:19 +01:00
|
|
|
<div id="app">
|
2024-06-29 17:27:46 +01:00
|
|
|
|
|
|
|
<header>
|
|
|
|
<Navigation />
|
|
|
|
</header>
|
|
|
|
|
|
|
|
<main>
|
2024-07-01 03:41:02 +01:00
|
|
|
{#await ready}
|
2024-06-30 21:39:37 +01:00
|
|
|
<div class="loading throb">
|
|
|
|
<span>just a moment...</span>
|
|
|
|
</div>
|
|
|
|
{:then}
|
|
|
|
<slot></slot>
|
|
|
|
{/await}
|
2024-06-29 17:27:46 +01:00
|
|
|
</main>
|
|
|
|
|
|
|
|
<div id="widgets">
|
|
|
|
<Widgets />
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
2024-07-01 03:41:02 +01:00
|
|
|
|
|
|
|
<style>
|
|
|
|
.loading {
|
|
|
|
width: 100%;
|
|
|
|
height: 100vh;
|
|
|
|
display: flex;
|
|
|
|
justify-content: center;
|
|
|
|
align-items: center;
|
|
|
|
font-size: 2em;
|
|
|
|
font-weight: bold;
|
|
|
|
}
|
|
|
|
</style>
|