# Introduction closes https://github.com/twentyhq/core-team-issues/issues/591 Same than for `twenty-shared` made in https://github.com/twentyhq/twenty/pull/11083. ## TODO - [x] Manual migrate twenty-website twenty-ui imports ## What's next: - Generate barrel and migration script factorization within own package + tests - Refactoring using preconstruct ? TimeBox - Lint circular dependencies - Lint import from barrel and forbid them ### Preconstruct We need custom rollup plugins addition, but preconstruct does not expose its rollup configuration. It might be possible to handle this using the babel overrides. But was a big tunnel. We could give it a try afterwards ! ( allowing cjs interop and stuff like that ) Stuck to vite lib app Closed related PRs: - https://github.com/twentyhq/twenty/pull/11294 - https://github.com/twentyhq/twenty/pull/11203
58 lines
1.8 KiB
TypeScript
58 lines
1.8 KiB
TypeScript
import { commandMenuNavigationStackState } from '@/command-menu/states/commandMenuNavigationStackState';
|
|
import { commandMenuPageInfoState } from '@/command-menu/states/commandMenuPageInfoState';
|
|
import { useRecoilCallback } from 'recoil';
|
|
import { IconComponent, IconDotsVertical } from 'twenty-ui/display';
|
|
|
|
export const useUpdateCommandMenuPageInfo = () => {
|
|
const updateCommandMenuPageInfo = useRecoilCallback(
|
|
({ snapshot, set }) =>
|
|
({
|
|
pageTitle,
|
|
pageIcon,
|
|
}: {
|
|
pageTitle?: string;
|
|
pageIcon?: IconComponent;
|
|
}) => {
|
|
const commandMenuPageInfo = snapshot
|
|
.getLoadable(commandMenuPageInfoState)
|
|
.getValue();
|
|
|
|
const newCommandMenuPageInfo = {
|
|
...commandMenuPageInfo,
|
|
title: pageTitle ?? commandMenuPageInfo.title ?? '',
|
|
Icon: pageIcon ?? commandMenuPageInfo.Icon ?? IconDotsVertical,
|
|
};
|
|
|
|
set(commandMenuPageInfoState, newCommandMenuPageInfo);
|
|
|
|
const commandMenuNavigationStack = snapshot
|
|
.getLoadable(commandMenuNavigationStackState)
|
|
.getValue();
|
|
|
|
const lastCommandMenuNavigationStackItem =
|
|
commandMenuNavigationStack.at(-1);
|
|
|
|
if (!lastCommandMenuNavigationStackItem) {
|
|
return;
|
|
}
|
|
|
|
const newCommandMenuNavigationStack = [
|
|
...commandMenuNavigationStack.slice(0, -1),
|
|
{
|
|
page: lastCommandMenuNavigationStackItem.page,
|
|
pageTitle: newCommandMenuPageInfo.title,
|
|
pageIcon: newCommandMenuPageInfo.Icon,
|
|
pageId: lastCommandMenuNavigationStackItem.pageId,
|
|
},
|
|
];
|
|
|
|
set(commandMenuNavigationStackState, newCommandMenuNavigationStack);
|
|
},
|
|
[],
|
|
);
|
|
|
|
return {
|
|
updateCommandMenuPageInfo,
|
|
};
|
|
};
|