Skip to content

Commit df6ff73

Browse files
authored
Merge pull request Expensify#66889 from callstack-internal/VickyStash/bugfix/65251-fix-receipt-preview-padding
Fix horizontal padding when opening a receipt while creating expenses with Multi-Scan
2 parents b89dd8e + 5dd93ee commit df6ff73

5 files changed

Lines changed: 15 additions & 2 deletions

File tree

src/components/Attachments/AttachmentView/index.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -316,7 +316,11 @@ function AttachmentView({
316316
}}
317317
/>
318318
</View>
319-
<View style={safeAreaPaddingBottomStyle}>{isHighResolution && <HighResolutionInfo isUploaded={isUploaded} />}</View>
319+
{isHighResolution && (
320+
<View style={safeAreaPaddingBottomStyle}>
321+
<HighResolutionInfo isUploaded={isUploaded} />
322+
</View>
323+
)}
320324
</>
321325
);
322326
}

src/components/MultiGestureCanvas/utils.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,16 @@ function clamp(value: number, lowerBound: number, upperBound: number) {
99
return Math.min(Math.max(lowerBound, value), upperBound);
1010
}
1111

12+
// Small buffer to prevent hairline spacing issues caused by floating-point precision errors
13+
// When scaling images, rounding can create sub-pixel gaps that appear as thin lines
14+
const SCALE_BUFFER = 1.001;
15+
1216
const getCanvasFitScale: GetCanvasFitScale = ({canvasSize, contentSize}) => {
1317
const scaleX = clamp(canvasSize.width / contentSize.width, 0, 1);
1418
const scaleY = clamp(canvasSize.height / contentSize.height, 0, 1);
15-
const minScale = Math.min(scaleX, scaleY);
19+
// Apply small buffer to ensure scaled image always fills container completely,
20+
// eliminating hairline spaces that can appear due to rounding precision
21+
const minScale = Math.min(scaleX, scaleY) * SCALE_BUFFER;
1622
const maxScale = Math.max(scaleX, scaleY);
1723

1824
return {scaleX, scaleY, minScale, maxScale};

src/pages/iou/request/step/IOURequestStepScan/ReceiptViewModal/index.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ function ReceiptViewModal({route}: ReceiptViewModalProps) {
104104
isVisible
105105
onClose={handleGoBack}
106106
onModalHide={clearAttachmentErrors}
107+
enableEdgeToEdgeBottomSafeAreaPadding
107108
>
108109
<HeaderWithBackButton
109110
title={translate('common.receipt')}

src/pages/media/AttachmentModalScreen/AttachmentModalContainer/index.native.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ function AttachmentModalContainer({contentProps, navigation, onShow, onClose}: A
3838
<ScreenWrapper
3939
navigation={navigation}
4040
testID={`attachment-modal-${testID}`}
41+
enableEdgeToEdgeBottomSafeAreaPadding
4142
>
4243
<AttachmentModalBaseContent
4344
// eslint-disable-next-line react/jsx-props-no-spreading

src/pages/media/AttachmentModalScreen/AttachmentModalContainer/index.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ function AttachmentModalContainer({contentProps, modalType, onShow, onClose, sho
6262
}}
6363
shouldHandleNavigationBack={shouldHandleNavigationBack}
6464
onClose={closeModal}
65+
enableEdgeToEdgeBottomSafeAreaPadding
6566
>
6667
<AttachmentModalBaseContent
6768
// eslint-disable-next-line react/jsx-props-no-spreading

0 commit comments

Comments
 (0)