Message<ContentT>
(заворачиваем вAnyMessage
)ChatNotification
ChatAccessory
MessageStore
— основная модель. Redux Store (cостоит из компонентState
,Action
иReducer
). Для удобста компоненты разбиты наLocal
иFeed
составляющие. Принцип работы:- Клиент посылает экшн стору:
store.dispatch(.someAction(someParam))
- Стор обрабатывает экшн с помощью pure-редусера: (
Action
,State
) ->State
- Клиент обзервит изменения стейта стора\
- Клиент посылает экшн стору:
У стора нет зависимостей. В нем содержится только логика перехода между стейтами данных
MessageStore.Flow
— набор из фунций, содержащих бизнес-логику.
НаStore
накидываются флоу: пост-обработчики выполненных им экшнов. Они позволяют эмиттить потоки новых экшнов.
Примеры:.subscribeOnFeed
->.updateFeed
,.updateFeed
,.updateFeed
, ....tryLoadNextPage
->.startLoadNextPage
,.finishLoadNextPage
\
Флоу накладываются на стор при сборке. Они спрятаны, и для клиента взаимодействие со стором по проежнему остается в рамках store.dispatch(.someAction)
. У флоу могут быть зависимости и сайд-эффекты. Например, флоу из примера (2) использует messageService
для похода за списком сообщений
-
ChatUnitCollectionProvider
собирает модельную часть UI чата
In: энтити сMessageStore
иChatNotificationModel
Out: список из юнитов (ChatUnit
) -
CollectionReloadCoordinator
подписывается на изменения[ChatUnit]
от провайдера и релоадит коллекцию по диффам