Total Complexity | 1 |
Complexity/F | 0 |
Lines of Code | 34 |
Function Count | 0 |
Duplicated Lines | 0 |
Ratio | 0 % |
Changes | 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 |