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