Conversation
Codecov Report✅ Changes either increased or maintained existing code coverage, great job!
|
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
src/pages/workspace/rules/SpendRules/SpendRuleMerchantsPage.tsx
Outdated
Show resolved
Hide resolved
Yes, we decided to invert that here.
This is intentional since users should be able to clear a saved merchant by removing the text and saving it.
Waiting on new copy. We can also address this in a follow up.
I'm not sure either tbh. Users should only be able to set an amount when the currencies on all selected cards are the same. Not sure how we want to handle the empty state there since we don't have a currency to use. Maybe we can just update the copy to something more descriptive?
Nice catch. Fixed. |
🦜 Polyglot Parrot! 🦜Squawk! Looks like you added some shiny new English strings. Allow me to parrot them back to you in other tongues: The diff is too large to include in this comment (97KB), so I've created a gist for you: 📋 View the translation diff here 📋 Note You can apply these changes to your branch by copying the patch to your clipboard, then running |
|
Gonna merge to unblock upstream work. These changes will only be available in staging for now. |
|
🚧 @luacmartins 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! 🧪🧪
|
Good call. Yes, I think we need a more descriptive error. I don't feel too passionate about the illustration, though maybe for the error we do: "All cards already have a rule." |
|
✋ This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release. |
|
Yeah, down to update the illustration while we're at it. If you are doing this in a separate PR, feel free to tag us there! |
|
🚀 Deployed to staging by https://github.com/luacmartins in version: 9.3.55-0 🚀
Bundle Size Analysis (Sentry): |
|
Yes, help site changes are required. I've created a PR with the needed updates: PR: #87439 Changes made:
|
|
Deploy Blocker #87442 was identified to be related to this PR. |
|
Deploy Blocker #87450 was identified to be related to this PR. |


Explanation of Change
Adds the ability to create spend rules for Expensify cards.
Fixed Issues
$ #86521
Tests
Pre-condition:
RulesenabledWorkspaces > RulesAdd spend ruleitemAdd spend ruleand create a new ruleOffline tests
N/A
QA Steps
Same as tests.
Note: this feature is only available in Staging, so any issues coming from it are not deploy blockers.
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./** comment above it */thisproperly so there are no scoping issues (i.e. foronClick={this.submit}the methodthis.submitshould be bound tothisin the constructor)thisare necessary to be bound (i.e. avoidthis.submit = this.submit.bind(this);ifthis.submitis never passed to a component event handler likeonClick)Screenshots/Videos
Screen.Recording.2026-04-06.at.2.02.51.PM.mov
Android: Native
Android: mWeb Chrome
iOS: Native
iOS: mWeb Safari
MacOS: Chrome / Safari