Fix Expensify Card transactions incorrectly showing "Deleted Card"#87540
Fix Expensify Card transactions incorrectly showing "Deleted Card"#87540
Conversation
Reviewer Checklist
Screenshots/VideosAndroid: HybridAppAndroid: mWeb ChromeiOS: HybridAppios.moviOS: mWeb Safari |
|
@arosiclair 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] |
Tests well but what do you think of this concern? I think it's fine. |
Yeah I considered that but I think this fix is the most concise and fixes the issue everywhere it will present. I didn't feel like the "best" way to fix it at first but after looking at the alternatives I thought it was the best. |
|
🚧 @blimpich 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! 🧪🧪
|
…Positive (cherry picked from commit be63e22) (cherry-picked to staging by blimpich)
|
✋ This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release. |
|
🚀 Cherry-picked to staging by https://github.com/blimpich in version: 9.3.55-2 🚀
Bundle Size Analysis (Sentry): |
|
No help site changes required. This PR is a bug fix in |
…Positive (cherry picked from commit be63e22) (cherry-picked to production by blimpich)
|
🚀 Deployed to production by https://github.com/roryabraham in version: 9.3.56-0 🚀
Bundle Size Analysis (Sentry): |
|
🚀 Cherry-picked to staging by https://github.com/blimpich in version: 9.3.57-0 🚀
Bundle Size Analysis (Sentry): |


Explanation of Change
doesCardFeedExist()callsgetOriginalCompanyFeeds(), which intentionally filters out entries wherekey === CONST.EXPENSIFY_CARD.BANK(since Expensify Cards aren't third-party company card feeds). This meansdoesCardFeedExist('Expensify Card', cardFeeds)always returnsfalse, and any transaction made on an Expensify Card getsisCardFeedDeleted: true, causing the UI to display "Deleted card" / "Deleted Feed".The fix adds an early return in
doesCardFeedExistfor Expensify Card feeds, since they are a native card product that cannot be disconnected or deleted like a third-party feed. The type signature is also widened fromCompanyCardFeedtoCardFeedto properly accept the Expensify Card bank value without requiring a type cast at call sites.Fixed Issues
$ #87098
$ #82814
PROPOSAL: N/A
Tests
Offline tests
N/A — This is a display logic fix that does not involve network requests or offline state. The
doesCardFeedExistfunction operates on locally cached Onyx data.QA Steps
Same as Tests (steps 1-7 above, on staging).
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
Before fix
After fix
Android: Native
Android: mWeb Chrome
iOS: Native
iOS: mWeb Safari
MacOS: Chrome / Safari