Skip to content

Commit 1da832d

Browse files
Merge pull request #80 from NathanielBAdams/master
change content type to x-www-form-urlencoded as needed
2 parents d462b86 + 0963f9f commit 1da832d

File tree

1 file changed

+62
-33
lines changed

1 file changed

+62
-33
lines changed

src/client/components/composer/NewRequest/BodyTypeSelect.jsx

Lines changed: 62 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,9 @@ const BodyTypeSelect = (props) => {
2020
if (!dropdownEl.current.contains(event.target)) {
2121
setDropdownIsActive(false);
2222
}
23-
}
24-
document.addEventListener('click', closeDropdown);
25-
return () => document.removeEventListener('click', closeDropdown);
23+
};
24+
document.addEventListener("click", closeDropdown);
25+
return () => document.removeEventListener("click", closeDropdown);
2626
}, []);
2727

2828
const removeContentTypeHeader = () => {
@@ -33,65 +33,94 @@ const BodyTypeSelect = (props) => {
3333
headersArr: filtered,
3434
count: filtered.length,
3535
});
36-
}
36+
};
3737

3838
const setNewBodyType = (bodyTypeStr) => {
3939
setNewRequestBody({
4040
...newRequestBody,
4141
bodyType: bodyTypeStr,
42-
})
43-
}
42+
});
43+
};
4444

45-
return (
46-
<div ref={dropdownEl} className={`mt-1 mb- dropdown ${dropdownIsActive ? 'is-active' : ''}`}>
45+
const setContentTypeHeader = (newBodyType) => {
46+
const headersCopy = JSON.parse(JSON.stringify(newRequestHeaders));
47+
headersCopy.headersArr[0] = {
48+
id: Math.random() * 1000000,
49+
active: true,
50+
key: "Content-type",
51+
value: newBodyType,
52+
};
53+
setNewRequestHeaders({
54+
headersArr: headersCopy.headersArr,
55+
});
56+
};
4757

58+
return (
59+
<div
60+
ref={dropdownEl}
61+
className={`mt-1 mb- dropdown ${dropdownIsActive ? "is-active" : ""}`}
62+
>
4863
<div className="dropdown-trigger">
49-
<button className="button is-small is-outlined is-primary mr-3 add-header-or-cookie-button" aria-haspopup="true" aria-controls="dropdown-menu"
64+
<button
65+
className="button is-small is-outlined is-primary mr-3 add-header-or-cookie-button"
66+
aria-haspopup="true"
67+
aria-controls="dropdown-menu"
5068
onClick={() => setDropdownIsActive(!dropdownIsActive)}
5169
>
5270
<span>{newRequestBody.bodyType}</span>
5371
<span className="icon is-small">
54-
<img src={dropDownArrow} className="is-awesome-icon" aria-hidden="true" />
72+
<img
73+
src={dropDownArrow}
74+
className="is-awesome-icon"
75+
aria-hidden="true"
76+
/>
5577
</span>
5678
</button>
5779
</div>
5880

5981
<div className="dropdown-menu">
6082
<ul className="dropdown-content">
61-
{newRequestBody.bodyType !== 'raw' &&
62-
<a
83+
{newRequestBody.bodyType !== "raw" && (
84+
<a
6385
onClick={() => {
64-
setDropdownIsActive(false);
65-
setNewBodyType("raw")
66-
}}
67-
className="dropdown-item"
68-
>raw</a>
69-
}
70-
{newRequestBody.bodyType !== 'x-www-form-urlencoded' &&
86+
setDropdownIsActive(false);
87+
setNewBodyType("raw");
88+
setContentTypeHeader("text/plain");
89+
}}
90+
className="dropdown-item"
91+
>
92+
raw
93+
</a>
94+
)}
95+
{newRequestBody.bodyType !== "x-www-form-urlencoded" && (
7196
<a
7297
onClick={() => {
7398
setDropdownIsActive(false);
74-
setNewBodyType('x-www-form-urlencoded');
75-
}}
76-
className="dropdown-item"
77-
>x-www-form-urlencoded</a>
78-
}
79-
{newRequestBody.bodyType !== 'none' &&
99+
setContentTypeHeader("x-www-form-urlencoded");
100+
setNewBodyType("x-www-form-urlencoded");
101+
}}
102+
className="dropdown-item"
103+
>
104+
x-www-form-urlencoded
105+
</a>
106+
)}
107+
{newRequestBody.bodyType !== "none" && (
80108
<a
81109
onClick={() => {
82110
setDropdownIsActive(false);
83-
setNewBodyType('none')
111+
setNewBodyType("none");
84112
removeContentTypeHeader();
85-
}}
86-
className="dropdown-item"
87-
>none</a>
88-
}
113+
}}
114+
className="dropdown-item"
115+
>
116+
none
117+
</a>
118+
)}
89119
</ul>
90120
</div>
91121
</div>
92-
);
93-
}
94-
122+
);
123+
};
95124

96125
BodyTypeSelect.propTypes = {
97126
newRequestBody: PropTypes.object.isRequired,

0 commit comments

Comments
 (0)