Rillet split default account at top - #96845
Conversation
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.
|
|
This is based on #96528 so most of the changes here are unrelated. It should be an easy PR to review / test |
There was a problem hiding this comment.
💡 Codex Review
When a feed already has cardProgramAccounts[feedKey] set to the same code as the policy default (which the previous selector could store when a user picked that account), choosing the new “Default” row never reaches this clearing assignment because the guard above sees item.value === cardProgramAccountCode. The screen then just navigates back, leaving the stale custom mapping in place and continuing to treat the program as customized instead of default; please still send the empty value when the selected row is the default account and a custom mapping exists.
ℹ️ 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".
|
@codex review |
|
Codex Review: Didn't find any major issues. Can't wait for the next one! Reviewed commit: ℹ️ About Codex in GitHubCodex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
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". |
Reviewer Checklist
Screenshots/VideosAndroid: HybridAppAndroid: mWeb ChromeiOS: HybridAppiOS: mWeb SafariMacOS: Chrome / SafariScreen.Recording.2026-07-24.at.11.29.59.mov |
| const filteredUnprocessedData = | ||
| rilletData?.accounts | ||
| ?.filter( | ||
| (accountItem) => | ||
| accountItem.type === CONST.RILLET_ACCOUNT_TYPE.LIABILITY && | ||
| accountItem.subtype === CONST.RILLET_ACCOUNT_SUBTYPE.CREDIT_CARD && | ||
| accountItem.status === CONST.RILLET_ACCOUNT_STATUS.ACTIVE, | ||
| ) | ||
| .map((accountItem) => ({ | ||
| value: cardProgramAccount?.id === accountItem.id ? '' : accountItem.id, | ||
| text: `${cardProgramAccount?.id === accountItem.id ? `${translate('common.default')} - ` : ''}${accountItem.code} ${accountItem.name}`, | ||
| keyForList: accountItem.id, | ||
| isSelected: cardAccountID === accountItem.id, | ||
| })) ?? []; | ||
| const filteredData = sortDefaultToTop(filteredUnprocessedData, (accountItem) => cardProgramAccount?.id === accountItem.keyForList, styles); |
There was a problem hiding this comment.
It is dupe of:
There was a problem hiding this comment.
It's similar indeed but let's not block on this
|
Let's merge it to keep the momentum going |
|
🚧 lakchote 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! 🧪🧪
|
|
🚀 Deployed to staging by https://github.com/lakchote in version: 9.4.45-0 🚀
|
Help site review — no docs changes requiredI reviewed the changes in this PR against the help site articles under What this PR changes: It sorts the default account to the top of the Rillet export account-selection lists (Card program account and Per-card account) and adds a separator line beneath it — plus a related fix to how card programs using custom accounts are counted. This is a purely cosmetic ordering/presentation change within an existing selector; it introduces no new feature, setting, label, or workflow step that a user-facing article would document. Why no article needs updating:
Since no documentation changes are needed, I did not create a draft help site PR. @s77rt, please confirm you agree that this presentation-only change doesn't warrant a help site update. If you believe a Rillet export article should exist or be updated, let me know and I'll draft one. |
|
🚀 Deployed to production by https://github.com/marcaaron in version: 9.4.45-14 🚀
Bundle Size Analysis (Sentry): |
Explanation of Change
Fixed Issues
$ #95950
PROPOSAL:
Tests
Screen.Recording.2026-07-23.at.5.44.59.AM.mov
Offline tests
Same as Tests
QA Steps
Same as Tests
PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectionAvatar, 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.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