diff --git a/src/pages/signin/LoginForm/BaseLoginForm.js b/src/pages/signin/LoginForm/BaseLoginForm.js
index 8fcea461eacd..52c4e31c9418 100644
--- a/src/pages/signin/LoginForm/BaseLoginForm.js
+++ b/src/pages/signin/LoginForm/BaseLoginForm.js
@@ -17,6 +17,7 @@ import withLocalize, {withLocalizePropTypes} from '@components/withLocalize';
import withToggleVisibilityView from '@components/withToggleVisibilityView';
import withWindowDimensions, {windowDimensionsPropTypes} from '@components/withWindowDimensions';
import usePrevious from '@hooks/usePrevious';
+import useResponsiveLayout from '@hooks/useResponsiveLayout';
import useThemeStyles from '@hooks/useThemeStyles';
import canFocusInputOnScreenFocus from '@libs/canFocusInputOnScreenFocus';
import compose from '@libs/compose';
@@ -70,9 +71,6 @@ const propTypes = {
/** Props to detect online status */
network: networkPropTypes.isRequired,
- /** Whether or not the sign in page is being rendered in the RHP modal */
- isInModal: PropTypes.bool,
-
isVisible: PropTypes.bool.isRequired,
...windowDimensionsPropTypes,
@@ -88,7 +86,6 @@ const defaultProps = {
closeAccount: {},
blurOnSubmit: false,
innerRef: () => {},
- isInModal: false,
};
function LoginForm(props) {
@@ -100,6 +97,7 @@ function LoginForm(props) {
const firstBlurred = useRef(false);
const isFocused = useIsFocused();
const isLoading = useRef(false);
+ const {shouldUseNarrowLayout} = useResponsiveLayout();
const {translate} = props;
@@ -213,7 +211,7 @@ function LoginForm(props) {
return;
}
let focusTimeout;
- if (props.isInModal) {
+ if (shouldUseNarrowLayout) {
focusTimeout = setTimeout(() => input.current.focus(), CONST.ANIMATED_TRANSITION);
} else {
input.current.focus();
diff --git a/src/pages/signin/SignInHeroImage.js b/src/pages/signin/SignInHeroImage.js
index c665a09932c2..8754ed9c10dd 100644
--- a/src/pages/signin/SignInHeroImage.js
+++ b/src/pages/signin/SignInHeroImage.js
@@ -3,23 +3,19 @@ import React from 'react';
import Lottie from '@components/Lottie';
import LottieAnimations from '@components/LottieAnimations';
import withWindowDimensions, {windowDimensionsPropTypes} from '@components/withWindowDimensions';
+import useResponsiveLayout from '@hooks/useResponsiveLayout';
import useThemeStyles from '@hooks/useThemeStyles';
import variables from '@styles/variables';
const propTypes = {
...windowDimensionsPropTypes,
-
- shouldShowSmallScreen: PropTypes.bool,
-};
-
-const defaultProps = {
- shouldShowSmallScreen: false,
};
function SignInHeroImage(props) {
const styles = useThemeStyles();
+ const {shouldUseNarrowLayout} = useResponsiveLayout();
let imageSize;
- if (props.isSmallScreenWidth || props.shouldShowSmallScreen) {
+ if (shouldUseNarrowLayout) {
imageSize = {
height: variables.signInHeroImageMobileHeight,
width: variables.signInHeroImageMobileWidth,
diff --git a/src/pages/signin/SignInModal.js b/src/pages/signin/SignInModal.js
index df266b557ced..2be6c8bc0bc9 100644
--- a/src/pages/signin/SignInModal.js
+++ b/src/pages/signin/SignInModal.js
@@ -30,7 +30,7 @@ function SignInModal() {
testID={SignInModal.displayName}
>
-
+
);
}
diff --git a/src/pages/signin/SignInPage.js b/src/pages/signin/SignInPage.js
index 9d5b51d667ff..12efce4f300c 100644
--- a/src/pages/signin/SignInPage.js
+++ b/src/pages/signin/SignInPage.js
@@ -9,6 +9,7 @@ import CustomStatusBarAndBackground from '@components/CustomStatusBarAndBackgrou
import ThemeProvider from '@components/ThemeProvider';
import ThemeStylesProvider from '@components/ThemeStylesProvider';
import useLocalize from '@hooks/useLocalize';
+import useResponsiveLayout from '@hooks/useResponsiveLayout';
import useSafeAreaInsets from '@hooks/useSafeAreaInsets';
import useStyleUtils from '@hooks/useStyleUtils';
import useThemeStyles from '@hooks/useThemeStyles';
@@ -71,9 +72,6 @@ const propTypes = {
/** Active Clients connected to ONYX Database */
activeClients: PropTypes.arrayOf(PropTypes.string),
- /** Whether or not the sign in page is being rendered in the RHP modal */
- isInModal: PropTypes.bool,
-
/** The user's preferred locale */
preferredLocale: PropTypes.string,
};
@@ -81,7 +79,6 @@ const propTypes = {
const defaultProps = {
account: {},
credentials: {},
- isInModal: false,
activeClients: [],
preferredLocale: '',
};
@@ -132,12 +129,11 @@ function getRenderOptions({hasLogin, hasValidateCode, account, isPrimaryLogin, i
};
}
-function SignInPageInner({credentials, account, isInModal, activeClients, preferredLocale}) {
+function SignInPageInner({credentials, account, activeClients, preferredLocale}) {
const styles = useThemeStyles();
const StyleUtils = useStyleUtils();
const {translate, formatPhoneNumber} = useLocalize();
- const {isSmallScreenWidth} = useWindowDimensions();
- const shouldShowSmallScreen = isSmallScreenWidth || isInModal;
+ const {shouldUseNarrowLayout} = useResponsiveLayout();
const safeAreaInsets = useSafeAreaInsets();
const signInPageLayoutRef = useRef();
const loginFormRef = useRef();
@@ -208,12 +204,12 @@ function SignInPageInner({credentials, account, isInModal, activeClients, prefer
welcomeHeader = translate('welcomeText.anotherLoginPageIsOpen');
welcomeText = translate('welcomeText.anotherLoginPageIsOpenExplanation');
} else if (shouldShowLoginForm) {
- welcomeHeader = isSmallScreenWidth ? headerText : translate('welcomeText.getStarted');
- welcomeText = isSmallScreenWidth ? translate('welcomeText.getStarted') : '';
+ welcomeHeader = shouldUseNarrowLayout ? headerText : translate('welcomeText.getStarted');
+ welcomeText = shouldUseNarrowLayout ? translate('welcomeText.getStarted') : '';
} else if (shouldShowValidateCodeForm) {
if (account.requiresTwoFactorAuth) {
// We will only know this after a user signs in successfully, without their 2FA code
- welcomeHeader = isSmallScreenWidth ? '' : translate('welcomeText.welcomeBack');
+ welcomeHeader = shouldUseNarrowLayout ? '' : translate('welcomeText.welcomeBack');
welcomeText = isUsingRecoveryCode ? translate('validateCodeForm.enterRecoveryCode') : translate('validateCodeForm.enterAuthenticatorCode');
} else {
const userLogin = Str.removeSMSDomain(credentials.login || '');
@@ -221,19 +217,19 @@ function SignInPageInner({credentials, account, isInModal, activeClients, prefer
// replacing spaces with "hard spaces" to prevent breaking the number
const userLoginToDisplay = Str.isSMSLogin(userLogin) ? formatPhoneNumber(userLogin).replace(/ /g, '\u00A0') : userLogin;
if (account.validated) {
- welcomeHeader = shouldShowSmallScreen ? '' : translate('welcomeText.welcomeBack');
- welcomeText = shouldShowSmallScreen
+ welcomeHeader = shouldUseNarrowLayout ? '' : translate('welcomeText.welcomeBack');
+ welcomeText = shouldUseNarrowLayout
? `${translate('welcomeText.welcomeBack')} ${translate('welcomeText.welcomeEnterMagicCode', {login: userLoginToDisplay})}`
: translate('welcomeText.welcomeEnterMagicCode', {login: userLoginToDisplay});
} else {
- welcomeHeader = shouldShowSmallScreen ? '' : translate('welcomeText.welcome');
- welcomeText = shouldShowSmallScreen
+ welcomeHeader = shouldUseNarrowLayout ? '' : translate('welcomeText.welcome');
+ welcomeText = shouldUseNarrowLayout
? `${translate('welcomeText.welcome')} ${translate('welcomeText.newFaceEnterMagicCode', {login: userLoginToDisplay})}`
: translate('welcomeText.newFaceEnterMagicCode', {login: userLoginToDisplay});
}
}
} else if (shouldShowUnlinkLoginForm || shouldShowEmailDeliveryFailurePage || shouldShowChooseSSOOrMagicCode) {
- welcomeHeader = shouldShowSmallScreen ? headerText : translate('welcomeText.welcomeBack');
+ welcomeHeader = shouldUseNarrowLayout ? headerText : translate('welcomeText.welcomeBack');
// Don't show any welcome text if we're showing the user the email delivery failed view
if (shouldShowEmailDeliveryFailurePage || shouldShowChooseSSOOrMagicCode) {
@@ -251,21 +247,19 @@ function SignInPageInner({credentials, account, isInModal, activeClients, prefer
return (
// Bottom SafeAreaView is removed so that login screen svg displays correctly on mobile.
// The SVG should flow under the Home Indicator on iOS.
-
+
{/* LoginForm must use the isVisible prop. This keeps it mounted, but visually hidden
so that password managers can access the values. Conditionally rendering this component will break this feature. */}
[
@@ -142,7 +138,8 @@ function Footer(props) {
const theme = useTheme();
const styles = useThemeStyles();
const StyleUtils = useStyleUtils();
- const isVertical = props.shouldShowSmallScreen;
+ const {shouldUseNarrowLayout} = useResponsiveLayout();
+ const isVertical = shouldUseNarrowLayout;
const imageDirection = isVertical ? styles.flexRow : styles.flexColumn;
const imageStyle = isVertical ? styles.pr0 : styles.alignSelfCenter;
const columnDirection = isVertical ? styles.flexColumn : styles.flexRow;
diff --git a/src/pages/signin/SignInPageLayout/SignInPageContent.js b/src/pages/signin/SignInPageLayout/SignInPageContent.js
index 5865c235335a..4735e75f6b9b 100755
--- a/src/pages/signin/SignInPageLayout/SignInPageContent.js
+++ b/src/pages/signin/SignInPageLayout/SignInPageContent.js
@@ -7,6 +7,7 @@ import OfflineIndicator from '@components/OfflineIndicator';
import SignInPageForm from '@components/SignInPageForm';
import Text from '@components/Text';
import withLocalize, {withLocalizePropTypes} from '@components/withLocalize';
+import useResponsiveLayout from '@hooks/useResponsiveLayout';
import useStyleUtils from '@hooks/useStyleUtils';
import useThemeStyles from '@hooks/useThemeStyles';
import useWindowDimensions from '@hooks/useWindowDimensions';
@@ -32,14 +33,12 @@ const propTypes = {
/** Whether to show welcome header on a particular page */
shouldShowWelcomeHeader: PropTypes.bool.isRequired,
- /** Whether to show signIn hero image on a particular page */
- shouldShowSmallScreen: PropTypes.bool.isRequired,
-
...withLocalizePropTypes,
};
function SignInPageContent(props) {
const {isSmallScreenWidth} = useWindowDimensions();
+ const {shouldUseNarrowLayout} = useResponsiveLayout();
const styles = useThemeStyles();
const StyleUtils = useStyleUtils();
@@ -77,9 +76,9 @@ function SignInPageContent(props) {
- {props.shouldShowSmallScreen ? (
+ {shouldUseNarrowLayout ? (
-
+
) : null}
diff --git a/src/pages/signin/SignInPageLayout/index.js b/src/pages/signin/SignInPageLayout/index.js
index e2f9c28f9fcd..08fd101f1b7b 100644
--- a/src/pages/signin/SignInPageLayout/index.js
+++ b/src/pages/signin/SignInPageLayout/index.js
@@ -6,6 +6,7 @@ import SignInGradient from '@assets/images/home-fade-gradient.svg';
import ImageSVG from '@components/ImageSVG';
import withLocalize, {withLocalizePropTypes} from '@components/withLocalize';
import usePrevious from '@hooks/usePrevious';
+import useResponsiveLayout from '@hooks/useResponsiveLayout';
import useStyleUtils from '@hooks/useStyleUtils';
import useTheme from '@hooks/useTheme';
import useThemeStyles from '@hooks/useThemeStyles';
@@ -39,9 +40,6 @@ const propTypes = {
/** A reference so we can expose scrollPageToTop */
innerRef: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),
- /** Whether or not the sign in page is being rendered in the RHP modal */
- shouldShowSmallScreen: PropTypes.bool,
-
/** Override the green headline copy */
customHeadline: PropTypes.string,
@@ -53,7 +51,6 @@ const propTypes = {
const defaultProps = {
innerRef: () => {},
- shouldShowSmallScreen: false,
customHeadline: '',
customHeroBody: '',
};
@@ -67,11 +64,12 @@ function SignInPageLayout(props) {
let containerStyles = [styles.flex1, styles.signInPageInner];
let contentContainerStyles = [styles.flex1, styles.flexRow];
const {windowHeight} = useWindowDimensions();
+ const {shouldUseNarrowLayout} = useResponsiveLayout();
// To scroll on both mobile and web, we need to set the container height manually
const containerHeight = windowHeight - props.insets.top - props.insets.bottom;
- if (props.shouldShowSmallScreen) {
+ if (shouldUseNarrowLayout) {
containerStyles = [styles.flex1];
contentContainerStyles = [styles.flex1, styles.flexColumn];
}
@@ -99,7 +97,7 @@ function SignInPageLayout(props) {
return (
- {!props.shouldShowSmallScreen ? (
+ {!shouldUseNarrowLayout ? (
{props.children}
@@ -172,16 +169,12 @@ function SignInPageLayout(props) {
welcomeText={props.welcomeText}
shouldShowWelcomeText={props.shouldShowWelcomeText}
shouldShowWelcomeHeader={props.shouldShowWelcomeHeader}
- shouldShowSmallScreen={props.shouldShowSmallScreen}
>
{props.children}
-
+
)}