Обработка разрешений в 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) } }