diff --git a/client/src/components/Chat/Menus/HeaderNewChat.tsx b/client/src/components/Chat/Menus/HeaderNewChat.tsx index 0569157494..e417d6d6d8 100644 --- a/client/src/components/Chat/Menus/HeaderNewChat.tsx +++ b/client/src/components/Chat/Menus/HeaderNewChat.tsx @@ -11,6 +11,18 @@ export default function HeaderNewChat() { const queryClient = useQueryClient(); const { conversation, newConversation } = useChatContext(); + const clickHandler: React.MouseEventHandler = (e) => { + if (e.button === 0 && (e.ctrlKey || e.metaKey)) { + window.open('/c/new', '_blank'); + return; + } + queryClient.setQueryData( + [QueryKeys.messages, conversation?.conversationId ?? Constants.NEW_CONVO], + [], + ); + newConversation(); + }; + return ( { - queryClient.setQueryData( - [QueryKeys.messages, conversation?.conversationId ?? Constants.NEW_CONVO], - [], - ); - newConversation(); - }} + onClick={clickHandler} > diff --git a/client/src/components/Nav/NewChat.tsx b/client/src/components/Nav/NewChat.tsx index 36c66779ee..4ca8017f4c 100644 --- a/client/src/components/Nav/NewChat.tsx +++ b/client/src/components/Nav/NewChat.tsx @@ -31,23 +31,29 @@ export default function NewChat({ const defaultPreset = useRecoilValue(store.defaultPreset); const { conversation } = store.useCreateConversationAtom(index); - const clickHandler = useCallback(() => { - queryClient.setQueryData( - [QueryKeys.messages, conversation?.conversationId ?? Constants.NEW_CONVO], - [], - ); - const startupConfig = queryClient.getQueryData([QueryKeys.startupConfig]); - const defaultSpec = getDefaultModelSpec(startupConfig); - const preset = defaultSpec != null ? getModelSpecPreset(defaultSpec) : defaultPreset; - const params = createChatSearchParams(preset ?? conversation); - const newRoute = params.size > 0 ? `/c/new?${params.toString()}` : '/c/new'; - - newConvo(); - navigate(newRoute); - if (isSmallScreen) { - toggleNav(); - } - }, [queryClient, conversation, newConvo, navigate, toggleNav, defaultPreset, isSmallScreen]); + const clickHandler: React.MouseEventHandler = useCallback( + (e) => { + if (e.button === 0 && (e.ctrlKey || e.metaKey)) { + window.open('/c/new', '_blank'); + return; + } + queryClient.setQueryData( + [QueryKeys.messages, conversation?.conversationId ?? Constants.NEW_CONVO], + [], + ); + const startupConfig = queryClient.getQueryData([QueryKeys.startupConfig]); + const defaultSpec = getDefaultModelSpec(startupConfig); + const preset = defaultSpec != null ? getModelSpecPreset(defaultSpec) : defaultPreset; + const params = createChatSearchParams(preset ?? conversation); + const newRoute = params.size > 0 ? `/c/new?${params.toString()}` : '/c/new'; + newConvo(); + navigate(newRoute); + if (isSmallScreen) { + toggleNav(); + } + }, + [queryClient, conversation, newConvo, navigate, toggleNav, defaultPreset, isSmallScreen], + ); return ( <>