insomnia/app/components/CookieInput.js
Gregory Schier 9e84bc4387 Workspaces, Cookies, and More! (#31)
* Start on workspace dropdown and upgrade fontawesome

* WorkspaceDropdown start and Elm components!

* Lots of CSS shit

* Refactor some db stuff and move filter out of sidebar

* Adjust dropdown css

* Handle duplicate header names, and stuff

* Shitty cookies tab

* fixed cookie table a bit

* Modal refactor

* Starteed cookie modal design

* Better cookie storage and filter cookie modal

* Cookie editor round 1

* Fix kve cursor jumping and form encoding templating

* New cookies now show up in filter

* Checkpoint

* Stuff and fix environments css

* Added manage cookies button to cookie pane

* Fix accidental sidebar item drag on sidebar resize

* Environments modal is looking pretty good now

* Pretty much done environments nad cookies

* Some changes

* Fixed codemirror in modals

* Fixed some things

* Add basic proxy support

* Updated shortcuts

* Code snippet generation

* Some style

* bug fix

* Code export now gets cookies for correct domain
2016-08-15 10:04:36 -07:00

53 lines
990 B
JavaScript

import React, {Component, PropTypes} from 'react';
import {Cookie} from 'tough-cookie';
class CookieInput extends Component {
constructor (props) {
super(props);
this.state = {
isValid: true
};
}
_handleChange () {
const isValid = this._isValid();
if (isValid) {
this.props.onChange(this._input.value);
}
this.setState({isValid})
}
_isValid () {
try {
const cookie = Cookie.parse(this._input.value);
return !!(cookie && cookie.domain);
} catch (e) {
return false;
}
}
render () {
const {defaultValue} = this.props;
const {isValid} = this.state;
return (
<input
className={isValid ? '' : 'input--error'}
ref={n => this._input = n}
type="text"
defaultValue={defaultValue}
onChange={e => this._handleChange(e.target.value)}
/>
);
}
}
CookieInput.propTypes = {
onChange: PropTypes.func.isRequired
};
export default CookieInput;