Skip to content

Conversation

@jkmassel
Copy link
Contributor

@jkmassel jkmassel commented Oct 10, 2025

Description

Adds the updated support area powered by wprs.

Adds:

  • Support for the Odie chatbot using native UI
  • Support Tickets UI that doesn't require Zendesk (thus supporting Dark Mode, dynamic type, a UI that doesn't look like chat)
  • A mechanism for clearing this disk cache. This could be useful to help users debug issues, but is mostly to test the caching behaviour.

This PR also uses a disk-based cache for support data so that content can be shown right away while the latest data is fetched from the server. This behaviour is encoded in the CachedAndFetchedResult type, which will later support the sqlite caching layer.

Testing instructions

Run on-device and try it out. There are a few dead ends (like creating a support ticket doesn't take you to the conversation view) and missing features (attaching images and application logs is waiting for @crazytonyli's work on the Rust layer), but this PR is pretty big already and fixing the missing bits won't dramatically change the overall approach.

@dangermattic
Copy link
Collaborator

dangermattic commented Oct 10, 2025

1 Warning
⚠️ This PR is larger than 500 lines of changes. Please consider splitting it into smaller PRs for easier and faster reviews.

Generated by 🚫 Danger

@jkmassel jkmassel force-pushed the add/new-support branch 3 times, most recently from 72009e5 to 6343fa1 Compare October 14, 2025 22:55
@wpmobilebot
Copy link
Contributor

wpmobilebot commented Oct 14, 2025

App Icon📲 You can test the changes from this Pull Request in WordPress by scanning the QR code below to install the corresponding build.
App NameWordPress
ConfigurationRelease-Alpha
Build Number29587
VersionPR #24937
Bundle IDorg.wordpress.alpha
Commit44eb13c
Installation URL5u22ktac8o620
Automatticians: You can use our internal self-serve MC tool to give yourself access to those builds if needed.

@wpmobilebot
Copy link
Contributor

wpmobilebot commented Oct 14, 2025

App Icon📲 You can test the changes from this Pull Request in Jetpack by scanning the QR code below to install the corresponding build.
App NameJetpack
ConfigurationRelease-Alpha
Build Number29587
VersionPR #24937
Bundle IDcom.jetpack.alpha
Commit44eb13c
Installation URL6pkmkjri1oeu0
Automatticians: You can use our internal self-serve MC tool to give yourself access to those builds if needed.

@jkmassel jkmassel requested review from crazytonyli and kean October 21, 2025 19:43
@jkmassel jkmassel marked this pull request as ready for review October 21, 2025 19:43
@jkmassel jkmassel added this to the 26.5 milestone Oct 21, 2025
)
}
}
.navigationTitle("Activity Logs")
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should this be "Application Logs", which is what the list row says?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, good call – done in 10bc235

.navigationTitle("Diagnostics")
.background(.background)
.onAppear {
dataProvider.userDid(.viewDiagnostics)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tapping "System Status Report" crashes here. dataProvider env not set?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah yep – that's what I get for changing this last-second. Fixed in 314b74d

import SwiftUI
import PhotosUI

public struct SupportForm: View {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This view does not have a cancel button. Even though we can swipe down to dismiss it, I think the app usually still shows an X or "Close" button on similar screens.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'll come back to this one – it needs to push the user over to the conversation, which will require some server-side work.

} else {
let data = Data(email.trimmingCharacters(in: .whitespacesAndNewlines).lowercased().utf8)
let hash = SHA256.hash(data: data).compactMap { String(format: "%02x", $0) }.joined()
self.avatarUrl = URL(string: "https://gravatar.com/avatar/\(hash)")!
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

label: {
Image(systemName: "square.and.pencil")
}
.disabled(!currentUser.permissions.contains(.createChatConversation))
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This button is disabled for my test accounts. Not sure why...

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd guess it's because they don't have a paid WP.com plan?

Copy link
Contributor

@crazytonyli crazytonyli left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approving to unblock wider testing.

@sonarqubecloud
Copy link

@jkmassel
Copy link
Contributor Author

Merging this so I can sync up #24925.

We can change anything we need to later.

@jkmassel jkmassel added this pull request to the merge queue Oct 22, 2025
Merged via the queue into trunk with commit 71d96ce Oct 22, 2025
30 of 32 checks passed
@jkmassel jkmassel deleted the add/new-support branch October 22, 2025 04:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants