Refactor: Update MainActivity to use Koin for DI

This commit is contained in:
Cutiful 2025-06-12 08:41:20 +07:00
parent 40011a18d4
commit 82c8093d1e

View File

@ -5,26 +5,25 @@ import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
import androidx.activity.viewModels
import com.syaroful.agrilinkvocpro.core.components.DownloadModuleConfirmationDialog
import com.syaroful.agrilinkvocpro.core.components.DownloadProgressDialog
import com.syaroful.agrilinkvocpro.core.route.SetupNavigation
import com.syaroful.agrilinkvocpro.ui.screen.home.HomeViewModel
import com.syaroful.agrilinkvocpro.data.UserPreferences
import com.syaroful.agrilinkvocpro.navigation.SetupNavigation
import com.syaroful.agrilinkvocpro.ui.screen.home.DynamicModuleViewModel
import com.syaroful.agrilinkvocpro.ui.theme.AgrilinkVocproTheme
import dagger.hilt.android.AndroidEntryPoint
import org.koin.android.ext.android.get
import org.koin.androidx.viewmodel.ext.android.viewModel
@AndroidEntryPoint
class MainActivity : ComponentActivity() {
private val homeViewModel: HomeViewModel by viewModels()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
setContent {
AgrilinkVocproTheme {
val dynamicModuleViewModel: DynamicModuleViewModel by viewModel()
val userPreferences: UserPreferences = get()
SetupNavigation(
homeViewModel = homeViewModel,
dynamicModuleViewModel = dynamicModuleViewModel,
userPreferences = userPreferences,
onLaunchFeature = { className ->
val intent = Intent().apply {
setClassName(packageName, className)
@ -32,44 +31,21 @@ class MainActivity : ComponentActivity() {
startActivity(intent)
}
)
DownloadProgressDialog(
showDialog = homeViewModel.showProgressDialog.value,
message = homeViewModel.progressMessage.value,
progress = homeViewModel.progressPercent.floatValue,
onDismiss = {homeViewModel.showProgressDialog.value = false}
)
DownloadModuleConfirmationDialog(
moduleName = homeViewModel.currentModuleToDownload.value,
onDismiss = { homeViewModel.currentModuleToDownload.value = null },
onClickConfirm = { homeViewModel.confirmDownload { startFeature(it) } }
moduleName = dynamicModuleViewModel.currentModuleToDownload.value,
onDismiss = { dynamicModuleViewModel.currentModuleToDownload.value = null },
onClickConfirm = { dynamicModuleViewModel.confirmDownload { startFeature(it) } }
)
}
}
}
private fun startFeature(className: String) {
val intent = Intent().apply {
setClassName(packageName, className)
}
startActivity(intent)
}
private fun startFeatureActivity(moduleName: String) {
val activityClassName = when (moduleName) {
"control_feature" -> "com.syaroful.agrilinkvocpro.control_feature.ControlActuatorActivity"
"recipe_feature" -> "com.syaroful.agrilinkvocpro.recipe_feature.RecipeActivity"
"price_prediction_feature" -> "com.syaroful.agrilinkvocpro.price_prediction_feature.PricePredictionActivity"
"plant_disease_detection_feature" -> "com.syaroful.agrilinkvocpro.diseasedetection_feature.PlantDiseaseDetectionActivity"
else -> null
}
activityClassName?.let {
val intent = Intent().apply {
setClassName("com.syaroful.agrilinkvocpro", it)
}
startActivity(intent)
}
}
}