From 7fefc59929f2abeb4fc320ce5b1a755592e49938 Mon Sep 17 00:00:00 2001 From: Richard Harris Date: Sat, 2 Feb 2019 13:28:48 -0500 Subject: [PATCH] tidy up --- templates/internal.mjs | 2 +- templates/src/app/app.ts | 42 ++++++++++++++------------------------ templates/src/app/types.ts | 4 +--- 3 files changed, 17 insertions(+), 31 deletions(-) diff --git a/templates/internal.mjs b/templates/internal.mjs index 59fa2f2..534a6bf 100644 --- a/templates/internal.mjs +++ b/templates/internal.mjs @@ -1,7 +1,7 @@ import { writable } from 'svelte/store'; export const stores = { - preloading: writable(null), + preloading: writable(false), page: writable(null) }; diff --git a/templates/src/app/app.ts b/templates/src/app/app.ts index b8001bd..2ff55d0 100644 --- a/templates/src/app/app.ts +++ b/templates/src/app/app.ts @@ -95,14 +95,9 @@ export function select_target(url: URL): Target { const part = route.parts[route.parts.length - 1]; const params = part.params ? part.params(match) : {}; - return { - href: url.href, - path, - route, - match, - query, - params - }; + const page = { path, query, params }; + + return { href: url.href, route, match, page }; } } } @@ -130,11 +125,8 @@ export async function navigate(target: Target, id: number, noscroll?: boolean, h cid = id; - if (root_component) { - stores.preloading.set({ - // TODO path, params, query - }); - } + if (root_component) stores.preloading.set(true); + const loaded = prefetching && prefetching.href === target.href ? prefetching.promise : hydrate_target(target); @@ -142,18 +134,18 @@ export async function navigate(target: Target, id: number, noscroll?: boolean, h prefetching = null; const token = current_token = {}; - const { redirect, page, props, branch } = await loaded; + const { redirect, props, branch } = await loaded; if (token !== current_token) return; // a secondary navigation happened while we were loading if (redirect) return goto(redirect.location, { replaceState: true }); - await render(branch, props, page, scroll_history[id], noscroll, hash); + await render(branch, props, target.page, scroll_history[id], noscroll, hash); if (document.activeElement) document.activeElement.blur(); } async function render(branch: any[], props: any, page: Page, scroll: ScrollPosition, noscroll: boolean, hash: string) { stores.page.set(page); - stores.preloading.set(null); + stores.preloading.set(false); if (root_component) { root_component.props = props; @@ -203,11 +195,10 @@ async function render(branch: any[], props: any, page: Page, scroll: ScrollPosit export async function hydrate_target(target: Target): Promise<{ redirect?: Redirect; props?: any; - page?: Page; branch?: Array<{ Component: ComponentConstructor, preload: (page) => Promise, segment: string }> }> { - const { route, path, query, params } = target; - const segments = path.split('/').filter(Boolean); + const { route, page } = target; + const segments = page.path.split('/').filter(Boolean); let redirect: Redirect = null; let error: { statusCode: number, message: Error | string } = null; @@ -227,8 +218,8 @@ export async function hydrate_target(target: Target): Promise<{ if (!root_preloaded) { root_preloaded = initial_data.preloaded[0] || root_preload.call(preload_context, { - path, - query, + path: page.path, + query: page.query, params: {} }); } @@ -248,8 +239,8 @@ export async function hydrate_target(target: Target): Promise<{ if (ready || !initial_data.preloaded[i + 1]) { preloaded = preload ? await preload.call(preload_context, { - path, - query, + path: page.path, + query: page.query, params: part.params ? part.params(target.match) : {} }) : {}; @@ -266,12 +257,9 @@ export async function hydrate_target(target: Target): Promise<{ if (redirect) return { redirect }; - const page = { path, query, params }; - if (error) { // TODO be nice if this was less of a special case return { - page, props: { child: { component: ErrorComponent, @@ -298,7 +286,7 @@ export async function hydrate_target(target: Target): Promise<{ level = level.props.child; }); - return { props, page, branch }; + return { props, branch }; } function load_css(chunk: string) { diff --git a/templates/src/app/types.ts b/templates/src/app/types.ts index 52f89c8..e725ed4 100644 --- a/templates/src/app/types.ts +++ b/templates/src/app/types.ts @@ -45,11 +45,9 @@ export type ScrollPosition = { export type Target = { href: string; - path: string; route: Route; match: RegExpExecArray; - query: Record; - params: Record; + page: Page; }; export type Redirect = {