Add HealthChat API service layer (#1)

* feat(healthchat): add HealthChat API service layer

New features/healthchat modules: typed Retrofit client with
per-request Matrix token auth, member directory, profile and
invite services, plus test fakes and fixtures.

* test(healthchat): use runCatchingExceptions

Detekt's RunCatchingNotAllowed rule forbids plain runCatching.
This commit is contained in:
2026-08-05 14:13:00 +02:00
committed by Sedat Qaja
parent 5eee7737b9
commit 9f8a39bb74
46 changed files with 2328 additions and 0 deletions
+68
View File
@@ -0,0 +1,68 @@
import extension.buildConfigFieldStr
import extension.readLocalProperty
import extension.setupDependencyInjection
import extension.testCommonDependencies
/*
* Copyright (c) 2026 Novaloop AG
* Copyright (c) 2026 Element Creations Ltd.
*
* SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial.
* Please see LICENSE files in the repository root for full details.
*/
plugins {
id("io.element.android-compose-library")
alias(libs.plugins.kotlin.serialization)
}
android {
namespace = "io.element.android.features.healthchat.impl"
testOptions {
unitTests {
isIncludeAndroidResources = true
}
}
buildFeatures {
buildConfig = true
}
defaultConfig {
buildConfigFieldStr(
name = "HEALTHCHAT_API_BASE_URL",
value = System.getenv("HEALTHCHAT_API_BASE_URL")
?: readLocalProperty("healthchat.api.base.url")
?: "https://api.healthchat.ch",
)
}
}
setupDependencyInjection()
dependencies {
api(projects.features.healthchat.api)
implementation(libs.coroutines.core)
implementation(platform(libs.network.okhttp.bom))
implementation(libs.network.okhttp.okhttp)
implementation(libs.network.okhttp.logging)
implementation(platform(libs.network.retrofit.bom))
implementation(libs.network.retrofit)
implementation(libs.network.retrofit.converter.serialization)
implementation(libs.serialization.json)
implementation(projects.libraries.androidutils)
implementation(projects.libraries.architecture)
implementation(projects.libraries.core)
implementation(projects.libraries.matrix.api)
implementation(projects.libraries.network)
implementation(projects.libraries.sessionStorage.api)
testCommonDependencies(libs)
testImplementation(libs.network.mockwebserver)
testImplementation(projects.features.healthchat.test)
testImplementation(projects.libraries.matrix.test)
testImplementation(projects.libraries.preferences.api)
testImplementation(projects.libraries.preferences.test)
testImplementation(projects.libraries.sessionStorage.test)
}