summaryrefslogtreecommitdiff
path: root/src/components/PageResolver.svelte
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/PageResolver.svelte')
-rw-r--r--src/components/PageResolver.svelte25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/components/PageResolver.svelte b/src/components/PageResolver.svelte
new file mode 100644
index 0000000..9f482aa
--- /dev/null
+++ b/src/components/PageResolver.svelte
@@ -0,0 +1,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}