afeef8e04a
figma https://www.figma.com/design/xt8O9mFeLl46C5InWwoMrN/Twenty?node-id=93630-365000&t=QesAkY3JOyI9D3UU-0 https://github.com/user-attachments/assets/cf3b354d-0b08-41ae-91ae-386054b5cb2e https://github.com/user-attachments/assets/73bfd676-f823-44c9-a70d-107c20523664 --------- Co-authored-by: Charles Bochet <charles@twenty.com>
35 lines
1.1 KiB
TypeScript
35 lines
1.1 KiB
TypeScript
import { isDefined } from 'twenty-shared/utils';
|
|
|
|
import { commandMenuItemsDraftState } from '@/command-menu-item/server-items/edit/states/commandMenuItemsDraftState';
|
|
import { commandMenuItemsSelector } from '@/command-menu-item/server-items/common/states/commandMenuItemsSelector';
|
|
import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue';
|
|
|
|
import { isDeeplyEqual } from '~/utils/isDeeplyEqual';
|
|
|
|
export const useCommandMenuItemsDraftState = () => {
|
|
const commandMenuItems = useAtomStateValue(commandMenuItemsSelector);
|
|
const commandMenuItemsDraft = useAtomStateValue(commandMenuItemsDraftState);
|
|
|
|
const isDirty =
|
|
isDefined(commandMenuItemsDraft) &&
|
|
!isDeeplyEqual(
|
|
commandMenuItemsDraft.map(({ id, isPinned, position, shortLabel }) => ({
|
|
id,
|
|
isPinned,
|
|
position,
|
|
shortLabel,
|
|
})),
|
|
commandMenuItems.map(({ id, isPinned, position, shortLabel }) => ({
|
|
id,
|
|
isPinned,
|
|
position,
|
|
shortLabel,
|
|
})),
|
|
);
|
|
|
|
return {
|
|
commandMenuItemsDraft,
|
|
isDirty,
|
|
};
|
|
};
|