Skip to content

Commit cf39b8a

Browse files
authored
Merge pull request Expensify#64891 from parasharrajat/revert-64769-revert-63853-parasharrajat/travel-update
Use tripdata payload to get reservations setup
2 parents 04414ea + 8e75f87 commit cf39b8a

15 files changed

Lines changed: 2732 additions & 40 deletions

File tree

cspell.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -682,7 +682,8 @@
682682
"zoneinfo",
683683
"zxcv",
684684
"zxldvw",
685-
"مثال"
685+
"مثال",
686+
"pnrs"
686687
],
687688
"ignorePaths": [
688689
"src/languages/de.ts",

src/ROUTES.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1957,12 +1957,12 @@ const ROUTES = {
19571957
},
19581958
},
19591959
TRAVEL_TRIP_DETAILS: {
1960-
route: 'r/:reportID/trip/:transactionID/:reservationIndex',
1961-
getRoute: (reportID: string | undefined, transactionID: string | undefined, reservationIndex: number, backTo?: string) => {
1962-
if (!reportID || !transactionID) {
1963-
Log.warn('Invalid reportID or transactionID is used to build the TRAVEL_TRIP_DETAILS route');
1960+
route: 'r/:reportID/trip/:transactionID/:pnr/:sequenceIndex',
1961+
getRoute: (reportID: string | undefined, transactionID: string | undefined, pnr: string | undefined, sequenceIndex: number, backTo?: string) => {
1962+
if (!reportID || !transactionID || !pnr) {
1963+
Log.warn('Invalid reportID, transactionID or pnr is used to build the TRAVEL_TRIP_DETAILS route');
19641964
}
1965-
return getUrlWithBackToParam(`r/${reportID}/trip/${transactionID}/${reservationIndex}`, backTo);
1965+
return getUrlWithBackToParam(`r/${reportID}/trip/${transactionID}/${pnr}/${sequenceIndex}`, backTo);
19661966
},
19671967
},
19681968
TRAVEL_DOMAIN_SELECTOR: {

src/components/ReportActionItem/MoneyRequestView.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -866,7 +866,7 @@ function MoneyRequestView({report, shouldShowAnimatedBackground, readonly = fals
866866
if (reservations > 1) {
867867
Navigation.navigate(ROUTES.TRAVEL_TRIP_SUMMARY.getRoute(report.reportID, transaction.transactionID, getReportRHPActiveRoute()));
868868
}
869-
Navigation.navigate(ROUTES.TRAVEL_TRIP_DETAILS.getRoute(report.reportID, transaction.transactionID, 0, getReportRHPActiveRoute()));
869+
Navigation.navigate(ROUTES.TRAVEL_TRIP_DETAILS.getRoute(report.reportID, transaction.transactionID, '0', 0, getReportRHPActiveRoute()));
870870
}}
871871
/>
872872
)}

src/components/ReportActionItem/TripDetailsView.tsx

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import {Str} from 'expensify-common';
22
import React, {useMemo} from 'react';
33
import {View} from 'react-native';
4+
import type {OnyxEntry} from 'react-native-onyx';
45
import Icon from '@components/Icon';
56
import MenuItemWithTopDescription from '@components/MenuItemWithTopDescription';
67
import OfflineWithFeedback from '@components/OfflineWithFeedback';
@@ -18,19 +19,20 @@ import variables from '@styles/variables';
1819
import * as Expensicons from '@src/components/Icon/Expensicons';
1920
import CONST from '@src/CONST';
2021
import type {ReservationData} from '@src/libs/TripReservationUtils';
21-
import {getReservationsFromTripTransactions, getTripReservationCode, getTripReservationIcon} from '@src/libs/TripReservationUtils';
22+
import {getReservationsFromTripReport, getTripReservationCode, getTripReservationIcon} from '@src/libs/TripReservationUtils';
2223
import ROUTES from '@src/ROUTES';
24+
import type {Report} from '@src/types/onyx';
2325
import type {Reservation, ReservationTimeDetails} from '@src/types/onyx/Transaction';
2426
import type Transaction from '@src/types/onyx/Transaction';
2527

2628
type ReservationViewProps = {
2729
reservation: Reservation;
2830
transactionID: string;
2931
tripRoomReportID: string;
30-
reservationIndex: number;
32+
sequenceIndex: number;
3133
};
3234

33-
function ReservationView({reservation, transactionID, tripRoomReportID, reservationIndex}: ReservationViewProps) {
35+
function ReservationView({reservation, transactionID, tripRoomReportID, sequenceIndex}: ReservationViewProps) {
3436
const theme = useTheme();
3537
const styles = useThemeStyles();
3638
const StyleUtils = useStyleUtils();
@@ -139,14 +141,18 @@ function ReservationView({reservation, transactionID, tripRoomReportID, reservat
139141
iconWidth={20}
140142
iconStyles={[StyleUtils.getTripReservationIconContainer(false), styles.mr3]}
141143
secondaryIconFill={theme.icon}
142-
onPress={() => Navigation.navigate(ROUTES.TRAVEL_TRIP_DETAILS.getRoute(tripRoomReportID, transactionID, reservationIndex, Navigation.getReportRHPActiveRoute()))}
144+
onPress={() =>
145+
Navigation.navigate(
146+
ROUTES.TRAVEL_TRIP_DETAILS.getRoute(tripRoomReportID, transactionID, String(reservation.reservationID), sequenceIndex, Navigation.getReportRHPActiveRoute()),
147+
)
148+
}
143149
/>
144150
);
145151
}
146152

147153
type TripDetailsViewProps = {
148154
/** The active tripRoomReportID, used for Onyx subscription */
149-
tripRoomReportID: string;
155+
tripRoomReport: OnyxEntry<Report>;
150156

151157
/** Whether we should display the horizontal rule below the component */
152158
shouldShowHorizontalRule: boolean;
@@ -155,11 +161,15 @@ type TripDetailsViewProps = {
155161
tripTransactions: Transaction[];
156162
};
157163

158-
function TripDetailsView({tripRoomReportID, shouldShowHorizontalRule, tripTransactions}: TripDetailsViewProps) {
164+
function TripDetailsView({tripRoomReport, shouldShowHorizontalRule, tripTransactions}: TripDetailsViewProps) {
159165
const styles = useThemeStyles();
160166
const {translate} = useLocalize();
161167

162-
const reservationsData: ReservationData[] = getReservationsFromTripTransactions(tripTransactions);
168+
if (!tripRoomReport) {
169+
return null;
170+
}
171+
172+
const reservationsData: ReservationData[] = getReservationsFromTripReport(tripRoomReport, tripTransactions);
163173

164174
return (
165175
<View>
@@ -174,14 +184,14 @@ function TripDetailsView({tripRoomReportID, shouldShowHorizontalRule, tripTransa
174184
</View>
175185
</View>
176186
<>
177-
{reservationsData.map(({reservation, transactionID, reservationIndex}) => {
187+
{reservationsData.map(({reservation, transactionID, sequenceIndex}) => {
178188
return (
179189
<OfflineWithFeedback>
180190
<ReservationView
181191
reservation={reservation}
182192
transactionID={transactionID}
183-
tripRoomReportID={tripRoomReportID}
184-
reservationIndex={reservationIndex}
193+
tripRoomReportID={tripRoomReport.reportID}
194+
sequenceIndex={sequenceIndex}
185195
/>
186196
</OfflineWithFeedback>
187197
);

src/components/ReportActionItem/TripRoomPreview.tsx

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,8 @@ import {convertToDisplayString} from '@libs/CurrencyUtils';
2020
import DateUtils from '@libs/DateUtils';
2121
import {canUseTouchScreen} from '@libs/DeviceCapabilities';
2222
import Navigation from '@libs/Navigation/Navigation';
23-
import {getMoneyRequestSpendBreakdown} from '@libs/ReportUtils';
2423
import type {ReservationData} from '@libs/TripReservationUtils';
25-
import {getReservationsFromTripTransactions, getTripReservationIcon} from '@libs/TripReservationUtils';
24+
import {getReservationsFromTripReport, getTripReservationIcon, getTripTotal} from '@libs/TripReservationUtils';
2625
import type {ContextMenuAnchor} from '@pages/home/report/ContextMenu/ReportActionContextMenu';
2726
import variables from '@styles/variables';
2827
import * as Expensicons from '@src/components/Icon/Expensicons';
@@ -154,14 +153,15 @@ function TripRoomPreview({
154153
const chatReportID = chatReport?.reportID;
155154
const tripTransactions = useTripTransactions(chatReportID);
156155

157-
const reservationsData: ReservationData[] = getReservationsFromTripTransactions(tripTransactions);
156+
const reservationsData: ReservationData[] = getReservationsFromTripReport(chatReport, tripTransactions);
158157
const dateInfo =
159158
chatReport?.tripData?.startDate && chatReport?.tripData?.endDate
160159
? DateUtils.getFormattedDateRange(new Date(chatReport.tripData.startDate), new Date(chatReport.tripData.endDate))
161160
: '';
162-
const {totalDisplaySpend} = getMoneyRequestSpendBreakdown(chatReport);
161+
const reportCurrency = iouReport?.currency ?? chatReport?.currency;
162+
163+
const {totalDisplaySpend = 0, currency = reportCurrency} = chatReport ? getTripTotal(chatReport) : {};
163164

164-
const currency = iouReport?.currency ?? chatReport?.currency;
165165
const displayAmount = useMemo(() => {
166166
if (totalDisplaySpend) {
167167
return convertToDisplayString(totalDisplaySpend, currency);

src/libs/DebugUtils.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -558,6 +558,7 @@ function validateReportDraftProperty(key: keyof Report | keyof ReportNameValuePa
558558
startDate: 'string',
559559
endDate: 'string',
560560
tripID: 'string',
561+
payload: 'object',
561562
});
562563
case 'calendlySchedule':
563564
return validateObject<ObjectElement<ReportNameValuePairs, 'calendlySchedule'>>(value, {

src/libs/Navigation/types.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1726,7 +1726,8 @@ type TravelNavigatorParamList = {
17261726
[SCREENS.TRAVEL.TRIP_DETAILS]: {
17271727
reportID: string;
17281728
transactionID: string;
1729-
reservationIndex: number;
1729+
sequenceIndex: number;
1730+
pnr: string;
17301731
backTo?: string;
17311732
};
17321733
[SCREENS.TRAVEL.TCS]: {

0 commit comments

Comments
 (0)