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

main
Last change on this file was befb988, checked in by 223021 <daniel.ilievski.2@…>, 12 days ago

Added an edit profile page for both job seekers and recruiters, where they can upload profile pictures/company logos and edit their profile data. Added profile page specifically for recruiters. Refactored existing code.

  • Property mode set to 100644
File size: 2.6 KB
Line 
1import {
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";
12import {sortElementsBy} from "../../utils/utils";
13import {useSelector} from "react-redux";
14
15const initialState = {
16 jobAdvertisements: [],
17 jobAdvertisementsByRecruiter: []
18}
19
20let currentUser = JSON.parse(localStorage.getItem(CURRENT_USER))
21export 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
69export default JobAdvertisementReducer
Note: See TracBrowser for help on using the repository browser.