Show extended profile details on the profile screens (#10)

* Add HealthChat API and extended profile services

Expose OpenID tokens and homeserver credentials from the client proxy, and
add fork-only services for the HealthChat member directory backend
(api.healthchat.ch) plus a service that reads MSC4133 extended profile
fields directly from the homeserver. Groundwork for the members tab and
the profile screens.

Claude-Session: https://claude.ai/code/session_013qdTbAWsZj2quQzEkagXaS

* Show extended profile details on the profile screens

Add a UserProfileScreenHook that lets the fork inject an extra Form
section below the header of the user profile and room member details
screens. The HealthChat implementation loads the MSC4133 extended
profile fields and renders them with tappable phone/email/website
links, hiding the section entirely for profiles without any fields.

Strings live in a new fork-only HealthChat.strings table (de/en/fr,
generated as HealthChatL10n via SwiftGen) since Untranslated.strings
pins the English bundle.

Claude-Session: https://claude.ai/code/session_013qdTbAWsZj2quQzEkagXaS
This commit is contained in:
2026-09-22 17:02:26 +02:00
parent 00f08ab2dc
commit 352d25f2bb
30 changed files with 466 additions and 2 deletions
@@ -340,6 +340,13 @@ extension PreviewTests {
}
}
@Test
func healthChatExtendedProfileSection() async throws {
for (index, preview) in HealthChatExtendedProfileSection_Previews._allPreviews.enumerated() {
try await assertSnapshots(matching: preview, step: index)
}
}
@Test
func highlightedTimelineItemModifier() async throws {
for (index, preview) in HighlightedTimelineItemModifier_Previews._allPreviews.enumerated() {
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:3d3588ff03cab4ae26b509697c581527eb9fcac8c576975f9159dc30cf2f3e56
size 83868
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:5f8ca33d1e3f081db2d1d781e22882fbf782bfbe4d9ad9b96cd381a7077a54ac
size 84983
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:b4a8af0283cffdb0512442a856f77c7e26e2018c578dd042675011f7d3946131
size 37865
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ded4f7151b2a76ec08b682f7301fac1fbe604db78e61dbb350a6d966a0079bed
size 38216
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:9529bf7156b2a534ceef90635f2cf0a9e384ca528ad18822d40ca9a380b29f90
size 141126
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:47f4621c563dcec8d761110404d0804cb4e20bf3d634b9d0e9610c486afe0bfe
size 151865
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:21e64679e06f1f0fb2e48bea125a1bbd5e5825208a4e9f844a0bcce25e500ab6
size 91057
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:bae2b1fdabfb0404bfc1c355ae626c9fe5214eb4e79ae01bcfedc286e5088606
size 99109