package io.oxygenhub.android import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.activity.enableEdgeToEdge import androidx.compose.runtime.getValue import androidx.compose.runtime.key import androidx.lifecycle.compose.collectAsStateWithLifecycle import io.oxygenhub.android.ui.nav.SignedInApp import io.oxygenhub.android.ui.nav.rememberViewModel import io.oxygenhub.android.ui.signin.SignInScreen import io.oxygenhub.android.ui.signin.SignInViewModel import io.oxygenhub.android.ui.theme.OxygenHubTheme import uniffi.rust_core.oxygenGreeting class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) enableEdgeToEdge() val container = (application as OxygenHubApp).container val sessions = container.sessions setContent { OxygenHubTheme { val session by sessions.session.collectAsStateWithLifecycle() val signedIn = session val api = signedIn?.let { sessions.api() } if (signedIn == null || api == null) { SignInScreen( rememberViewModel { SignInViewModel(sessions, container::deviceAuth, container.clientName, DEFAULT_HUB) }, ) } else { // A new session starts the signed-in app afresh: nothing of the last account's is kept. key(signedIn) { SignedInApp( session = signedIn, api = api, nativeCore = { oxygenGreeting(signedIn.username) }, onSignOut = { sessions.signOut() }, ) } } } } } }