From a938dc45f057ef8231fc6b919edb3e64064aa40b Mon Sep 17 00:00:00 2001 From: Gregory Schier Date: Mon, 20 Mar 2023 13:49:21 -0700 Subject: [PATCH] Handle "no body" case --- src-tauri/src/main.rs | 6 +++--- src-web/components/RequestPane.tsx | 10 +++++----- src-web/components/core/RadioDropdown.tsx | 6 +++--- src-web/components/core/Tabs/Tabs.tsx | 1 + 4 files changed, 12 insertions(+), 11 deletions(-) diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs index 28bff184..4b8f80c6 100644 --- a/src-tauri/src/main.rs +++ b/src-tauri/src/main.rs @@ -136,9 +136,9 @@ async fn send_request( Method::from_bytes(req.method.to_uppercase().as_bytes()).expect("Failed to create method"); let builder = client.request(m, url_string.to_string()).headers(headers); - let sendable_req_result = match req.body { - Some(b) => builder.body(b).build(), - None => builder.build(), + let sendable_req_result = match (req.body, req.body_type) { + (Some(b), Some(_)) => builder.body(b).build(), + _ => builder.build(), }; let sendable_req = match sendable_req_result { diff --git a/src-web/components/RequestPane.tsx b/src-web/components/RequestPane.tsx index ad61eb48..bd50243a 100644 --- a/src-web/components/RequestPane.tsx +++ b/src-web/components/RequestPane.tsx @@ -31,12 +31,12 @@ export function RequestPane({ fullHeight, className }: Props) { () => [ { value: 'body', - label: activeRequest?.bodyType ?? 'NoBody', + label: activeRequest?.bodyType ?? 'No Body', options: { - onChange: (bodyType: string) => updateRequest.mutate({ bodyType }), - value: activeRequest?.bodyType ?? 'nobody', + onChange: (bodyType: string | null) => updateRequest.mutate({ bodyType }), + value: activeRequest?.bodyType ?? null, items: [ - { label: 'No Body', value: 'nobody' }, + { label: 'No Body', value: null }, { label: 'JSON', value: 'json' }, { label: 'XML', value: 'xml' }, { label: 'GraphQL', value: 'graphql' }, @@ -47,7 +47,7 @@ export function RequestPane({ fullHeight, className }: Props) { { value: 'headers', label: 'Headers' }, { value: 'auth', label: 'Auth' }, ], - [activeRequest?.bodyType], + [activeRequest?.bodyType ?? 'n/a'], ); const handleBodyChange = useCallback((body: string) => updateRequest.mutate({ body }), []); diff --git a/src-web/components/core/RadioDropdown.tsx b/src-web/components/core/RadioDropdown.tsx index 2adb3d96..69864a5c 100644 --- a/src-web/components/core/RadioDropdown.tsx +++ b/src-web/components/core/RadioDropdown.tsx @@ -5,12 +5,12 @@ import { Icon } from './Icon'; export interface RadioDropdownItem { label: string; - value: string; + value: string | null; } export interface RadioDropdownProps { - value: string; - onChange: (bodyType: string) => void; + value: string | null; + onChange: (value: string | null) => void; items: RadioDropdownItem[]; children: DropdownProps['children']; } diff --git a/src-web/components/core/Tabs/Tabs.tsx b/src-web/components/core/Tabs/Tabs.tsx index 539606be..f7d5e303 100644 --- a/src-web/components/core/Tabs/Tabs.tsx +++ b/src-web/components/core/Tabs/Tabs.tsx @@ -68,6 +68,7 @@ export const Tabs = memo(function Tabs({ {tabs.map((t) => { const isActive = t.value === value; if (t.options && isActive) { + console.log('OPTIONS', t.options, t.options?.value); return (