package com.hyperling.expensetracker import com.hyperling.expensetracker.ui.theme.ExpenseTrackerTheme import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.activity.enableEdgeToEdge import androidx.activity.viewModels import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding import androidx.compose.material3.Scaffold import androidx.compose.material3.Surface import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue import androidx.compose.ui.Modifier import androidx.compose.ui.tooling.preview.Preview import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider import androidx.room.Room import androidx.compose.material3.Surface class MainActivity : ComponentActivity() { private val _db by lazy { Room.databaseBuilder( applicationContext, ExpenseDatabase::class.java, "expenses.db" ).build() } private val _viewModel by viewModels ( factoryProducer = { object : ViewModelProvider.Factory { override fun create(modelClass: Class): T { return ExpenseViewModel(_db.dao) as T } } } ) override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) enableEdgeToEdge() setContent { ExpenseTrackerTheme { val state by _viewModel.state.collectAsState() ExpenseScreen( state = state, onEvent = _viewModel::onEvent ) } } } } /* @Preview(showBackground = true) @Composable fun MainPreview() { ExpenseTrackerTheme { Main() } } */