You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
42 lines
957 B
42 lines
957 B
<script>
|
|
import Nav from "./_components/Nav.svelte"
|
|
import { beforeExpiry, fetchToken, token, user } from "./_components/common"
|
|
import { onMount } from "svelte"
|
|
|
|
export let segment
|
|
|
|
let interval = setInterval(() => {})
|
|
let refreshCount = 0
|
|
|
|
user.subscribe(user => user)
|
|
|
|
token.subscribe(newToken => {
|
|
if (newToken !== undefined && newToken !== null) {
|
|
clearInterval(interval)
|
|
interval = setInterval(async () => {
|
|
token.set(await fetchToken())
|
|
refreshCount++
|
|
}, beforeExpiry(newToken))
|
|
}
|
|
})
|
|
|
|
onMount(async () => {
|
|
token.set(await fetchToken())
|
|
})
|
|
</script>
|
|
|
|
<Nav {segment} />
|
|
<main cy={refreshCount}>
|
|
<slot />
|
|
</main>
|
|
|
|
<style>
|
|
main {
|
|
position: relative;
|
|
max-width: 56em;
|
|
background-color: white;
|
|
padding: 2em;
|
|
margin: 0 auto;
|
|
box-sizing: border-box;
|
|
}
|
|
</style>
|
|
|