Vulcan/packages/base-components/lib/users/UsersEdit.jsx

65 lines
1.7 KiB
React
Raw Normal View History

2016-02-25 17:44:43 +09:00
import Core from "meteor/nova:core";
({Messages, NovaForms} = Core);
2016-02-23 13:10:08 +09:00
2016-02-23 11:34:40 +09:00
import Formsy from 'formsy-react';
const UsersEdit = React.createClass({
2016-02-23 11:34:40 +09:00
propTypes: {
2016-03-15 10:40:20 +09:00
document: React.PropTypes.object, // Note: should be required
currentUser: React.PropTypes.object // Note: should be required
2016-02-23 11:34:40 +09:00
},
submitForm(data) {
event.preventDefault();
2016-02-25 17:44:43 +09:00
let modifier = {...data};
delete modifier.telescope;
2016-02-23 11:34:40 +09:00
const user = this.props.document;
// replace "_" by "." in modifier keys
2016-02-25 17:44:43 +09:00
// _.keys(data).forEach(key => {modifier[key.replace("_", ".")] = data[key]});
// flatten data object
_.keys(data.telescope).forEach(key => {
modifier["telescope."+key] = data.telescope[key];
});
2016-02-23 11:34:40 +09:00
// remove any empty properties
modifier = {$set: _.compactObject(modifier)};
Meteor.call('users.edit', user._id, modifier, (error, user) => {
if (error) {
console.log(error);
2016-02-23 13:10:08 +09:00
Messages.flash(error.message, "error")
2016-02-23 11:34:40 +09:00
// handle error
} else {
2016-02-23 13:10:08 +09:00
Messages.flash("User modified.", "success")
2016-02-23 11:34:40 +09:00
}
});
},
render() {
const user = this.props.document;
({CanEditUser} = Telescope.components);
const fields = Users.getInsertableFields(this.props.currentUser);
2016-02-25 17:44:43 +09:00
2016-02-23 11:34:40 +09:00
return (
<CanEditUser user={this.props.currentUser} userToEdit={user}>
<div className="user-edit">
<h3>Edit Account</h3>
<Formsy.Form onSubmit={this.submitForm}>
2016-02-25 17:44:43 +09:00
{fields.map(fieldName => NovaForms.getComponent(fieldName, Meteor.users.simpleSchema()._schema[fieldName], this.props.currentUser))}
2016-02-23 11:34:40 +09:00
<button type="submit" className="button button--primary">Submit</button>
</Formsy.Form>
</div>
</CanEditUser>
)
}
});
module.exports = UsersEdit;