New useNavigateApp (#9729)

Todo : 
- replace all instances of useNavigate(
- remove getSettingsPagePath
- add eslint rule to enfore usage of useNavigateApp instead of
useNavigate
This commit is contained in:
Félix Malfait
2025-01-18 13:58:12 +01:00
committed by GitHub
parent 8572471973
commit 152902d1be
115 changed files with 975 additions and 679 deletions

View File

@ -0,0 +1,30 @@
import { AppPath } from '@/types/AppPath';
import qs from 'qs';
import { generatePath, PathParam } from 'react-router-dom';
import { isDefined } from 'twenty-ui';
export const getAppPath = <T extends AppPath>(
to: T,
params?: { [key in PathParam<T>]: string | null },
queryParams?: Record<string, any>,
) => {
let path: string = to;
if (isDefined(params)) {
path = generatePath<T>(to, params);
}
if (isDefined(queryParams)) {
const filteredParams = Object.fromEntries(
Object.entries(queryParams).filter(([_, value]) => isDefined(value)),
);
const queryString = qs.stringify(filteredParams);
if (queryString !== '') {
path += `?${queryString}`;
}
}
return path;
};

View File

@ -0,0 +1,36 @@
import { AppPath } from '@/types/AppPath';
import { SettingsPath } from '@/types/SettingsPath';
import qs from 'qs';
import { generatePath, PathParam } from 'react-router-dom';
import { isDefined } from 'twenty-ui';
export const getSettingsPath = <T extends SettingsPath>(
to: T,
params?: {
[key in PathParam<`/${AppPath.Settings}/${T}`>]: string | null;
},
queryParams?: Record<string, any>,
) => {
let path = `/${AppPath.Settings}/${to}`;
if (isDefined(params)) {
path = generatePath<`/${AppPath.Settings}/${T}`>(
`/${AppPath.Settings}/${to}`,
params,
);
}
if (isDefined(queryParams)) {
const filteredParams = Object.fromEntries(
Object.entries(queryParams).filter(([_, value]) => isDefined(value)),
);
const queryString = qs.stringify(filteredParams);
if (queryString !== '') {
path += `?${queryString}`;
}
}
return path;
};