diff --git a/src-web/components/Sidebar.tsx b/src-web/components/Sidebar.tsx index a5783c99..0a594359 100644 --- a/src-web/components/Sidebar.tsx +++ b/src-web/components/Sidebar.tsx @@ -6,6 +6,7 @@ import { useDrag, useDrop } from 'react-dnd'; import { useKey, useKeyPressEvent } from 'react-use'; import { useActiveEnvironmentId } from '../hooks/useActiveEnvironmentId'; +import { useActiveRequest } from '../hooks/useActiveRequest'; import { useActiveRequestId } from '../hooks/useActiveRequestId'; import { useActiveWorkspace } from '../hooks/useActiveWorkspace'; import { useAppRoutes } from '../hooks/useAppRoutes'; @@ -527,8 +528,8 @@ const SidebarItem = forwardRef(function SidebarItem( const updateAnyFolder = useUpdateAnyFolder(); const prompt = usePrompt(); const [editing, setEditing] = useState(false); - const activeRequestId = useActiveRequestId(); - const isActive = activeRequestId === itemId; + const activeRequest = useActiveRequest(); + const isActive = activeRequest?.id === itemId; const handleSubmitNameEdit = useCallback( (el: HTMLInputElement) => { @@ -629,9 +630,8 @@ const SidebarItem = forwardRef(function SidebarItem( { key: 'createRequest', label: 'New Request', - hotkeyAction: 'request.create', leftSlot: , - onSelect: () => createRequest.mutate({ folderId: itemId, sortPriority: -1 }), + onSelect: () => createRequest.mutate({ folderId: itemId }), }, { key: 'createFolder', @@ -647,7 +647,7 @@ const SidebarItem = forwardRef(function SidebarItem( hotkeyAction: 'request.duplicate', leftSlot: , onSelect: () => { - if (activeRequestId === itemId) { + if (activeRequest?.id === itemId) { duplicateRequest.mutate(); } }, diff --git a/src-web/hooks/useCreateRequest.ts b/src-web/hooks/useCreateRequest.ts index bed53ec7..ba5b2f10 100644 --- a/src-web/hooks/useCreateRequest.ts +++ b/src-web/hooks/useCreateRequest.ts @@ -24,7 +24,15 @@ export function useCreateRequest() { if (workspaceId === null) { throw new Error("Cannot create request when there's no active workspace"); } - patch.sortPriority = patch.sortPriority || -Date.now(); + if (patch.sortPriority === undefined) { + if (activeRequest != null) { + // Place above currently-active request + patch.sortPriority = activeRequest.sortPriority + 0.0001; + } else { + // Place at the very top + patch.sortPriority = -Date.now(); + } + } patch.folderId = patch.folderId || activeRequest?.folderId; return invoke('create_request', { workspaceId, name: '', ...patch }); },