fix: settings object slug link (#6228)
fixes https://github.com/twentyhq/twenty/issues/6213 fixed the mentioned case + tried to find&fix other possible broken links
This commit is contained in:
@ -3,6 +3,7 @@ import { useNavigate } from 'react-router-dom';
|
|||||||
import { useRecoilValue, useSetRecoilState } from 'recoil';
|
import { useRecoilValue, useSetRecoilState } from 'recoil';
|
||||||
|
|
||||||
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
||||||
|
import { getObjectSlug } from '@/object-metadata/utils/getObjectSlug';
|
||||||
import { useRecordActionBar } from '@/object-record/record-action-bar/hooks/useRecordActionBar';
|
import { useRecordActionBar } from '@/object-record/record-action-bar/hooks/useRecordActionBar';
|
||||||
import { useRecordBoard } from '@/object-record/record-board/hooks/useRecordBoard';
|
import { useRecordBoard } from '@/object-record/record-board/hooks/useRecordBoard';
|
||||||
import { useRecordBoardSelection } from '@/object-record/record-board/hooks/useRecordBoardSelection';
|
import { useRecordBoardSelection } from '@/object-record/record-board/hooks/useRecordBoardSelection';
|
||||||
@ -59,10 +60,9 @@ export const RecordIndexBoardDataLoaderEffect = ({
|
|||||||
}, [recordIndexFieldDefinitions, setFieldDefinitions]);
|
}, [recordIndexFieldDefinitions, setFieldDefinitions]);
|
||||||
|
|
||||||
const navigate = useNavigate();
|
const navigate = useNavigate();
|
||||||
|
|
||||||
const navigateToSelectSettings = useCallback(() => {
|
const navigateToSelectSettings = useCallback(() => {
|
||||||
navigate(`/settings/objects/${objectMetadataItem.namePlural}`);
|
navigate(`/settings/objects/${getObjectSlug(objectMetadataItem)}`);
|
||||||
}, [navigate, objectMetadataItem.namePlural]);
|
}, [navigate, objectMetadataItem]);
|
||||||
|
|
||||||
const { resetRecordSelection } = useRecordBoardSelection(recordBoardId);
|
const { resetRecordSelection } = useRecordBoardSelection(recordBoardId);
|
||||||
|
|
||||||
|
|||||||
@ -4,6 +4,7 @@ import styled from '@emotion/styled';
|
|||||||
import { useRecoilValue } from 'recoil';
|
import { useRecoilValue } from 'recoil';
|
||||||
import { IconSettings, useIcons } from 'twenty-ui';
|
import { IconSettings, useIcons } from 'twenty-ui';
|
||||||
|
|
||||||
|
import { getObjectSlug } from '@/object-metadata/utils/getObjectSlug';
|
||||||
import { FieldMetadata } from '@/object-record/record-field/types/FieldMetadata';
|
import { FieldMetadata } from '@/object-record/record-field/types/FieldMetadata';
|
||||||
import { RecordTableContext } from '@/object-record/record-table/contexts/RecordTableContext';
|
import { RecordTableContext } from '@/object-record/record-table/contexts/RecordTableContext';
|
||||||
import { useRecordTableStates } from '@/object-record/record-table/hooks/internal/useRecordTableStates';
|
import { useRecordTableStates } from '@/object-record/record-table/hooks/internal/useRecordTableStates';
|
||||||
@ -57,7 +58,7 @@ export const RecordTableHeaderPlusButtonContent = () => {
|
|||||||
)}
|
)}
|
||||||
<DropdownMenuItemsContainer>
|
<DropdownMenuItemsContainer>
|
||||||
<StyledMenuItemLink
|
<StyledMenuItemLink
|
||||||
to={`/settings/objects/${objectMetadataItem.namePlural}`}
|
to={`/settings/objects/${getObjectSlug(objectMetadataItem)}`}
|
||||||
>
|
>
|
||||||
<MenuItem LeftIcon={IconSettings} text="Customize fields" />
|
<MenuItem LeftIcon={IconSettings} text="Customize fields" />
|
||||||
</StyledMenuItemLink>
|
</StyledMenuItemLink>
|
||||||
|
|||||||
@ -5,6 +5,7 @@ import styled from '@emotion/styled';
|
|||||||
import { IconChevronDown, useIcons } from 'twenty-ui';
|
import { IconChevronDown, useIcons } from 'twenty-ui';
|
||||||
|
|
||||||
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
|
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
|
||||||
|
import { getObjectSlug } from '@/object-metadata/utils/getObjectSlug';
|
||||||
import { useFindManyRecords } from '@/object-record/hooks/useFindManyRecords';
|
import { useFindManyRecords } from '@/object-record/hooks/useFindManyRecords';
|
||||||
import { ObjectFieldRow } from '@/settings/data-model/graph-overview/components/SettingsDataModelOverviewField';
|
import { ObjectFieldRow } from '@/settings/data-model/graph-overview/components/SettingsDataModelOverviewField';
|
||||||
import { SettingsDataModelObjectTypeTag } from '@/settings/data-model/objects/SettingsDataModelObjectTypeTag';
|
import { SettingsDataModelObjectTypeTag } from '@/settings/data-model/objects/SettingsDataModelObjectTypeTag';
|
||||||
@ -111,7 +112,7 @@ export const SettingsDataModelOverviewObject = ({
|
|||||||
<StyledNode>
|
<StyledNode>
|
||||||
<StyledHeader>
|
<StyledHeader>
|
||||||
<StyledObjectName onMouseEnter={() => {}} onMouseLeave={() => {}}>
|
<StyledObjectName onMouseEnter={() => {}} onMouseLeave={() => {}}>
|
||||||
<StyledObjectLink to={'/settings/objects/' + data.namePlural}>
|
<StyledObjectLink to={`/settings/objects/${getObjectSlug(data)}`}>
|
||||||
{Icon && <Icon size={theme.icon.size.md} />}
|
{Icon && <Icon size={theme.icon.size.md} />}
|
||||||
{capitalize(data.namePlural)}
|
{capitalize(data.namePlural)}
|
||||||
</StyledObjectLink>
|
</StyledObjectLink>
|
||||||
|
|||||||
@ -3,6 +3,7 @@ import { useLocation, useNavigate } from 'react-router-dom';
|
|||||||
import { useRecoilValue, useSetRecoilState } from 'recoil';
|
import { useRecoilValue, useSetRecoilState } from 'recoil';
|
||||||
|
|
||||||
import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState';
|
import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState';
|
||||||
|
import { getObjectSlug } from '@/object-metadata/utils/getObjectSlug';
|
||||||
import { navigationMemorizedUrlState } from '@/ui/navigation/states/navigationMemorizedUrlState';
|
import { navigationMemorizedUrlState } from '@/ui/navigation/states/navigationMemorizedUrlState';
|
||||||
import { useViewStates } from '@/views/hooks/internal/useViewStates';
|
import { useViewStates } from '@/views/hooks/internal/useViewStates';
|
||||||
import { FieldMetadataType } from '~/generated-metadata/graphql';
|
import { FieldMetadataType } from '~/generated-metadata/graphql';
|
||||||
@ -34,16 +35,19 @@ export const useGetAvailableFieldsForKanban = () => {
|
|||||||
|
|
||||||
if (isDefined(objectMetadataItem?.namePlural)) {
|
if (isDefined(objectMetadataItem?.namePlural)) {
|
||||||
navigate(
|
navigate(
|
||||||
`/settings/objects/${objectMetadataItem?.namePlural}/new-field/step-2`,
|
`/settings/objects/${getObjectSlug(
|
||||||
|
objectMetadataItem,
|
||||||
|
)}/new-field/step-2`,
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
navigate(`/settings/objects`);
|
navigate(`/settings/objects`);
|
||||||
}
|
}
|
||||||
}, [
|
}, [
|
||||||
navigate,
|
|
||||||
objectMetadataItem?.namePlural,
|
|
||||||
setNavigationMemorizedUrl,
|
setNavigationMemorizedUrl,
|
||||||
location,
|
location.pathname,
|
||||||
|
location.search,
|
||||||
|
objectMetadataItem,
|
||||||
|
navigate,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
|||||||
Reference in New Issue
Block a user