function stripNullish<T extends Record<string, unknown>>(search: T): T {
return Object.fromEntries(
Object.entries(search).filter(
([, value]) => !isNil(value) && value !== '' && (!Array.isArray(value) || value.length > 0),
),
) as T;
}
const customSearchSerializer: SearchSerializer = searchObj => {
const strippedSearch = stripNullish(searchObj);
return defaultStringifySearch(strippedSearch);
};
export const createAppRouter = () =>
createRouter({
routeTree,
context: { theme: lightV2Theme },
defaultPreload: 'intent',
scrollRestoration: true,
defaultStructuralSharing: true,
defaultPreloadStaleTime: 0,
defaultPendingMs: 100,
basepath: '/360',
defaultPendingComponent: () => <Spinner fullscreen />,
stringifySearch: customSearchSerializer,
});
function stripNullish<T extends Record<string, unknown>>(search: T): T {
return Object.fromEntries(
Object.entries(search).filter(
([, value]) => !isNil(value) && value !== '' && (!Array.isArray(value) || value.length > 0),
),
) as T;
}
const customSearchSerializer: SearchSerializer = searchObj => {
const strippedSearch = stripNullish(searchObj);
return defaultStringifySearch(strippedSearch);
};
export const createAppRouter = () =>
createRouter({
routeTree,
context: { theme: lightV2Theme },
defaultPreload: 'intent',
scrollRestoration: true,
defaultStructuralSharing: true,
defaultPreloadStaleTime: 0,
defaultPendingMs: 100,
basepath: '/360',
defaultPendingComponent: () => <Spinner fullscreen />,
stringifySearch: customSearchSerializer,
});