diff --git a/src-web/commands/duplicateWebsocketRequest.ts b/src-web/commands/duplicateWebsocketRequest.ts index 7f5ac999..867626b5 100644 --- a/src-web/commands/duplicateWebsocketRequest.ts +++ b/src-web/commands/duplicateWebsocketRequest.ts @@ -1,12 +1,11 @@ -import type { WebsocketRequest } from '@yaakapp-internal/models'; import { duplicateWebsocketRequest as cmdDuplicateWebsocketRequest } from '@yaakapp-internal/ws'; import { createFastMutation } from '../hooks/useFastMutation'; import { router } from '../lib/router'; export const duplicateWebsocketRequest = createFastMutation({ mutationKey: ['delete_websocket_connection'], - mutationFn: async function (request: WebsocketRequest) { - return cmdDuplicateWebsocketRequest(request.id); + mutationFn: async function (requestId: string) { + return cmdDuplicateWebsocketRequest(requestId); }, onSuccess: async (request) => { await router.navigate({ diff --git a/src-web/components/Workspace.tsx b/src-web/components/Workspace.tsx index 9a2d2254..79b704cb 100644 --- a/src-web/components/Workspace.tsx +++ b/src-web/components/Workspace.tsx @@ -261,7 +261,7 @@ function useGlobalWorkspaceHooks() { } else if (activeRequest.model === 'grpc_request') { await duplicateGrpcRequest.mutateAsync(); } else if (activeRequest.model === 'websocket_request') { - await duplicateWebsocketRequest.mutateAsync(activeRequest); + await duplicateWebsocketRequest.mutateAsync(activeRequest.id); } else { // eslint-disable-next-line @typescript-eslint/no-explicit-any throw new Error('Failed to duplicate invalid request model: ' + (activeRequest as any).model); diff --git a/src-web/components/sidebar/SidebarItemContextMenu.tsx b/src-web/components/sidebar/SidebarItemContextMenu.tsx index 53fa0949..6c4b743c 100644 --- a/src-web/components/sidebar/SidebarItemContextMenu.tsx +++ b/src-web/components/sidebar/SidebarItemContextMenu.tsx @@ -1,11 +1,13 @@ import React, { useMemo } from 'react'; +import { duplicateWebsocketRequest } from '../../commands/duplicateWebsocketRequest'; import { useCreateDropdownItems } from '../../hooks/useCreateDropdownItems'; -import { useDeleteFolder } from '../../hooks/useDeleteFolder'; import { useDeleteAnyRequest } from '../../hooks/useDeleteAnyRequest'; +import { useDeleteFolder } from '../../hooks/useDeleteFolder'; import { useDuplicateFolder } from '../../hooks/useDuplicateFolder'; import { useDuplicateGrpcRequest } from '../../hooks/useDuplicateGrpcRequest'; import { useDuplicateHttpRequest } from '../../hooks/useDuplicateHttpRequest'; import { useHttpRequestActions } from '../../hooks/useHttpRequestActions'; +import { getHttpRequest } from '../../hooks/useHttpRequests'; import { useMoveToWorkspace } from '../../hooks/useMoveToWorkspace'; import { useRenameRequest } from '../../hooks/useRenameRequest'; import { useSendAnyHttpRequest } from '../../hooks/useSendAnyHttpRequest'; @@ -18,7 +20,6 @@ import { ContextMenu } from '../core/Dropdown'; import { Icon } from '../core/Icon'; import { FolderSettingsDialog } from '../FolderSettingsDialog'; import type { SidebarTreeNode } from './Sidebar'; -import { getHttpRequest } from '../../hooks/useHttpRequests'; interface Props { child: SidebarTreeNode; @@ -110,10 +111,17 @@ export function SidebarItemContextMenu({ child, show, close }: Props) { hotKeyAction: 'http_request.duplicate', hotKeyLabelOnly: true, // Would trigger for every request (bad) leftSlot: , - onSelect: () => - child.model === 'http_request' - ? duplicateHttpRequest.mutate() - : duplicateGrpcRequest.mutate(), + onSelect: () => { + if (child.model === 'http_request') { + duplicateHttpRequest.mutate(); + } else if (child.model === 'grpc_request') { + duplicateGrpcRequest.mutate(); + } else if (child.model === 'websocket_request') { + duplicateWebsocketRequest.mutate(child.id); + } else { + throw new Error('Cannot duplicate invalid model: ' + child.model); + } + }, }, { label: 'Move',