Passed
Push — dev ( 3e0f2e...2f5697 )
by
unknown
06:22
created

resources/assets/js/store/Manager/managerReducer.ts   A

Complexity

Total Complexity 1
Complexity/F 0

Size

Lines of Code 78
Function Count 0

Duplication

Duplicated Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
wmc 1
eloc 62
mnd 1
bc 1
fnc 0
dl 0
loc 78
rs 10
bpm 0
cpm 0
noi 0
c 0
b 0
f 0
1
import { Manager } from "../../models/types";
2
import {
3
  ManagerAction,
4
  FETCH_MANAGER_SUCCEEDED,
5
  SET_SELECTED_MANAGER,
6
  UPDATE_MANAGER_SUCCEEDED,
7
  FETCH_CURRENT_MANAGER_SUCCEEDED,
8
  FETCH_MANAGER_STARTED,
9
  UPDATE_MANAGER_STARTED,
10
  FETCH_CURRENT_MANAGER_STARTED,
11
  FETCH_MANAGER_FAILED,
12
  FETCH_CURRENT_MANAGER_FAILED,
13
  UPDATE_MANAGER_FAILED,
14
} from "./managerActions";
15
16
export interface ManagerState {
17
  managersById: {
18
    [id: number]: Manager;
19
  };
20
  selectedManagerId: number | null;
21
  managerUpdating: {
22
    [id: number]: boolean;
23
  };
24
}
25
26
export const initManagerState = (): ManagerState => ({
27
  managersById: {},
28
  selectedManagerId: null,
29
  managerUpdating: {},
30
});
31
32
export const managerReducer = (
33
  state = initManagerState(),
34
  action: ManagerAction,
35
): ManagerState => {
36
  switch (action.type) {
37
    case FETCH_MANAGER_STARTED:
38
    case UPDATE_MANAGER_STARTED:
39
      return {
40
        ...state,
41
        managerUpdating: {
42
          ...state.managerUpdating,
43
          [action.meta.id]: true,
44
        },
45
      };
46
    case FETCH_MANAGER_SUCCEEDED:
47
    case FETCH_CURRENT_MANAGER_SUCCEEDED:
48
    case UPDATE_MANAGER_SUCCEEDED:
49
      return {
50
        ...state,
51
        managersById: {
52
          ...state.managersById,
53
          [action.payload.id]: action.payload,
54
        },
55
        managerUpdating: {
56
          ...state.managerUpdating,
57
          [action.payload.id]: false,
58
        },
59
      };
60
    case FETCH_MANAGER_FAILED:
61
    case UPDATE_MANAGER_FAILED:
62
      return {
63
        ...state,
64
        managerUpdating: {
65
          ...state.managerUpdating,
66
          [action.meta.id]: false,
67
        },
68
      };
69
    case SET_SELECTED_MANAGER:
70
      return {
71
        ...state,
72
        selectedManagerId: action.payload.managerId,
73
      };
74
    default:
75
      return state;
76
  }
77
};
78