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.
 
 
 
 
 
demo-graphql-oauth/client/src/routes/_layout.svelte

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>