source: jobvista-frontend/src/redux/reducers/applicationReducer.js@ 4d97b63

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

Implemented Google login, additional file uploads, response messages and email notifications

  • Property mode set to 100644
File size: 2.3 KB
Line 
1import {
2 CURRENT_USER,
3 FETCH_APPLICATIONS_BY_JOB_ID,
4 FETCH_APPLICATIONS_BY_JOB_SEEKER_ID, FILTER_APPLICATIONS_BY_JOB_ID, FILTER_APPLICATIONS_BY_JOB_SEEKER_ID,
5 SUBMIT_APPLICATION, UPDATE_APPLICATION, UPDATE_APPLICATION_STATUS
6} from "../actionTypes";
7
8const initialState = {
9 applicationsByJobSeeker: [],
10 applicationsByJobAdId: []
11}
12
13let currentUser = JSON.parse(localStorage.getItem(CURRENT_USER))
14
15export const ApplicationReducer = (state = initialState, action) => {
16 let applications;
17
18 switch (action.type) {
19 case SUBMIT_APPLICATION:
20 return {
21 ...state,
22 applicationsByJobSeeker: [...state.applicationsByJobSeeker, action.application]
23 }
24 case UPDATE_APPLICATION:
25 return {
26 ...state,
27 applicationsByJobSeeker: state.applicationsByJobSeeker.map(application =>
28 application.id === action.application.id ?
29 action.application : // Replace with the updated application
30 application // Keep the old one
31 )
32 }
33 case UPDATE_APPLICATION_STATUS:
34 return {
35 ...state,
36 applicationsByJobAdId: state.applicationsByJobAdId.map(application =>
37 application.id === action.application.id ?
38 {...application, status: action.application.status} :
39 application
40 )
41 }
42 case FETCH_APPLICATIONS_BY_JOB_ID:
43 return {
44 ...state,
45 applicationsByJobAdId: action.applicationsByJobAdId
46 }
47 case FILTER_APPLICATIONS_BY_JOB_ID:
48 return {
49 ...state,
50 applicationsByJobAdId: action.applicationsByJobAdId
51 }
52
53 case FETCH_APPLICATIONS_BY_JOB_SEEKER_ID:
54 return {
55 ...state,
56 applicationsByJobSeeker: action.applicationsByJobSeeker
57 }
58 case FILTER_APPLICATIONS_BY_JOB_SEEKER_ID:
59 return {
60 ...state,
61 applicationsByJobSeeker: action.applicationsByJobSeeker
62 }
63 default:
64 return {
65 ...state,
66 };
67 }
68}
69
70export default ApplicationReducer
Note: See TracBrowser for help on using the repository browser.