[19398ad] | 1 | import {
|
---|
| 2 | ADD_JOB_ADVERTISEMENT,
|
---|
[befb988] | 3 | CURRENT_USER,
|
---|
| 4 | DELETE_JOB_ADVERTISEMENT,
|
---|
| 5 | EDIT_JOB_ADVERTISEMENT,
|
---|
[19398ad] | 6 | FETCH_JOB_ADVERTISEMENTS,
|
---|
[befb988] | 7 | FETCH_JOB_ADVERTISEMENTS_BY_RECRUITER,
|
---|
| 8 | FILTER_JOB_ADVERTISEMENTS,
|
---|
| 9 | FILTER_JOB_ADVERTISEMENTS_BY_RECRUITER,
|
---|
| 10 | SET_LOGO_URL
|
---|
[19398ad] | 11 | } from "../actionTypes";
|
---|
[b248810] | 12 | import {sortElementsBy} from "../../utils/utils";
|
---|
[19398ad] | 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,
|
---|
[b248810] | 29 | jobAdvertisements: sortElementsBy([...state.jobAdvertisements, action.jobAdvertisement]),
|
---|
| 30 | jobAdvertisementsByRecruiter: sortElementsBy([...state.jobAdvertisementsByRecruiter, action.jobAdvertisement], "postedOn")
|
---|
[19398ad] | 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 {
|
---|
[b248810] | 37 | jobAdvertisements: sortElementsBy([...jobAdvertisements, action.jobAdvertisement], "postedOn"),
|
---|
| 38 | jobAdvertisementsByRecruiter: sortElementsBy([...jobAdvertisementsByRecruiter, action.jobAdvertisement], "postedOn")
|
---|
[19398ad] | 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 {
|
---|
[b248810] | 45 | jobAdvertisements: sortElementsBy([...jobAdvertisements], "postedOn"),
|
---|
| 46 | jobAdvertisementsByRecruiter: sortElementsBy([...jobAdvertisementsByRecruiter], "postedOn")
|
---|
[19398ad] | 47 | }
|
---|
| 48 |
|
---|
| 49 | case FETCH_JOB_ADVERTISEMENTS:
|
---|
| 50 | return {
|
---|
| 51 | ...state,
|
---|
[b248810] | 52 | jobAdvertisements: sortElementsBy(action.jobAdvertisements, "postedOn")
|
---|
[19398ad] | 53 | }
|
---|
| 54 |
|
---|
[28b3398] | 55 |
|
---|
[19398ad] | 56 | case FETCH_JOB_ADVERTISEMENTS_BY_RECRUITER:
|
---|
| 57 | return {
|
---|
| 58 | ...state,
|
---|
[b248810] | 59 | jobAdvertisementsByRecruiter: sortElementsBy(action.jobAdvertisementsByRecruiter, "postedOn")
|
---|
[19398ad] | 60 | }
|
---|
| 61 |
|
---|
| 62 | default:
|
---|
| 63 | return {
|
---|
| 64 | ...state,
|
---|
| 65 | };
|
---|
| 66 | }
|
---|
| 67 | }
|
---|
| 68 |
|
---|
| 69 | export default JobAdvertisementReducer |
---|