refactor/login: Refactor heavily-entangled LoginForm component #987
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Problem
The login page and its components were heavily entwined. This made it difficult to reason about interactions and dependencies, or to remove its Redux dependenices.
Part of #955
Solution
Refactor the
LoginForm
component to be fully functional. Instead of having inside knowledge of the login flow, it is now configured from outside the component. Instead of hardcoding if-else statements to decide which components to show, it now acceptschildren
as props.It has been upgraded to become a fully controlled component via the
value
prop, whereas previously it was relying on a hack using thehidden
property to remove DOM input (i.e. user email) when the login page transits from email stage to the OTP stage.