Обработка разрешений в Android может быть сложной. Требуется много кода для создания запроса, получения результата, а затем его обработки в месте, где необходимо учесть всю фактическую логику принятого пользователем решения. Warden устраняет весь этот шаблонный код и позволяет запрашивать разрешения и получать результат от любой корутины в вашей кодовой базе (например, в ваших ViewModel).
Пример:
coroutineScope.launch {
val result = Warden.with(anyContext).requestPermission(Manifest.permission.CALL_PHONE)
when (result) {
is PermissionState.Denied -> dialNumber(phoneNumber)
PermissionState.Granted -> startCall(phoneNumber)
}
}

