@@ -29,6 +29,11 @@ class RecruitCRMJobApplyContainer extends React.Component {
2929 country : _ . map ( countries . getNames ( 'en' ) , val => ( { label : val , selected : false } ) ) ,
3030 reffereal : [
3131 { label : 'Google' , selected : false } ,
32+ { label : 'LinkedIn' , selected : false } ,
33+ { label : 'Other Ad or Promotion' , selected : false } ,
34+ { label : 'Quora' , selected : false } ,
35+ { label : 'Uprisor Podcast' , selected : false } ,
36+ { label : 'YouTube or Video Ad' , selected : false } ,
3237 ] ,
3338 // eslint-disable-next-line react/destructuring-assignment
3439 } ,
@@ -51,6 +56,36 @@ class RecruitCRMJobApplyContainer extends React.Component {
5156 }
5257 }
5358
59+ componentDidUpdate ( prevProps ) {
60+ const { recruitProfile } = this . props ;
61+ if ( recruitProfile !== prevProps . recruitProfile && ! _ . isEmpty ( recruitProfile ) ) {
62+ // when recruit profile loaded
63+ const { formData } = this . state ;
64+ const { country, skills } = formData ;
65+ const recruitSkills = recruitProfile . skill . split ( ',' ) . map ( s => s . toLowerCase ( ) ) ;
66+ const updatedForm = {
67+ formData : {
68+ ...formData ,
69+ phone : recruitProfile . contact_number ,
70+ country : _ . map (
71+ country ,
72+ c => ( {
73+ label : c . label ,
74+ selected : c . label . toLowerCase ( ) === recruitProfile . locality . toLowerCase ( ) ,
75+ } ) ,
76+ ) ,
77+ skills : skills . map ( s => ( {
78+ label : s . label ,
79+ selected : recruitSkills . includes ( s . label . toLowerCase ( ) ) ,
80+ } ) ) ,
81+ payExpectation : recruitProfile . salary_expectation ,
82+ } ,
83+ } ;
84+ // eslint-disable-next-line react/no-did-update-set-state
85+ this . setState ( updatedForm ) ;
86+ }
87+ }
88+
5489 onFormInputChange ( key , value ) {
5590 // update the state
5691 this . setState ( state => ( {
@@ -111,7 +146,7 @@ class RecruitCRMJobApplyContainer extends React.Component {
111146 }
112147 // check for selected reffereal
113148 if ( ! prop || prop === 'reffereal' ) {
114- if ( ! recruitProfile ) {
149+ if ( _ . isEmpty ( recruitProfile ) ) {
115150 if ( ! _ . find ( formData . reffereal , { selected : true } ) ) formErrors . reffereal = 'Please, select your reffereal' ;
116151 else delete formErrors . reffereal ;
117152 }
@@ -144,8 +179,8 @@ class RecruitCRMJobApplyContainer extends React.Component {
144179 }
145180 // has CV file ready for upload
146181 if ( ! prop || prop === 'fileCV' ) {
147- if ( ! formData . fileCV ) formErrors . fileCV = 'Please, pick your CV file for uploading' ;
148- else {
182+ if ( ! formData . fileCV && _ . isEmpty ( recruitProfile ) ) formErrors . fileCV = 'Please, pick your CV file for uploading' ;
183+ else if ( formData . fileCV ) {
149184 const sizeInMB = ( formData . fileCV . size / ( 1024 * 1024 ) ) . toFixed ( 2 ) ;
150185 if ( sizeInMB > 8 ) {
151186 formErrors . fileCV = 'Max file size is limited to 8 MB' ;
@@ -185,8 +220,8 @@ class RecruitCRMJobApplyContainer extends React.Component {
185220
186221 render ( ) {
187222 const { formErrors, formData } = this . state ;
188- const { recruitProfile } = this . props ;
189- return ! recruitProfile ? < LoadingIndicator /> : (
223+ const { recruitProfile, user } = this . props ;
224+ return ! recruitProfile && user ? < LoadingIndicator /> : (
190225 < GigApply
191226 { ...this . props }
192227 onFormInputChange = { this . onFormInputChange }
@@ -234,7 +269,7 @@ function mapStateToProps(state, ownProps) {
234269 ? state . recruitCRM [ job . slug ] . applying : false ,
235270 application : state . recruitCRM && state . recruitCRM [ job . slug ]
236271 ? state . recruitCRM [ job . slug ] . application : null ,
237- recruitProfile : state . recruitCRM && state . recruitCRM [ profile . email ]
272+ recruitProfile : state . recruitCRM && profile && state . recruitCRM [ profile . email ]
238273 ? state . recruitCRM [ profile . email ] . profile : null ,
239274 } ;
240275}
0 commit comments