diff --git a/src/components/WebLogView/RequestDetails/FormPayloadPreview.tsx b/src/components/WebLogView/RequestDetails/FormPayloadPreview.tsx new file mode 100644 index 00000000..15ad5807 --- /dev/null +++ b/src/components/WebLogView/RequestDetails/FormPayloadPreview.tsx @@ -0,0 +1,31 @@ +import { safeJsonParse } from '@/utils/json' +import { Table } from '@radix-ui/themes' + +export function FormPayloadPreview({ + payloadJsonString, +}: { + payloadJsonString: string +}) { + const contentObject = safeJsonParse>(payloadJsonString) + + return ( + + + + Name + Value + + + + + {contentObject && + Object.entries(contentObject).map(([key, value]) => ( + + {key} + {value} + + ))} + + + ) +} diff --git a/src/components/WebLogView/RequestDetails/Payload.tsx b/src/components/WebLogView/RequestDetails/Payload.tsx index 91ebd667..94f80499 100644 --- a/src/components/WebLogView/RequestDetails/Payload.tsx +++ b/src/components/WebLogView/RequestDetails/Payload.tsx @@ -4,9 +4,12 @@ import { ProxyData } from '@/types' import { ReadOnlyEditor } from '../../Monaco/ReadOnlyEditor' import { parseParams } from './utils' +import { getContentType } from '@/utils/headers' +import { FormPayloadPreview } from './FormPayloadPreview' export function Payload({ data }: { data: ProxyData }) { const content = parseParams(data) + const contentType = getContentType(data.request?.headers ?? []) if (!content) { return ( @@ -16,5 +19,9 @@ export function Payload({ data }: { data: ProxyData }) { ) } + if (contentType === 'application/x-www-form-urlencoded') { + return + } + return } diff --git a/src/proxy.ts b/src/proxy.ts index e98e1d6e..4ad35048 100644 --- a/src/proxy.ts +++ b/src/proxy.ts @@ -68,7 +68,7 @@ export const launchProxy = ( return } - const proxyData: ProxyData = safeJsonParse(data) + const proxyData = safeJsonParse(data) if (proxyData) { browserWindow.webContents.send('proxy:data', proxyData) } diff --git a/src/rules/shared.ts b/src/rules/shared.ts index a7dd7041..ddb55c03 100644 --- a/src/rules/shared.ts +++ b/src/rules/shared.ts @@ -32,7 +32,7 @@ export const setJsonObjectFromPath = ( value: string ) => { const jsonObject = safeJsonParse(json) - set(jsonObject, path, value) + set(jsonObject ?? {}, path, value) return JSON.stringify(jsonObject) } diff --git a/src/utils/json.ts b/src/utils/json.ts index f878dcd2..070804b7 100644 --- a/src/utils/json.ts +++ b/src/utils/json.ts @@ -1,6 +1,6 @@ -export function safeJsonParse(value: string) { +export function safeJsonParse(value: string) { try { - return JSON.parse(value) + return JSON.parse(value) as T } catch (error) { console.error('Failed to parse JSON', error) return undefined