source: jobvista-frontend/src/redux/reducers/jobAdvertisementReducer.js@ 28b3398

main
Last change on this file since 28b3398 was 28b3398, checked in by 223021 <daniel.ilievski.2@…>, 4 weeks ago

Implemented job application functionality, added job advertisement filtering and replaced text areas with editors

  • Property mode set to 100644
File size: 2.6 KB
Line 
1import {
2 ADD_JOB_ADVERTISEMENT,
3 CURRENT_USER, DELETE_JOB_ADVERTISEMENT, EDIT_JOB_ADVERTISEMENT,
4 FETCH_JOB_ADVERTISEMENTS,
5 FETCH_JOB_ADVERTISEMENTS_BY_RECRUITER, FILTER_JOB_ADVERTISEMENTS, FILTER_JOB_ADVERTISEMENTS_BY_RECRUITER
6} from "../actionTypes";
7import {sortElementsByDateCreated} from "../../utils/utils";
8import {useSelector} from "react-redux";
9
10const initialState = {
11 jobAdvertisements: [],
12 jobAdvertisementsByRecruiter: []
13}
14
15let currentUser = JSON.parse(localStorage.getItem(CURRENT_USER))
16export 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,
24 jobAdvertisements: sortElementsByDateCreated([...state.jobAdvertisements, action.jobAdvertisement]),
25 jobAdvertisementsByRecruiter: sortElementsByDateCreated([...state.jobAdvertisementsByRecruiter, action.jobAdvertisement])
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 {
32 jobAdvertisements: sortElementsByDateCreated([...jobAdvertisements, action.jobAdvertisement]),
33 jobAdvertisementsByRecruiter: sortElementsByDateCreated([...jobAdvertisementsByRecruiter, action.jobAdvertisement])
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 {
40 jobAdvertisements: sortElementsByDateCreated([...jobAdvertisements]),
41 jobAdvertisementsByRecruiter: sortElementsByDateCreated([...jobAdvertisementsByRecruiter])
42 }
43
44 case FETCH_JOB_ADVERTISEMENTS:
45 return {
46 ...state,
47 jobAdvertisements: sortElementsByDateCreated(action.jobAdvertisements)
48 }
49
50
51 case FETCH_JOB_ADVERTISEMENTS_BY_RECRUITER:
52 return {
53 ...state,
54 jobAdvertisementsByRecruiter: sortElementsByDateCreated(action.jobAdvertisementsByRecruiter)
55 }
56
57 default:
58 return {
59 ...state,
60 };
61 }
62}
63
64export default JobAdvertisementReducer
Note: See TracBrowser for help on using the repository browser.