insomnia/app/ui/components/modals/request-settings-modal.js
Gregory Schier d675222bdd Merge develop for 5.1.0 (#246)
* Add Slack badge to README

* Add Twitter badge

* Appveyor badge

* Fix badges again on README

* Fix Twitter badge link

* Simplify README.md

* Migrate Travis secure items to Travis project settings (#198)

* Remove docker linux build (using Travis now) (#199)

* Fix travis build

* Update Issue and PR templates (#200)

* Add template for future pull requests

* Format issue template like pull request template

* Will not clear selected file if dialog is dismissed (#202)

* #183, Body type "Text -> Other" reverts to previous body type (#193)

* ISSUE#183

* Adding condition to check mime-type to other

* Removing older changes for fixing issue.

* Save full response to a file (#207)

* Save full response to a file

* Add a new button on the response preview pane
* Save full response to file when button clicked

* Update after PR comments

* It's a Response, not a Request

* Remove file extension requirement

* Implement lazy tag rendering and some fixes (#211)

* expanding to 3 decimals (#213)

* Update PULL_REQUEST_TEMPLATE.md (#214)

* Show build info in console (#216)

* Add waiting message in dev mode while webpack compile happens

* Switch license from GPL to AGPL (#221)

* Default remote URLs to production

* Don't use Curl's cookie handling (#220)

* Some improvements to the response tag

* Add tests for XPath response queries

* Refactor conditional element syntax

* Add option to toggle Menu Bar showing for Windows/Linux (#225)

* Add option to toggle MenuBar showing on Windows/Linux

* Extract Toggling Menu Bar functionality to App Container. Default show Menu Bar. Remove tip from Response Pane.

* Finalize {% response ... %} Tag (#224)

* Some improvements to the response tag

* Add tests for XPath response queries

* Refactor conditional element syntax

* Update nunjucks-tags.js

* Better Nunjucks Tag Editor (#234)

* Helper to tokenize Nunjucks tag

* More granular types

* Add tag definitions

* Improve editor to be more WYSIWYG

* Fixed tests

* Added raw response tag

* A few improvements to tag editor enum

* fix NTLM typo (#244)

* Tweaks and fixes for next release (#245)
2017-05-24 09:25:22 -07:00

132 lines
3.9 KiB
JavaScript

import React, {PureComponent} from 'react';
import autobind from 'autobind-decorator';
import Modal from '../base/modal';
import ModalBody from '../base/modal-body';
import ModalHeader from '../base/modal-header';
import HelpTooltip from '../help-tooltip';
import * as models from '../../../models';
import {trackEvent} from '../../../analytics/index';
import DebouncedInput from '../base/debounced-input';
@autobind
class RequestSettingsModal extends PureComponent {
constructor (props) {
super(props);
this.state = {
request: null
};
}
_setModalRef (n) {
this.modal = n;
}
async _updateRequestSettingBoolean (e) {
const value = e.target.checked;
const setting = e.target.name;
const request = await models.request.update(this.state.request, {[setting]: value});
this.setState({request});
trackEvent('Request Settings', setting, value ? 'Enable' : 'Disable');
}
async _handleNameChange (name) {
const request = await models.request.update(this.state.request, {name});
this.setState({request});
}
show (request) {
this.modal.show();
this.setState({request});
}
hide () {
this.modal.hide();
}
renderCheckboxInput (setting) {
return (
<input
type="checkbox"
name={setting}
checked={this.state.request[setting]}
onChange={this._updateRequestSettingBoolean}
/>
);
}
renderModalBody (request) {
return (
<div>
<div className="form-control form-control--outlined">
<label>Request Name
{' '}
<span className="txt-sm faint italic">
(also rename by double-clicking in sidebar)
</span>
<DebouncedInput
delay={500}
type="text"
placeholder="My Request"
defaultValue={request.name}
onChange={this._handleNameChange}
/>
</label>
</div>
<div className="pad-top-sm">
<h2 className="txt-lg">Cookie Handling</h2>
<div className="form-control form-control--thin">
<label>Send cookies automatically
{this.renderCheckboxInput('settingSendCookies')}
</label>
</div>
<div className="form-control form-control--thin">
<label>Store cookies automatically
{this.renderCheckboxInput('settingStoreCookies')}
</label>
</div>
</div>
<div className="pad-top-sm">
<h2 className="txt-lg">Advanced Settings</h2>
<div className="form-control form-control--thin">
<label>Automatically encode special characters in URL
{this.renderCheckboxInput('settingEncodeUrl')}
<HelpTooltip position="top" className="space-left">
Automatically encode special characters at send time (does not apply to
query parameters editor)
</HelpTooltip>
</label>
</div>
<div className="form-control form-control--thin">
<label>Skip rendering of request body
{this.renderCheckboxInput('settingDisableRenderRequestBody')}
<HelpTooltip position="top" className="space-left">
Disable rendering of environment variables and tags for the request body
</HelpTooltip>
</label>
</div>
</div>
</div>
);
}
render () {
const {request} = this.state;
return (
<Modal ref={this._setModalRef} freshState>
<ModalHeader>
Request Settings
{' '}
<span className="txt-sm selectable faint monospace">{request ? request._id : ''}</span>
</ModalHeader>
<ModalBody className="pad">
{request ? this.renderModalBody(request) : null}
</ModalBody>
</Modal>
);
}
}
RequestSettingsModal.propTypes = {};
export default RequestSettingsModal;