From edb08fd2d11a581570313602d93218c49d0ed5b2 Mon Sep 17 00:00:00 2001 From: Rutika Pawar <183392827+twilight2294@users.noreply.github.com> Date: Sat, 8 Mar 2025 06:04:05 +0000 Subject: [PATCH 1/6] add Edit profile row in RHP profile --- src/ROUTES.ts | 5 ++++- src/libs/Navigation/linkingConfig/config.ts | 2 +- src/libs/Navigation/types.ts | 1 + src/pages/ProfilePage.tsx | 8 ++++++++ .../settings/Profile/Contacts/NewContactMethodPage.tsx | 4 ++-- src/pages/settings/Profile/ProfilePage.tsx | 8 ++++++-- tests/navigation/NavigateTests.tsx | 2 +- 7 files changed, 23 insertions(+), 7 deletions(-) diff --git a/src/ROUTES.ts b/src/ROUTES.ts index 7f3d1324b411..4b5659df3061 100644 --- a/src/ROUTES.ts +++ b/src/ROUTES.ts @@ -127,7 +127,10 @@ const ROUTES = { }, WORKSPACE_SWITCHER: 'workspace-switcher', SETTINGS: 'settings', - SETTINGS_PROFILE: 'settings/profile', + SETTINGS_PROFILE: { + route: 'settings/profile', + getRoute: (backTo?: string) => getUrlWithBackToParam('settings/profile', backTo), + }, SETTINGS_CHANGE_CURRENCY: 'settings/add-payment-card/change-currency', SETTINGS_SHARE_CODE: 'settings/shareCode', SETTINGS_DISPLAY_NAME: 'settings/profile/display-name', diff --git a/src/libs/Navigation/linkingConfig/config.ts b/src/libs/Navigation/linkingConfig/config.ts index 90d14b50890a..03223e6ed7c0 100644 --- a/src/libs/Navigation/linkingConfig/config.ts +++ b/src/libs/Navigation/linkingConfig/config.ts @@ -1550,7 +1550,7 @@ const config: LinkingOptions['config'] = { exact: true, }, [SCREENS.SETTINGS.PROFILE.ROOT]: { - path: ROUTES.SETTINGS_PROFILE, + path: ROUTES.SETTINGS_PROFILE.route, exact: true, }, [SCREENS.SETTINGS.SECURITY]: { diff --git a/src/libs/Navigation/types.ts b/src/libs/Navigation/types.ts index fc73a6db8626..13b5a2c1eea8 100644 --- a/src/libs/Navigation/types.ts +++ b/src/libs/Navigation/types.ts @@ -300,6 +300,7 @@ type SettingsNavigatorParamList = { tagName: string; backTo?: Routes; }; + [SCREENS.SETTINGS.PROFILE.ROOT]: {backTo?: Routes}; [SCREENS.SETTINGS.SUBSCRIPTION.ROOT]: {backTo?: Routes}; [SCREENS.SETTINGS.SUBSCRIPTION.SIZE]: { canChangeSize: 0 | 1; diff --git a/src/pages/ProfilePage.tsx b/src/pages/ProfilePage.tsx index 5e2bad5cab1f..6e3955cb55f4 100755 --- a/src/pages/ProfilePage.tsx +++ b/src/pages/ProfilePage.tsx @@ -278,6 +278,14 @@ function ProfilePage({route}: ProfilePageProps) { ) : null} {shouldShowLocalTime && } + {isCurrentUser && ( + Navigation.navigate(ROUTES.SETTINGS_PROFILE.getRoute(Navigation.getActiveRoute()))} + /> + )} {shouldShowNotificationPreference && ( { - if (navigateBackTo === ROUTES.SETTINGS_PROFILE) { + if (navigateBackTo === ROUTES.SETTINGS_PROFILE.getRoute()) { Navigation.goBack(ROUTES.SETTINGS_CONTACT_METHODS.route); return; } diff --git a/src/pages/settings/Profile/ProfilePage.tsx b/src/pages/settings/Profile/ProfilePage.tsx index 06093b88e306..ed587e46befd 100755 --- a/src/pages/settings/Profile/ProfilePage.tsx +++ b/src/pages/settings/Profile/ProfilePage.tsx @@ -1,3 +1,4 @@ +import {useRoute} from '@react-navigation/native'; import React, {useState} from 'react'; import {View} from 'react-native'; import {useOnyx} from 'react-native-onyx'; @@ -24,6 +25,8 @@ import useTheme from '@hooks/useTheme'; import useThemeStyles from '@hooks/useThemeStyles'; import {formatPhoneNumber} from '@libs/LocalePhoneNumber'; import Navigation from '@libs/Navigation/Navigation'; +import {PlatformStackRouteProp} from '@libs/Navigation/PlatformStackNavigation/types'; +import {SettingsNavigatorParamList} from '@libs/Navigation/types'; import {getFormattedAddress} from '@libs/PersonalDetailsUtils'; import {getFullSizeAvatar, getLoginListBrickRoadIndicator, isDefaultAvatar} from '@libs/UserUtils'; import {clearAvatarErrors, deleteAvatar, updateAvatar} from '@userActions/PersonalDetails'; @@ -31,6 +34,7 @@ import CONST from '@src/CONST'; import type {TranslationPaths} from '@src/languages/types'; import ONYXKEYS from '@src/ONYXKEYS'; import ROUTES from '@src/ROUTES'; +import SCREENS from '@src/SCREENS'; import {isEmptyObject} from '@src/types/utils/EmptyObject'; function ProfilePage() { @@ -44,7 +48,7 @@ function ProfilePage() { const [loginList] = useOnyx(ONYXKEYS.LOGIN_LIST); const [privatePersonalDetails] = useOnyx(ONYXKEYS.PRIVATE_PERSONAL_DETAILS); const currentUserPersonalDetails = useCurrentUserPersonalDetails(); - + const route = useRoute>(); const [isLoadingApp] = useOnyx(ONYXKEYS.IS_LOADING_APP); const getPronouns = (): string => { @@ -148,7 +152,7 @@ function ProfilePage() { > Navigation.goBack()} + onBackButtonPress={() => Navigation.goBack(route.params?.backTo)} shouldShowBackButton={shouldUseNarrowLayout} shouldDisplaySearchRouter icon={Illustrations.Profile} diff --git a/tests/navigation/NavigateTests.tsx b/tests/navigation/NavigateTests.tsx index 51aa2e2efeb6..b9e25b03c846 100644 --- a/tests/navigation/NavigateTests.tsx +++ b/tests/navigation/NavigateTests.tsx @@ -55,7 +55,7 @@ describe('Navigate', () => { // When navigate to the page from the same split navigator act(() => { - Navigation.navigate(ROUTES.SETTINGS_PROFILE); + Navigation.navigate(ROUTES.SETTINGS_PROFILE.getRoute()); }); // Then push a new page to the current split navigator From 734f89a8455f5186a068b922b0d1162b9e2f13a2 Mon Sep 17 00:00:00 2001 From: Rutika Pawar <183392827+twilight2294@users.noreply.github.com> Date: Sat, 8 Mar 2025 06:11:07 +0000 Subject: [PATCH 2/6] use translate --- src/languages/en.ts | 1 + src/languages/es.ts | 1 + src/pages/ProfilePage.tsx | 2 +- 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/languages/en.ts b/src/languages/en.ts index 8016342f090b..4e7271e4c8a7 100755 --- a/src/languages/en.ts +++ b/src/languages/en.ts @@ -524,6 +524,7 @@ const translations = { validate: 'Validate', expenseReports: 'Expense Reports', rateOutOfPolicy: 'Rate out of policy', + editYourProfile: 'Edit your profile', }, supportalNoAccess: { title: 'Not so fast', diff --git a/src/languages/es.ts b/src/languages/es.ts index 0d82fb9fe399..7f578acc2bc2 100644 --- a/src/languages/es.ts +++ b/src/languages/es.ts @@ -515,6 +515,7 @@ const translations = { validate: 'Validar', expenseReports: 'Informes de Gastos', rateOutOfPolicy: 'Tasa fuera de póliza', + editYourProfile: 'Edita tu perfil', }, supportalNoAccess: { title: 'No tan rápido', diff --git a/src/pages/ProfilePage.tsx b/src/pages/ProfilePage.tsx index 6e3955cb55f4..dd105fc46cb9 100755 --- a/src/pages/ProfilePage.tsx +++ b/src/pages/ProfilePage.tsx @@ -281,7 +281,7 @@ function ProfilePage({route}: ProfilePageProps) { {isCurrentUser && ( Navigation.navigate(ROUTES.SETTINGS_PROFILE.getRoute(Navigation.getActiveRoute()))} /> From 157852504d27931789e979fe695ca804cf79320e Mon Sep 17 00:00:00 2001 From: Rutika Pawar <183392827+twilight2294@users.noreply.github.com> Date: Sat, 8 Mar 2025 06:13:02 +0000 Subject: [PATCH 3/6] fix typecheck failure --- src/pages/settings/InitialSettingsPage.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/settings/InitialSettingsPage.tsx b/src/pages/settings/InitialSettingsPage.tsx index 821b5b5eb2c2..505867832f5c 100755 --- a/src/pages/settings/InitialSettingsPage.tsx +++ b/src/pages/settings/InitialSettingsPage.tsx @@ -151,7 +151,7 @@ function InitialSettingsPage({currentUserPersonalDetails}: InitialSettingsPagePr icon: Expensicons.Profile, screenName: SCREENS.SETTINGS.PROFILE.ROOT, brickRoadIndicator: profileBrickRoadIndicator, - action: () => Navigation.navigate(ROUTES.SETTINGS_PROFILE), + action: () => Navigation.navigate(ROUTES.SETTINGS_PROFILE.getRoute()), }, { translationKey: 'common.wallet', From 3f1cfd7b6df4994ecbb39c591c6cbf3b42ae354e Mon Sep 17 00:00:00 2001 From: Rutika Pawar <183392827+twilight2294@users.noreply.github.com> Date: Sat, 8 Mar 2025 11:46:40 +0530 Subject: [PATCH 4/6] fix esLint --- src/pages/settings/Profile/ProfilePage.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/pages/settings/Profile/ProfilePage.tsx b/src/pages/settings/Profile/ProfilePage.tsx index ed587e46befd..0308c6c4c39d 100755 --- a/src/pages/settings/Profile/ProfilePage.tsx +++ b/src/pages/settings/Profile/ProfilePage.tsx @@ -25,8 +25,8 @@ import useTheme from '@hooks/useTheme'; import useThemeStyles from '@hooks/useThemeStyles'; import {formatPhoneNumber} from '@libs/LocalePhoneNumber'; import Navigation from '@libs/Navigation/Navigation'; -import {PlatformStackRouteProp} from '@libs/Navigation/PlatformStackNavigation/types'; -import {SettingsNavigatorParamList} from '@libs/Navigation/types'; +import type {PlatformStackRouteProp} from '@libs/Navigation/PlatformStackNavigation/types'; +import type {SettingsNavigatorParamList} from '@libs/Navigation/types'; import {getFormattedAddress} from '@libs/PersonalDetailsUtils'; import {getFullSizeAvatar, getLoginListBrickRoadIndicator, isDefaultAvatar} from '@libs/UserUtils'; import {clearAvatarErrors, deleteAvatar, updateAvatar} from '@userActions/PersonalDetails'; @@ -34,7 +34,7 @@ import CONST from '@src/CONST'; import type {TranslationPaths} from '@src/languages/types'; import ONYXKEYS from '@src/ONYXKEYS'; import ROUTES from '@src/ROUTES'; -import SCREENS from '@src/SCREENS'; +import type SCREENS from '@src/SCREENS'; import {isEmptyObject} from '@src/types/utils/EmptyObject'; function ProfilePage() { From 2d37615a2c9dad35e71aeb1bd4196e232b8687df Mon Sep 17 00:00:00 2001 From: Rutika Pawar <183392827+twilight2294@users.noreply.github.com> Date: Sat, 5 Apr 2025 12:26:00 +0530 Subject: [PATCH 5/6] fix gesture animation on iOS --- .../Navigation/AppNavigator/useRootNavigatorScreenOptions.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libs/Navigation/AppNavigator/useRootNavigatorScreenOptions.ts b/src/libs/Navigation/AppNavigator/useRootNavigatorScreenOptions.ts index f01b5fad8db8..74db2ef11326 100644 --- a/src/libs/Navigation/AppNavigator/useRootNavigatorScreenOptions.ts +++ b/src/libs/Navigation/AppNavigator/useRootNavigatorScreenOptions.ts @@ -75,7 +75,7 @@ const useRootNavigatorScreenOptions = () => { splitNavigator: { ...commonScreenOptions, // We need to turn off animation for the full screen to avoid delay when closing screens. - animation: Animations.NONE, + animation: shouldUseNarrowLayout ? Animations.SLIDE_FROM_RIGHT : Animations.NONE, web: { cardStyleInterpolator: (props: StackCardInterpolationProps) => modalCardStyleInterpolator({props, isFullScreenModal: true}), cardStyle: StyleUtils.getNavigationModalCardStyle(), From 394da49586162ebf8a557f8e80f6b3d167a8af0d Mon Sep 17 00:00:00 2001 From: Rutika Pawar <183392827+twilight2294@users.noreply.github.com> Date: Sat, 5 Apr 2025 13:33:33 +0530 Subject: [PATCH 6/6] fix lost navigation state when user refreshes on settings page --- src/libs/ReportUtils.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libs/ReportUtils.ts b/src/libs/ReportUtils.ts index 6f89329109a9..a1199202379d 100644 --- a/src/libs/ReportUtils.ts +++ b/src/libs/ReportUtils.ts @@ -4857,7 +4857,7 @@ function navigateToDetailsPage(report: OnyxEntry, backTo?: string) { const participantAccountID = getParticipantsAccountIDsForDisplay(report); if (isSelfDMReport || isOneOnOneChatReport) { - Navigation.navigate(ROUTES.PROFILE.getRoute(participantAccountID.at(0), backTo)); + Navigation.navigate(ROUTES.PROFILE.getRoute(participantAccountID.at(0), isSelfDMReport ? Navigation.getActiveRoute() : backTo)); return; }