Skip to content

Commit

Permalink
allow nullish params (#782)
Browse files Browse the repository at this point in the history
  • Loading branch information
EvanBacon committed Jul 17, 2023
1 parent 7a534ae commit 034774a
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 7 deletions.
11 changes: 11 additions & 0 deletions packages/expo-router/src/link/__tests__/href.test.node.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,17 @@ describe(resolveHref, () => {
})
).toBe("/alpha/cool/beta");
});
it(`allows nullish query parameters`, () => {
expect(resolveHref({ pathname: "/alpha", params: { beta: null } })).toBe(
"/alpha"
);
expect(
resolveHref({
pathname: "/alpha",
params: { beta: undefined, three: "1" },
})
).toBe("/alpha?three=1");
});
it(`adds query parameters`, () => {
expect(resolveHref({ pathname: "/alpha", params: { beta: "value" } })).toBe(
"/alpha?beta=value"
Expand Down
16 changes: 9 additions & 7 deletions packages/expo-router/src/link/href.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,8 @@ export const resolveHref = (href: Href): string => {
const { pathname, params } = createQualifiedPathname(path, {
...href.params,
});
return (
pathname +
(Object.keys(params).length ? `?${createQueryParams(params)}` : "")
);
const paramsString = createQueryParams(params);
return pathname + (paramsString ? `?${paramsString}` : "");
};

function createQualifiedPathname(
Expand Down Expand Up @@ -54,7 +52,11 @@ function encodeParam(param: any): string {
}

function createQueryParams(params: Record<string, any>): string {
return Object.entries(params)
.map(([key, value]) => `${key}=${encodeURIComponent(value.toString())}`)
.join("&");
return (
Object.entries(params)
// Allow nullish params
.filter(([, value]) => value != null)
.map(([key, value]) => `${key}=${encodeURIComponent(value.toString())}`)
.join("&")
);
}

0 comments on commit 034774a

Please sign in to comment.