diff --git a/packages/bruno-app/src/components/Environments/EnvironmentSettings/EnvironmentList/index.js b/packages/bruno-app/src/components/Environments/EnvironmentSettings/EnvironmentList/index.js
index 44e18455f..dd7ac4f79 100644
--- a/packages/bruno-app/src/components/Environments/EnvironmentSettings/EnvironmentList/index.js
+++ b/packages/bruno-app/src/components/Environments/EnvironmentSettings/EnvironmentList/index.js
@@ -5,7 +5,7 @@ import { toastError } from 'utils/common/error';
import usePrevious from 'hooks/usePrevious';
import EnvironmentDetails from './EnvironmentDetails';
import CreateEnvironment from '../CreateEnvironment';
-import { IconUpload } from '@tabler/icons';
+import { IconDownload } from '@tabler/icons';
import ImportEnvironment from '../ImportEnvironment';
import StyledWrapper from './StyledWrapper';
@@ -73,7 +73,7 @@ const EnvironmentList = ({ collection }) => {
setOpenImportModal(true)}>
-
+
Import
diff --git a/packages/bruno-app/src/components/RequestPane/RequestBody/RequestBodyMode/StyledWrapper.js b/packages/bruno-app/src/components/RequestPane/RequestBody/RequestBodyMode/StyledWrapper.js
index e72774524..3d571b4bf 100644
--- a/packages/bruno-app/src/components/RequestPane/RequestBody/RequestBodyMode/StyledWrapper.js
+++ b/packages/bruno-app/src/components/RequestPane/RequestBody/RequestBodyMode/StyledWrapper.js
@@ -4,7 +4,7 @@ const Wrapper = styled.div`
font-size: 0.8125rem;
.body-mode-selector {
- background: ${(props) => props.theme.requestTabPanel.bodyModeSelect.color};
+ background: transparent;
border-radius: 3px;
.dropdown-item {
@@ -15,6 +15,10 @@ const Wrapper = styled.div`
.label-item {
padding: 0.2rem 0.6rem !important;
}
+
+ .selected-body-mode {
+ color: ${(props) => props.theme.colors.text.yellow};
+ }
}
.caret {
diff --git a/packages/bruno-app/src/components/RequestPane/RequestBody/RequestBodyMode/index.js b/packages/bruno-app/src/components/RequestPane/RequestBody/RequestBodyMode/index.js
index 0d3b63df6..ef000431f 100644
--- a/packages/bruno-app/src/components/RequestPane/RequestBody/RequestBodyMode/index.js
+++ b/packages/bruno-app/src/components/RequestPane/RequestBody/RequestBodyMode/index.js
@@ -6,16 +6,19 @@ import { useDispatch } from 'react-redux';
import { updateRequestBodyMode } from 'providers/ReduxStore/slices/collections';
import { humanizeRequestBodyMode } from 'utils/collections';
import StyledWrapper from './StyledWrapper';
+import { updateRequestBody } from 'providers/ReduxStore/slices/collections/index';
+import { toastError } from 'utils/common/error';
const RequestBodyMode = ({ item, collection }) => {
const dispatch = useDispatch();
const dropdownTippyRef = useRef();
const onDropdownCreate = (ref) => (dropdownTippyRef.current = ref);
- const bodyMode = item.draft ? get(item, 'draft.request.body.mode') : get(item, 'request.body.mode');
+ const body = item.draft ? get(item, 'draft.request.body') : get(item, 'request.body');
+ const bodyMode = body?.mode;
const Icon = forwardRef((props, ref) => {
return (
-
+
{humanizeRequestBodyMode(bodyMode)}
);
@@ -31,6 +34,24 @@ const RequestBodyMode = ({ item, collection }) => {
);
};
+ const onPrettify = () => {
+ if (body?.json && bodyMode === 'json') {
+ try {
+ const bodyJson = JSON.parse(body.json);
+ const prettyBodyJson = JSON.stringify(bodyJson, null, 2);
+ dispatch(
+ updateRequestBody({
+ content: prettyBodyJson,
+ itemUid: item.uid,
+ collectionUid: collection.uid
+ })
+ );
+ } catch (e) {
+ toastError(new Error('Unable to prettify. Invalid JSON format.'));
+ }
+ }
+ };
+
return (
@@ -103,6 +124,11 @@ const RequestBodyMode = ({ item, collection }) => {
+ {bodyMode === 'json' && (
+
+ )}
);
};
diff --git a/packages/bruno-app/src/components/Welcome/index.js b/packages/bruno-app/src/components/Welcome/index.js
index 278516538..adfce3dd8 100644
--- a/packages/bruno-app/src/components/Welcome/index.js
+++ b/packages/bruno-app/src/components/Welcome/index.js
@@ -2,7 +2,7 @@ import { useState } from 'react';
import toast from 'react-hot-toast';
import { useDispatch } from 'react-redux';
import { openCollection, importCollection } from 'providers/ReduxStore/slices/collections/actions';
-import { IconBrandGithub, IconPlus, IconUpload, IconFolders, IconSpeakerphone, IconBook } from '@tabler/icons';
+import { IconBrandGithub, IconPlus, IconDownload, IconFolders, IconSpeakerphone, IconBook } from '@tabler/icons';
import Bruno from 'components/Bruno';
import CreateCollection from 'components/Sidebar/CreateCollection';
@@ -69,7 +69,7 @@ const Welcome = () => {
Open Collection
setImportCollectionModalOpen(true)}>
-
+
Import Collection
diff --git a/packages/bruno-electron/src/ipc/network/index.js b/packages/bruno-electron/src/ipc/network/index.js
index 28b344084..adbf623e5 100644
--- a/packages/bruno-electron/src/ipc/network/index.js
+++ b/packages/bruno-electron/src/ipc/network/index.js
@@ -748,7 +748,7 @@ const registerNetworkIpc = (mainWindow) => {
get(collectionRoot, 'request.script.res'),
get(request, 'script.res')
]).join(os.EOL);
- if (responseScript?.length) {
+ if (responseScript && responseScript.length) {
const scriptRuntime = new ScriptRuntime();
const result = await scriptRuntime.runResponseScript(
decomment(responseScript),