Fix/79072 - Opening 1:1 expense in offline loads infinitely submitted from self dm - #80213
Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: a3573cd423
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
Codecov Report✅ Changes either increased or maintained existing code coverage, great job!
|
joekaufmanexpensify
left a comment
There was a problem hiding this comment.
Fix makes sense 👍
|
@dmkt9 You have conflicts. Also can you correct the test steps to include opening the expense itself (after opening 1:1 DM, and after opening Reports->Expense). |
Reviewer Checklist
Screenshots/VideosAndroid: HybridAppandroid-app-2026-02-03_14.00.48.mp4Android: mWeb Chromeandroid-chrome-2026-02-03_14.07.12.mp4iOS: HybridAppios-app-2026-02-03_13.31.25.mp4iOS: mWeb Safariios-safari-2026-02-03_13.33.37.mp4MacOS: Chrome / Safaridesktop-chrome-2026-02-03_13.26.25.mp4 |
|
@dmkt9 Looks like there are still conflicts. |
|
🚧 @Valforte 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! 🧪🧪
|
|
✋ 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/Valforte in version: 9.3.13-1 🚀
|
|
🚀 Deployed to staging by https://github.com/Valforte in version: 9.3.15-0 🚀
|
|
🚀 Deployed to production by https://github.com/lakchote in version: 9.3.15-10 🚀
|
|
This PR revealed #81606 issue. |
| successData?.push(...(convertTrackedExpenseInformation.successData ?? [])); | ||
| failureData?.push(...(convertTrackedExpenseInformation.failureData ?? [])); | ||
|
|
||
| if (transactionThreadReportID) { |
There was a problem hiding this comment.
This block caused a regression tracked in #93575.
The optimistic re-parenting only updated parentReportID / parentReportActionID, leaving the old chatReportID and policyID. Offline, the Rate page couldn't resolve the policy, so the rates were blank until reconnecting.
Fixed in #96903 by also updating chatReportID and policyID, with the matching rollback.
Explanation of Change
Fixed Issues
$ #79072
PROPOSAL: #79072 (comment)
Tests
Same as QA Steps
Offline tests
Same as QA Steps
QA Steps
Pre-condition:
Steps:
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
anroid.native.mp4
Android: mWeb Chrome
android.mweb.mp4
iOS: Native
ios.native.mp4
iOS: mWeb Safari
ios.mweb.mp4
MacOS: Chrome / Safari
mac.web.mp4