Skip to content

Commit 48746d6

Browse files
Merge pull request #56140 from software-mansion-labs/travel/cancellation-policy
Translate cancellation policy for hotel details page, recapitalize hotel names
2 parents 19cac4f + 835c4f8 commit 48746d6

File tree

6 files changed

+33
-4
lines changed

6 files changed

+33
-4
lines changed

src/CONST.ts

+7
Original file line numberDiff line numberDiff line change
@@ -5976,6 +5976,13 @@ const CONST = {
59765976
TRAIN: 'train',
59775977
},
59785978

5979+
CANCELLATION_POLICY: {
5980+
UNKNOWN: 'UNKNOWN',
5981+
NON_REFUNDABLE: 'NON_REFUNDABLE',
5982+
FREE_CANCELLATION_UNTIL: 'FREE_CANCELLATION_UNTIL',
5983+
PARTIALLY_REFUNDABLE: 'PARTIALLY_REFUNDABLE',
5984+
},
5985+
59795986
DOT_SEPARATOR: '•',
59805987

59815988
DEFAULT_TAX: {

src/components/ReportActionItem/TripDetailsView.tsx

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import {Str} from 'expensify-common';
12
import React, {useMemo} from 'react';
23
import {View} from 'react-native';
34
import Icon from '@components/Icon';
@@ -104,7 +105,7 @@ function ReservationView({reservation, transactionID, tripRoomReportID, reservat
104105
numberOfLines={1}
105106
style={[styles.textStrong, styles.lh20]}
106107
>
107-
{reservation.type === CONST.RESERVATION_TYPE.CAR ? reservation.carInfo?.name : reservation.start.longName}
108+
{reservation.type === CONST.RESERVATION_TYPE.CAR ? reservation.carInfo?.name : Str.recapitalize(reservation.start.longName ?? '')}
108109
</Text>
109110
{!!bottomDescription && <Text style={[styles.textSmall, styles.colorMuted, styles.lh14]}>{bottomDescription}</Text>}
110111
</View>

src/components/ReportActionItem/TripRoomPreview.tsx

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import {Str} from 'expensify-common';
12
import React, {useMemo} from 'react';
23
import type {ListRenderItemInfo, StyleProp, ViewStyle} from 'react-native';
34
import {FlatList, View} from 'react-native';
@@ -62,7 +63,7 @@ function ReservationView({reservation}: ReservationViewProps) {
6263
const {translate} = useLocalize();
6364

6465
const reservationIcon = getTripReservationIcon(reservation.type);
65-
const title = reservation.type === CONST.RESERVATION_TYPE.CAR ? reservation.carInfo?.name : reservation.start.longName;
66+
const title = reservation.type === CONST.RESERVATION_TYPE.CAR ? reservation.carInfo?.name : Str.recapitalize(reservation.start.longName ?? '');
6667

6768
let titleComponent = (
6869
<Text

src/languages/en.ts

+6
Original file line numberDiff line numberDiff line change
@@ -2539,6 +2539,12 @@ const translations = {
25392539
cancellation: 'Cancellation policy',
25402540
cancellationUntil: 'Free cancellation until',
25412541
confirmation: 'Confirmation number',
2542+
cancellationPolicies: {
2543+
unknown: 'Unknown',
2544+
nonRefundable: 'Non-refundable',
2545+
freeCancellationUntil: 'Free cancellation until',
2546+
partiallyRefundable: 'Partially refundable',
2547+
},
25422548
},
25432549
car: 'Car',
25442550
carDetails: {

src/languages/es.ts

+6
Original file line numberDiff line numberDiff line change
@@ -2563,6 +2563,12 @@ const translations = {
25632563
cancellation: 'Política de cancelación',
25642564
cancellationUntil: 'Cancelación gratuita hasta el',
25652565
confirmation: 'Número de confirmación',
2566+
cancellationPolicies: {
2567+
unknown: 'Desconocido',
2568+
nonRefundable: 'No reembolsable',
2569+
freeCancellationUntil: 'Cancelación gratuita hasta',
2570+
partiallyRefundable: 'Parcialmente reembolsable',
2571+
},
25662572
},
25672573
car: 'Auto',
25682574
carDetails: {

src/pages/Travel/HotelTripDetails.tsx

+10-2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import {Str} from 'expensify-common';
12
import React from 'react';
23
import type {OnyxEntry} from 'react-native-onyx';
34
import * as Expensicons from '@components/Icon/Expensicons';
@@ -20,17 +21,24 @@ function HotelTripDetails({reservation, personalDetails}: HotelTripDetailsProps)
2021
const styles = useThemeStyles();
2122
const {translate} = useLocalize();
2223

24+
const cancellationMapping: Record<string, string> = {
25+
[CONST.CANCELLATION_POLICY.UNKNOWN]: translate('travel.hotelDetails.cancellationPolicies.unknown'),
26+
[CONST.CANCELLATION_POLICY.NON_REFUNDABLE]: translate('travel.hotelDetails.cancellationPolicies.nonRefundable'),
27+
[CONST.CANCELLATION_POLICY.FREE_CANCELLATION_UNTIL]: translate('travel.hotelDetails.cancellationPolicies.freeCancellationUntil'),
28+
[CONST.CANCELLATION_POLICY.PARTIALLY_REFUNDABLE]: translate('travel.hotelDetails.cancellationPolicies.partiallyRefundable'),
29+
};
30+
2331
const checkInDate = DateUtils.getFormattedTransportDateAndHour(new Date(reservation.start.date));
2432
const checkOutDate = DateUtils.getFormattedTransportDateAndHour(new Date(reservation.end.date));
2533
const cancellationText = reservation.cancellationDeadline
2634
? `${translate('travel.hotelDetails.cancellationUntil')} ${DateUtils.getFormattedTransportDateAndHour(new Date(reservation.cancellationDeadline)).date}`
27-
: reservation.cancellationPolicy;
35+
: cancellationMapping[reservation.cancellationPolicy ?? CONST.CANCELLATION_POLICY.UNKNOWN];
2836

2937
const displayName = personalDetails?.displayName ?? reservation.travelerPersonalInfo?.name;
3038

3139
return (
3240
<>
33-
<Text style={[styles.textHeadlineH1, styles.mh5, styles.mv3]}>{reservation.start.longName}</Text>
41+
<Text style={[styles.textHeadlineH1, styles.mh5, styles.mv3]}>{Str.recapitalize(reservation.start.longName ?? '')}</Text>
3442
<MenuItemWithTopDescription
3543
description={translate('common.address')}
3644
title={reservation.start.address}

0 commit comments

Comments
 (0)