Support domain and workspace feed with the same name under one workspace#75438
Conversation
Codecov Report✅ Changes either increased or maintained existing code coverage, great job!
|
Julesssss
left a comment
There was a problem hiding this comment.
Looking good, please add test cases for the previous failures when the PR is ready
…kspace-cards-same-name-2
…kspace-cards-same-name-2
|
@hungvu193 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] |
joekaufmanexpensify
left a comment
There was a problem hiding this comment.
Good from a product perspective 👍
|
Will review today |
|
@VickyStash Could you resolve the conflicts? Thanks |
Reviewer Checklist
Screenshots/VideosAndroid: HybridAppScreen.Recording.2025-11-21.at.10.26.03.movAndroid: mWeb ChromeScreen.Recording.2025-11-13.at.11.24.22.moviOS: HybridAppScreen.Recording.2025-11-21.at.10.19.32.moviOS: mWeb SafariScreen.Recording.2025-11-21.at.10.15.38.mov |
…kspace-cards-same-name-2 # Conflicts: # src/pages/workspace/companyCards/BankConnection/index.native.tsx # src/pages/workspace/companyCards/BankConnection/index.tsx # src/pages/workspace/companyCards/WorkspaceCompanyCardFeedSelectorPage.tsx # src/pages/workspace/companyCards/assignCard/AssigneeStep.tsx
|
@puneetlath can you please take a look at the PR and test the Internal QA steps 🙏 |
|
🚧 @puneetlath 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, Desktop, and Web. Happy testing! 🧪🧪
|
|
Apologies @VickyStash. There are conflicts. |
…kspace-cards-same-name-2 # Conflicts: # src/libs/CardFeedUtils.ts # src/pages/workspace/members/WorkspaceMemberDetailsPage.tsx
d5548a6
…kspace-cards-same-name-2
|
✋ 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/puneetlath in version: 9.2.64-0 🚀
|
|
🚀 Deployed to production by https://github.com/marcaaron in version: 9.2.64-5 🚀
|
| const defaultFeed = Object.keys(getCompanyFeeds(cardFeeds, true)).at(0) as CompanyCardFeedWithDomainID | undefined; | ||
| if (!lastSelectedFeed?.includes(CONST.COMPANY_CARD.FEED_KEY_SEPARATOR)) { |
There was a problem hiding this comment.
Coming from #76359, The getSelectedFeed function in CardUtils.ts doesn't validate if the lastSelectedFeed is still available



Explanation of Change
Second attempt of #74356
This PR updates the app logic to support displaying of domain and workspace feeds even if they have the same identification.
Example:
oauth.chase.com.oauth.chase.comthat is associated with the Workspace 1.With this PR the app should show both feeds (so two Chase feeds) under Workspace 1.
Slack discussion: https://expensify.slack.com/archives/C07NMDKEFMH/p1761930535694549?thread_ts=1761257642.552319&cid=C07NMDKEFMH
Fixed Issues
$ #73380
PROPOSAL: n/a
Previous deploy blockers:
#75246
#75295
Tests
Common steps:
Add cardsto add feed (United States -> Direct feed -> Other -> Setup feed using Plaid)ImportPlaidAccountsAPI call succeeded (regression [RCA #74356] Feed passed to ImportPlaidAccounts sometimes has an extra #XXX #75295)6.1 Open card details
6.2 Update card name
Regression #75246
Internal QA:
Case 1
Precondition: have an account with a workspace that has:
Make sure both feeds are displayed.
Case 2
Add cardsto add feed (United States -> Direct feed -> Amex / Wells Fargo / any bank, but not the last option). Make sure feed setup works as expected.6.1 Open card details
6.2 Update card name
Offline tests
Same, as in Tests section
QA Steps
// TODO: These must be filled out, or the issue title must include "[No QA]."
Same, as in Tests section
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.mp4
Android: mWeb Chrome
android_web.mp4
iOS: Native
ios.mp4
iOS: mWeb Safari
ios_web.mp4
MacOS: Chrome / Safari
web1.mp4
MacOS: Desktop
desktop.mp4