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 { useTheme } from 'providers/Theme'; import { addRequestHeader, updateRequestHeader, deleteRequestHeader } from 'providers/ReduxStore/slices/collections'; import { sendRequest, saveRequest } from 'providers/ReduxStore/slices/collections/actions'; import SingleLineEditor from 'components/SingleLineEditor'; import StyledWrapper from './StyledWrapper'; import { headers as StandardHTTPHeaders } from 'know-your-http-well'; import { MimeTypes } from 'utils/codemirror/autocompleteConstants'; const headerAutoCompleteList = StandardHTTPHeaders.map((e) => e.header); const RequestHeaders = ({ item, collection }) => { const dispatch = useDispatch(); const { storedTheme } = useTheme(); const headers = item.draft ? get(item, 'draft.request.headers') : get(item, 'request.headers'); const addHeader = () => { dispatch( addRequestHeader({ itemUid: item.uid, collectionUid: collection.uid }) ); }; const onSave = () => dispatch(saveRequest(item.uid, collection.uid)); const handleRun = () => dispatch(sendRequest(item, collection.uid)); 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 'enabled': { header.enabled = e.target.checked; break; } } dispatch( updateRequestHeader({ header: header, itemUid: item.uid, collectionUid: collection.uid }) ); }; const handleRemoveHeader = (header) => { dispatch( deleteRequestHeader({ headerUid: header.uid, itemUid: item.uid, collectionUid: collection.uid }) ); }; return ( {headers && headers.length ? headers.map((header) => { return ( ); }) : null}
Name Value
handleHeaderValueChange( { target: { value: newValue } }, header, 'name' ) } autocomplete={headerAutoCompleteList} onRun={handleRun} collection={collection} /> handleHeaderValueChange( { target: { value: newValue } }, header, 'value' ) } onRun={handleRun} autocomplete={MimeTypes} allowNewlines={true} collection={collection} item={item} />
handleHeaderValueChange(e, header, 'enabled')} />
); }; export default RequestHeaders;