Create GPS expenses using captured data - #79914
AndrewGable merged 29 commits into
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✅ Changes either increased or maintained existing code coverage, great job!
|
blazejkustra
left a comment
There was a problem hiding this comment.
Couple of questions 👀
|
Ignore ESlint error for now, there is no error, just too many warnings as it was on the main branch 2-3days ago |
I don't think you can ignore it, you have to ignore these warnings in the code (with eslint disables comment) or increase the limit of warnings in the check (in package.json) |
yeah what I meant is that you can ignore it and I will take a look what can be done about it 😄 |
jakubkalinski0
left a comment
There was a problem hiding this comment.
A few comments/suggestions 👀 but nothing major
Reviewer Checklist
Screenshots/VideosAndroid: HybridAppScreen.Recording.2026-01-23.at.09.03.58.movAndroid: mWeb ChromeiOS: HybridAppScreen.Recording.2026-01-22.at.23.48.57.movScreen.Recording.2026-01-22.at.23.53.47.movScreen.Recording.2026-01-22.at.23.56.27.movScreen.Recording.2026-01-23.at.00.03.01.movScreen.Recording.2026-01-23.at.08.52.17.moviOS: mWeb SafariMacOS: Chrome / Safari |
Weird, I can't reproduce it now. Anyway, can you please fix the failed lint, then we're good to approve? |
I just checked sentry for logs and it looks like maybe a temporary backend issue? I mean, I compared your successful trackExpense request to the failing one and they look the same (barring different GPS data of course), they both have "customUnitRateID":"FAKE_P2P_ID", but for some reason backend was returning |
|
I just found one additional bug, working on fixing it... |
|
Fixed and added a test case + demo |
|
✋ 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/AndrewGable in version: 9.3.9-0 🚀
|
|
This PR failing because of the issue |
|
@GCyganek Could you confirm if this is expected. When the app is running in the background with GPS tracking, live activity appears on the dynamic island, but there is no live widget or pop-up when long pressing on the live activity. Usually, the app that shows live activity will also show live widget or pop-up when long pressed. ScreenRecording_01-27-2026.17-05-39_1.MP4 |
It is expected that there is no live widget/pop-up as handling ios GPS tracking notification is a part of the third release of the GPS feature |
|
🚀 Deployed to production by https://github.com/roryabraham in version: 9.3.9-2 🚀
|
| const previousValidatedWaypoints = usePrevious(validatedWaypoints); | ||
| const haveValidatedWaypointsChanged = !deepEqual(previousValidatedWaypoints, validatedWaypoints); | ||
| const isMapDistanceRequest = isDistanceRequest(transaction) && !isManualDistanceRequest(transaction); | ||
| const isMapDistanceRequest = isMapDistanceRequestTransactionUtils(transaction); |
There was a problem hiding this comment.
This caused an issue of not showing the route for split distance request.
Explanation of Change
Adding ability to create GPS expenses using recorded trip data
Fixed Issues
$ #77215
PROPOSAL: N/A
Tests
Creating expense from FAB (create at least two works workspaces first with
More features>Distance ratesenabled and with rates with different currencies and distance units):NextCreateSelfDM:
NextCreateExisting report:
+at the bottom >Track distance>GPStab)Split expense:
More>SplitSkip confirmation:
Next.Creating expense from FAB without a valid default expense policy (billable actions restricted or is not a paid group policy) with user's Payment currency set to other than GBP or USD (so that the default mileage rate does not use miles as distance unit) in Preferences:
NextChoose recipientscreen, select yourself (selfDM)Create expenseOffline tests
Make sure you are in offline mode:
QA Steps
Same as tests and verify there are no regressions for map/manual distance expense creation flows
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-create-distance-request-workspace.mov
android-skip-confirm.mov
android-split.mov
android-existing-report.mov
android-self-dm.mov
Creating expense from FAB without a valid default expense policy (billable actions restricted or is not a paid group policy):
Screen.Recording.2026-01-23.at.12.19.39.mov
Android: mWeb Chrome
iOS: Native
iOS: mWeb Safari
MacOS: Chrome / Safari