Size: a a a

Android Architecture

2020 September 24

GR

Gor Rushanyan in Android Architecture
Alexander Taran
Что я здесь читаю? Начали с того что клин переоценен и не нужен, потом di не нужен и вообще против solid, а теперь и интерфейсы не нужны. Это что 2020-ый на вас так влияет или мы стоим на пороге новой эпохи?
Это ж интернет, тут только вбросы. Раньше в этом чате поспокойнее было.
источник

QH

Quantum Harmonizer in Android Architecture
Gor Rushanyan
Может кто-то посоветовать пример mvi с котлиновскими flow? (В Гугле не забанен, и что-то нашел, но мало ли есть примеры получше)
Вот это тоже вброс, например. Ну, это же интернет.
источник

GR

Gor Rushanyan in Android Architecture
Quantum Harmonizer
Вот это тоже вброс, например. Ну, это же интернет.
Каким образом это может быть вбросом?
источник

P

Pavel in Android Architecture
Gor Rushanyan
Может кто-то посоветовать пример mvi с котлиновскими flow? (В Гугле не забанен, и что-то нашел, но мало ли есть примеры получше)
В чём проблема? Подписываешься на flow, меняешь state и кидаешь в View.
источник

QH

Quantum Harmonizer in Android Architecture
Gor Rushanyan
Каким образом это может быть вбросом?
Ну я ж не знаю, это чисто по твоим критериям.)
источник

GR

Gor Rushanyan in Android Architecture
Pavel
В чём проблема? Подписываешься на flow, меняешь state и кидаешь в View.
Проблем нет, я попросил пример
источник

GR

Gor Rushanyan in Android Architecture
Quantum Harmonizer
Ну я ж не знаю, это чисто по твоим критериям.)
Ну как же так, молодой пользователь интернета не знает что такое вбросы? Как вы выживаете то.
источник

QH

Quantum Harmonizer in Android Architecture
Gor Rushanyan
Это ж интернет, тут только вбросы. Раньше в этом чате поспокойнее было.
Как же, знаю. По моим меркам вот это чистейший вброс, например.
источник

GR

Gor Rushanyan in Android Architecture
Quantum Harmonizer
Ну про DI-контейнеры, клин и интерфейсы ради интерфейсов уже много лет всё понятно.
А по моим вот это
источник

GR

Gor Rushanyan in Android Architecture
В результате все вбросы, лол
источник

P

Pavel in Android Architecture
Gor Rushanyan
Проблем нет, я попросил пример
Я делаю сейчас что-то подобное
Здесь используется MVIKotlin.
В терминах этой либы, в intent executor подписываешься и кидаешь результат. Потом он обработается в медиаторе, поменяется state и он дальше прилетит в view.

https://github.com/PavelSidyakin/ChatSample/blob/master/app/src/main/java/com/example/chatsample/chatlist/store/ChatListIntentExecutorImpl.kt

    private suspend fun handleActionLoadList() = coroutineScope {
       chatDataSource.observeChatList() // Flow
           .map { pagingData -> pagingData.map { convertChatInfo2ChatListItem(it) } }
           .cachedIn(this)
           .collectLatest { pagingData: PagingData<ChatListItem> ->
               dispatch(ChatListStateChanges.ListChanged(pagingData))
               dispatch(ChatListStateChanges.RefreshStateChanged(false))
           }
   }
источник

GR

Gor Rushanyan in Android Architecture
Pavel
Я делаю сейчас что-то подобное
Здесь используется MVIKotlin.
В терминах этой либы, в intent executor подписываешься и кидаешь результат. Потом он обработается в медиаторе, поменяется state и он дальше прилетит в view.

https://github.com/PavelSidyakin/ChatSample/blob/master/app/src/main/java/com/example/chatsample/chatlist/store/ChatListIntentExecutorImpl.kt

    private suspend fun handleActionLoadList() = coroutineScope {
       chatDataSource.observeChatList() // Flow
           .map { pagingData -> pagingData.map { convertChatInfo2ChatListItem(it) } }
           .cachedIn(this)
           .collectLatest { pagingData: PagingData<ChatListItem> ->
               dispatch(ChatListStateChanges.ListChanged(pagingData))
               dispatch(ChatListStateChanges.RefreshStateChanged(false))
           }
   }
Спасибо
источник

SB

Simon Belialov in Android Architecture
Gor Rushanyan
Может кто-то посоветовать пример mvi с котлиновскими flow? (В Гугле не забанен, и что-то нашел, но мало ли есть примеры получше)
Есть мое старое решение, ему уже год https://github.com/roixa/RoixCleanMvi
источник

YW

Yakov Weber in Android Architecture
Roman Chumachenko
финальный класс ты не замокаешь никак
в жабе классы по умолчанию открыты к наследованию, а вот в котлине нет, а делать все классы open как-то не охота
В мокито уже давно можно мокать финальные классы, там через небольшой хак это работает но все же есть возможность
источник

RC

Roman Chumachenko in Android Architecture
Yakov Weber
В мокито уже давно можно мокать финальные классы, там через небольшой хак это работает но все же есть возможность
Я могу ошибаться, но необходимость мокать финальные классы говорит о том, что вместо интерфейсов поставляются конкретные зависимости, я думаю, что само это не есть хорошо
источник

YW

Yakov Weber in Android Architecture
Roman Chumachenko
Я могу ошибаться, но необходимость мокать финальные классы говорит о том, что вместо интерфейсов поставляются конкретные зависимости, я думаю, что само это не есть хорошо
Это да но например, я не делаю интерфейс для interactor/useCase считаю это излишни, но тестировать то надо его. Так что с мокито все ок работает.
источник

RC

Roman Chumachenko in Android Architecture
Yakov Weber
Это да но например, я не делаю интерфейс для interactor/useCase считаю это излишни, но тестировать то надо его. Так что с мокито все ок работает.
Не совсем понял. Тестировать его в смысле что презентер/вьюмодель, куда его поставляешь?
источник

YW

Yakov Weber in Android Architecture
Roman Chumachenko
Не совсем понял. Тестировать его в смысле что презентер/вьюмодель, куда его поставляешь?
Да
источник

RC

Roman Chumachenko in Android Architecture
Ага, понял
источник

QH

Quantum Harmonizer in Android Architecture
Yakov Weber
Это да но например, я не делаю интерфейс для interactor/useCase считаю это излишни, но тестировать то надо его. Так что с мокито все ок работает.
Лучший интерфейс — функциональный тип.
источник