burger-online

Форк
0
51 строка · 1.4 Кб
1
import {createReducer} from '@reduxjs/toolkit'
2
import {wsStatus} from '../../utils/constants'
3
import {currectOrderItems} from '../orders-verification'
4
import {RootState} from '../store'
5
import {
6
  feedOrdersWsClose,
7
  feedOrdersWsConnecting,
8
  feedOrdersWsError,
9
  feedOrdersWsMessage,
10
  feedOrdersWsOpen,
11
} from './actions'
12
import {TFeedOrderState} from './types'
13

14
const initialState: TFeedOrderState = {
15
  wsStatusOrders: wsStatus.offline,
16
  orders: [],
17
  statistics: {
18
    total: 0,
19
    totalToday: 0,
20
  },
21
  connectingError: null,
22
}
23

24
export const feedOrdersReducer = createReducer(initialState, builder => {
25
  builder
26
    .addCase(feedOrdersWsConnecting, state => {
27
      state.wsStatusOrders = wsStatus.connecting
28
    })
29
    .addCase(feedOrdersWsOpen, state => {
30
      state.wsStatusOrders = wsStatus.online
31
    })
32
    .addCase(feedOrdersWsClose, state => {
33
      state.wsStatusOrders = wsStatus.offline
34
    })
35
    .addCase(feedOrdersWsError, (state, {payload}) => {
36
      if (payload) {
37
        state.connectingError = payload
38
      }
39
    })
40
    .addCase(feedOrdersWsMessage, (state, {payload}) => {
41
      if (payload) {
42
        const {orders, total, totalToday, success} = payload
43
        if (success) {
44
          state.statistics = {total, totalToday}
45
          state.orders = currectOrderItems(orders)
46
        }
47
      }
48
    })
49
})
50

51
export const feedOrderStore = (store: RootState) => store.feedOrders
52

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.