e1731bb31e
Co-authored-by: etiennejouan <jouan.etienne@gmail.com>
64 lines
2.1 KiB
TypeScript
64 lines
2.1 KiB
TypeScript
import { useCallback } from 'react';
|
|
import { useLocation } from 'react-router-dom';
|
|
import { useRecoilValue, useSetRecoilState } from 'recoil';
|
|
|
|
import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState';
|
|
import { SettingsPath } from '@/types/SettingsPath';
|
|
import { navigationMemorizedUrlState } from '@/ui/navigation/states/navigationMemorizedUrlState';
|
|
import { useRecoilComponentValueV2 } from '@/ui/utilities/state/component-state/hooks/useRecoilComponentValueV2';
|
|
import { viewObjectMetadataIdComponentState } from '@/views/states/viewObjectMetadataIdComponentState';
|
|
import { FieldMetadataType } from '~/generated-metadata/graphql';
|
|
import { useNavigateSettings } from '~/hooks/useNavigateSettings';
|
|
import { isDefined } from '~/utils/isDefined';
|
|
|
|
export const useGetAvailableFieldsForKanban = () => {
|
|
const viewObjectMetadataId = useRecoilComponentValueV2(
|
|
viewObjectMetadataIdComponentState,
|
|
);
|
|
const objectMetadataItems = useRecoilValue(objectMetadataItemsState);
|
|
const setNavigationMemorizedUrl = useSetRecoilState(
|
|
navigationMemorizedUrlState,
|
|
);
|
|
const location = useLocation();
|
|
|
|
const objectMetadataItem = objectMetadataItems.find(
|
|
(objectMetadata) => objectMetadata.id === viewObjectMetadataId,
|
|
);
|
|
|
|
const availableFieldsForKanban =
|
|
objectMetadataItem?.fields.filter(
|
|
(field) => field.type === FieldMetadataType.SELECT,
|
|
) ?? [];
|
|
|
|
const navigate = useNavigateSettings();
|
|
|
|
const navigateToSelectSettings = useCallback(() => {
|
|
setNavigationMemorizedUrl(location.pathname + location.search);
|
|
|
|
if (isDefined(objectMetadataItem?.namePlural)) {
|
|
navigate(
|
|
SettingsPath.ObjectNewFieldConfigure,
|
|
{
|
|
objectNamePlural: objectMetadataItem.namePlural,
|
|
},
|
|
{
|
|
fieldType: FieldMetadataType.SELECT,
|
|
},
|
|
);
|
|
} else {
|
|
navigate(SettingsPath.Objects);
|
|
}
|
|
}, [
|
|
setNavigationMemorizedUrl,
|
|
location.pathname,
|
|
location.search,
|
|
objectMetadataItem,
|
|
navigate,
|
|
]);
|
|
|
|
return {
|
|
availableFieldsForKanban,
|
|
navigateToSelectSettings,
|
|
};
|
|
};
|