Show permission modal for bank account currency flow#95609
Conversation
|
Hey, I noticed you changed If you want to automatically generate translations for other locales, an Expensify employee will have to:
Alternatively, if you are an external contributor, you can run the translation script locally with your own OpenAI API key. To learn more, try running: npx ts-node ./scripts/generateTranslations.ts --helpTypically, you'd want to translate only what you changed by running |
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.
|
trjExpensify
left a comment
There was a problem hiding this comment.
https://expensify.slack.com/archives/C01GTK53T8Q/p1783966246043539?thread_ts=1783494871.093319&cid=C01GTK53T8Q - sounds like we've agreed on what the copy variation for this should be.
|
Thanks! @ShridharGoel we need to update the copy |
Reviewer Checklist
Screenshots/VideosAndroid: HybridAppAndroid: mWeb ChromeiOS: HybridAppiOS: mWeb SafariMacOS: Chrome / SafariScreen.Recording.2026-07-17.at.21.30.28.mov |
Pujan92
left a comment
There was a problem hiding this comment.
LGTM!
Screen.Recording.2026-07-17.at.21.30.28.mov
|
🚧 flodnv has triggered a test Expensify/App build. You can view the workflow run here. |
|
✋ This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release. |
|
🧪🧪 Use the links below to test this adhoc build on Android, iOS, and Web. Happy testing! 🧪🧪
|
|
🚀 Deployed to staging by https://github.com/flodnv in version: 9.4.41-0 🚀
|
|
🤖 No help site changes required. I reviewed the changes in this PR against Expensify's help site files under Why: This PR is a permission/error-handling refinement in the Workflows bank account flow. Instead of routing a non-workspace-admin (e.g. a payments admin) to the admin-only workspace currency page when the workspace has an unsupported output currency, it now shows a "Not so fast" confirmation modal explaining they should contact a workspace admin. Workspace admins retain the existing "Update workspace currency" behavior. The change is limited to I checked the articles that document these flows and none describe this edge case in a way that becomes inaccurate:
None of these get into which role can change the workspace currency from within the add-bank-account flow, so the new modal doesn't contradict or require new documentation. This is an in-app guardrail rather than a documented product capability.
@ShridharGoel, if you feel this behavior should be documented (for example, in the Workspace Workflows article), let me know and I'll draft the help site PR. |
|
🚀 Deployed to production by https://github.com/yuwenmemon in version: 9.4.41-4 🚀
Bundle Size Analysis (Sentry): |
Explanation of Change
This PR prevents payments admins from being sent to the admin-only workspace currency page from the Workflows bank account flow.
When a payments admin tries to add a bank account for a workspace with an unsupported output currency, clicking "Update workspace currency" now shows a "Not so fast" modal. The modal explains that only bank accounts matching the workspace output currency can be added and asks the user to contact a workspace admin to adjust permissions.
Workspace admins can still continue to the currency page from the same flow.
Fixed Issues
$ #95560
PROPOSAL: #95560 (comment)
Tests
Offline tests
Same as tests.
QA Steps
Same as tests.
PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectiontoggleReportand notonIconClick)Avatar, 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