Skip to content

Commit 13a30ce

Browse files
authored
Merge pull request Expensify#68467 from bernhardoj/fix/67360-not-found-when-refresh-test-drive-iou
Fix after refresh money request receipt, not found report screen is shown
2 parents 734bdb9 + 2b7db2c commit 13a30ce

10 files changed

Lines changed: 41 additions & 22 deletions

File tree

src/ROUTES.ts

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -716,6 +716,18 @@ const ROUTES = {
716716
getRoute: (action: IOUAction, iouType: IOUType, transactionID: string, reportID: string, backTo = '', reportActionID?: string) =>
717717
getUrlWithBackToParam(`${action as string}/${iouType as string}/report/${transactionID}/${reportID}${reportActionID ? `/${reportActionID}` : ''}`, backTo),
718718
},
719+
MONEY_REQUEST_RECEIPT_PREVIEW: {
720+
route: ':action/:iouType/receipt/:transactionID/:reportID',
721+
getRoute: (reportID: string, transactionID: string, action: IOUAction, iouType: IOUType) => {
722+
if (!reportID) {
723+
Log.warn('Invalid reportID is used to build the MONEY_REQUEST_RECEIPT_PREVIEW route');
724+
}
725+
if (!transactionID) {
726+
Log.warn('Invalid transactionID is used to build the MONEY_REQUEST_RECEIPT_PREVIEW route');
727+
}
728+
return `${action}/${iouType}/receipt/${transactionID}/${reportID}?readonly=false` as const;
729+
},
730+
},
719731
MONEY_REQUEST_EDIT_REPORT: {
720732
route: ':action/:iouType/report/:reportID/edit',
721733
getRoute: (action: IOUAction, iouType: IOUType, reportID?: string, shouldTurnOffSelectionMode?: boolean, backTo = '') => {
@@ -2093,22 +2105,14 @@ const ROUTES = {
20932105

20942106
TRANSACTION_RECEIPT: {
20952107
route: 'r/:reportID/transaction/:transactionID/receipt/:action?/:iouType?',
2096-
getRoute: (
2097-
reportID: string | undefined,
2098-
transactionID: string | undefined,
2099-
readonly = false,
2100-
isFromReviewDuplicates = false,
2101-
action?: IOUAction,
2102-
iouType?: IOUType,
2103-
mergeTransactionID?: string,
2104-
) => {
2108+
getRoute: (reportID: string | undefined, transactionID: string | undefined, readonly = false, isFromReviewDuplicates = false, mergeTransactionID?: string) => {
21052109
if (!reportID) {
21062110
Log.warn('Invalid reportID is used to build the TRANSACTION_RECEIPT route');
21072111
}
21082112
if (!transactionID) {
21092113
Log.warn('Invalid transactionID is used to build the TRANSACTION_RECEIPT route');
21102114
}
2111-
return `r/${reportID}/transaction/${transactionID}/receipt${action ? `/${action}` : ''}${iouType ? `/${iouType}` : ''}?readonly=${readonly}${
2115+
return `r/${reportID}/transaction/${transactionID}/receipt?readonly=${readonly}${
21122116
isFromReviewDuplicates ? '&isFromReviewDuplicates=true' : ''
21132117
}${mergeTransactionID ? `&mergeTransactionID=${mergeTransactionID}` : ''}` as const;
21142118
},

src/SCREENS.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -281,6 +281,7 @@ const SCREENS = {
281281
DISTANCE_CREATE: 'Money_Request_Distance_Create',
282282
STEP_DISTANCE_MAP: 'Money_Request_Step_Distance_Map',
283283
STEP_DISTANCE_MANUAL: 'Money_Request_Step_Distance_Manual',
284+
RECEIPT_PREVIEW: 'Money_Request_Receipt_preview',
284285
},
285286

286287
TRANSACTION_DUPLICATE: {

src/components/MoneyRequestConfirmationListFooter.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -784,7 +784,7 @@ function MoneyRequestConfirmationListFooter({
784784

785785
Navigation.navigate(
786786
isReceiptEditable
787-
? ROUTES.TRANSACTION_RECEIPT.getRoute(reportID, transactionID, undefined, undefined, action, iouType)
787+
? ROUTES.MONEY_REQUEST_RECEIPT_PREVIEW.getRoute(reportID, transactionID, action, iouType)
788788
: ROUTES.TRANSACTION_RECEIPT.getRoute(reportID, transactionID),
789789
);
790790
}}
@@ -809,7 +809,7 @@ function MoneyRequestConfirmationListFooter({
809809

810810
Navigation.navigate(
811811
isReceiptEditable
812-
? ROUTES.TRANSACTION_RECEIPT.getRoute(reportID, transactionID, undefined, undefined, action, iouType)
812+
? ROUTES.MONEY_REQUEST_RECEIPT_PREVIEW.getRoute(reportID, transactionID, action, iouType)
813813
: ROUTES.TRANSACTION_RECEIPT.getRoute(reportID, transactionID),
814814
);
815815
}}

src/components/ReportActionItem/ReportActionItemImage.tsx

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -163,8 +163,6 @@ function ReportActionItemImage({
163163
transaction?.transactionID,
164164
readonly,
165165
isFromReviewDuplicates,
166-
undefined,
167-
undefined,
168166
mergeTransactionID,
169167
),
170168
)

src/libs/Navigation/AppNavigator/AuthScreens.tsx

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -715,6 +715,15 @@ function AuthScreens({session, lastOpenedPublicRoomID, initialLastUpdateIDApplie
715715
getComponent={loadReceiptView}
716716
listeners={modalScreenListeners}
717717
/>
718+
<RootStack.Screen
719+
name={SCREENS.MONEY_REQUEST.RECEIPT_PREVIEW}
720+
options={{
721+
headerShown: false,
722+
presentation: Presentation.TRANSPARENT_MODAL,
723+
}}
724+
getComponent={loadReceiptView}
725+
listeners={modalScreenListeners}
726+
/>
718727
<RootStack.Screen
719728
name={SCREENS.CONNECTION_COMPLETE}
720729
options={rootNavigatorScreenOptions.fullScreen}

src/libs/Navigation/AppNavigator/createRootStackNavigator/GetStateForActionHandlers.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ const MODAL_ROUTES_TO_DISMISS: string[] = [
1818
SCREENS.NOT_FOUND,
1919
SCREENS.ATTACHMENTS,
2020
SCREENS.TRANSACTION_RECEIPT,
21+
SCREENS.MONEY_REQUEST.RECEIPT_PREVIEW,
2122
SCREENS.PROFILE_AVATAR,
2223
SCREENS.WORKSPACE_AVATAR,
2324
SCREENS.REPORT_AVATAR,

src/libs/Navigation/linkingConfig/config.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ const config: LinkingOptions<RootNavigatorParamList>['config'] = {
3131
[SCREENS.WORKSPACE_AVATAR]: ROUTES.WORKSPACE_AVATAR.route,
3232
[SCREENS.REPORT_AVATAR]: ROUTES.REPORT_AVATAR.route,
3333
[SCREENS.TRANSACTION_RECEIPT]: ROUTES.TRANSACTION_RECEIPT.route,
34+
[SCREENS.MONEY_REQUEST.RECEIPT_PREVIEW]: ROUTES.MONEY_REQUEST_RECEIPT_PREVIEW.route,
3435
[SCREENS.WORKSPACE_JOIN_USER]: ROUTES.WORKSPACE_JOIN_USER.route,
3536
[SCREENS.REQUIRE_TWO_FACTOR_AUTH]: ROUTES.REQUIRE_TWO_FACTOR_AUTH,
3637
[SCREENS.WORKSPACES_LIST]: {

src/libs/Navigation/types.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2128,10 +2128,15 @@ type AuthScreensParamList = SharedScreensParamList & {
21282128
transactionID: string;
21292129
readonly?: string;
21302130
isFromReviewDuplicates?: string;
2131-
action?: IOUAction;
2132-
iouType?: IOUType;
21332131
mergeTransactionID?: string;
21342132
};
2133+
[SCREENS.MONEY_REQUEST.RECEIPT_PREVIEW]: {
2134+
reportID: string;
2135+
transactionID: string;
2136+
action: IOUAction;
2137+
iouType: IOUType;
2138+
readonly: string;
2139+
};
21352140
[SCREENS.CONNECTION_COMPLETE]: undefined;
21362141
[NAVIGATORS.SHARE_MODAL_NAVIGATOR]: NavigatorScreenParams<ShareNavigatorParamList>;
21372142
[SCREENS.BANK_CONNECTION_COMPLETE]: undefined;

src/pages/TransactionReceiptPage.tsx

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,19 +16,21 @@ import ONYXKEYS from '@src/ONYXKEYS';
1616
import ROUTES from '@src/ROUTES';
1717
import type SCREENS from '@src/SCREENS';
1818

19-
type TransactionReceiptProps = PlatformStackScreenProps<AuthScreensParamList, typeof SCREENS.TRANSACTION_RECEIPT>;
19+
type TransactionReceiptProps = PlatformStackScreenProps<AuthScreensParamList, typeof SCREENS.TRANSACTION_RECEIPT | typeof SCREENS.MONEY_REQUEST.RECEIPT_PREVIEW>;
2020

2121
function TransactionReceipt({route}: TransactionReceiptProps) {
2222
const reportID = route.params.reportID;
2323
const transactionID = route.params.transactionID;
24-
const action = route.params.action;
24+
const action = 'action' in route.params ? route.params.action : undefined;
25+
const iouType = 'iouType' in route.params ? route.params.iouType : undefined;
2526
const [report] = useOnyx(`${ONYXKEYS.COLLECTION.REPORT}${reportID}`, {canBeMissing: true});
2627
const [transactionMain] = useOnyx(`${ONYXKEYS.COLLECTION.TRANSACTION}${transactionID}`, {canBeMissing: true});
2728
const [transactionDraft] = useOnyx(`${ONYXKEYS.COLLECTION.TRANSACTION_DRAFT}${transactionID}`, {canBeMissing: true});
2829
const [reportMetadata = CONST.DEFAULT_REPORT_METADATA] = useOnyx(`${ONYXKEYS.COLLECTION.REPORT_METADATA}${reportID}`, {canBeMissing: true});
2930

3031
// If we have a merge transaction, we need to use the receipt from the merge transaction
31-
const mergeTransactionID = route.params.mergeTransactionID;
32+
const mergeTransactionID = 'mergeTransactionID' in route.params ? route.params.mergeTransactionID : undefined;
33+
const isFromReviewDuplicates = 'isFromReviewDuplicates' in route.params ? route.params.isFromReviewDuplicates === 'true' : undefined;
3234
const [mergeTransaction] = useOnyx(`${ONYXKEYS.COLLECTION.MERGE_TRANSACTION}${mergeTransactionID}`, {canBeMissing: true});
3335
if (mergeTransactionID && mergeTransaction && transactionMain) {
3436
transactionMain.receipt = mergeTransaction.receipt;
@@ -39,15 +41,13 @@ function TransactionReceipt({route}: TransactionReceiptProps) {
3941
const receiptURIs = getThumbnailAndImageURIs(transaction);
4042
const isLocalFile = receiptURIs.isLocalFile;
4143
const readonly = route.params.readonly === 'true';
42-
const isFromReviewDuplicates = route.params.isFromReviewDuplicates === 'true';
4344
const imageSource = isDraftTransaction ? transactionDraft?.receipt?.source : tryResolveUrlFromApiRoot(receiptURIs.image ?? '');
4445

4546
const parentReportAction = getReportAction(report?.parentReportID, report?.parentReportActionID);
4647
const canEditReceipt = canEditFieldOfMoneyRequest(parentReportAction, CONST.EDIT_REQUEST_FIELD.RECEIPT);
4748
const canDeleteReceipt = canEditFieldOfMoneyRequest(parentReportAction, CONST.EDIT_REQUEST_FIELD.RECEIPT, true);
4849
const isEReceipt = transaction && !hasReceiptSource(transaction) && hasEReceipt(transaction);
4950
const isTrackExpenseAction = isTrackExpenseReportReportActionsUtils(parentReportAction);
50-
const iouType = route.params.iouType;
5151

5252
useEffect(() => {
5353
if ((!!report && !!transaction) || isDraftTransaction) {

src/pages/media/AttachmentModalScreen/index.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ function AttachmentModalScreen({route, navigation}: AttachmentModalScreenProps)
3434
);
3535
}
3636

37-
if (route.name === SCREENS.TRANSACTION_RECEIPT) {
37+
if (route.name === SCREENS.TRANSACTION_RECEIPT || route.name === SCREENS.MONEY_REQUEST.RECEIPT_PREVIEW) {
3838
return (
3939
<TransactionReceiptModalContent
4040
route={{...route, params: paramsWithContext}}

0 commit comments

Comments
 (0)