diff --git a/src/libs/PersonalDetailsUtils.ts b/src/libs/PersonalDetailsUtils.ts index 304181158f4e..6a4dbcdbb747 100644 --- a/src/libs/PersonalDetailsUtils.ts +++ b/src/libs/PersonalDetailsUtils.ts @@ -47,6 +47,18 @@ Onyx.connect({ }, }); +let defaultCountry = ''; + +Onyx.connect({ + key: ONYXKEYS.COUNTRY, + callback: (value) => { + if (!value) { + return; + } + defaultCountry = value; + }, +}); + const regexMergedAccount = new RegExp(CONST.REGEX.MERGED_ACCOUNT_PREFIX); function getDisplayNameOrDefault(passedPersonalDetails?: Partial | null, defaultValue = '', shouldFallbackToHidden = true, shouldAddCurrentUserPostfix = false): string { @@ -370,6 +382,10 @@ function getUserNameByEmail(email: string, nameToDisplay: 'firstName' | 'display return email; } +function getDefaultCountry() { + return defaultCountry; +} + export { isPersonalDetailsEmpty, getDisplayNameOrDefault, @@ -388,4 +404,5 @@ export { getNewAccountIDsAndLogins, getPersonalDetailsLength, getUserNameByEmail, + getDefaultCountry, }; diff --git a/src/pages/AddressPage.tsx b/src/pages/AddressPage.tsx index a0793a958f49..8e3d0d373dc2 100644 --- a/src/pages/AddressPage.tsx +++ b/src/pages/AddressPage.tsx @@ -25,16 +25,18 @@ type AddressPageProps = { updateAddress: (values: FormOnyxValues) => void; /** Title of address page */ title: string; + + defaultCountry?: Country; } & BackToParams; -function AddressPage({title, address, updateAddress, isLoadingApp = true, backTo}: AddressPageProps) { +function AddressPage({title, address, updateAddress, isLoadingApp = true, backTo, defaultCountry}: AddressPageProps) { const styles = useThemeStyles(); const {translate} = useLocalize(); // Check if country is valid const {street} = address ?? {}; const [street1, street2] = street ? street.split('\n') : [undefined, undefined]; - const [currentCountry, setCurrentCountry] = useState(address?.country); + const [currentCountry, setCurrentCountry] = useState(address?.country ?? defaultCountry); const [state, setState] = useState(address?.state); const [city, setCity] = useState(address?.city); const [zipcode, setZipcode] = useState(address?.zip); diff --git a/src/pages/settings/Profile/PersonalDetails/PersonalAddressPage.tsx b/src/pages/settings/Profile/PersonalDetails/PersonalAddressPage.tsx index 668081242996..7f04e4252fe1 100644 --- a/src/pages/settings/Profile/PersonalDetails/PersonalAddressPage.tsx +++ b/src/pages/settings/Profile/PersonalDetails/PersonalAddressPage.tsx @@ -4,10 +4,11 @@ import {withOnyx} from 'react-native-onyx'; import useLocalize from '@hooks/useLocalize'; import type {PlatformStackScreenProps} from '@libs/Navigation/PlatformStackNavigation/types'; import type {SettingsNavigatorParamList} from '@libs/Navigation/types'; -import * as PersonalDetailsUtils from '@libs/PersonalDetailsUtils'; +import {getCurrentAddress, getDefaultCountry} from '@libs/PersonalDetailsUtils'; import AddressPage from '@pages/AddressPage'; -import * as PersonalDetails from '@userActions/PersonalDetails'; import type {FormOnyxValues} from '@src/components/Form/types'; +import type {Country} from '@src/CONST'; +import {updateAddress as updateAddressPersonalDetails} from '@src/libs/actions/PersonalDetails'; import ONYXKEYS from '@src/ONYXKEYS'; import type SCREENS from '@src/SCREENS'; import type {PrivatePersonalDetails} from '@src/types/onyx'; @@ -26,7 +27,7 @@ type PersonalAddressPageProps = PlatformStackScreenProps) { - PersonalDetails.updateAddress( + updateAddressPersonalDetails( values.addressLine1?.trim() ?? '', values.addressLine2?.trim() ?? '', values.city.trim(), @@ -38,10 +39,12 @@ function updateAddress(values: FormOnyxValues PersonalDetailsUtils.getCurrentAddress(privatePersonalDetails), [privatePersonalDetails]); + const address = useMemo(() => getCurrentAddress(privatePersonalDetails), [privatePersonalDetails]); + const defaultCountry = getDefaultCountry(); return (