fix: blank space for corrupt files preview#29692
Conversation
c33a90e to
1e386eb
Compare
|
@eVoloshchak Please copy/paste the Reviewer Checklist from here into a new comment on this PR and complete it. If you have the K2 extension, you can simply click: [this button] |
|
@abdel-h66, change tests to
|
There was a problem hiding this comment.
| isAttachmentModal | |
| isUsedInAttachmentModal |
There was a problem hiding this comment.
We can simplify this and forego the need for the new PDFPreviewError component
Instead of passing isAttachmentModal prop, we'll just pass errorLabelStyles
errorLabelStyles={isUsedInAttachmentModal && [styles.textLabel, styles.textLarge]}And then in PDFView.index/index.native.js, we use those styles directly
error={<Text style={this.props.errorLabelStyles}>{this.props.translate('attachmentView.failedToLoadPDF')}</Text>}|
Do you think the background should have a color ? or none at all :) ? |
The text shouldn't have a separate background color, it should look like this when the message is hovered over Screen.Recording.2023-10-17.at.09.49.23.mov |
There was a problem hiding this comment.
Removed this one here, it's only used in the touched component on desktop, and does not really add anything. This was the one causing the weird background on hover.
There was a problem hiding this comment.
I had to add cusrorAuto, because I'm not sure if you have noticed, but the text is still clickable to download the PDF, since the PDF is not corrupt, it's just the preview that is corrupt, I was even thinking that we might another way to do this.
There was a problem hiding this comment.
| errorLabelStyles: PropTypes.arrayOf(PropTypes.object), | |
| errorLabelStyles: stylePropTypes, |
There was a problem hiding this comment.
in both files errorLabelStyles prop type needs a comment explaining what it's used for
There was a problem hiding this comment.
| errorLabelStyles={isUsedInAttachmentModal ? [styles.textLabel, styles.textLarge] : []} | |
| errorLabelStyles={isUsedInAttachmentModal && [styles.textLabel, styles.textLarge]} |
There was a problem hiding this comment.
This will send a boolean down. Id rather limit the leakage here. What do you think. ?
There was a problem hiding this comment.
I think it's fine as long as we have a defaultProps, it'll be replaced with []
There was a problem hiding this comment.
| errorLabelStyles: PropTypes.arrayOf(PropTypes.object), | |
| errorLabelStyles: stylePropTypes, |
50e2a9f to
79c2469
Compare
eVoloshchak
left a comment
There was a problem hiding this comment.
- pull the latest main
- there is a crash when you try to send an attachment
Screen.Recording.2023-10-18.at.10.22.37.mov
|
I have fixed the above issue, it was due to style not being passed down in the correct type. Codebases with no typing are a little tricky to work with 😞 pdf-ios-native.mp4pdf-web-chrome.mp4 |
79c2469 to
485dc49
Compare
|
I also noticed that on |
8201199 to
37bf809
Compare
There was a problem hiding this comment.
Shouldn't we add cursor.cursorAuto only if isUsedInAttachmentModal=true?
There was a problem hiding this comment.
Yes we could, I was thinking maybe we can omit the whole Text change thing, and stick with only the small size text for both cases. that will remove so much overhead. what do you think. ?
There was a problem hiding this comment.
I don't think it's that much overhead, ideally, we should retain the current design
There was a problem hiding this comment.
| error={<Text style={[...errorLabelStyles, cursor.cursorAuto]}>{this.props.translate('attachmentView.failedToLoadPDF')}</Text>} | |
| error={<Text style={[...this.props.errorLabelStyles, cursor.cursorAuto]}>{this.props.translate('attachmentView.failedToLoadPDF')}</Text>} |
There was a problem hiding this comment.
I have the errorLabelStyles defined at line 275 🤔
There was a problem hiding this comment.
Is in necessary? I think we can just use this.props.errorLabelStyles directly
error={<Text style={this.props.errorLabelStyles}>{this.props.translate('attachmentView.failedToLoadPDF')}</Text>}There was a problem hiding this comment.
From the proptype, PropTypes.oneOfType([PropTypes.object, PropTypes.arrayOf(PropTypes.object), PropTypes.func]) . I know in our case we are passing an array, but there will be no linter errors if a single object is passed down. I will just keep this as a guard.
There was a problem hiding this comment.
This will work correctly even if we pass styles as a single object
The previous crash was due to nested arrays, it won't happen if we pass a single object
There was a problem hiding this comment.
Sure, it should be up-to-date now.
There was a problem hiding this comment.
| <Text style={errorLabelStyles}>{this.props.translate('attachmentView.failedToLoadPDF')}</Text> | |
| <Text style={this.props.errorLabelStyles}>{this.props.translate('attachmentView.failedToLoadPDF')}</Text> |
There was a problem hiding this comment.
| /** Array of styles for error label */ | |
| /** Styles for the error label */ |
37bf809 to
ffb2272
Compare
There was a problem hiding this comment.
| /** Array of styles for error label */ | |
| /** Styles for the error label */ |
Same thing here
There was a problem hiding this comment.
| error={<Text style={errorLabelStyles}>{this.props.translate('attachmentView.failedToLoadPDF')}</Text>} | |
| error={<Text style={this.props.errorLabelStyles}>{this.props.translate('attachmentView.failedToLoadPDF')}</Text>} |
ffb2272 to
1f0cdd1
Compare
29ed892 to
1d74b7c
Compare
Reviewer Checklist
Screenshots/VideosWebScreen.Recording.2023-10-23.at.12.36.56.movMobile Web - Chromescreen-20231023-123514.mp4Mobile Web - SafariScreen.Recording.2023-10-23.at.12.36.19.movDesktopScreen.Recording.2023-10-23.at.12.38.21.moviOSScreen.Recording.2023-10-23.at.12.31.41.movAndroidscreen-20231023-123359.mp4 |
|
Bug on native platforms (iOS and Android) Screen.Recording.2023-10-19.at.19.24.33.mov |
|
Could not replicate this one, I could see the loading after the upload. But not on this screen. |
It's 100% reproducible for me, both iOS and Android screen-20231019-194906.mp4
Are you experiencing this issue? |
|
Yes I only experience the loading animation that you mentioned in the issue. I think the flashing could be due to the background we removed, I believe now that the background was added there to cover up on this one. |
|
Yup, flashing is caused by removal of style={isUsedInAttachmentModal ? styles.imageModalPDF : styles.flex1}I did some testing and it seems to resolve the issue, but please verify this is working and doesn't introduce new regressions |
|
Your solution seems to be good, here are some screen recordings after the change. iOS nativehttps://github.com/Expensify/App/assets/144037189/e2cb4a7a-102a-4839-8703-eb807f5ead9cmacOS chromemacos-chrome.mp4 |
|
@abdel-h66, this introduces a bug on iOS/Android Screen.Recording.2023-10-23.at.11.14.25.mov |
|
That looks like an existing behavior, I could see that on main as well. not sure if we can address it here. |
|
✋ This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release. |
|
🚀 Deployed to staging by https://github.com/joelbettner in version: 1.3.90-0 🚀
|
|
🚀 Deployed to production by https://github.com/marcaaron in version: 1.3.90-2 🚀
|
|
🚀 Deployed to staging by https://github.com/joelbettner in version: 1.3.91-0 🚀
|
|
🚀 Deployed to production by https://github.com/marcaaron in version: 1.3.91-8 🚀
|

Details
Fixed Issues
$ #27292
PROPOSAL: #27292 (comment)
Tests
QA Expensify-corrupt.pdf
Offline tests
QA Steps
PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectiontoggleReportand notonIconClick)myBool && <MyComponent />.src/languages/*files and using the translation methodWaiting for Copylabel for a copy review on the original GH to get the correct copy.STYLE.md) were followedAvatar, I verified the components usingAvatarare working as expected)/** comment above it */thisproperly so there are no scoping issues (i.e. foronClick={this.submit}the methodthis.submitshould be bound tothisin the constructor)thisare necessary to be bound (i.e. avoidthis.submit = this.submit.bind(this);ifthis.submitis never passed to a component event handler likeonClick)StyleUtils.getBackgroundAndBorderStyle(themeColors.componentBG))Avataris modified, I verified thatAvataris working as expected in all cases)ScrollViewcomponent to make it scrollable when more elements are added to the page.mainbranch was merged into this PR after a review, I tested again and verified the outcome was still expected according to theTeststeps.Screenshots/Videos
Android: Native
android-native.mp4
Android: mWeb Chrome
android-chrome.mp4
iOS: Native
ios-native.mp4
iOS: mWeb Safari
ios-safari.mp4
MacOS: Chrome / Safari
web-chrome.mp4
MacOS: Desktop
desktop-native.mp4