From cb96a175dfd00d7fdd2125c232e909631d8b4bfe Mon Sep 17 00:00:00 2001 From: Anoop M D Date: Sat, 19 Mar 2022 18:33:16 +0530 Subject: [PATCH] feat: add and update request headers --- .../RequestPane/HttpRequestPane/index.js | 4 +- .../RequestPane/RequestHeaders/index.js | 89 +++++++++++-------- renderer/components/RequestTabPanel/index.js | 2 + .../ReduxStore/slices/collections.js | 44 +++++++++ renderer/utils/collections/index.js | 17 +++- renderer/utils/network/index.js | 8 ++ 6 files changed, 125 insertions(+), 39 deletions(-) diff --git a/renderer/components/RequestPane/HttpRequestPane/index.js b/renderer/components/RequestPane/HttpRequestPane/index.js index e955bb6e3..43748c083 100644 --- a/renderer/components/RequestPane/HttpRequestPane/index.js +++ b/renderer/components/RequestPane/HttpRequestPane/index.js @@ -4,7 +4,7 @@ import QueryParams from 'components/RequestPane/QueryParams'; import RequestHeaders from 'components/RequestPane/RequestHeaders'; import StyledWrapper from './StyledWrapper'; -const HttpRequestPane = ({leftPaneWidth}) => { +const HttpRequestPane = ({item, collection, leftPaneWidth}) => { return ( @@ -21,7 +21,7 @@ const HttpRequestPane = ({leftPaneWidth}) => {
Body
- +
Auth
diff --git a/renderer/components/RequestPane/RequestHeaders/index.js b/renderer/components/RequestPane/RequestHeaders/index.js index dc12d1b2a..560dacf01 100644 --- a/renderer/components/RequestPane/RequestHeaders/index.js +++ b/renderer/components/RequestPane/RequestHeaders/index.js @@ -1,36 +1,55 @@ -import React, { useState } from 'react'; -import { nanoid } from 'nanoid'; +import React from 'react'; +import get from 'lodash/get'; +import cloneDeep from 'lodash/cloneDeep'; import { IconTrash } from '@tabler/icons'; +import { useDispatch } from 'react-redux'; +import { requestChanged } from 'providers/ReduxStore/slices/tabs'; +import { addRequestHeader, updateRequestHeader } from 'providers/ReduxStore/slices/collections'; import StyledWrapper from './StyledWrapper'; -const initialState = [{ - uid: nanoid(), - enabled: true -}]; - -const RequestHeaders = () => { - const [headers, setHeaders] = useState(initialState); +const RequestHeaders = ({item, collection}) => { + const dispatch = useDispatch(); + const headers = item.draft ? get(item, 'draft.request.headers') : get(item, 'request.headers'); const addHeader = () => { - let newHeader = { - uid: nanoid(), - key: '', - value: '', - description: '', - enabled: true - }; - - let newHeaders = [...headers, newHeader]; - setHeaders(newHeaders); + dispatch(requestChanged({ + itemUid: item.uid, + collectionUid: collection.uid + })); + dispatch(addRequestHeader({ + itemUid: item.uid, + collectionUid: collection.uid, + })); }; - const handleHeaderValueChange = (e, index, menu) => { - // todo: yet to implement + const handleHeaderValueChange = (e, _header, type) => { + const header = cloneDeep(_header); + switch(type) { + case 'name' : { + header.name = e.target.value; + break; + } + case 'value' : { + header.value = e.target.value; + break; + } + case 'description' : { + header.description = e.target.value; + break; + } + } + dispatch(requestChanged({ + itemUid: item.uid, + collectionUid: collection.uid + })); + dispatch(updateRequestHeader({ + header: header, + itemUid: item.uid, + collectionUid: collection.uid, + })); }; const handleRemoveHeader = (index) => { - headers.splice(index, 1); - setHeaders([...headers]); }; return ( @@ -51,28 +70,28 @@ const RequestHeaders = () => { handleHeaderValueChange(e, index, 'key')} + value={header.name} + className="mousetrap" + onChange={(e) => handleHeaderValueChange(e, header, 'name')} /> handleHeaderValueChange(e, index, 'value')} + value={header.value} + className="mousetrap" + onChange={(e) => handleHeaderValueChange(e, header, 'value')} /> handleHeaderValueChange(e, index, 'description')} + value={header.description} + className="mousetrap" + onChange={(e) => handleHeaderValueChange(e, header, 'description')} /> @@ -80,9 +99,9 @@ const RequestHeaders = () => { handleHeaderValueChange(e, index, 'enabled')} + checked={header.enabled} + className="mousetrap" + onChange={(e) => handleHeaderValueChange(e, header, 'enabled')} />