2016-08-08 11:18:21 +09:00
|
|
|
import Telescope from 'meteor/nova:lib';
|
2016-04-15 11:09:19 +02:00
|
|
|
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';
|
2016-04-15 11:09:19 +02:00
|
|
|
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-10-05 11:35:06 +02:00
|
|
|
import { Accounts } from 'meteor/std:accounts-ui';
|
2016-04-15 11:09:19 +02:00
|
|
|
|
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 }
|
2016-10-05 08:37:48 +02:00
|
|
|
collection={ Users }
|
2016-04-17 10:29:52 +09:00
|
|
|
document={ currentUser }
|
|
|
|
methodName="users.edit"
|
2016-10-07 10:50:21 +02:00
|
|
|
successCallback={ (user) => Telescope.callbacks.runAsync("users.profileCompleted.async", user) }
|
2016-04-17 10:48:02 +09:00
|
|
|
fields={ requiredFields }
|
2016-04-17 10:29:52 +09:00
|
|
|
/>
|
|
|
|
</Modal.Body>
|
|
|
|
<Modal.Footer>
|
2016-10-05 11:35:06 +02:00
|
|
|
<FormattedMessage id="app.or"/> <a className="complete-profile-logout" onClick={ () => Meteor.logout(Accounts.ui._options.onSignedOutHook()) }><FormattedMessage id="users.log_out"/></a>
|
2016-04-17 10:29:52 +09:00
|
|
|
</Modal.Footer>
|
|
|
|
</Modal>
|
|
|
|
)
|
2016-04-15 11:09:19 +02:00
|
|
|
};
|
|
|
|
|
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
|
|
|
|
}
|
2016-04-16 18:02:21 +02:00
|
|
|
|
2016-05-22 16:42:24 +09:00
|
|
|
UsersProfileCheck.displayName = "UsersProfileCheck";
|
|
|
|
|
2016-06-14 10:01:44 +09:00
|
|
|
module.exports = withRouter(UsersProfileCheck);
|
|
|
|
export default withRouter(UsersProfileCheck);
|