feat(core): gateway connection and identify

This commit is contained in:
Cilly Leang 2026-01-27 02:23:26 +11:00
parent 3a28fe17f8
commit cd50f75c10
Signed by: cilly
GPG key ID: 6500251E087653C9
13 changed files with 418 additions and 40 deletions

View file

@ -18,11 +18,14 @@ import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import dev.zacsweers.metro.AppScope
import dev.zacsweers.metro.ContributesIntoMap
import dev.zacsweers.metro.Inject
import dev.zacsweers.metrox.viewmodel.ViewModelKey
import dev.zacsweers.metrox.viewmodel.metroViewModel
import kotlinx.coroutines.launch
import moe.lava.neon.core.api.gateway.Gateway
import moe.lava.neon.core.repository.AuthRepository
import moe.lava.neon.resources.Res
import moe.lava.neon.resources.compose_multiplatform
@ -54,6 +57,16 @@ fun Sample(onRequestLogout: () -> Unit) {
Text("Passed token: ${viewModel.token?.slice(0..10)}...")
}
}
Button(onClick = {
viewModel.connect()
}) {
Text("Connect!")
}
Button(onClick = {
viewModel.disconnect()
}) {
Text("Disconnect!")
}
Button(onClick = {
viewModel.logout()
onRequestLogout()
@ -67,10 +80,21 @@ fun Sample(onRequestLogout: () -> Unit) {
@ViewModelKey(SampleViewModel::class)
@ContributesIntoMap(AppScope::class)
class SampleViewModel(
private val auth: AuthRepository
private val auth: AuthRepository,
private val gateway: Gateway,
) : ViewModel() {
val token get() = auth.token
fun connect() {
viewModelScope.launch {
gateway.connect()
}
}
fun disconnect() {
viewModelScope.launch {
gateway.disconnect()
}
}
fun logout() {
auth.logout()
}