package com.jovan.assistant import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Surface import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.google.firebase.auth.FirebaseAuth import com.jovan.assistant.data.FirebaseRepo import com.jovan.assistant.service.VoiceService import com.jovan.assistant.ui.AppTheme import com.jovan.assistant.ui.AuthScreen import com.jovan.assistant.ui.DashboardScreen class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { AppTheme { Surface(Modifier.fillMaxSize(), color = MaterialTheme.colorScheme.background) { Root() } } } } } @Composable private fun Root() { val ctx = LocalContext.current val user by FirebaseRepo.authState() .collectAsStateWithLifecycle(initialValue = FirebaseAuth.getInstance().currentUser) // Signing out must also stop the always-on microphone service. LaunchedEffect(user == null) { if (user == null) VoiceService.stop(ctx) } val u = user if (u == null) AuthScreen() else DashboardScreen(uid = u.uid, email = u.email.orEmpty()) }