mirror of
https://github.com/revanced/revanced-website.git
synced 2025-05-01 23:24:30 +02:00
69 lines
1.8 KiB
Svelte
69 lines
1.8 KiB
Svelte
<script lang="ts" context="module">
|
|
import { writable } from 'svelte/store';
|
|
// There might be a better place to put this, but I am not entirely sure...
|
|
export const isRestoring = writable(false);
|
|
</script>
|
|
|
|
<script lang="ts">
|
|
import '../app.scss';
|
|
import { derived } from 'svelte/store';
|
|
import { onMount } from 'svelte';
|
|
import { browser } from '$app/environment';
|
|
|
|
import { QueryClient } from '@tanstack/query-core';
|
|
import { persistQueryClient } from '@tanstack/query-persist-client-core';
|
|
import { QueryClientProvider } from '@tanstack/svelte-query';
|
|
import { createSyncStoragePersister } from '@tanstack/query-sync-storage-persister';
|
|
|
|
import NavHost from '$layout/Navbar/NavHost.svelte';
|
|
import Spinner from '$lib/components/Spinner.svelte';
|
|
import { staleTime } from '$data/api';
|
|
import RouterEvents from '$data/RouterEvents';
|
|
|
|
const queryClient = new QueryClient({
|
|
defaultOptions: {
|
|
queries: {
|
|
enabled: browser,
|
|
cacheTime: staleTime
|
|
}
|
|
}
|
|
});
|
|
|
|
onMount(() => {
|
|
isRestoring.set(true);
|
|
const [unsubscribe, promise] = persistQueryClient({
|
|
queryClient,
|
|
persister: createSyncStoragePersister({ storage: localStorage })
|
|
});
|
|
promise.then(() => isRestoring.set(false));
|
|
return unsubscribe;
|
|
});
|
|
|
|
// Just like the set/clearInterval example found here: https://svelte.dev/docs#run-time-svelte-store-derived
|
|
const show_loading_animation = derived(
|
|
RouterEvents,
|
|
($event, set) => {
|
|
if ($event.navigating) {
|
|
// Wait 250 ms before showing the animation.
|
|
const timeout = setTimeout(() => set(true), 250);
|
|
return () => clearTimeout(timeout);
|
|
} else {
|
|
set(false);
|
|
}
|
|
},
|
|
false
|
|
);
|
|
</script>
|
|
|
|
<QueryClientProvider client={queryClient}>
|
|
<NavHost />
|
|
|
|
{#if $show_loading_animation}
|
|
<Spinner />
|
|
{:else}
|
|
<slot />
|
|
{/if}
|
|
<!-- guhh afn -->
|
|
<!-- <Footer> -->
|
|
</QueryClientProvider>
|