Extract MoneyReportHeader status bar logic into hook and component#86732
Conversation
Codecov Report✅ Changes either increased or maintained existing code coverage, great job!
|
|
@abzokhattab 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] |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 7210f74c37
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
|
No product review needed |
Reviewer Checklist
Screenshots/VideosAndroid: HybridAppScreen.Recording.2026-04-01.at.05.05.01.movAndroid: mWeb ChromeScreen.Recording.2026-04-01.at.05.05.01.moviOS: HybridAppScreen.Recording.2026-04-01.at.05.04.12.moviOS: mWeb SafariScreen.Recording.2026-04-01.at.05.08.24.movMacOS: Chrome / SafariScreen.Recording.2026-04-01.at.04.59.43.mov |
src/components/MoneyReportHeader.tsx
Outdated
| const showNextStepBar = shouldShowNextStep && !!optimisticNextStep && (('message' in optimisticNextStep && !!optimisticNextStep.message?.length) || 'messageKey' in optimisticNextStep); | ||
| const showNextStepSkeleton = shouldShowNextStep && !optimisticNextStep && !!isLoadingInitialReportActions && !isOffline; | ||
| const shouldShowMoreContent = showNextStepBar || showNextStepSkeleton || !!statusBarProps || isReportInSearch; | ||
| const shouldShowMoreContent = showNextStepBar || showNextStepSkeleton || shouldShowStatusBar || isReportInSearch; |
There was a problem hiding this comment.
i think we should use !!statusBarType instead, as shouldShowStatusBar is broader than the old condition
|
@TMisiukiewicz i added a comment but overall it looks good to me |
|
@abzokhattab thank you, updated! |
|
🚧 @rlinoz has triggered a test Expensify/App build. You can view the workflow run here. |
|
🧪🧪 Use the links below to test this adhoc build on Android, iOS, and Web. Happy testing! 🧪🧪
|
|
✋ 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/rlinoz in version: 9.3.52-0 🚀
Bundle Size Analysis (Sentry): |
|
No help site changes are required. This PR is a pure internal code refactor — it extracts status bar rendering logic from
No user-facing behavior, features, UI labels, settings, or workflows were added or changed. The help site documents user-facing functionality, so no updates to |
Explanation of Change
Extracts status bar rendering logic from
MoneyReportHeaderinto two dedicated units:useMoneyReportHeaderStatusBarhook — computesshouldShowStatusBar(boolean) andstatusBarType(typed viaCONST.REPORT.STATUS_BAR_TYPE). All the conditional logic that previously lived inline in the component now lives here.MoneyReportHeaderStatusBarSectioncomponent — receivesstatusBarTypeas a prop and renders the correctMoneyRequestHeaderStatusBarvariant. No logic, just rendering.This removes ~140 lines and 12 unused imports from
MoneyReportHeader, making it significantly easier to read and reason about. The behavior is unchanged — this is a pure extraction refactor.Fixed Issues
$ #77173
$ #84123
PROPOSAL:
Tests
Offline tests
N/A
QA Steps
Same as tests
PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectiontoggleReportand 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.mov
iOS: mWeb Safari
MacOS: Chrome / Safari
web.mov