Message<ContentT>(заворачиваем вAnyMessage)ChatNotificationChatAccessory
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]от провайдера и релоадит коллекцию по диффам