From ca4fcaff5d751e0acfb4a030163a57c6ab07725f Mon Sep 17 00:00:00 2001 From: situchan Date: Tue, 4 Jul 2023 11:54:34 +0100 Subject: [PATCH] fix "Android - Keyboard doesn't open automatically while verifying contact method" --- src/components/MagicCodeInput.js | 10 ++++++---- .../Contacts/ValidateCodeForm/BaseValidateCodeForm.js | 2 ++ 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/components/MagicCodeInput.js b/src/components/MagicCodeInput.js index 8af0c9bdab35..71f625b68e7f 100644 --- a/src/components/MagicCodeInput.js +++ b/src/components/MagicCodeInput.js @@ -159,17 +159,19 @@ function MagicCodeInput(props) { let focusTimeout = null; if (props.shouldDelayFocus) { focusTimeout = setTimeout(() => inputRefs.current[0].focus(), CONST.ANIMATED_TRANSITION); + } else { + inputRefs.current[0].focus(); } - inputRefs.current[0].focus(); - return () => { if (!focusTimeout) { return; } clearTimeout(focusTimeout); }; - }, [props.autoFocus, props.shouldDelayFocus]); + // We only want this to run on mount + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); /** * Focuses on the input when it is pressed. @@ -322,7 +324,7 @@ function MagicCodeInput(props) { (inputRefs.current[index] = ref)} - autoFocus={index === 0 && props.autoFocus} + autoFocus={index === 0 && props.autoFocus && !props.shouldDelayFocus} inputMode="numeric" textContentType="oneTimeCode" name={props.name} diff --git a/src/pages/settings/Profile/Contacts/ValidateCodeForm/BaseValidateCodeForm.js b/src/pages/settings/Profile/Contacts/ValidateCodeForm/BaseValidateCodeForm.js index 5b1aa87cea80..f6e809d9b8ed 100644 --- a/src/pages/settings/Profile/Contacts/ValidateCodeForm/BaseValidateCodeForm.js +++ b/src/pages/settings/Profile/Contacts/ValidateCodeForm/BaseValidateCodeForm.js @@ -15,6 +15,7 @@ import * as User from '../../../../../libs/actions/User'; import Button from '../../../../../components/Button'; import DotIndicatorMessage from '../../../../../components/DotIndicatorMessage'; import * as Session from '../../../../../libs/actions/Session'; +import shouldDelayFocus from '../../../../../libs/shouldDelayFocus'; import Text from '../../../../../components/Text'; import {withNetwork} from '../../../../../components/OnyxProvider'; import PressableWithFeedback from '../../../../../components/Pressable/PressableWithFeedback'; @@ -134,6 +135,7 @@ function BaseValidateCodeForm(props) { errorText={formError.validateCode ? props.translate(formError.validateCode) : ErrorUtils.getLatestErrorMessage(props.account)} onFulfill={validateAndSubmitForm} autoFocus + shouldDelayFocus={shouldDelayFocus} />