Add report columns (reapply with fixes) - #75113
Conversation
This restores the functionality from PR Expensify#73900 that was reverted in PR Expensify#75073. Bug fixes included to address deploy blockers.
|
Hey, I noticed you changed If you want to automatically generate translations for other locales, an Expensify employee will have to:
Alternatively, if you are an external contributor, you can run the translation script locally with your own OpenAI API key. To learn more, try running: npx ts-node ./scripts/generateTranslations.ts --helpTypically, you'd want to translate only what you changed by running |
Codecov Report❌ Looks like you've decreased code coverage for some files. Please write tests to increase, or at least maintain, the existing level of code coverage. See our documentation here for how to interpret this table.
|
|
@mohammadjafarinejad when do you think this can be back open for review? We should add @hoangzinh as a reviewer as well right, as they reviewed the first attempt? |
|
@trjExpensify I think it should be ready for review by tomorrow. I’ve fixed all the issues; only two remain. |
Yes, we should add them. I can push the changes for the other fixes while I work on the remaining two issues. |
|
Dope, added @hoangzinh! |
This comment was marked as resolved.
This comment was marked as resolved.
|
I don't think we should do 2. We shouldn't add any more Search specific logic to |
|
I found a weird bug, but it might not be a blocker (as I can reproduce for "expense" as well) Bug: App shows "Nothing to show" when sort by other fields
Screen.Recording.2025-11-20.at.20.33.35.mov |
Reviewer Checklist
Screenshots/VideosAndroid: HybridAppScreen.Recording.2025-11-21.at.15.21.20.android.movAndroid: mWeb ChromeScreen.Recording.2025-11-21.at.13.56.29.android.chrome.moviOS: HybridAppScreen.Recording.2025-11-21.at.15.22.54.moviOS: mWeb SafariScreen.Recording.2025-11-21.at.15.16.02.movMacOS: Chrome / SafariScreen.Recording.2025-11-20.at.20.53.00.web.movMacOS: DesktopScreen.Recording.2025-11-21.at.13.57.33.desktop.mov |
Yeah, if it's reproducible on Reports > Expenses with existing columns, I agree it's probably not a blocker. It does look bad though, any idea where that regression has come from? I can't seem to repro on staging. 🤔 |
|
Bug: Submit/Approve buttons are not animated after click Screen.Recording.2025-11-20.at.21.06.17.mov |
I can reproduce it in Staging @trjExpensify Screen.Recording.2025-11-20.at.21.12.20.mov |
@hoangzinh Fixed. |
|
Bug: Sort by "From" is broken somewhere @mohammadjafarinejad Screen.Recording.2025-11-20.at.21.47.43.mov |
@hoangzinh This should be fixed now. |
|
@mohammadjafarinejad we have conflicts again |
|
Thanks @mohammadjafarinejad. We have conflicts again. Please try to resolve it. I will try to complete review checlist in meanwhile |
|
@mohammadjafarinejad, when you have a moment, can you take a look at this issue #75113 (comment)? Just ensure it's not come from our PR. |
I cannot reproduce it in staging or in our PR. SORT_BUG.mp4 |
|
✋ 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/luacmartins in version: 9.2.63-0 🚀
|
|
🚀 Deployed to production by https://github.com/marcaaron in version: 9.2.63-8 🚀
|
| const shouldShowBlankTo = !reportItem || isOpenExpenseReport(reportItem); | ||
| const allActions = getActions(data, allViolations, key, currentSearch, currentAccountID, currentUserEmail, actions); | ||
|
|
||
| const fromDetails = data.personalDetailsList?.[reportItem.ownerAccountID ?? CONST.DEFAULT_NUMBER_ID] ?? emptyPersonalDetails; |
There was a problem hiding this comment.
Coming from #75943, there is no fallback data. In cases where data.personalDetailsList is not present in the snapshot, fromDetail ends up being empty.
| const showUserInfo = (item.type === CONST.REPORT.TYPE.IOU && thereIsFromAndTo) || (item.type === CONST.REPORT.TYPE.EXPENSE && !!item?.from); | ||
|
|
||
| // Calculate the correct border color for avatars based on hover and focus states | ||
| const finalAvatarBorderColor = isHovered && !isFocused ? theme.border : avatarBorderColor; |
There was a problem hiding this comment.
This line caused
the border should be highlighted when selected
Explanation of Change
This PR adds specific columns to
type:expense-reportsearch results.Context
Fixed Issues
$ #73702
PROPOSAL: #73702 (comment)
Tests
Offline tests
Requires an internet connection to load the reports page data.
QA Steps
PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectioncanBeMissingparam foruseOnyxtoggleReportand notonIconClick)src/languages/*files and using the translation methodSTYLE.md) were followedAvatar, I verified the components usingAvatarare working as expected)StyleUtils.getBackgroundAndBorderStyle(theme.componentBG))npm run compress-svg)Avataris modified, I verified thatAvataris working as expected in all cases)Designlabel and/or tagged@Expensify/designso the design team can review the changes.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: mWeb Chrome
iOS: Native
iOS: mWeb Safari
MacOS: Chrome / Safari
MacOS: Desktop