[Payment due @Ollyws] Add never value to withdrawal-status search filter#93895
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 |
|
Is this ready for review? |
|
@Ollyws Marked it with "HOLD" for BE changes |
|
@Ollyws This can be reviewed now |
Reviewer Checklist
Screenshots/VideosAndroid: HybridApp01_Android_Native.mp4Android: mWeb Chrome02_Android_Chrome.mp4iOS: HybridApp03_iOS_Native.mp4iOS: mWeb Safari04_iOS_Safari.mp4MacOS: Chrome / Safari05_MacOS_Chrome.mp4 |
|
🎯 @Ollyws, thanks for reviewing and testing this PR! 🎉 A payment issue will be created for your review once this PR is deployed to production. If payment is not needed (e.g., regression PR review fix etc), react with 👎 to this comment to prevent the payment issue from being created. |
|
@JS00001 added you as you reviewed the BE here |
|
🚧 JS00001 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/JS00001 in version: 9.4.32-0 🚀
|
Help site review — no changes requiredI reviewed this PR against the help-site articles under Why:
Because the Since no changes are required, I did not create a draft help-site PR. @ShridharGoel, please confirm you agree the |
|
Deploy Blocker #95732 was identified to be related to this PR. |
|
This PR failing because of the issue #95732 |
|
🚀 Deployed to production by https://github.com/grgia in version: 9.4.32-3 🚀
Bundle Size Analysis (Sentry): |
|
🤖 Payment issue created: #95818 |
Explanation of Change
Adds a new
nevervalue to thewithdrawal-statussearch filter, which previously supported onlypending,cleared, andfailed. Thenevervalue matches Expensify Card expenses that are not yet part of a settlement (equivalent towithdrawn:never).This lets the Expensify Card current-balance query live inside a single filter type:
Previously this needed
(withdrawn:never) OR (withdrawal-status:pending), which search cannot express because it does not supportORacross different filter types.The change is almost entirely additive: the parser grammar, query validation (
SearchQueryUtils.VALID_WITHDRAWAL_STATUSES), autocomplete (SearchAutocompleteUtils,useAutocompleteSuggestions), and the advanced filter UI (getWithdrawalStatusOptions→SearchFiltersWithdrawalStatusPage) all derive their value list fromObject.values(CONST.SEARCH.SETTLEMENT_STATUS). So this PR:NEVER: 'never'toCONST.SEARCH.SETTLEMENT_STATUS.neverlabel undersettlement.statusin all language files.neveris a filter-only value: it represents the absence of a settlement, so it intentionally does not add a search-results badge (un-settled rows already render without one).The backend support for
withdrawal-status:neveris handled in the companion Auth PR.Fixed Issues
$ https://github.com/Expensify/Expensify/issues/649578
PROPOSAL: N/A
Tests
withdrawal-status:and verify the autocomplete suggestsneveralongsidepending,cleared, andfailed.withdrawal-status:pending,neverand the filter chip showsPending, Never.type:expense feed:"Expensify Card" withdrawal-status:pending,neverand verify it returns pending plus not-yet-settled Expensify Card expenses (the current-balance set).Offline tests
Same as Tests steps 1–4 while offline: autocomplete, the Never option, and query round-tripping are all client-side and behave identically. (Step 5's results depend on the API, per existing offline search behavior.)
QA Steps
Same as Tests.
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
MacOS: Chrome / Safari