Vulcan/packages/nova-base-components/lib/users/UsersProfileCheck.jsx

54 lines
1.9 KiB
React
Raw Normal View History

2016-08-08 11:18:21 +09:00
import Telescope from 'meteor/nova:lib';
import React, { PropTypes, Component } from 'react';
2016-06-10 10:25:38 +09:00
import { FormattedMessage } from 'react-intl';
2016-04-17 10:29:52 +09:00
import { Modal } from 'react-bootstrap';
import NovaForm from "meteor/nova:forms";
2016-06-14 10:01:44 +09:00
import { withRouter } from 'react-router'
2016-06-23 15:00:58 +09:00
import Users from 'meteor/nova:users';
2016-06-14 10:01:44 +09:00
const UsersProfileCheckModal = ({currentUser, show, router}) => {
2016-04-17 10:48:02 +09:00
// return fields that are required by the schema but haven't been filled out yet
const schema = Users.simpleSchema()._schema;
const requiredFields = _.filter(_.keys(schema), function (fieldName) {
var field = schema[fieldName];
return !!field.required && !Telescope.getNestedProperty(Meteor.user(), fieldName);
});
2016-04-17 10:29:52 +09:00
return (
<Modal bsSize='small' show={ show }>
<Modal.Header>
2016-06-10 10:25:38 +09:00
<Modal.Title><FormattedMessage id="users.complete_profile"/></Modal.Title>
2016-04-17 10:29:52 +09:00
</Modal.Header>
<Modal.Body>
<NovaForm
currentUser={ currentUser }
collection={ Users }
2016-04-17 10:29:52 +09:00
document={ currentUser }
methodName="users.edit"
successCallback={ (user) => Telescope.callbacks.runAsync("profileCompletedAsync", user) }
2016-04-17 10:48:02 +09:00
fields={ requiredFields }
2016-04-17 10:29:52 +09:00
/>
</Modal.Body>
<Modal.Footer>
2016-06-14 10:17:11 +09:00
<FormattedMessage id="app.or"/> <a className="complete-profile-logout" onClick={ () => Meteor.logout(() => router.push({pathname: '/'})) }><FormattedMessage id="users.log_out"/></a>
2016-04-17 10:29:52 +09:00
</Modal.Footer>
</Modal>
)
};
2016-04-19 15:54:53 +09:00
class UsersProfileCheck extends Component {
2016-04-17 10:29:52 +09:00
render() {
const currentUser = this.context.currentUser;
2016-04-19 15:54:53 +09:00
return currentUser ? <UsersProfileCheckModal currentUser={currentUser} show={!Users.hasCompletedProfile(currentUser)}/> : null
2016-04-17 10:29:52 +09:00
}
}
2016-04-19 15:54:53 +09:00
UsersProfileCheck.contextTypes = {
2016-04-17 10:29:52 +09:00
currentUser: React.PropTypes.object
}
UsersProfileCheck.displayName = "UsersProfileCheck";
2016-06-14 10:01:44 +09:00
module.exports = withRouter(UsersProfileCheck);
export default withRouter(UsersProfileCheck);