1 | import {
|
---|
2 | ADD_JOB_ADVERTISEMENT,
|
---|
3 | CURRENT_USER,
|
---|
4 | DELETE_JOB_ADVERTISEMENT,
|
---|
5 | EDIT_JOB_ADVERTISEMENT,
|
---|
6 | FETCH_JOB_ADVERTISEMENTS,
|
---|
7 | FETCH_JOB_ADVERTISEMENTS_BY_RECRUITER,
|
---|
8 | FILTER_JOB_ADVERTISEMENTS,
|
---|
9 | FILTER_JOB_ADVERTISEMENTS_BY_RECRUITER,
|
---|
10 | SET_LOGO_URL
|
---|
11 | } from "../actionTypes";
|
---|
12 | import {sortElementsBy} from "../../utils/utils";
|
---|
13 | import {useSelector} from "react-redux";
|
---|
14 |
|
---|
15 | const initialState = {
|
---|
16 | jobAdvertisements: [],
|
---|
17 | jobAdvertisementsByRecruiter: []
|
---|
18 | }
|
---|
19 |
|
---|
20 | let currentUser = JSON.parse(localStorage.getItem(CURRENT_USER))
|
---|
21 | export const JobAdvertisementReducer = (state = initialState, action) => {
|
---|
22 | let jobAdvertisements;
|
---|
23 | let jobAdvertisementsByRecruiter;
|
---|
24 | switch (action.type) {
|
---|
25 | case ADD_JOB_ADVERTISEMENT:
|
---|
26 |
|
---|
27 | return {
|
---|
28 | ...state,
|
---|
29 | jobAdvertisements: sortElementsBy([...state.jobAdvertisements, action.jobAdvertisement]),
|
---|
30 | jobAdvertisementsByRecruiter: sortElementsBy([...state.jobAdvertisementsByRecruiter, action.jobAdvertisement], "postedOn")
|
---|
31 | }
|
---|
32 | case EDIT_JOB_ADVERTISEMENT:
|
---|
33 | jobAdvertisements = state.jobAdvertisements.filter(jobAd => jobAd.id !== action.jobAdvertisement.id)
|
---|
34 | jobAdvertisementsByRecruiter = state.jobAdvertisementsByRecruiter.filter(jobAd => jobAd.id !== action.jobAdvertisement.id)
|
---|
35 |
|
---|
36 | return {
|
---|
37 | jobAdvertisements: sortElementsBy([...jobAdvertisements, action.jobAdvertisement], "postedOn"),
|
---|
38 | jobAdvertisementsByRecruiter: sortElementsBy([...jobAdvertisementsByRecruiter, action.jobAdvertisement], "postedOn")
|
---|
39 | }
|
---|
40 | case DELETE_JOB_ADVERTISEMENT:
|
---|
41 | jobAdvertisements = state.jobAdvertisements.filter(jobAd => jobAd.id !== action.id)
|
---|
42 | jobAdvertisementsByRecruiter = state.jobAdvertisementsByRecruiter.filter(jobAd => jobAd.id !== action.id)
|
---|
43 |
|
---|
44 | return {
|
---|
45 | jobAdvertisements: sortElementsBy([...jobAdvertisements], "postedOn"),
|
---|
46 | jobAdvertisementsByRecruiter: sortElementsBy([...jobAdvertisementsByRecruiter], "postedOn")
|
---|
47 | }
|
---|
48 |
|
---|
49 | case FETCH_JOB_ADVERTISEMENTS:
|
---|
50 | return {
|
---|
51 | ...state,
|
---|
52 | jobAdvertisements: sortElementsBy(action.jobAdvertisements, "postedOn")
|
---|
53 | }
|
---|
54 |
|
---|
55 |
|
---|
56 | case FETCH_JOB_ADVERTISEMENTS_BY_RECRUITER:
|
---|
57 | return {
|
---|
58 | ...state,
|
---|
59 | jobAdvertisementsByRecruiter: sortElementsBy(action.jobAdvertisementsByRecruiter, "postedOn")
|
---|
60 | }
|
---|
61 |
|
---|
62 | default:
|
---|
63 | return {
|
---|
64 | ...state,
|
---|
65 | };
|
---|
66 | }
|
---|
67 | }
|
---|
68 |
|
---|
69 | export default JobAdvertisementReducer |
---|