11import React , { useMemo } from 'react' ;
22import { View } from 'react-native' ;
3- import type { OnyxEntry } from 'react-native-onyx' ;
4- import { withOnyx } from 'react-native-onyx' ;
3+ import { useOnyx } from 'react-native-onyx' ;
54import useStyleUtils from '@hooks/useStyleUtils' ;
65import useThemeStyles from '@hooks/useThemeStyles' ;
7- import * as ReportUtils from '@libs/ReportUtils' ;
8- import * as TripReservationUtils from '@libs/TripReservationUtils' ;
6+ import { getTransactionDetails } from '@libs/ReportUtils' ;
7+ import { isPerDiemRequest as isPerDiemRequestTransactionUtils } from '@libs/TransactionUtils' ;
8+ import { getTripEReceiptIcon } from '@libs/TripReservationUtils' ;
99import colors from '@styles/theme/colors' ;
1010import variables from '@styles/variables' ;
1111import CONST from '@src/CONST' ;
1212import ONYXKEYS from '@src/ONYXKEYS' ;
13- import type { Transaction } from '@src/types/onyx' ;
1413import Icon from './Icon' ;
1514import * as eReceiptBGs from './Icon/EReceiptBGs' ;
1615import * as Expensicons from './Icon/Expensicons' ;
1716import * as MCCIcons from './Icon/MCCIcons' ;
1817import Image from './Image' ;
1918import Text from './Text' ;
2019
21- type EReceiptThumbnailOnyxProps = {
22- transaction : OnyxEntry < Transaction > ;
23- } ;
24-
2520type IconSize = 'x-small' | 'small' | 'medium' | 'large' ;
2621
27- type EReceiptThumbnailProps = EReceiptThumbnailOnyxProps & {
28- /** TransactionID of the transaction this EReceipt corresponds to. It's used by withOnyx HOC */
29- // eslint-disable-next-line react/no-unused-prop-types
22+ type EReceiptThumbnailProps = {
23+ /** TransactionID of the transaction this EReceipt corresponds to. */
3024 transactionID : string ;
3125
3226 /** Border radius to be applied on the parent view. */
@@ -54,20 +48,22 @@ const backgroundImages = {
5448 [ CONST . ERECEIPT_COLORS . PINK ] : eReceiptBGs . EReceiptBG_Pink ,
5549} ;
5650
57- function EReceiptThumbnail ( { transaction , borderRadius, fileExtension, isReceiptThumbnail = false , centerIconV = true , iconSize = 'large' } : EReceiptThumbnailProps ) {
51+ function EReceiptThumbnail ( { transactionID , borderRadius, fileExtension, isReceiptThumbnail = false , centerIconV = true , iconSize = 'large' } : EReceiptThumbnailProps ) {
5852 const styles = useThemeStyles ( ) ;
5953 const StyleUtils = useStyleUtils ( ) ;
54+ const [ transaction ] = useOnyx ( `${ ONYXKEYS . COLLECTION . TRANSACTION } ${ transactionID } ` ) ;
6055 const colorCode = isReceiptThumbnail ? StyleUtils . getFileExtensionColorCode ( fileExtension ) : StyleUtils . getEReceiptColorCode ( transaction ) ;
6156
6257 const backgroundImage = useMemo ( ( ) => backgroundImages [ colorCode ] , [ colorCode ] ) ;
6358
6459 const colorStyles = StyleUtils . getEReceiptColorStyles ( colorCode ) ;
6560 const primaryColor = colorStyles ?. backgroundColor ;
6661 const secondaryColor = colorStyles ?. color ;
67- const transactionDetails = ReportUtils . getTransactionDetails ( transaction ) ;
62+ const transactionDetails = getTransactionDetails ( transaction ) ;
6863 const transactionMCCGroup = transactionDetails ?. mccGroup ;
6964 const MCCIcon = transactionMCCGroup ? MCCIcons [ `${ transactionMCCGroup } ` ] : undefined ;
70- const tripIcon = TripReservationUtils . getTripEReceiptIcon ( transaction ) ;
65+ const tripIcon = getTripEReceiptIcon ( transaction ) ;
66+ const isPerDiemRequest = isPerDiemRequestTransactionUtils ( transaction ) ;
7167
7268 let receiptIconWidth : number = variables . eReceiptIconWidth ;
7369 let receiptIconHeight : number = variables . eReceiptIconHeight ;
@@ -135,15 +131,23 @@ function EReceiptThumbnail({transaction, borderRadius, fileExtension, isReceiptT
135131 { fileExtension . toUpperCase ( ) }
136132 </ Text >
137133 ) }
138- { MCCIcon && ! isReceiptThumbnail ? (
134+ { isPerDiemRequest ? (
135+ < Icon
136+ src = { Expensicons . CalendarSolid }
137+ height = { receiptMCCSize }
138+ width = { receiptMCCSize }
139+ fill = { primaryColor }
140+ />
141+ ) : null }
142+ { ! isPerDiemRequest && MCCIcon && ! isReceiptThumbnail ? (
139143 < Icon
140144 src = { MCCIcon }
141145 height = { receiptMCCSize }
142146 width = { receiptMCCSize }
143147 fill = { primaryColor }
144148 />
145149 ) : null }
146- { ! MCCIcon && tripIcon ? (
150+ { ! isPerDiemRequest && ! MCCIcon && tripIcon ? (
147151 < Icon
148152 src = { tripIcon }
149153 height = { receiptMCCSize }
@@ -158,9 +162,6 @@ function EReceiptThumbnail({transaction, borderRadius, fileExtension, isReceiptT
158162}
159163
160164EReceiptThumbnail . displayName = 'EReceiptThumbnail' ;
161- export default withOnyx < EReceiptThumbnailProps , EReceiptThumbnailOnyxProps > ( {
162- transaction : {
163- key : ( { transactionID} ) => `${ ONYXKEYS . COLLECTION . TRANSACTION } ${ transactionID } ` ,
164- } ,
165- } ) ( EReceiptThumbnail ) ;
166- export type { IconSize , EReceiptThumbnailProps , EReceiptThumbnailOnyxProps } ;
165+ export default EReceiptThumbnail ;
166+
167+ export type { IconSize , EReceiptThumbnailProps } ;
0 commit comments