summaryrefslogtreecommitdiff
path: root/src/components/PageResolver.svelte
blob: 9f482aa3c25b0e4b9ace3977744bca42f540f41b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<script lang="ts">
    import type { Page } from '~/jet/models';

    import PageComponent from '~/components/Page.svelte';
    import ErrorComponent from '~/components/Error.svelte';
    import LoadingSpinner from '@amp/web-app-components/src/components/LoadingSpinner/LoadingSpinner.svelte';

    export let page: Promise<Page> | Page;
    export let isFirstPage: boolean;
</script>

{#await page}
    <div data-testid="page-loading">
        <!--
            Delay showing the spinner on initial page load after app boot.
            After that, the FlowAction handler already waits 500ms before
            it changes DOM, so we only need to wait 1000ms.
        -->
        <LoadingSpinner delay={isFirstPage ? 1500 : 1000} />
    </div>
{:then page}
    <PageComponent {page} />
{:catch error}
    <ErrorComponent {error} />
{/await}