summaryrefslogtreecommitdiffstats
path: root/frontend/components/EditUser.js
diff options
context:
space:
mode:
authorWes Bos <wesbos@gmail.com>2018-03-12 14:06:25 -0400
committerWes Bos <wesbos@gmail.com>2018-03-12 14:06:25 -0400
commit46a0ba30ef54a7e36206481a4f5b2bf1f9702fca (patch)
treea95fd534fc27761d8b26d0dffcdb5f300f7a61c7 /frontend/components/EditUser.js
parentf7bea2d1b7be2b70dceb25c9837f608b538e9cec (diff)
wip
Diffstat (limited to 'frontend/components/EditUser.js')
-rw-r--r--frontend/components/EditUser.js51
1 files changed, 51 insertions, 0 deletions
diff --git a/frontend/components/EditUser.js b/frontend/components/EditUser.js
new file mode 100644
index 0000000..e763616
--- /dev/null
+++ b/frontend/components/EditUser.js
@@ -0,0 +1,51 @@
+import React from 'react';
+import Form from './styles/Form';
+import { userEnhancer, updateUserEnhancer } from '../enhancers/enhancers';
+import { compose } from 'react-apollo';
+
+class EditUser extends React.Component {
+ state = {
+ changes: {},
+ };
+ handleChange = e => {
+ const { name, value } = e.target;
+ const { me } = this.props.currentUser;
+ const changes = {
+ ...this.state.changes,
+ [name]: value,
+ };
+ if (value === me[e.target.name]) {
+ delete changes[name];
+ }
+ this.setState({ changes });
+ };
+
+ handleSubmit = async e => {
+ e.preventDefault();
+ const user = await this.props.updateUser({
+ variables: this.state.changes,
+ });
+ this.props.currentUser.refetch();
+ this.setState({ changes: {} });
+ };
+
+ render() {
+ const { me } = this.props.currentUser;
+ if (!me) return <p>You must be logged in</p>;
+ return (
+ <Form onSubmit={this.handleSubmit}>
+ <label htmlFor="name">
+ Name:
+ <input type="text" name="name" defaultValue={me.name} onChange={this.handleChange} />
+ </label>
+ <button type="submit">Update</button>
+ <strong>me:</strong>
+ <pre>{JSON.stringify(me.name)}</pre>
+ <strong>Change:</strong>
+ <pre>{JSON.stringify(this.state.changes)}</pre>
+ </Form>
+ );
+ }
+}
+
+export default compose(userEnhancer, updateUserEnhancer)(EditUser);