import classnames from 'classnames'; import { act } from 'react-dom/test-utils'; import { useActiveRequest } from '../hooks/useActiveRequest'; import { useIsResponseLoading } from '../hooks/useIsResponseLoading'; import { useKeyValue } from '../hooks/useKeyValue'; import { useSendRequest } from '../hooks/useSendRequest'; import { useUpdateRequest } from '../hooks/useUpdateRequest'; import { tryFormatJson } from '../lib/formatters'; import { Editor } from './core/Editor'; import { PairEditor } from './core/PairEditor'; import { TabContent, Tabs } from './core/Tabs/Tabs'; import { GraphQLEditor } from './editors/GraphQLEditor'; import { UrlBar } from './UrlBar'; interface Props { fullHeight: boolean; className?: string; } export function RequestPane({ fullHeight, className }: Props) { const activeRequest = useActiveRequest(); const updateRequest = useUpdateRequest(activeRequest); const sendRequest = useSendRequest(activeRequest); const responseLoading = useIsResponseLoading(); const activeTab = useKeyValue({ key: ['active_request_body_tab', activeRequest?.id ?? 'n/a'], initialValue: 'body', }); if (activeRequest === null) return null; return (
updateRequest.mutate({ method })} onUrlChange={(url) => updateRequest.mutate({ url })} sendRequest={sendRequest} loading={responseLoading} /> updateRequest.mutate({ bodyType: bodyType.value }), value: activeRequest.bodyType ?? 'nobody', items: [ { label: 'No Body', value: 'nobody' }, { label: 'JSON', value: 'json' }, { label: 'GraphQL', value: 'graphql' }, ], }, }, { value: 'params', label: 'Params' }, { value: 'headers', label: 'Headers' }, { value: 'auth', label: 'Auth' }, ]} className="mt-2" label="Request body" > updateRequest.mutate({ headers })} /> {activeRequest.bodyType === 'json' ? ( updateRequest.mutate({ body })} format={activeRequest.bodyType === 'json' ? (v) => tryFormatJson(v) : undefined} /> ) : activeRequest.bodyType === 'graphql' ? ( updateRequest.mutate({ body })} /> ) : (
No Body
)}
); }