Bring approval overLimitForwardsTo configuration V2#78350
Bring approval overLimitForwardsTo configuration V2#78350JS00001 merged 18 commits intoExpensify:mainfrom
Conversation
Codecov Report✅ Changes either increased or maintained existing code coverage, great job!
|
|
There is also a bug in the fixed it |
|
I think it's better to revert original PR and fix all regressions in v2. |
|
Not a bad idea ,,, i think most of them are small issues but i agree for the amount its imporant to maintain the behaviour for VND currency and negative amount ... this was overlooked. lets revert and i will prepare another PR what do u think @JS00001 |
|
Here's revert |
9c7832f to
7142c13
Compare
|
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 |
|
I've fixed all the issues except for the following 4, where I need clarification on the expected behavior @JS00001 @aimane-chnaif @JmillsExpensify @dubielzyk-expensify 1. #78316: What is the expected behavior here? In my opinion, pressing back on the confirm page should dismiss the modal since it's the first page the user sees when opening the approval workflow. If they navigate back to this page at any point and press back again, dismissing the modal seems like the logical behavior. However, this feels a bit confusing to me — what do you think? 2. #78342: We didn't discuss the expected behavior for this scenario. When a member who is configured as an additional approver in a workflow is removed from the workspace, should we reset the limit configuration (i.e., clear both the additional approver and the limit)? I assume yes, but if we go this route, we'll need backend changes as well. Currently, when the app goes online, the configuration is restored from the API and isn't removed: Screen.Recording.2025-12-29.at.15.49.12.mov3. #78328: Is this a valid bug? In this case, there's another text element that has replaced the description. What should the page display here — should we show both texts? If so, how should they be laid out?
4. #78341: this was not in the requriement, just confirming should we tackle it now or keep it for a followup improvement? |
I agree with your opinion here that it should close the modal since it's the first page. When seeing the video it felt very loopy and I wasn't expecting the behavior so I'd say close the modal there.
I'll let @trjExpensify or @JmillsExpensify chime in here since I only have a vague memory about what we do. It make sense to me to clear the approver and the limit when they're removed from the workspace.
Hmm. Yeah we technically need two descriptions here right? Can we just add them together? It might look a bit long but it should be 3 sentences instead of 2.
Also a question from @JmillsExpensify |
|
|
Let's wait for @JmillsExpensify and @trjExpensify 's feedback when they're back from OOO. Hopefully should get some answers this week |
|
For #78328, I don't think that's a valid bug, as it's fine if someone is in the fallback/default workflow and then also in more specific workflows. |
Agree, let's clear the approver and limit when they're removed from the workspace.
This feels like a follow-up. |
|
Commented in slack for BE issues: https://expensify.slack.com/archives/C09V8KG184B/p1767715386486329 |
Reviewer Checklist
Screenshots/VideosAndroid: HybridAppAndroid: mWeb ChromeiOS: HybridAppiOS: mWeb SafariMacOS: Chrome / SafariRegression tests: 78327.mov78342.mov78343.mov78328.mov78316.mov |
|
#78328 can be removed from fixed issues as not valid bug. |
src/pages/workspace/workflows/approvals/WorkspaceWorkflowsApprovalsApprovalLimitPage.tsx
Show resolved
Hide resolved
|
@dubielzyk-expensify fyi for this #78328 in case it happens it will display the two descriptions as follows:
|
|
@aimane-chnaif @abzokhattab is this one ready for final review? |
|
yes, approved from my side |
|
Nice, reviewing |
|
Second times the charm! |
|
✋ 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/JS00001 in version: 9.2.96-1 🚀
|
|
This PR is failing because of issue ##79151 The issue is reproducible in: Web Android Bug7043985_1767904845437.bandicam_2026-01-08_23-26-14-466.1.mp4 |
|
🚀 Deployed to production by https://github.com/arosiclair in version: 9.2.96-6 🚀
|
|
🚀 Deployed to production by https://github.com/arosiclair in version: 9.2.96-6 🚀
|
|
🚀 Deployed to production by https://github.com/arosiclair in version: 9.2.96-6 🚀
|




Explanation of Change
Bringing back the changes introduced in this PR and fixing the regression issues
Fixed Issues
$ #75775
#78316
#78320
#78324
#78327
#78342
#78343
PROPOSAL:
Test 1: Setting Approval Limit on an Approver (Create Flow)
Precondition: Workspace with "Add approvals" enabled
Test 2: Editing Approval Limit on an Approver (Edit Flow)
Precondition: Workspace with "Add approvals" enabled, with an existing approval workflow that has an approval limit set
Offline tests
Same as tests
QA Steps
Same as tests
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: mWeb Chrome
Screen.Recording.2026-01-06.at.23.42.23.mov
Screen.Recording.2026-01-06.at.23.45.32.mov
iOS: Native
Screen.Recording.2026-01-06.at.23.32.31.mov
Screen.Recording.2026-01-06.at.23.35.28.mov
iOS: mWeb Safari
Screen.Recording.2026-01-06.at.23.40.17.mov
Screen.Recording.2026-01-06.at.23.40.54.mov
MacOS: Chrome / Safari
Screen.Recording.2026-01-06.at.23.21.04.mov
Screen.Recording.2026-01-06.at.23.22.27.mov