Add option for email fields to set logged in users email as default#72
Add option for email fields to set logged in users email as default#72mbarde wants to merge 6 commits intocollective:mainfrom
Conversation
pnicolli
left a comment
There was a problem hiding this comment.
This PR is really interesting, I like the feature it adds. Thanks!
I left a couple notes on improvements that can be done.
src/components/FormView.jsx
Outdated
| ); | ||
| const dispatch = useDispatch(); | ||
| useEffect(() => { | ||
| if (userId?.length > 0 && curUserEmail === false) dispatch(getUser(userId)); |
There was a problem hiding this comment.
I think we have this info in redux already, if the user is logged in, right? No need to dispatch again if we do have it
There was a problem hiding this comment.
If the user is logged in we can retrieve the userId via (state) => jwtDecode(state.userSession.token).sub, but this is not necessarily the same as the users email address (depends on the corresponding setting of the Plone instance).
For additional user info (like email) we have to dispatch getUser.
Via 1c44b11 I make sure it is not dispatched, if another component already did it.
src/components/FormView.jsx
Outdated
| ) { | ||
| const name = getFieldName(subblock.label, subblock.id); | ||
| if (!formData.hasOwnProperty(name)) | ||
| formData[name] = { value: curUserEmail }; |
There was a problem hiding this comment.
I recommend against doing it this way. It is considered a bad practice to mutate props and also to mutate state while rendering. All state changes should be done in a useEffect callback and in this specific situation should be done using the onChangeFormData function in order to properly handle state changes.
There was a problem hiding this comment.
Thank you for the feedback! Resolved via ed8cf11
In order to use onChangeFormData I had to compute fields_to_send_with_value. This is done at an other location in the component as well. So I decided to create a reusable function getFieldsToSendWithValue for it.
Co-authored-by: Piero Nicolli <[email protected]>
Co-authored-by: Piero Nicolli <[email protected]>
Adds checkbox to email fields
Use email of logged in user as default.If selected and user is logged in, the field will get pre-filled with the users email address.