# Redux Chat Homework.
Допилить чат используя **Redux**.
## Ветвь `chat`
Ветка `chat` и редьюсер `chatReducer` предназначены для работы части
хранилища, ответственного за историю сообщений. Для облегчения
дочитки сообщений можно использовать `...` в текущий массив. Если не уверены
что у вас нет "перекрытия" между текущим и приходящим массивами - используйте
ассоциативный массив по ключу `id` из СУБД вместо массива сообщений.
### `chatReducer`
Должен поддерживать следующие `action.type`:
- `CHAT_CLEAR` - очищает хранилище при смене чатрума. Это же состояние должно быть в начале работы.
- `CHAT_MESSAGES` - добавляет новые сообщения в хранилище. В объект действия нужно добавить результат промиса получения сообщений с сервера.
### ``
Компонент `Chat` должен быть подписан на ветвь `chat` хранилища используя `` и `connect`.
Можете создать компонент `ChatConnected` или перезаписать `Chat`:
```jsx
Chat = connect(mapStateToProps)(Chat) //Chat component override by redux component-wrapper
```
Создайте функцию `mapStateToProps`, которая создает пропс `messages` из ветви `chat`. Используйте `map` по `this.messagesБЛАБЛА` для формирования
массива ``.
### `setInterval`
Куда-нибудь (в `componentWillMount` компонента `Chat` или глобально) вставьте `setInterval` который будет посылать запрос за сообщениями
и складывать их в хранилище используя `dispatch({type: 'CHAT_MESSAGES', данные)` или **actionCreator**. Перед запросом
спросите у `store` текущий чатрум используя метод `getState()`.
### `messageId`
Можно пока 0, но лучше сделать в ветви `chat` хранилища ключ для этих целей.
### Очистка чата
Должна выполняться по действию `CHAT_CLEAR` (а также `CHATROOM_SET`). Может обнулять `messageId` при его наличии.
## Ветвь `chatRooms`
Эта ветвь нужна для хранения списка комнат. Достаточно действия `ROOMS` которое выполнится
при чтении списка комнат (в `then` соответственного `fetch`)
## Ветвь `currentChatRoom`
Эта ветвь с единственным значением должна хранить `id` текущего чатрума. Редьюсер предусматирвает
единственный **action** `CHATROOM_SET`. Этот же тип действия должен вызывать очистку
сообщений чата в соседнем редьюсере.
### ``
Просто подписать на ветвь `chatRooms`. Пока оно `undefined` - пусть пишет `Loading`. После
получения массива - формировать `