Refactor: Update MainActivity to use Koin for DI
This commit is contained in:
parent
40011a18d4
commit
82c8093d1e
|
|
@ -5,26 +5,25 @@ import android.os.Bundle
|
||||||
import androidx.activity.ComponentActivity
|
import androidx.activity.ComponentActivity
|
||||||
import androidx.activity.compose.setContent
|
import androidx.activity.compose.setContent
|
||||||
import androidx.activity.enableEdgeToEdge
|
import androidx.activity.enableEdgeToEdge
|
||||||
import androidx.activity.viewModels
|
|
||||||
import com.syaroful.agrilinkvocpro.core.components.DownloadModuleConfirmationDialog
|
import com.syaroful.agrilinkvocpro.core.components.DownloadModuleConfirmationDialog
|
||||||
import com.syaroful.agrilinkvocpro.core.components.DownloadProgressDialog
|
import com.syaroful.agrilinkvocpro.data.UserPreferences
|
||||||
import com.syaroful.agrilinkvocpro.core.route.SetupNavigation
|
import com.syaroful.agrilinkvocpro.navigation.SetupNavigation
|
||||||
import com.syaroful.agrilinkvocpro.ui.screen.home.HomeViewModel
|
import com.syaroful.agrilinkvocpro.ui.screen.home.DynamicModuleViewModel
|
||||||
import com.syaroful.agrilinkvocpro.ui.theme.AgrilinkVocproTheme
|
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() {
|
class MainActivity : ComponentActivity() {
|
||||||
private val homeViewModel: HomeViewModel by viewModels()
|
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
|
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
enableEdgeToEdge()
|
enableEdgeToEdge()
|
||||||
setContent {
|
setContent {
|
||||||
AgrilinkVocproTheme {
|
AgrilinkVocproTheme {
|
||||||
|
val dynamicModuleViewModel: DynamicModuleViewModel by viewModel()
|
||||||
|
val userPreferences: UserPreferences = get()
|
||||||
SetupNavigation(
|
SetupNavigation(
|
||||||
homeViewModel = homeViewModel,
|
dynamicModuleViewModel = dynamicModuleViewModel,
|
||||||
|
userPreferences = userPreferences,
|
||||||
onLaunchFeature = { className ->
|
onLaunchFeature = { className ->
|
||||||
val intent = Intent().apply {
|
val intent = Intent().apply {
|
||||||
setClassName(packageName, className)
|
setClassName(packageName, className)
|
||||||
|
|
@ -32,44 +31,21 @@ class MainActivity : ComponentActivity() {
|
||||||
startActivity(intent)
|
startActivity(intent)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
DownloadProgressDialog(
|
|
||||||
showDialog = homeViewModel.showProgressDialog.value,
|
|
||||||
message = homeViewModel.progressMessage.value,
|
|
||||||
progress = homeViewModel.progressPercent.floatValue,
|
|
||||||
onDismiss = {homeViewModel.showProgressDialog.value = false}
|
|
||||||
)
|
|
||||||
|
|
||||||
DownloadModuleConfirmationDialog(
|
DownloadModuleConfirmationDialog(
|
||||||
moduleName = homeViewModel.currentModuleToDownload.value,
|
moduleName = dynamicModuleViewModel.currentModuleToDownload.value,
|
||||||
onDismiss = { homeViewModel.currentModuleToDownload.value = null },
|
onDismiss = { dynamicModuleViewModel.currentModuleToDownload.value = null },
|
||||||
onClickConfirm = { homeViewModel.confirmDownload { startFeature(it) } }
|
onClickConfirm = { dynamicModuleViewModel.confirmDownload { startFeature(it) } }
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun startFeature(className: String) {
|
private fun startFeature(className: String) {
|
||||||
val intent = Intent().apply {
|
val intent = Intent().apply {
|
||||||
setClassName(packageName, className)
|
setClassName(packageName, className)
|
||||||
}
|
}
|
||||||
startActivity(intent)
|
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)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user