Fix: connectionResolver receives incorrect field value when switching between Login and Sign-up tabs #2697
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.
Changes
Fixes a bug where connectionResolver callback receives the wrong field value when users switch between Login and Sign-up tabs that have different field types (username vs email).
Closes #2631
Root Cause
The bug was in
src/ui/box/container.jsxin thecheckConnectionResolver()method at line 80:BEFORE (buggy code)
const userInputValue = c.getFieldValue(lock, 'username') || c.getFieldValue(lock, 'email');This code always prioritized the username field over email, regardless of which screen (Login vs Sign-up) was currently active. Since both field values exist in the global lock state, it would retrieve the Login username even when on the Sign-up screen.
Solution
Modified checkConnectionResolver() to check which screen is currently active and prioritize the appropriate field:
AFTER (fixed code)
Testing
Manual testing performed -
Checklist