diff --git a/packages/navi/src/URLTools.ts b/packages/navi/src/URLTools.ts index 27c4f2bb..6f2676fc 100644 --- a/packages/navi/src/URLTools.ts +++ b/packages/navi/src/URLTools.ts @@ -98,7 +98,8 @@ export function parseQuery(queryString?: string, leadingCharacter='?'): Params { let queryParts = queryString.slice(1).split('&') for (let i = 0, len = queryParts.length; i < len; i++) { const x = queryParts[i].split('=') - query[x[0]] = x[1] ? decodeURIComponent(x[1]) : '' + const value = x[1] ? x[1].replace(/\+/g, '%20') : '' + query[x[0]] = decodeURIComponent(value) } return query } diff --git a/packages/navi/test/Integration.test.ts b/packages/navi/test/Integration.test.ts index 42a6f6fc..eec60ac0 100644 --- a/packages/navi/test/Integration.test.ts +++ b/packages/navi/test/Integration.test.ts @@ -23,17 +23,17 @@ describe("integration", () => { expect(route.views[2]).toBe('basic-example') expect(route.title).toBe('Basic example') - nav.navigate('/examples/advanced?referrer=frontarm') + nav.navigate('/examples/advanced?referrer=frontend+armory') firstChunk = nav.getCurrentValue().chunks[0] route = nav.getCurrentValue() - expect(firstChunk.url.query).toEqual({ referrer: 'frontarm' }) + expect(firstChunk.url.query).toEqual({ referrer: 'frontend armory' }) expect(route.type).toEqual('busy') route = await nav.getRoute() - expect(route.url.query).toEqual({ referrer: 'frontarm' }) + expect(route.url.query).toEqual({ referrer: 'frontend armory' }) expect(route.title).toBe('Advanced example') expect(route.data['isPaywalled']).toBe(true) expect(route.views[route.views.length - 1]).toBe('please-login')