Passed
Push — master ( 795d23...149f73 )
by Grant
06:52 queued 12s
created

resources/assets/js/store/JobPosterStatus/jobStatusReducer.ts   A

Complexity

Total Complexity 1
Complexity/F 0

Size

Lines of Code 34
Function Count 0

Duplication

Duplicated Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
wmc 1
eloc 27
c 0
b 0
f 0
dl 0
loc 34
rs 10
mnd 1
bc 1
fnc 0
bpm 0
cpm 0
noi 0
1
import { JobPosterStatus } from "../../models/types";
2
import { JobPosterStatusAction, FETCH_JOB_POSTER_STATUSES_STARTED, FETCH_JOB_POSTER_STATUSES_SUCCEEDED, FETCH_JOB_POSTER_STATUSES_FAILED } from "./jobStatusActions";
3
import { mapToObject, getId } from "../../helpers/queries";
4
5
export interface JobStatusState {
6
  byId: {
7
    [id: number]: JobPosterStatus;
8
  };
9
  loading: boolean;
10
}
11
12
export const initJobStatusState = (): JobStatusState => ({
13
  byId: [],
14
  loading: false,
15
});
16
17
const jobStatusReducer = (
18
  state = initJobStatusState(),
19
  action: JobPosterStatusAction,
20
): JobStatusState => {
21
  switch (action.type) {
22
    case FETCH_JOB_POSTER_STATUSES_STARTED:
23
      return { ...state, loading: true };
24
    case FETCH_JOB_POSTER_STATUSES_SUCCEEDED:
25
      return { byId: mapToObject(action.payload, getId), loading: false };
26
    case FETCH_JOB_POSTER_STATUSES_FAILED:
27
      return { ...state, loading: false };
28
    default:
29
      return state;
30
  }
31
};
32
33
export default jobStatusReducer;
34