UNPKG

portal-www

Version:

Nova Portal Website. Based on Next starter by Ueno

40 lines (32 loc) 910 B
import { NextRouter } from 'next/router'; import { ParsedUrlQuery } from 'querystring'; type UpdateQueryInput = { query: ParsedUrlQuery; params: ParsedUrlQuery; }; type ReplaceQueryInput = { router: NextRouter; params: ParsedUrlQuery; newPath?: string; }; export function updateQuery({ query, params = {} }: UpdateQueryInput) { Object.entries(params).forEach(([key, value]) => { if (key && value) { query[key] = value; } else if (key) { delete query[key]; } }); return query; } export function replaceQuery({ router, params, newPath }: ReplaceQueryInput) { const { query, pathname } = router; let p = pathname; Object.entries(query).forEach(([k, v]) => { if (p.includes(`[${k}]`)) { p = p.replace(`[${k}]`, v as string); delete query[k]; } }); return router.push({ pathname: newPath || p, query: updateQuery({ query, params }) }); }