fix: open new chat in new tab when clicking with CTRL/meta

This commit is contained in:
Danny Avila 2025-04-27 02:17:37 -04:00
parent 17e2e0eee5
commit c18b5c95d4
No known key found for this signature in database
GPG key ID: BF31EEB2C5CA0956
2 changed files with 36 additions and 24 deletions

View file

@ -11,6 +11,18 @@ export default function HeaderNewChat() {
const queryClient = useQueryClient();
const { conversation, newConversation } = useChatContext();
const clickHandler: React.MouseEventHandler<HTMLButtonElement> = (e) => {
if (e.button === 0 && (e.ctrlKey || e.metaKey)) {
window.open('/c/new', '_blank');
return;
}
queryClient.setQueryData<TMessage[]>(
[QueryKeys.messages, conversation?.conversationId ?? Constants.NEW_CONVO],
[],
);
newConversation();
};
return (
<TooltipAnchor
description={localize('com_ui_new_chat')}
@ -21,13 +33,7 @@ export default function HeaderNewChat() {
data-testid="wide-header-new-chat-button"
aria-label={localize('com_ui_new_chat')}
className="rounded-xl border border-border-light bg-surface-secondary p-2 hover:bg-surface-hover max-md:hidden"
onClick={() => {
queryClient.setQueryData<TMessage[]>(
[QueryKeys.messages, conversation?.conversationId ?? Constants.NEW_CONVO],
[],
);
newConversation();
}}
onClick={clickHandler}
>
<NewChatIcon />
</Button>

View file

@ -31,23 +31,29 @@ export default function NewChat({
const defaultPreset = useRecoilValue(store.defaultPreset);
const { conversation } = store.useCreateConversationAtom(index);
const clickHandler = useCallback(() => {
queryClient.setQueryData<TMessage[]>(
[QueryKeys.messages, conversation?.conversationId ?? Constants.NEW_CONVO],
[],
);
const startupConfig = queryClient.getQueryData<TStartupConfig>([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<HTMLButtonElement> = useCallback(
(e) => {
if (e.button === 0 && (e.ctrlKey || e.metaKey)) {
window.open('/c/new', '_blank');
return;
}
queryClient.setQueryData<TMessage[]>(
[QueryKeys.messages, conversation?.conversationId ?? Constants.NEW_CONVO],
[],
);
const startupConfig = queryClient.getQueryData<TStartupConfig>([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 (
<>