2016-04-15 11:09:19 +02:00
import React , { PropTypes , Component } from 'react' ;
2016-04-17 10:29:52 +09:00
import { Modal } from 'react-bootstrap' ;
2017-03-23 16:27:59 +09:00
import Users from 'meteor/vulcan:users' ;
import { withCurrentUser , Utils , Components , registerComponent , withMessages } from 'meteor/vulcan:core' ;
2017-02-28 11:49:40 +01:00
import { FormattedMessage , intlShape } from 'react-intl' ;
const UsersProfileCheck = ( props , context ) => {
const { currentUser } = props ;
if ( currentUser && ! Users . hasCompletedProfile ( currentUser ) ) {
// return fields that are required by the schema but haven't been filled out yet
const schema = Utils . stripTelescopeNamespace ( Users . simpleSchema ( ) . _schema ) ;
const requiredFields = _ . filter ( _ . keys ( schema ) , ( fieldName ) => {
var field = schema [ fieldName ] ;
return ! ! field . required && ! Utils . getNestedProperty ( props . currentUser , fieldName ) ;
} ) ;
return (
< Modal bsSize = 'small' show = { true } >
< Modal.Header >
< Modal.Title > < FormattedMessage id = "users.complete_profile" / > < / Modal.Title >
< / Modal.Header >
< Modal.Body >
< Components.SmartForm
collection = { Users }
documentId = { props . currentUser . _id }
fields = { requiredFields }
successCallback = { user => {
const newUser = { ... currentUser , ... user } ;
if ( Users . hasCompletedProfile ( newUser ) ) {
props . flash ( context . intl . formatMessage ( { id : "users.profile_completed" } ) , 'success' ) ;
}
} }
/ >
< / Modal.Body >
< Modal.Footer >
< FormattedMessage id = "app.or" / > < a className = "complete-profile-logout" onClick = { ( ) => Meteor . logout ( ( ) => window . location . reload ( ) /* something is broken here when giving the apollo client as a prop*/ ) } > < FormattedMessage id = "users.log_out" / > < / a >
< / Modal.Footer >
< / Modal >
)
} else {
return null
}
2016-04-15 11:09:19 +02:00
2016-10-14 08:47:18 +02:00
} ;
2016-04-17 10:29:52 +09:00
2016-11-15 18:33:16 +01:00
UsersProfileCheck . propsTypes = {
2016-10-14 08:47:18 +02:00
currentUser : React . PropTypes . object
} ;
2016-04-16 18:02:21 +02:00
2017-02-28 11:49:40 +01:00
UsersProfileCheck . contextTypes = {
intl : intlShape
} ;
2016-05-22 16:42:24 +09:00
UsersProfileCheck . displayName = "UsersProfileCheck" ;
2017-02-28 11:49:40 +01:00
registerComponent ( 'UsersProfileCheck' , UsersProfileCheck , withMessages , withCurrentUser ) ;