Unified support: combined Get help conversations flow#25720
Draft
adalpari wants to merge 6 commits into
Draft
Conversation
Add the data layer for the unified support conversations list, backed by the new wordpress-rs `unifiedConversations` endpoint: - UnifiedConversationItem model (combined bot + Happiness Engineer list entry) with isBot branching and server-status mapping. - UnifiedConversationDataProvider protocol + loadUnifiedConversations() on SupportDataProvider. - WpUnifiedConversationDataProvider using api.unifiedConversations.getUnifiedConversationList(), mapping UnifiedConversationSummary to the combined item. - Mock provider + sample data for previews. Conversation detail and replies continue to use the existing per-type data sources, branched on the item type.
Replace the two separate "Ask the Bots" and "Ask the Happiness Engineers" entries in the support hub with a single "Get help" entry that opens the unified conversations list. - UnifiedConversationListView shows bot chats and HE tickets in one combined list (loaded from the unified endpoint), with bot rows badged and HE rows showing their status, plus pull-to-refresh and a + button to start a new bot chat. - Each row routes into the existing detail experience branched on type: the chat-style bot ConversationView, or the ticket-style SupportConversationView (both reuse the existing per-type detail/reply code unchanged). - RootSupportView now shows one Get help link instead of two. The legacy Zendesk support flow remains gated behind FeatureFlag.newSupport (shown when the flag is off) and is unchanged.
Port WordPress-Android#23011. Bot replies can include text/html "citation" attachments that are web links to help articles, not downloadable files. Previously these rendered as file cards; tapping one would try to download raw HTML. This is most visible after a conversation is escalated to a Happiness Engineer, where the bot's earlier messages render through the ticket attachment path. - Add Attachment.isLink for text/html content types. - AttachmentListView partitions link attachments out of the file grid and renders them as tappable, underlined links that open in the browser.
Collaborator
Generated by 🚫 Danger |
Contributor
|
| App Name | WordPress | |
| Configuration | Release-Alpha | |
| Build Number | 32955 | |
| Version | PR #25720 | |
| Bundle ID | org.wordpress.alpha | |
| Commit | 069324d | |
| Installation URL | 65spnvtp5j970 |
Contributor
|
| App Name | Jetpack | |
| Configuration | Release-Alpha | |
| Build Number | 32955 | |
| Version | PR #25720 | |
| Bundle ID | com.jetpack.alpha | |
| Commit | 069324d | |
| Installation URL | 5eoe38h7lcjr8 |
The + (new conversation) button in the unified list was disabled unless the account had the .createChatConversation permission, which reflects Happiness Engineer / support eligibility. Starting a bot chat shouldn't require that — on accounts without support eligibility the button was permanently disabled, so new conversations couldn't be created at all. Remove the gate so any signed-in user can start a bot chat (matching the Android unified flow); HE eligibility still applies inside the ticket reply flow.
- Drop unused stored attributedDescription on UnifiedConversationItem; derive plainTextDescription locally in init - Move displayTitle onto the model where it belongs - Share a static RelativeDateTimeFormatter instead of allocating one per call - Refresh the relative timestamp every 60s rather than every second - Flatten a redundant nested VStack in the row Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.


What
Ports the Android unified "Get help" support flow (WordPress-Android#22946, #23011) to iOS: the two separate "Ask the Bots" and "Ask the Happiness Engineers" screens become a single combined conversations list, backed by the new
unifiedConversationsrs endpoint.Changes
Data layer
UnifiedConversationItemmodel — a combined bot + HE list entry withisBotbranching and server-status → badge mapping.UnifiedConversationDataProvider+loadUnifiedConversations();WpUnifiedConversationDataProvidercallsapi.unifiedConversations.getUnifiedConversationList()and mapsUnifiedConversationSummaryto the combined item. Mock + sample data included.UI
UnifiedConversationListView— one combined list (bot rows badged, HE rows show status), pull-to-refresh, empty/error states, and a + to start a new bot chat.ConversationViewor the ticket-styleSupportConversationView— reusing all existing detail/reply code unchanged.RootSupportViewnow shows a single Get help entry instead of two.text/html link attachments (#23011)
Attachment.isLinkfortext/html;AttachmentListViewrenders link/citation attachments as tappable, underlined links that open in the browser instead of file cards that download raw HTML (most visible after a bot conversation is escalated to a Happiness Engineer).Design note — reuse over rewrite
The combined list uses the new unified endpoint; detail and replies reuse the existing per-type screens and endpoints (
supportBots/supportTickets, still present), branched by type. This achieves the user-visible unification with minimal risk and no rewrite of the working bot/HE detail UIs.The legacy Zendesk flow remains gated behind
FeatureFlag.newSupport(shown when the flag is off) and is unchanged.Not yet done / follow-ups
replyToUnifiedConversation(withencryptedLogIds) for full endpoint parity, and surface bot citation links inside the bot chat (the reusedBotMessagemodel carries no attachments today — citations currently appear only via the HE attachment path post-escalation).ConversationListView,SupportConversationListView) — left in place for now to keep the diff small.jetpack-chat-mobilevs Android'sjetpack-workflow-chat_mobile_support).FeatureFlag.newSupportenabled.🤖 Generated with Claude Code