Repository navigation
[No QA] Keep unread markers on visible support replies - #105979
Conversation
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
This comment was marked as low quality.
This comment was marked as low quality.
This comment has been minimized.
This comment has been minimized.
|
Codex Review: Didn't find any major issues. Delightful! Reviewed commit: ℹ️ About Codex in GitHubCodex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
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". |
|
@justinpersaud 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] |
There was a problem hiding this comment.
💡 Codex Review
When an unresolved or replaced support ticket remains mounted while the window is unfocused and its only new action is a hidden survey, passing this filtered array to useMarkAsRead prevents the focus-recovery scan from finding any unread action. The report-change pass records a skipped read, but there is no rendered unread row to trigger completeSkippedMarkAsRead(), so lastReadTime is not advanced and the report can remain unread in the LHN after focus returns. Preserve the unfiltered page for useMarkAsRead while using the filtered arrays for unread-marker selection and rendering.
ℹ️ 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".
|
🚧 roryabraham 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/roryabraham in version: 9.5.33-0 🚀
|
|
No FullStory changes needed — this PR only fixes unread-divider placement by excluding already-hidden support surveys before unread selection; it adds no new user-facing functionality. |
|
🚀 Deployed to production by https://github.com/roryabraham in version: 9.5.33-1 🚀
Bundle Size Analysis (Sentry): |
Explanation of Change
An old support-ticket survey can take the unread marker even though the survey itself is hidden, leaving an unread reply without a “New” divider. Filter hidden surveys before unread selection, keeping both content-level action arrays aligned without changing pagination or loading decisions.
Fixed Issues
For #105473
Tests
Sign in with a test account, and click Home.
Open Chrome’s developer tools with Option+Command+J on macOS (Ctrl+Shift+J on Windows/Linux), select Console, and run the fixture below. It creates a local test conversation and puts the app in offline mode; it does not create a server-side support ticket.
Confirm “Your support reply after reopening” has exactly one “New” divider above it, and no “How was your support experience?” survey is displayed.
Click Home, then run
await seedSurveyUnreadTicket('resolved')in Console.Confirm the reply still has its “New” divider and exactly one “How was your support experience?” survey appears below “Resolved support ticket”.
Click Home, then run
await seedSurveyUnreadTicket('replaced')in Console.Confirm the survey disappears and the reply retains its “New” divider.
Click Home, then run
await seedSurveyUnreadTicket('missing-closure')in Console.Confirm no survey appears when the resolution message is not cached, and the reply retains its “New” divider.
Offline tests
The local fixture above exercises the list with the app in offline mode. Server persistence and native platforms are not covered by these steps.
QA Steps
None.
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
iOS: Native
iOS: mWeb Safari
MacOS: Chrome / Safari
Screen.Recording.2026-11-04.at.4.20.44.PM.mov