40 lines
1.2 KiB
TypeScript
40 lines
1.2 KiB
TypeScript
import { useSidePanelMenu } from '@/side-panel/hooks/useSidePanelMenu';
|
|
import { isSidePanelOpenedState } from '@/side-panel/states/isSidePanelOpenedState';
|
|
import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue';
|
|
import { t } from '@lingui/core/macro';
|
|
import { useCallback } from 'react';
|
|
import { SidePanelPages } from 'twenty-shared/types';
|
|
import { IconSparkles } from 'twenty-ui/display';
|
|
import { v4 } from 'uuid';
|
|
|
|
export const useOpenAskAIPageInSidePanel = () => {
|
|
const { navigateSidePanelMenu } = useSidePanelMenu();
|
|
const isSidePanelOpened = useAtomStateValue(isSidePanelOpenedState);
|
|
|
|
const openAskAIPage = useCallback(
|
|
({
|
|
resetNavigationStack,
|
|
}: {
|
|
resetNavigationStack?: boolean;
|
|
} = {}) => {
|
|
const shouldReset =
|
|
resetNavigationStack !== undefined
|
|
? resetNavigationStack
|
|
: isSidePanelOpened;
|
|
|
|
navigateSidePanelMenu({
|
|
page: SidePanelPages.AskAI,
|
|
pageTitle: t`Ask AI`,
|
|
pageIcon: IconSparkles,
|
|
pageId: v4(),
|
|
resetNavigationStack: shouldReset,
|
|
});
|
|
},
|
|
[navigateSidePanelMenu, isSidePanelOpened],
|
|
);
|
|
|
|
return {
|
|
openAskAIPage,
|
|
};
|
|
};
|