diff --git a/src/libs/ReportUtils.ts b/src/libs/ReportUtils.ts index 4bae619d928e..a8ac92e717cd 100644 --- a/src/libs/ReportUtils.ts +++ b/src/libs/ReportUtils.ts @@ -4112,11 +4112,11 @@ function navigateBackAfterDeleteTransaction(backRoute: Route | undefined, isFrom /** * Go back to the previous page from the edit private page of a given report */ -function goBackFromPrivateNotes(report: OnyxEntry, session: OnyxEntry, backTo?: string) { - if (isEmpty(report) || isEmpty(session) || !session.accountID) { +function goBackFromPrivateNotes(report: OnyxEntry, accountID?: number, backTo?: string) { + if (isEmpty(report) || !accountID) { return; } - const currentUserPrivateNote = report.privateNotes?.[session.accountID]?.note ?? ''; + const currentUserPrivateNote = report.privateNotes?.[accountID]?.note ?? ''; if (isEmpty(currentUserPrivateNote)) { const participantAccountIDs = getParticipantsAccountIDsForDisplay(report); diff --git a/src/pages/PrivateNotes/PrivateNotesEditPage.tsx b/src/pages/PrivateNotes/PrivateNotesEditPage.tsx index ac8eb7f862b6..53a52f9cebb5 100644 --- a/src/pages/PrivateNotes/PrivateNotesEditPage.tsx +++ b/src/pages/PrivateNotes/PrivateNotesEditPage.tsx @@ -4,8 +4,7 @@ import {Str} from 'expensify-common'; import lodashDebounce from 'lodash/debounce'; import React, {useCallback, useMemo, useRef, useState} from 'react'; import {Keyboard} from 'react-native'; -import type {OnyxEntry} from 'react-native-onyx'; -import {withOnyx} from 'react-native-onyx'; +import {useOnyx} from 'react-native-onyx'; import FormProvider from '@components/Form/FormProvider'; import InputWrapper from '@components/Form/InputWrapper'; import HeaderWithBackButton from '@components/HeaderWithBackButton'; @@ -31,25 +30,20 @@ import ONYXKEYS from '@src/ONYXKEYS'; import ROUTES from '@src/ROUTES'; import type SCREENS from '@src/SCREENS'; import INPUT_IDS from '@src/types/form/PrivateNotesForm'; -import type {PersonalDetailsList, Report} from '@src/types/onyx'; +import type {Report} from '@src/types/onyx'; import type {Note} from '@src/types/onyx/Report'; -type PrivateNotesEditPageOnyxProps = { - /** All of the personal details for everyone */ - personalDetailsList: OnyxEntry; -}; - type PrivateNotesEditPageProps = WithReportAndPrivateNotesOrNotFoundProps & - PrivateNotesEditPageOnyxProps & StackScreenProps & { /** The report currently being looked at */ report: Report; }; -function PrivateNotesEditPage({route, personalDetailsList, report, session}: PrivateNotesEditPageProps) { +function PrivateNotesEditPage({route, report, accountID}: PrivateNotesEditPageProps) { const backTo = route.params.backTo; const styles = useThemeStyles(); const {translate} = useLocalize(); + const [personalDetailsList] = useOnyx(ONYXKEYS.PERSONAL_DETAILS_LIST); // We need to edit the note in markdown format, but display it in HTML format const [privateNote, setPrivateNote] = useState( @@ -117,7 +111,7 @@ function PrivateNotesEditPage({route, personalDetailsList, report, session}: Pri > ReportUtils.goBackFromPrivateNotes(report, session, backTo)} + onBackButtonPress={() => ReportUtils.goBackFromPrivateNotes(report, accountID, backTo)} shouldShowBackButton onCloseButtonPress={() => Navigation.dismissModal()} /> @@ -178,10 +172,4 @@ function PrivateNotesEditPage({route, personalDetailsList, report, session}: Pri PrivateNotesEditPage.displayName = 'PrivateNotesEditPage'; -export default withReportAndPrivateNotesOrNotFound('privateNotes.title')( - withOnyx({ - personalDetailsList: { - key: ONYXKEYS.PERSONAL_DETAILS_LIST, - }, - })(PrivateNotesEditPage), -); +export default withReportAndPrivateNotesOrNotFound('privateNotes.title')(PrivateNotesEditPage); diff --git a/src/pages/PrivateNotes/PrivateNotesListPage.tsx b/src/pages/PrivateNotes/PrivateNotesListPage.tsx index 424cc3e14683..474075d928f8 100644 --- a/src/pages/PrivateNotes/PrivateNotesListPage.tsx +++ b/src/pages/PrivateNotes/PrivateNotesListPage.tsx @@ -36,7 +36,7 @@ type NoteListItem = { accountID: string; }; -function PrivateNotesListPage({report, session}: PrivateNotesListPageProps) { +function PrivateNotesListPage({report, accountID: sessionAccountID}: PrivateNotesListPageProps) { const route = useRoute>(); const backTo = route.params.backTo; const [personalDetailsList] = useOnyx(ONYXKEYS.PERSONAL_DETAILS_LIST); @@ -76,14 +76,14 @@ function PrivateNotesListPage({report, session}: PrivateNotesListPageProps) { return { reportID: report.reportID, accountID, - title: Number(session?.accountID) === Number(accountID) ? translate('privateNotes.myNote') : personalDetailsList?.[accountID]?.login ?? '', + title: Number(sessionAccountID) === Number(accountID) ? translate('privateNotes.myNote') : personalDetailsList?.[accountID]?.login ?? '', action: () => Navigation.navigate(ROUTES.PRIVATE_NOTES_EDIT.getRoute(report.reportID, accountID, backTo)), brickRoadIndicator: privateNoteBrickRoadIndicator(Number(accountID)), note: privateNote?.note ?? '', - disabled: Number(session?.accountID) !== Number(accountID), + disabled: Number(sessionAccountID) !== Number(accountID), }; }); - }, [report, personalDetailsList, session, translate, backTo]); + }, [report, personalDetailsList, sessionAccountID, translate, backTo]); return ( ; + /** ID of the current user */ + accountID?: number; }; -type WithReportAndPrivateNotesOrNotFoundProps = WithReportAndPrivateNotesOrNotFoundOnyxProps & WithReportOrNotFoundProps; +type WithReportAndPrivateNotesOrNotFoundProps = WithReportOrNotFoundProps & WithReportAndPrivateNotesOrNotFoundOnyxProps; export default function (pageTitle: TranslationPaths) { - // eslint-disable-next-line rulesdir/no-negated-variables return ( WrappedComponent: ComponentType>, ): React.ComponentType & RefAttributes> => { // eslint-disable-next-line rulesdir/no-negated-variables - function WithReportAndPrivateNotesOrNotFound(props: TProps, ref: ForwardedRef) { + function WithReportAndPrivateNotesOrNotFound(props: Omit, ref: ForwardedRef) { const {translate} = useLocalize(); const {isOffline} = useNetwork(); - const {route, report, session} = props; + const [session] = useOnyx(ONYXKEYS.SESSION); + const {route, report} = props; const [reportNameValuePairs] = useOnyx(`${ONYXKEYS.COLLECTION.REPORT_NAME_VALUE_PAIRS}${report?.reportID ?? -1}`); const accountID = ('accountID' in route.params && route.params.accountID) || ''; - const isPrivateNotesFetchTriggered = report.isLoadingPrivateNotes !== undefined; + const isPrivateNotesFetchTriggered = report?.isLoadingPrivateNotes !== undefined; const prevIsOffline = usePrevious(isOffline); const isReconnecting = prevIsOffline && !isOffline; const isOtherUserNote = !!accountID && Number(session?.accountID) !== Number(accountID); @@ -49,9 +47,9 @@ export default function (pageTitle: TranslationPaths) { return; } - Report.getReportPrivateNote(report.reportID); + Report.getReportPrivateNote(report?.reportID); // eslint-disable-next-line react-compiler/react-compiler, react-hooks/exhaustive-deps -- do not add report.isLoadingPrivateNotes to dependencies - }, [report.reportID, isOffline, isPrivateNotesFetchTriggered, isReconnecting]); + }, [report?.reportID, isOffline, isPrivateNotesFetchTriggered, isReconnecting]); const shouldShowFullScreenLoadingIndicator = !isPrivateNotesFetchFinished; @@ -82,21 +80,16 @@ export default function (pageTitle: TranslationPaths) { return ( ); } WithReportAndPrivateNotesOrNotFound.displayName = `withReportAndPrivateNotesOrNotFound(${getComponentDisplayName(WrappedComponent)})`; - return withReportOrNotFound()( - withOnyx, WithReportAndPrivateNotesOrNotFoundOnyxProps>({ - session: { - key: ONYXKEYS.SESSION, - }, - })(WithReportAndPrivateNotesOrNotFound), - ); + return withReportOrNotFound()(WithReportAndPrivateNotesOrNotFound); }; }