@@ -13,15 +13,19 @@ import Button, { TheButtonGroup } from '../../components/widgets/TheButton';
1313import { LocalIcon , TransferIcon , EditUserIcon } from '../../components/icons' ;
1414import { isStudentRole } from '../../components/helpers/usersRoles.js' ;
1515import AllowUserButtonContainer from '../../containers/AllowUserButtonContainer' ;
16- import EditUserProfileForm from '../../components/forms/EditUserProfileForm' ;
16+ import EditUserProfileForm , {
17+ prepareInitialValues as prepareUserProfileValues ,
18+ } from '../../components/forms/EditUserProfileForm' ;
1719import EditUserSettingsForm from '../../components/forms/EditUserSettingsForm' ;
1820import EditUserUIDataForm , {
1921 EDITOR_FONT_SIZE_MIN ,
2022 EDITOR_FONT_SIZE_MAX ,
2123 EDITOR_FONT_SIZE_DEFAULT ,
2224} from '../../components/forms/EditUserUIDataForm' ;
2325import GenerateTokenForm , { initialValues } from '../../components/forms/GenerateTokenForm' ;
24- import EditUserRoleForm from '../../components/forms/EditUserRoleForm' ;
26+ import EditUserRoleForm , {
27+ prepareInitialValues as prepareUserRoleValues ,
28+ } from '../../components/forms/EditUserRoleForm' ;
2529import CalendarTokens from '../../components/Users/CalendarTokens' ;
2630import Box from '../../components/widgets/Box' ;
2731import ResourceRenderer from '../../components/helpers/ResourceRenderer' ;
@@ -44,6 +48,8 @@ import {
4448 setUserCalendarExpired ,
4549} from '../../redux/modules/userCalendars.js' ;
4650import { getUserCalendars } from '../../redux/selectors/userCalendars.js' ;
51+ import { EMPTY_OBJ } from '../../helpers/common.js' ;
52+ import OnlyMounted from '../../components/widgets/OnlyMounted/OnlyMounted.js' ;
4753
4854const prepareNumber = ( number , min , max , defaultValue ) => {
4955 number = Number ( number ) ;
@@ -78,10 +84,16 @@ const prepareUserUIDataInitialValues = lruMemoize(
7884) ;
7985
8086class EditUser extends Component {
87+ constructor ( props ) {
88+ super ( props ) ;
89+ this . user = null ;
90+ }
91+
8192 static loadAsync = ( { userId } , dispatch ) =>
8293 Promise . all ( [ dispatch ( fetchUserIfNeeded ( userId ) ) , dispatch ( fetchUserCalendarsIfNeeded ( userId ) ) ] ) ;
8394
8495 componentDidMount ( ) {
96+ this . setState ( { mounted : true } ) ;
8597 this . props . loadAsync ( ) ;
8698 }
8799
@@ -163,48 +175,47 @@ class EditUser extends Component {
163175
164176 < Row >
165177 < Col lg = { 6 } >
166- < EditUserProfileForm
167- onSubmit = { formData => this . updateProfile ( formData , isSuperAdmin || ! data . privateData . isExternal ) }
168- initialValues = { {
169- firstName : data . name . firstName ,
170- lastName : data . name . lastName ,
171- titlesBeforeName : data . name . titlesBeforeName ,
172- titlesAfterName : data . name . titlesAfterName ,
173- email : data . privateData . email ,
174- passwordStrength : null ,
175- gravatarUrlEnabled : data . avatarUrl !== null ,
176- } }
177- allowChangePassword = { data . privateData . isLocal }
178- emptyLocalPassword = { data . privateData . emptyLocalPassword }
179- canForceChangePassword = { isSuperAdmin && data . id !== loggedUserId }
180- disabledNameChange = { data . privateData . isExternal && ! isSuperAdmin }
181- />
178+ < OnlyMounted >
179+ < EditUserProfileForm
180+ onSubmit = { formData => this . updateProfile ( formData , isSuperAdmin || ! data . privateData . isExternal ) }
181+ initialValues = { prepareUserProfileValues ( data ) }
182+ allowChangePassword = { data . privateData . isLocal }
183+ emptyLocalPassword = { data . privateData . emptyLocalPassword }
184+ canForceChangePassword = { isSuperAdmin && data . id !== loggedUserId }
185+ disabledNameChange = { data . privateData . isExternal && ! isSuperAdmin }
186+ />
187+ </ OnlyMounted >
182188 </ Col >
183189
184190 { data . id === loggedUserId && (
185191 < Col lg = { 6 } >
186192 { data . privateData . settings && (
187- < EditUserSettingsForm
188- onSubmit = { updateSettings }
189- user = { data }
190- initialValues = { data . privateData . settings }
191- />
193+ < OnlyMounted >
194+ < EditUserSettingsForm
195+ onSubmit = { updateSettings }
196+ user = { data }
197+ initialValues = { data . privateData . settings }
198+ />
199+ </ OnlyMounted >
192200 ) }
193-
194- < EditUserUIDataForm
195- onSubmit = { updateUIData }
196- initialValues = { prepareUserUIDataInitialValues ( data . privateData . uiData || { } ) }
197- />
201+ < OnlyMounted >
202+ < EditUserUIDataForm
203+ onSubmit = { updateUIData }
204+ initialValues = { prepareUserUIDataInitialValues ( data . privateData . uiData || EMPTY_OBJ ) }
205+ />
206+ </ OnlyMounted >
198207 </ Col >
199208 ) }
200209
201210 { isSuperAdmin && data . id !== loggedUserId && data . privateData && (
202211 < Col lg = { 6 } >
203- < EditUserRoleForm
204- currentRole = { data . privateData . role }
205- initialValues = { { role : data . privateData . role } }
206- onSubmit = { this . setRole }
207- />
212+ < OnlyMounted >
213+ < EditUserRoleForm
214+ currentRole = { data . privateData . role }
215+ initialValues = { prepareUserRoleValues ( data ) }
216+ onSubmit = { this . setRole }
217+ />
218+ </ OnlyMounted >
208219 </ Col >
209220 ) }
210221 </ Row >
@@ -232,7 +243,9 @@ class EditUser extends Component {
232243
233244 < Row >
234245 < Col lg = { 12 } >
235- < GenerateTokenForm onSubmit = { generateToken } initialValues = { initialValues } lastToken = { lastToken } />
246+ < OnlyMounted >
247+ < GenerateTokenForm onSubmit = { generateToken } initialValues = { initialValues } lastToken = { lastToken } />
248+ </ OnlyMounted >
236249 </ Col >
237250 </ Row >
238251 </ >
0 commit comments