class LocationPermissionController(
    private val permissionManager: PermissionManager,
    private val activityProvider: ActivityProvider
) {
    suspend fun requestLocationPermission(): Boolean {
        if (permissionManager.hasPermission(Manifest.permission.ACCESS_FINE_LOCATION)) return true
        val permissionStatus =
            permissionManager.requestPermission(Manifest.permission.ACCESS_FINE_LOCATION)
        return when (permissionStatus) {
            is PermissionDenied -> {
                if (permissionStatus.shouldShowRationale) {
                    if (showRationale()) requestLocationPermission() else false
                } else {
                    showDenialSnackBar()
                    false
                }
            }
            PermissionGranted -> true
        }
    }
    
    private suspend fun showRationale(): Boolean {
        // Show a dialog with to explain the need, and handle re-requesting the permission
    }

    private fun showDenialSnackBar() {
        // Show a Snackbar to let the user know about the denial
    }
}