From 0dd2d2eb4a2064139aec5198d882f2f05d1dd459 Mon Sep 17 00:00:00 2001 From: cudr Date: Fri, 15 Mar 2019 04:57:10 +0300 Subject: [PATCH 1/2] complete fix --- runtime/src/app/app.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/runtime/src/app/app.ts b/runtime/src/app/app.ts index 2de7052..c4d8927 100644 --- a/runtime/src/app/app.ts +++ b/runtime/src/app/app.ts @@ -254,7 +254,7 @@ export async function hydrate_target(target: Target): Promise<{ const j = l++; const segment = segments[i]; - if (!session_dirty && current_branch[i] && current_branch[i].segment === segment) return current_branch[i]; + if (!session_dirty && current_branch[i] && current_branch[i].segment === segment && current_branch[i].part === part.i) return current_branch[i]; const { default: component, preload } = await load_component(components[part.i]); @@ -271,7 +271,7 @@ export async function hydrate_target(target: Target): Promise<{ preloaded = initial_data.preloaded[i + 1]; } - return (props[`level${j}`] = { component, props: preloaded, segment }); + return (props[`level${j}`] = { component, props: preloaded, segment, part: part.i }); })); } catch (error) { props.error = error; From d2cda4b6c075828e244477567aa5b872ffe81e4d Mon Sep 17 00:00:00 2001 From: cudr Date: Fri, 15 Mar 2019 05:13:18 +0300 Subject: [PATCH 2/2] add test --- test/apps/basics/src/routes/dirs/bar/[a].svelte | 3 +++ test/apps/basics/src/routes/dirs/foo/[b].svelte | 1 + test/apps/basics/test.ts | 13 ++++++++++++- 3 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 test/apps/basics/src/routes/dirs/bar/[a].svelte create mode 100644 test/apps/basics/src/routes/dirs/foo/[b].svelte diff --git a/test/apps/basics/src/routes/dirs/bar/[a].svelte b/test/apps/basics/src/routes/dirs/bar/[a].svelte new file mode 100644 index 0000000..b31915f --- /dev/null +++ b/test/apps/basics/src/routes/dirs/bar/[a].svelte @@ -0,0 +1,3 @@ +

A page

+ +same segment diff --git a/test/apps/basics/src/routes/dirs/foo/[b].svelte b/test/apps/basics/src/routes/dirs/foo/[b].svelte new file mode 100644 index 0000000..f7a165f --- /dev/null +++ b/test/apps/basics/src/routes/dirs/foo/[b].svelte @@ -0,0 +1 @@ +

B page

diff --git a/test/apps/basics/test.ts b/test/apps/basics/test.ts index 1247bfc..9e31855 100644 --- a/test/apps/basics/test.ts +++ b/test/apps/basics/test.ts @@ -275,4 +275,15 @@ describe('basics', function() { await wait(50); assert.equal(await title(), 'bar'); }); -}); \ No newline at end of file + + it('navigates between dynamic routes with same segments', async () => { + await page.goto(`${base}/dirs/bar/xyz`); + await start(); + + assert.equal(await title(), 'A page'); + + await page.click('[href="dirs/foo/xyz"]'); + await wait(50); + assert.equal(await title(), 'B page'); + }); +});