Skip to content

Commit 85b90f5

Browse files
committed
fix after refresh money request receipt,not found report screen is shown
1 parent 38b1e0e commit 85b90f5

10 files changed

Lines changed: 40 additions & 22 deletions

File tree

src/ROUTES.ts

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -711,6 +711,18 @@ const ROUTES = {
711711
getRoute: (action: IOUAction, iouType: IOUType, transactionID: string, reportID: string, backTo = '') =>
712712
getUrlWithBackToParam(`${action as string}/${iouType as string}/report/${transactionID}/${reportID}`, backTo),
713713
},
714+
MONEY_REQUEST_RECEIPT_PREVIEW: {
715+
route: ':action/:iouType/receipt/:transactionID/:reportID',
716+
getRoute: (reportID: string, transactionID: string, action: IOUAction, iouType: IOUType) => {
717+
if (!reportID) {
718+
Log.warn('Invalid reportID is used to build the MONEY_REQUEST_RECEIPT_PREVIEW route');
719+
}
720+
if (!transactionID) {
721+
Log.warn('Invalid transactionID is used to build the MONEY_REQUEST_RECEIPT_PREVIEW route');
722+
}
723+
return `${action}/${iouType}/receipt/${transactionID}/${reportID}?readonly=false`;
724+
},
725+
},
714726
MONEY_REQUEST_EDIT_REPORT: {
715727
route: ':action/:iouType/report/:reportID/edit',
716728
getRoute: (action: IOUAction, iouType: IOUType, reportID?: string, shouldTurnOffSelectionMode?: boolean, backTo = '') => {
@@ -2088,22 +2100,14 @@ const ROUTES = {
20882100

20892101
TRANSACTION_RECEIPT: {
20902102
route: 'r/:reportID/transaction/:transactionID/receipt/:action?/:iouType?',
2091-
getRoute: (
2092-
reportID: string | undefined,
2093-
transactionID: string | undefined,
2094-
readonly = false,
2095-
isFromReviewDuplicates = false,
2096-
action?: IOUAction,
2097-
iouType?: IOUType,
2098-
mergeTransactionID?: string,
2099-
) => {
2103+
getRoute: (reportID: string | undefined, transactionID: string | undefined, readonly = false, isFromReviewDuplicates = false, mergeTransactionID?: string) => {
21002104
if (!reportID) {
21012105
Log.warn('Invalid reportID is used to build the TRANSACTION_RECEIPT route');
21022106
}
21032107
if (!transactionID) {
21042108
Log.warn('Invalid transactionID is used to build the TRANSACTION_RECEIPT route');
21052109
}
2106-
return `r/${reportID}/transaction/${transactionID}/receipt${action ? `/${action}` : ''}${iouType ? `/${iouType}` : ''}?readonly=${readonly}${
2110+
return `r/${reportID}/transaction/${transactionID}/receipt?readonly=${readonly}${
21072111
isFromReviewDuplicates ? '&isFromReviewDuplicates=true' : ''
21082112
}${mergeTransactionID ? `&mergeTransactionID=${mergeTransactionID}` : ''}` as const;
21092113
},

src/SCREENS.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -279,6 +279,7 @@ const SCREENS = {
279279
DISTANCE_CREATE: 'Money_Request_Distance_Create',
280280
STEP_DISTANCE_MAP: 'Money_Request_Step_Distance_Map',
281281
STEP_DISTANCE_MANUAL: 'Money_Request_Step_Distance_Manual',
282+
RECEIPT_PREVIEW: 'Money_Request_Receipt_preview',
282283
},
283284

284285
TRANSACTION_DUPLICATE: {

src/components/MoneyRequestConfirmationListFooter.tsx

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

783783
Navigation.navigate(
784784
isReceiptEditable
785-
? ROUTES.TRANSACTION_RECEIPT.getRoute(reportID, transactionID, undefined, undefined, action, iouType)
785+
? ROUTES.MONEY_REQUEST_RECEIPT_PREVIEW.getRoute(reportID, transactionID, action, iouType)
786786
: ROUTES.TRANSACTION_RECEIPT.getRoute(reportID, transactionID),
787787
);
788788
}}
@@ -807,7 +807,7 @@ function MoneyRequestConfirmationListFooter({
807807

808808
Navigation.navigate(
809809
isReceiptEditable
810-
? ROUTES.TRANSACTION_RECEIPT.getRoute(reportID, transactionID, undefined, undefined, action, iouType)
810+
? ROUTES.MONEY_REQUEST_RECEIPT_PREVIEW.getRoute(reportID, transactionID, action, iouType)
811811
: ROUTES.TRANSACTION_RECEIPT.getRoute(reportID, transactionID),
812812
);
813813
}}

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
@@ -745,6 +745,15 @@ function AuthScreens({session, lastOpenedPublicRoomID, initialLastUpdateIDApplie
745745
getComponent={loadReceiptView}
746746
listeners={modalScreenListeners}
747747
/>
748+
<RootStack.Screen
749+
name={SCREENS.MONEY_REQUEST.RECEIPT_PREVIEW}
750+
options={{
751+
headerShown: false,
752+
presentation: Presentation.TRANSPARENT_MODAL,
753+
}}
754+
getComponent={loadReceiptView}
755+
listeners={modalScreenListeners}
756+
/>
748757
<RootStack.Screen
749758
name={SCREENS.CONNECTION_COMPLETE}
750759
options={rootNavigatorScreenOptions.fullScreen}

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ const MODAL_ROUTES_TO_DISMISS: string[] = [
1717
SCREENS.NOT_FOUND,
1818
SCREENS.ATTACHMENTS,
1919
SCREENS.TRANSACTION_RECEIPT,
20+
SCREENS.MONEY_REQUEST.RECEIPT_PREVIEW,
2021
SCREENS.PROFILE_AVATAR,
2122
SCREENS.WORKSPACE_AVATAR,
2223
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
@@ -2122,10 +2122,15 @@ type AuthScreensParamList = SharedScreensParamList & {
21222122
transactionID: string;
21232123
readonly?: string;
21242124
isFromReviewDuplicates?: string;
2125-
action?: IOUAction;
2126-
iouType?: IOUType;
21272125
mergeTransactionID?: string;
21282126
};
2127+
[SCREENS.MONEY_REQUEST.RECEIPT_PREVIEW]: {
2128+
reportID: string;
2129+
transactionID: string;
2130+
action: IOUAction;
2131+
iouType: IOUType;
2132+
readonly: string;
2133+
};
21292134
[SCREENS.CONNECTION_COMPLETE]: undefined;
21302135
[NAVIGATORS.SHARE_MODAL_NAVIGATOR]: NavigatorScreenParams<ShareNavigatorParamList>;
21312136
[SCREENS.BANK_CONNECTION_COMPLETE]: undefined;

src/pages/TransactionReceiptPage.tsx

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,19 +16,20 @@ 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, iouType} = 'action' in route.params ? {action: route.params.action, iouType: route.params.iouType} : {};
2525
const [report] = useOnyx(`${ONYXKEYS.COLLECTION.REPORT}${reportID}`, {canBeMissing: true});
2626
const [transactionMain] = useOnyx(`${ONYXKEYS.COLLECTION.TRANSACTION}${transactionID}`, {canBeMissing: true});
2727
const [transactionDraft] = useOnyx(`${ONYXKEYS.COLLECTION.TRANSACTION_DRAFT}${transactionID}`, {canBeMissing: true});
2828
const [reportMetadata = CONST.DEFAULT_REPORT_METADATA] = useOnyx(`${ONYXKEYS.COLLECTION.REPORT_METADATA}${reportID}`, {canBeMissing: true});
2929

3030
// If we have a merge transaction, we need to use the receipt from the merge transaction
31-
const mergeTransactionID = route.params.mergeTransactionID;
31+
const {mergeTransactionID, isFromReviewDuplicates} =
32+
'mergeTransactionID' in route.params ? {mergeTransactionID: route.params.mergeTransactionID, isFromReviewDuplicates: route.params.isFromReviewDuplicates === 'true'} : {};
3233
const [mergeTransaction] = useOnyx(`${ONYXKEYS.COLLECTION.MERGE_TRANSACTION}${mergeTransactionID}`, {canBeMissing: true});
3334
if (mergeTransactionID && mergeTransaction && transactionMain) {
3435
transactionMain.receipt = mergeTransaction.receipt;
@@ -39,15 +40,13 @@ function TransactionReceipt({route}: TransactionReceiptProps) {
3940
const receiptURIs = getThumbnailAndImageURIs(transaction);
4041
const isLocalFile = receiptURIs.isLocalFile;
4142
const readonly = route.params.readonly === 'true';
42-
const isFromReviewDuplicates = route.params.isFromReviewDuplicates === 'true';
4343
const imageSource = isDraftTransaction ? transactionDraft?.receipt?.source : tryResolveUrlFromApiRoot(receiptURIs.image ?? '');
4444

4545
const parentReportAction = getReportAction(report?.parentReportID, report?.parentReportActionID);
4646
const canEditReceipt = canEditFieldOfMoneyRequest(parentReportAction, CONST.EDIT_REQUEST_FIELD.RECEIPT);
4747
const canDeleteReceipt = canEditFieldOfMoneyRequest(parentReportAction, CONST.EDIT_REQUEST_FIELD.RECEIPT, true);
4848
const isEReceipt = transaction && !hasReceiptSource(transaction) && hasEReceipt(transaction);
4949
const isTrackExpenseAction = isTrackExpenseReportReportActionsUtils(parentReportAction);
50-
const iouType = route.params.iouType;
5150

5251
useEffect(() => {
5352
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)