Add rename/delete/send to cmd+k

This commit is contained in:
Gregory Schier
2024-07-30 15:10:24 -07:00
parent a75b1a3472
commit 86856e3506
6 changed files with 103 additions and 45 deletions

View File

@@ -0,0 +1,42 @@
import { useMutation } from '@tanstack/react-query';
import { InlineCode } from '../components/core/InlineCode';
import { usePrompt } from './usePrompt';
import { useRequests } from './useRequests';
import { useUpdateAnyGrpcRequest } from './useUpdateAnyGrpcRequest';
import { useUpdateAnyHttpRequest } from './useUpdateAnyHttpRequest';
export function useRenameRequest(requestId: string | null) {
const prompt = usePrompt();
const updateHttpRequest = useUpdateAnyHttpRequest();
const updateGrpcRequest = useUpdateAnyGrpcRequest();
const requests = useRequests();
return useMutation({
mutationFn: async () => {
const request = requests.find((r) => r.id === requestId);
if (request == null) return;
const name = await prompt({
id: 'rename-request',
title: 'Rename Request',
description:
request.name === '' ? (
'Enter a new name'
) : (
<>
Enter a new name for <InlineCode>{request.name}</InlineCode>
</>
),
name: 'name',
label: 'Name',
placeholder: 'New Name',
defaultValue: request.name,
});
if (request.model === 'http_request') {
updateHttpRequest.mutate({ id: request.id, update: (r) => ({ ...r, name }) });
} else {
updateGrpcRequest.mutate({ id: request.id, update: (r) => ({ ...r, name }) });
}
},
});
}

View File

@@ -1,10 +1,10 @@
import { useCallback } from 'react';
import { CommandPalette } from '../components/CommandPalette';
import { useDialog } from '../components/DialogContext';
import { useHotKey } from './useHotKey';
export function useCommandPalette() {
export function useToggleCommandPalette() {
const dialog = useDialog();
useHotKey('command_palette.toggle', () => {
const togglePalette = useCallback(() => {
dialog.toggle({
id: 'command_palette',
size: 'dynamic',
@@ -15,5 +15,7 @@ export function useCommandPalette() {
noScroll: true,
render: ({ hide }) => <CommandPalette onClose={hide} />,
});
});
}, [dialog]);
return togglePalette;
}