I have simple location permission and trying remove all the logic code to viewModel i don't know where it will fit in mvvm pattern and how please help me.
class MainActivity : ComponentActivity() {
@ExperimentalFoundationApi
@ExperimentalMaterialApi
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
ExperimentTheme {
Surface(color = MaterialTheme.colors.background) {
val viewModel: MapViewModel = viewModel()
val requestPermission = rememberLauncherForActivityResult(
ActivityResultContracts.RequestPermission()
) { isGranted ->
if (!isGranted) Log.d("appDebug", "location permission granted")
// Else go next
}
Button(onClick = {
if (!viewModel.hasLocationPermission())
requestPermission.launch(Manifest.permission.ACCESS_FINE_LOCATION)
}) {
Text(text = "Click")
}
}
}
}
}
}
viewModel here just checking permission:
class MapViewModel(application: Application) : AndroidViewModel(application) {
private val context = application
fun hasLocationPermission() = ActivityCompat.checkSelfPermission(
context,
Manifest.permission.ACCESS_FINE_LOCATION
) == PackageManager.PERMISSION_GRANTED
}