mirror of
https://github.com/usebruno/bruno.git
synced 2026-07-01 16:44:16 +00:00
101 lines
3.3 KiB
JavaScript
101 lines
3.3 KiB
JavaScript
import React, { useEffect } from 'react';
|
|
import { useFormik } from 'formik';
|
|
import { useDispatch } from 'react-redux';
|
|
import StyledWrapper from './StyledWrapper';
|
|
import toast from 'react-hot-toast';
|
|
import { updateBrunoConfig } from 'providers/ReduxStore/slices/collections/actions';
|
|
import cloneDeep from 'lodash/cloneDeep';
|
|
|
|
const PresetsSettings = ({ collection }) => {
|
|
const dispatch = useDispatch();
|
|
const {
|
|
brunoConfig: { presets: presets = {} }
|
|
} = collection;
|
|
|
|
const formik = useFormik({
|
|
enableReinitialize: true,
|
|
initialValues: {
|
|
requestType: presets.requestType || 'http',
|
|
requestUrl: presets.requestUrl || ''
|
|
},
|
|
onSubmit: (newPresets) => {
|
|
const brunoConfig = cloneDeep(collection.brunoConfig);
|
|
brunoConfig.presets = newPresets;
|
|
dispatch(updateBrunoConfig(brunoConfig, collection.uid));
|
|
toast.success('Collection presets updated');
|
|
}
|
|
});
|
|
|
|
return (
|
|
<StyledWrapper className="h-full w-full">
|
|
<div className="text-xs mb-4 text-muted">
|
|
These presets will be used as the default values for new requests in this collection.
|
|
</div>
|
|
<form className="bruno-form" onSubmit={formik.handleSubmit}>
|
|
<div className="mb-3 flex items-center">
|
|
<label className="settings-label flex items-center" htmlFor="enabled">
|
|
Request Type
|
|
</label>
|
|
<div className="flex items-center">
|
|
<input
|
|
id="http"
|
|
className="cursor-pointer"
|
|
type="radio"
|
|
name="requestType"
|
|
onChange={formik.handleChange}
|
|
value="http"
|
|
checked={formik.values.requestType === 'http'}
|
|
/>
|
|
<label htmlFor="http" className="ml-1 cursor-pointer select-none">
|
|
HTTP
|
|
</label>
|
|
|
|
<input
|
|
id="graphql"
|
|
className="ml-4 cursor-pointer"
|
|
type="radio"
|
|
name="requestType"
|
|
onChange={formik.handleChange}
|
|
value="graphql"
|
|
checked={formik.values.requestType === 'graphql'}
|
|
/>
|
|
<label htmlFor="graphql" className="ml-1 cursor-pointer select-none">
|
|
GraphQL
|
|
</label>
|
|
</div>
|
|
</div>
|
|
<div className="mb-3 flex items-center">
|
|
<label className="settings-label" htmlFor="requestUrl">
|
|
Base URL
|
|
</label>
|
|
<div className="flex items-center w-full">
|
|
<div className="flex items-center flex-grow input-container h-full">
|
|
<input
|
|
id="request-url"
|
|
type="text"
|
|
name="requestUrl"
|
|
placeholder='Request URL'
|
|
className="block textbox"
|
|
autoComplete="off"
|
|
autoCorrect="off"
|
|
autoCapitalize="off"
|
|
spellCheck="false"
|
|
onChange={formik.handleChange}
|
|
value={formik.values.requestUrl || ''}
|
|
style={{ width: '100%' }}
|
|
/>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div className="mt-6">
|
|
<button type="submit" className="submit btn btn-sm btn-secondary">
|
|
Save
|
|
</button>
|
|
</div>
|
|
</form>
|
|
</StyledWrapper>
|
|
);
|
|
};
|
|
|
|
export default PresetsSettings;
|