From 82c8093d1e82aed49e759981fff138c3d98a5ccc Mon Sep 17 00:00:00 2001 From: Cutiful <113351087+Syaroful@users.noreply.github.com> Date: Thu, 12 Jun 2025 08:41:20 +0700 Subject: [PATCH] Refactor: Update MainActivity to use Koin for DI --- .../syaroful/agrilinkvocpro/MainActivity.kt | 50 +++++-------------- 1 file changed, 13 insertions(+), 37 deletions(-) diff --git a/agrilinkvocpro/app/src/main/java/com/syaroful/agrilinkvocpro/MainActivity.kt b/agrilinkvocpro/app/src/main/java/com/syaroful/agrilinkvocpro/MainActivity.kt index 878b312..364bf5d 100644 --- a/agrilinkvocpro/app/src/main/java/com/syaroful/agrilinkvocpro/MainActivity.kt +++ b/agrilinkvocpro/app/src/main/java/com/syaroful/agrilinkvocpro/MainActivity.kt @@ -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) - } - } }