Files
element-x-ios/ElementX/Sources/AppHooks/HealthChat/HealthChatAppSettingsHook.swift
T
Sedat-Qaja 3b7ed0a48b fix: remove rlement endpoints and links from the HealthChat
* fix(healthchat): switch off analytics, crash and bug reporting endpoints

Upstream ships *.localhost placeholders in Secrets.swift and marks the file assume-unchanged; with analytics on, the Element Call widget was handed Element's own PostHog and Sentry. nil hides the analytics prompt, the Analytics and Report a problem entries until HealthChat runs its own services.

* feat(healthchat): hide the Labs entry in settings

* fix(healthchat): point Copyright and the analytics terms at healthchat.ch

* docs(healthchat): add the 26.11.1 release notes

* feat(healthchat): drop the Element help links

* feat(healthchat): switch off location sharing

* test(healthchat): skip the analytics suite without PostHog
2026-10-19 14:40:20 +02:00

50 lines
3.2 KiB
Swift

//
// Copyright 2026 Novaloop AG
//
// SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial.
// Please see LICENSE files in the repository root for full details.
//
import Foundation
/// Pins HealthChat's server, OIDC and push configuration by overriding `AppSettings` at startup.
///
/// - `accountProviders` / `allowOtherAccountProviders` lock every user to `healthchat.ch` (the server name;
/// `.well-known` delegates to `matrix.healthchat.ch`) and hide the change-server / create-account UI.
/// - `oAuthRedirectURL` uses the app's own URL scheme so the OIDC/MAS callback needs no associated domain.
/// - Legal links point at healthchat.ch. The encryption/verification/backup help links still go to
/// Element's help pages because no HealthChat equivalents exist yet.
struct HealthChatAppSettingsHook: AppSettingsHookProtocol {
func configure(_ appSettings: AppSettings) -> AppSettings {
appSettings.override(accountProviders: [.generic("healthchat.ch")],
allowOtherAccountProviders: false,
hideBrandChrome: false,
pushGatewayBaseURL: "https://sygnal.healthchat.ch",
oAuthRedirectURL: "ch.healthchat.element:/oauth/callback",
// nil keeps the registered client_uri at the bare website URL, as shipped before upstream's `apps/ios` default.
oAuthClientURIPath: nil,
websiteURL: "https://healthchat.ch",
logoURL: "https://app.healthchat.ch/themes/element/img/logos/element-logo.png",
copyrightURL: "https://www.healthchat.ch/impressum",
acceptableUseURL: "https://www.healthchat.ch/datenschutz",
privacyURL: "https://www.healthchat.ch/datenschutz",
encryptionURL: nil,
deviceVerificationURL: nil,
chatBackupDetailsURL: nil,
identityPinningViolationDetailsURL: nil,
historySharingDetailsURL: nil,
elementWebHosts: ["app.healthchat.ch"],
accountProvisioningHost: appSettings.accountProvisioningHost,
bugReportApplicationID: "healthchat-ios",
analyticsTermsURL: "https://www.healthchat.ch/datenschutz",
mapTilerConfiguration: Self.mapTilerConfiguration)
return appSettings
}
/// No MapTiler account yet: a nil key hides location sharing and shows received locations as a placeholder.
private static let mapTilerConfiguration = MapTilerConfiguration(baseURL: AppSettings.bundledMapTilerConfiguration.baseURL,
apiKey: nil,
lightStyleID: AppSettings.bundledMapTilerConfiguration.lightStyleID,
darkStyleID: AppSettings.bundledMapTilerConfiguration.darkStyleID)
}