diff --git a/android/backend/api/build.gradle.kts b/android/backend/api/build.gradle.kts new file mode 100644 index 000000000..9b18065e7 --- /dev/null +++ b/android/backend/api/build.gradle.kts @@ -0,0 +1,21 @@ +plugins { + alias(libs.plugins.android.library) +} + +android { + namespace = "io.clawdroid.backend.api" + compileSdk = libs.versions.android.compileSdk.get().toInt() + + defaultConfig { + minSdk = libs.versions.android.minSdk.get().toInt() + } + + compileOptions { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 + } +} + +dependencies { + implementation(libs.coroutines.android) +} diff --git a/android/backend/api/src/main/AndroidManifest.xml b/android/backend/api/src/main/AndroidManifest.xml new file mode 100644 index 000000000..8072ee00d --- /dev/null +++ b/android/backend/api/src/main/AndroidManifest.xml @@ -0,0 +1,2 @@ + + diff --git a/android/backend/api/src/main/java/io/clawdroid/backend/api/BackendLifecycle.kt b/android/backend/api/src/main/java/io/clawdroid/backend/api/BackendLifecycle.kt new file mode 100644 index 000000000..d407e3d84 --- /dev/null +++ b/android/backend/api/src/main/java/io/clawdroid/backend/api/BackendLifecycle.kt @@ -0,0 +1,10 @@ +package io.clawdroid.backend.api + +import kotlinx.coroutines.flow.StateFlow + +interface BackendLifecycle { + val state: StateFlow + val isManaged: Boolean + suspend fun start() + suspend fun stop() +} diff --git a/android/backend/api/src/main/java/io/clawdroid/backend/api/BackendState.kt b/android/backend/api/src/main/java/io/clawdroid/backend/api/BackendState.kt new file mode 100644 index 000000000..145c60d7d --- /dev/null +++ b/android/backend/api/src/main/java/io/clawdroid/backend/api/BackendState.kt @@ -0,0 +1,3 @@ +package io.clawdroid.backend.api + +enum class BackendState { STOPPED, STARTING, RUNNING, ERROR } diff --git a/android/backend/api/src/main/java/io/clawdroid/backend/api/GatewaySettings.kt b/android/backend/api/src/main/java/io/clawdroid/backend/api/GatewaySettings.kt new file mode 100644 index 000000000..3626af99d --- /dev/null +++ b/android/backend/api/src/main/java/io/clawdroid/backend/api/GatewaySettings.kt @@ -0,0 +1,7 @@ +package io.clawdroid.backend.api + +data class GatewaySettings( + val wsPort: Int = 18793, + val httpPort: Int = 18790, + val apiKey: String = "", +) diff --git a/android/backend/api/src/main/java/io/clawdroid/backend/api/GatewaySettingsStore.kt b/android/backend/api/src/main/java/io/clawdroid/backend/api/GatewaySettingsStore.kt new file mode 100644 index 000000000..48bf5ccfb --- /dev/null +++ b/android/backend/api/src/main/java/io/clawdroid/backend/api/GatewaySettingsStore.kt @@ -0,0 +1,8 @@ +package io.clawdroid.backend.api + +import kotlinx.coroutines.flow.StateFlow + +interface GatewaySettingsStore { + val settings: StateFlow + suspend fun update(settings: GatewaySettings) +} diff --git a/android/backend/api/src/main/java/io/clawdroid/backend/api/NoopBackendLifecycle.kt b/android/backend/api/src/main/java/io/clawdroid/backend/api/NoopBackendLifecycle.kt new file mode 100644 index 000000000..2da1632d8 --- /dev/null +++ b/android/backend/api/src/main/java/io/clawdroid/backend/api/NoopBackendLifecycle.kt @@ -0,0 +1,11 @@ +package io.clawdroid.backend.api + +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.StateFlow + +class NoopBackendLifecycle : BackendLifecycle { + override val state: StateFlow = MutableStateFlow(BackendState.RUNNING) + override val isManaged: Boolean = false + override suspend fun start() {} + override suspend fun stop() {} +} diff --git a/android/settings.gradle.kts b/android/settings.gradle.kts index 533b4eb99..c8eb14336 100644 --- a/android/settings.gradle.kts +++ b/android/settings.gradle.kts @@ -18,3 +18,4 @@ include(":feature:chat") include(":core:domain") include(":core:data") include(":core:ui") +include(":backend:api")