11import { useRoute } from '@react-navigation/native' ;
22import lodashIsEmpty from 'lodash/isEmpty' ;
3- import React , { useMemo , useState } from 'react' ;
4- import type { LayoutChangeEvent , StyleProp , ViewStyle } from 'react-native' ;
5- import { ActivityIndicator , View } from 'react-native' ;
3+ import React , { useMemo } from 'react' ;
4+ import type { StyleProp , ViewStyle } from 'react-native' ;
65import RenderHTML from '@components/RenderHTML' ;
76import useLocalize from '@hooks/useLocalize' ;
87import useNetwork from '@hooks/useNetwork' ;
98import useOnyx from '@hooks/useOnyx' ;
109import useResponsiveLayout from '@hooks/useResponsiveLayout' ;
1110import useStyleUtils from '@hooks/useStyleUtils' ;
12- import useTheme from '@hooks/useTheme' ;
1311import useThemeStyles from '@hooks/useThemeStyles' ;
1412import { isIOUReportPendingCurrencyConversion } from '@libs/IOUUtils' ;
1513import Navigation from '@libs/Navigation/Navigation' ;
@@ -26,7 +24,6 @@ import {
2624import { generateReportID } from '@libs/ReportUtils' ;
2725import type { ContextMenuAnchor } from '@pages/home/report/ContextMenu/ReportActionContextMenu' ;
2826import { contextMenuRef } from '@pages/home/report/ContextMenu/ReportActionContextMenu' ;
29- import variables from '@styles/variables' ;
3027import CONST from '@src/CONST' ;
3128import type { TranslationPaths } from '@src/languages/types' ;
3229import ONYXKEYS from '@src/ONYXKEYS' ;
@@ -89,30 +86,18 @@ function MoneyRequestAction({
8986 const [ reportActions ] = useOnyx ( `${ ONYXKEYS . COLLECTION . REPORT_ACTIONS } ${ chatReportID } ` , { canEvict : false , canBeMissing : true } ) ;
9087 const StyleUtils = useStyleUtils ( ) ;
9188 const styles = useThemeStyles ( ) ;
92- const theme = useTheme ( ) ;
9389 const { translate} = useLocalize ( ) ;
9490 const { isOffline} = useNetwork ( ) ;
9591 const { shouldUseNarrowLayout} = useResponsiveLayout ( ) ;
9692 const route = useRoute < PlatformStackRouteProp < TransactionDuplicateNavigatorParamList , typeof SCREENS . TRANSACTION_DUPLICATE . REVIEW > > ( ) ;
9793 const isReviewDuplicateTransactionPage = route . name === SCREENS . TRANSACTION_DUPLICATE . REVIEW ;
9894 const isSplitBillAction = isSplitBillActionReportActionsUtils ( action ) ;
9995 const isTrackExpenseAction = isTrackExpenseActionReportActionsUtils ( action ) ;
100- const [ previewWidth , setPreviewWidth ] = useState ( 0 ) ;
10196 const containerStyles = useMemo (
10297 ( ) => [ styles . cursorPointer , isHovered ? styles . reportPreviewBoxHoverBorder : undefined , style ] ,
10398 [ isHovered , style , styles . cursorPointer , styles . reportPreviewBoxHoverBorder ] ,
10499 ) ;
105100
106- const transactionPreviewContainerStyles = useMemo (
107- ( ) => [
108- {
109- width : previewWidth ,
110- maxWidth : previewWidth ,
111- } ,
112- styles . borderNone ,
113- ] ,
114- [ previewWidth , styles . borderNone ] ,
115- ) ;
116101 const reportPreviewStyles = StyleUtils . getMoneyRequestReportPreviewStyle ( shouldUseNarrowLayout , 1 , undefined , undefined ) ;
117102
118103 const onMoneyRequestPreviewPressed = ( ) => {
@@ -160,59 +145,29 @@ function MoneyRequestAction({
160145 return < RenderHTML html = { `<deleted-action ${ CONST . REVERSED_TRANSACTION_ATTRIBUTE } ="${ isReversedTransaction } ">${ translate ( message ) } </deleted-action>` } /> ;
161146 }
162147
163- const renderCondition = ! ( lodashIsEmpty ( iouReport ) && ! ( isSplitBillAction || isTrackExpenseAction ) ) && isReviewDuplicateTransactionPage ;
164- const isLayoutWidthInvalid = ( layoutWidth : number ) => {
165- return ( shouldUseNarrowLayout && layoutWidth > variables . mobileResponsiveWidthBreakpoint ) || ( ! shouldUseNarrowLayout && layoutWidth > variables . sideBarWidth ) ;
166- } ;
167-
168- const singleTransactionPreviewWidth = shouldUseNarrowLayout ? styles . w100 . width : reportPreviewStyles . transactionPreviewStyle . width ;
169- const singleTransactionPreviewStyles = [ shouldUseNarrowLayout ? { ...styles . w100 , ...styles . mw100 } : reportPreviewStyles . transactionPreviewStyle , styles . mt2 ] ;
148+ if ( lodashIsEmpty ( iouReport ) && ! ( isSplitBillAction || isTrackExpenseAction ) ) {
149+ return null ;
150+ }
170151
171- const TransactionPreviewComponent = (
152+ return (
172153 < TransactionPreview
173154 iouReportID = { requestReportID }
174155 chatReportID = { chatReportID }
175156 reportID = { reportID }
176157 action = { action }
177- transactionPreviewWidth = { renderCondition ? previewWidth : singleTransactionPreviewWidth }
158+ transactionPreviewWidth = { reportPreviewStyles . transactionPreviewStandaloneStyle . width }
178159 isBillSplit = { isSplitBillAction }
179160 isTrackExpense = { isTrackExpenseAction }
180161 contextMenuAnchor = { contextMenuAnchor }
181162 checkIfContextMenuActive = { checkIfContextMenuActive }
182163 shouldShowPendingConversionMessage = { shouldShowPendingConversionMessage }
183164 onPreviewPressed = { onMoneyRequestPreviewPressed }
184- containerStyles = { renderCondition ? [ containerStyles , transactionPreviewContainerStyles ] : singleTransactionPreviewStyles }
165+ containerStyles = { [ reportPreviewStyles . transactionPreviewStandaloneStyle , isReviewDuplicateTransactionPage ? [ containerStyles , styles . borderNone ] : styles . mt2 ] }
185166 isHovered = { isHovered }
186167 isWhisper = { isWhisper }
187168 shouldDisplayContextMenu = { shouldDisplayContextMenu }
188169 />
189170 ) ;
190-
191- if ( ! renderCondition ) {
192- return TransactionPreviewComponent ;
193- }
194-
195- return (
196- < View
197- onLayout = { ( e : LayoutChangeEvent ) => {
198- if ( isLayoutWidthInvalid ( e . nativeEvent . layout . width ) ) {
199- return ;
200- }
201- setPreviewWidth ( e . nativeEvent . layout . width ) ;
202- } }
203- >
204- { ! previewWidth ? (
205- < View style = { [ { height : CONST . REPORT . TRANSACTION_PREVIEW . DUPLICATE . WIDE_HEIGHT } , styles . justifyContentCenter ] } >
206- < ActivityIndicator
207- color = { theme . spinner }
208- size = { 40 }
209- />
210- </ View >
211- ) : (
212- TransactionPreviewComponent
213- ) }
214- </ View >
215- ) ;
216171}
217172
218173MoneyRequestAction . displayName = 'MoneyRequestAction' ;
0 commit comments