Conversation
|
@carlosmiceli Please copy/paste the Reviewer Checklist from here into a new comment on this PR and complete it. If you have the K2 extension, you can simply click: [this button] |
|
Exact copy off #81445, QA and testing was done there |
Codecov Report✅ Changes either increased or maintained existing code coverage, great job!
|
|
@mountiny looks like this was merged without a test passing. Please add a note explaining why this was done and remove the |
|
Not an emergency, straight revert |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: e0854c9c3a
ℹ️ 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".
| const isValidExport = originalMessage?.markedManually || (label && validExportLabels.has(label) && originalMessage?.type !== CONST.EXPORT_TEMPLATE); | ||
| if (isValidExport && action.created > lastSuccessfulExportCreated) { |
There was a problem hiding this comment.
Exclude in-progress export actions from success detection
In the fallback path (when report.isExportedToIntegration is missing), this treats any EXPORTINTEGRATION action with a known label as a successful export, but optimistic export actions are created with inProgress: true and those same labels (buildOptimisticExportIntegrationAction). That means a failed export sequence can still set lastSuccessfulExportCreated and return true, so reports that rely on action-based detection are misclassified as exported and didExportFail/retry flows are skipped.
Useful? React with 👍 / 👎.
| const iconToDisplay = getIntegrationIcon(connectionName, expensifyIcons); | ||
| const canBeExported = canBeExportedUtils(report); | ||
| const isExported = isExportedUtils(reportActions); | ||
| const isExported = isExportedUtils(reportActions, report); |
There was a problem hiding this comment.
Avoid gating export confirmation on stale report flag
Passing report here causes isExported() to short-circuit to report.isExportedToIntegration, but exportToIntegration() / markAsManuallyExported() only add optimistic report actions and do not optimistically update that report-level flag. When the flag is present and still false, a second quick export click before server reconciliation bypasses the “export again” confirmation and can send duplicate export requests.
Useful? React with 👍 / 👎.
|
✋ This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release. |
|
🚧 @mountiny has triggered a test Expensify/App build. You can view the workflow run here. |
|
🚀 Deployed to staging by https://github.com/mountiny in version: 9.3.22-0 🚀
|
|
🧪🧪 Use the links below to test this adhoc build on Android, iOS, and Web. Happy testing! 🧪🧪
|
|
🚀 Deployed to production by https://github.com/mountiny in version: 9.3.22-4 🚀
|
|
🚀 Deployed to production by https://github.com/mountiny in version: 9.3.22-4 🚀
|
Reverts #82844