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:
30
packages/twenty-front/src/utils/navigation/getAppPath.ts
Normal file
30
packages/twenty-front/src/utils/navigation/getAppPath.ts
Normal 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;
|
||||
};
|
||||
@ -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;
|
||||
};
|
||||
Reference in New Issue
Block a user