|
|
|
@ -1,8 +1,9 @@ |
|
|
|
<script> |
|
|
|
import { setContext, getContext } from "svelte" |
|
|
|
import { setContext, getContext, onMount } from "svelte" |
|
|
|
import Router, { querystring } from "svelte-spa-router" |
|
|
|
import { routeStore } from "stores" |
|
|
|
import { routeStore, stateStore } from "stores" |
|
|
|
import Screen from "./Screen.svelte" |
|
|
|
import { get } from "svelte/store" |
|
|
|
|
|
|
|
const { styleable } = getContext("sdk") |
|
|
|
const component = getContext("component") |
|
|
|
@ -17,15 +18,17 @@ |
|
|
|
} |
|
|
|
|
|
|
|
// Keep query params up to date |
|
|
|
$: { |
|
|
|
$: routeStore.actions.setQueryParams(parseQueryString($querystring)) |
|
|
|
|
|
|
|
const parseQueryString = query => { |
|
|
|
let queryParams = {} |
|
|
|
if ($querystring) { |
|
|
|
const urlSearchParams = new URLSearchParams($querystring) |
|
|
|
if (query) { |
|
|
|
const urlSearchParams = new URLSearchParams(query) |
|
|
|
for (const [key, value] of urlSearchParams) { |
|
|
|
queryParams[key] = value |
|
|
|
} |
|
|
|
} |
|
|
|
routeStore.actions.setQueryParams(queryParams) |
|
|
|
return queryParams |
|
|
|
} |
|
|
|
|
|
|
|
const getRouterConfig = routes => { |
|
|
|
@ -42,6 +45,19 @@ |
|
|
|
const onRouteLoading = ({ detail }) => { |
|
|
|
routeStore.actions.setActiveRoute(detail.route) |
|
|
|
} |
|
|
|
|
|
|
|
// Initialise state store from query string on initial load |
|
|
|
onMount(() => { |
|
|
|
const queryParams = parseQueryString(get(querystring)) |
|
|
|
if (queryParams.state) { |
|
|
|
try { |
|
|
|
const state = JSON.parse(atob(queryParams.state)) |
|
|
|
stateStore.actions.initialise(state) |
|
|
|
} catch (error) { |
|
|
|
// Swallow error and do nothing |
|
|
|
} |
|
|
|
} |
|
|
|
}) |
|
|
|
</script> |
|
|
|
|
|
|
|
{#key config.id} |
|
|
|
|