диалог. Но логика показа этого диалога где-то внутри, так? Решение очевидное и простое:
1) Репозиторий (или интерактор) пытаются что-то сделать, а система говорит, что нельзя так как юзер не разрешил
2) кидаем свой эксепшн
3) на уровне презентера показываем юзеру диалог
Представь аналогично ситуацию:
Сделал запрос на сервер. Пришла ошибка, что пользователь должен ввести свой год рождения. Все будет точно также
Неплохой вариант кстати.
При очевидной простоте и понятности твоего варианта у него есть один недостаток. Он не в любом приложении будет актуален, но в моем случае есть сразу много мест где может этот самый эксепшен родиться. Если делать по условно твоему варианту, то необходимо добавлять обработку этого сценария сразу во много мест в презентеры и дальше. Как альтернативу я подумал сделать механизм аналогичный чичероне, когда есть некий навигатор для запросов пермишенов, который цепляется и отцепляется от единого глобального пермишен провайдера, с которым уже работает интерактор или кому там будет нужно. Плюс ещё и в том, что если пермишен будет нужен в сервисе, то это тоже будет работать по стандартной цепочке. Просто при отсутствии "навигатора" мы покажем нотификейшен или же просто подождем пока пользователь придет обратно в приложение и там спросим автоматически.
Обсуждают сегодня