Fix(view): Create Button is not visible when creating Kanban View (#5969)
Closes #5915 This issue occurs only when there is no select field. The user then creates a new one in settings and returns back to the view picker. And the bug arises, it because `viewPickerKanbanFieldMetadataId` is not being set correctly. When a user navigate to settings, the dirty state should be set to false. As a result, after re-rendering the view picker component, it triggers the effect to set `viewPickerKanbanFieldMetadataId` --------- Co-authored-by: Achsan <achsanh@gmail.com> Co-authored-by: Lucas Bordeau <bordeau.lucas@gmail.com>
This commit is contained in:
@ -1,16 +1,24 @@
|
||||
import { useCallback } from 'react';
|
||||
import { useNavigate } from 'react-router-dom';
|
||||
import { useRecoilValue } from 'recoil';
|
||||
import { useLocation, useNavigate } from 'react-router-dom';
|
||||
import { useRecoilValue, useSetRecoilState } from 'recoil';
|
||||
|
||||
import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState';
|
||||
import { navigationMemorizedUrlState } from '@/ui/navigation/states/navigationMemorizedUrlState';
|
||||
import { useViewStates } from '@/views/hooks/internal/useViewStates';
|
||||
import { useViewPickerStates } from '@/views/view-picker/hooks/useViewPickerStates';
|
||||
import { FieldMetadataType } from '~/generated-metadata/graphql';
|
||||
|
||||
export const useGetAvailableFieldsForKanban = () => {
|
||||
const { viewObjectMetadataIdState } = useViewStates();
|
||||
const { viewPickerIsDirtyState } = useViewPickerStates();
|
||||
|
||||
const viewObjectMetadataId = useRecoilValue(viewObjectMetadataIdState);
|
||||
const objectMetadataItems = useRecoilValue(objectMetadataItemsState);
|
||||
const setViewPickerIsDirty = useSetRecoilState(viewPickerIsDirtyState);
|
||||
const setNavigationMemorizedUrl = useSetRecoilState(
|
||||
navigationMemorizedUrlState,
|
||||
);
|
||||
const location = useLocation();
|
||||
|
||||
const objectMetadataItem = objectMetadataItems.find(
|
||||
(objectMetadata) => objectMetadata.id === viewObjectMetadataId,
|
||||
@ -24,8 +32,18 @@ export const useGetAvailableFieldsForKanban = () => {
|
||||
const navigate = useNavigate();
|
||||
|
||||
const navigateToSelectSettings = useCallback(() => {
|
||||
setViewPickerIsDirty(false);
|
||||
|
||||
setNavigationMemorizedUrl(location.pathname + location.search);
|
||||
|
||||
navigate(`/settings/objects/${objectMetadataItem?.namePlural}`);
|
||||
}, [navigate, objectMetadataItem?.namePlural]);
|
||||
}, [
|
||||
navigate,
|
||||
objectMetadataItem?.namePlural,
|
||||
setViewPickerIsDirty,
|
||||
setNavigationMemorizedUrl,
|
||||
location,
|
||||
]);
|
||||
|
||||
return {
|
||||
availableFieldsForKanban,
|
||||
|
||||
Reference in New Issue
Block a user