Size: a a a

Android Architecture

2020 May 06

Q

QMan in Android Architecture
Ilnar
Задался таким вопросом т.к. со временем этих аргументов там может быть кучу.

lastModifyEnable  и т..д.
тогда сделай две fun: locale, remote )
источник

НЭ

Некрутов Эдуард... in Android Architecture
Ilnar
это только вариант как я мог обойти возврат старой, закэшированной инфы, а так да, фигово будет если неудачный запрос..
Потому invalidate  лучше, чем clear. Ты просто сообщаешь, что данные устарели и более ничего не делаешь, а при повторном запросе, если данные устарели, то пробуешь запросить новые и перезаписать их.
источник

D

Danil Yudov in Android Architecture
QMan
Зачем вообще его очищать ? А если запрос закончился неудачно, показать пустоту ?
обычно в таких случаях показывается Snackbar с ошибкой или нечто подобное. т.к. pullToRefresh предполагает, что список с данными у нас уже отображается, просто они могут быть не слишком актуальны. но всё конечно зависит от случая и очищать кэш в таком случае -- такое, да)
источник

Q

QMan in Android Architecture
Danil Yudov
обычно в таких случаях показывается Snackbar с ошибкой или нечто подобное. т.к. pullToRefresh предполагает, что список с данными у нас уже отображается, просто они могут быть не слишком актуальны. но всё конечно зависит от случая и очищать кэш в таком случае -- такое, да)
я, кажется, об этом и сказал
источник

D

Danil Yudov in Android Architecture
я сослался на конкретное сообщение, где ты при неудачном запросе говоришь о показе пустоты
источник

I

Ilnar in Android Architecture
Все ребята, спасибо. Пойду, наконец, работать, а не думать как это сделать по феншую )
источник

Y

Yuriy in Android Architecture
Eugene Kostyuk
Добрый вечер! Возник интересный кейс. У меня приложение условно разделено на три слоя, ui, domain, data. ui и data не знают друг о друге и общаются через domain. В качестве асинхронной составляющей корутины. Сам кейс в том, что на слое даты есть Firebase и у него есть Колбэк об обновлении данных. Как я могу прикидывать эти данные с data на ui при этом не прокидывая такой колбэк через весь проект?
Очень просто. Я так обертывал авторизацию по телефону и смс коду.
Имхо это для Котлин чата больше подходит

https://medium.com/@elizarov/callbacks-and-kotlin-flows-2b53aa2525cf
источник

Q

QMan in Android Architecture
вот я голову ломаю...у меня парсинг...думаю где бы реализовать этот самый парсинг: в DataSource или в Mapper... Т.е. чтобы DataSource возвращал просто String и потом репозиторий его трансформировал в объект бизнеса...
источник

Q

QMan in Android Architecture
нет, думаю логично будет парсить в DataSource
источник

НЭ

Некрутов Эдуард... in Android Architecture
QMan
вот я голову ломаю...у меня парсинг...думаю где бы реализовать этот самый парсинг: в DataSource или в Mapper... Т.е. чтобы DataSource возвращал просто String и потом репозиторий его трансформировал в объект бизнеса...
DataSource - курьер. Сходил за данными и все. Repo уже с ними может поработать, но лучше вынести маппинг в маппер. Так ты сможешь в Repo инжектить эти мапперы и можно будет проще все это дело замокать при необходимости. Ну и отдельные мапперы лучше для покрытия юнитами.
источник

Q

QMan in Android Architecture
Некрутов Эдуард
DataSource - курьер. Сходил за данными и все. Repo уже с ними может поработать, но лучше вынести маппинг в маппер. Так ты сможешь в Repo инжектить эти мапперы и можно будет проще все это дело замокать при необходимости. Ну и отдельные мапперы лучше для покрытия юнитами.
Дело в том, что DataSource имеет один интерфейс для всех
источник

НЭ

Некрутов Эдуард... in Android Architecture
QMan
Дело в том, что DataSource имеет один интерфейс для всех
А какая у вас структура?
источник

Q

QMan in Android Architecture
Например тот же файловый кеш
источник

Q

QMan in Android Architecture
Хранится в виде Json в файле
источник

Q

QMan in Android Architecture
interface DataSource {
suspend fun getData(): MyEntity
}
источник

Q

QMan in Android Architecture
Это образно. Если из сети String и из файла String... глупо, как то...
источник

НЭ

Некрутов Эдуард... in Android Architecture
А DataSource кто вызывает? сразу domain слой или всеже repository?
источник

Q

QMan in Android Architecture
Репозиторий
источник

Q

QMan in Android Architecture
Просто если через неделю появится api на удаленном сервере, то String не катируется...
источник

Q

QMan in Android Architecture
Я оставил репозиторий только ответственным за выбор источника
источник