Skip to content

Commit 203122f

Browse files
refactor project reducers and actions using redux toolkit
1 parent ae8f517 commit 203122f

File tree

3 files changed

+64
-77
lines changed

3 files changed

+64
-77
lines changed

client/constants.js

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,15 +23,10 @@ export const SETTINGS_UPDATED = 'SETTINGS_UPDATED';
2323
export const API_KEY_CREATED = 'API_KEY_CREATED';
2424
export const API_KEY_REMOVED = 'API_KEY_REMOVED';
2525

26-
export const SET_PROJECT_NAME = 'SET_PROJECT_NAME';
2726
export const RENAME_PROJECT = 'RENAME_PROJECT';
2827

2928
export const PROJECT_SAVE_SUCCESS = 'PROJECT_SAVE_SUCCESS';
3029
export const PROJECT_SAVE_FAIL = 'PROJECT_SAVE_FAIL';
31-
export const NEW_PROJECT = 'NEW_PROJECT';
32-
export const RESET_PROJECT = 'RESET_PROJECT';
33-
34-
export const SET_PROJECT = 'SET_PROJECT';
3530
export const SET_PROJECTS = 'SET_PROJECTS';
3631

3732
export const SET_COLLECTIONS = 'SET_COLLECTIONS';
@@ -119,7 +114,6 @@ export const ERROR = 'ERROR';
119114
export const JUST_OPENED_PROJECT = 'JUST_OPENED_PROJECT';
120115
export const RESET_JUST_OPENED_PROJECT = 'RESET_JUST_OPENED_PROJECT';
121116

122-
export const SET_PROJECT_SAVED_TIME = 'SET_PROJECT_SAVED_TIME';
123117
export const RESET_PROJECT_SAVED_TIME = 'RESET_PROJECT_SAVED_TIME';
124118
export const SET_PREVIOUS_PATH = 'SET_PREVIOUS_PATH';
125119
export const SHOW_ERROR_MODAL = 'SHOW_ERROR_MODAL';
@@ -137,7 +131,4 @@ export const SET_SORT_PARAMS = 'SET_SORT_PARAMS';
137131
export const SET_SEARCH_TERM = 'SET_SEARCH_TERM';
138132
export const CLOSE_SKETCHLIST_MODAL = 'CLOSE_SKETCHLIST_MODAL';
139133

140-
export const START_SAVING_PROJECT = 'START_SAVING_PROJECT';
141-
export const END_SAVING_PROJECT = 'END_SAVING_PROJECT';
142-
143134
export const SET_COOKIE_CONSENT = 'SET_COOKIE_CONSENT';

client/modules/IDE/actions/project.js

Lines changed: 16 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,22 @@ import {
1515
} from './ide';
1616
import { clearState, saveState } from '../../../persistState';
1717

18+
import {
19+
setProjectName,
20+
startSavingProject,
21+
endSavingProject,
22+
resetProject,
23+
setProjectSavedTime
24+
} from '../reducers/project';
25+
26+
export {
27+
setProjectName,
28+
startSavingProject,
29+
endSavingProject,
30+
resetProject,
31+
setProjectSavedTime
32+
} from '../reducers/project';
33+
1834
const ROOT_URL = getConfig('API_URL');
1935
const S3_BUCKET_URL_BASE = getConfig('S3_BUCKET_URL_BASE');
2036
const S3_BUCKET = getConfig('S3_BUCKET');
@@ -28,13 +44,6 @@ export function setProject(project) {
2844
};
2945
}
3046

31-
export function setProjectName(name) {
32-
return {
33-
type: ActionTypes.SET_PROJECT_NAME,
34-
name
35-
};
36-
}
37-
3847
export function projectSaveFail(error) {
3948
return {
4049
type: ActionTypes.PROJECT_SAVE_FAIL,
@@ -88,18 +97,6 @@ export function clearPersistedState() {
8897
};
8998
}
9099

91-
export function startSavingProject() {
92-
return {
93-
type: ActionTypes.START_SAVING_PROJECT
94-
};
95-
}
96-
97-
export function endSavingProject() {
98-
return {
99-
type: ActionTypes.END_SAVING_PROJECT
100-
};
101-
}
102-
103100
export function projectSaveSuccess() {
104101
return {
105102
type: ActionTypes.PROJECT_SAVE_SUCCESS
@@ -262,12 +259,6 @@ export function exportProjectAsZip(projectId) {
262259
win.focus();
263260
}
264261

265-
export function resetProject() {
266-
return {
267-
type: ActionTypes.RESET_PROJECT
268-
};
269-
}
270-
271262
export function newProject() {
272263
browserHistory.push('/', { confirmed: true });
273264
return resetProject();
@@ -347,13 +338,6 @@ export function cloneProject(project) {
347338
};
348339
}
349340

350-
export function setProjectSavedTime(updatedAt) {
351-
return {
352-
type: ActionTypes.SET_PROJECT_SAVED_TIME,
353-
value: updatedAt
354-
};
355-
}
356-
357341
export function changeProjectName(id, newName) {
358342
return (dispatch, getState) => {
359343
const state = getState();
Lines changed: 48 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import * as ActionTypes from '../../../constants';
1+
import { createSlice } from '@reduxjs/toolkit';
22
import { generateProjectName } from '../../../utils/generateRandomName';
33

44
const initialState = () => {
@@ -12,40 +12,52 @@ const initialState = () => {
1212
};
1313
};
1414

15-
const project = (state, action) => {
16-
if (state === undefined) {
17-
state = initialState(); // eslint-disable-line
15+
const projectSlice = createSlice({
16+
name: 'project',
17+
initialState,
18+
reducers: {
19+
setProjectName(state, action) {
20+
state.name = action.payload;
21+
},
22+
newProject(state, action) {
23+
const { id, name, updatedAt, owner } = action.payload;
24+
state.id = id;
25+
state.name = name;
26+
state.updatedAt = updatedAt;
27+
state.owner = owner;
28+
state.isSaving = false;
29+
},
30+
setProject(state, action) {
31+
const { id, name, updatedAt, owner } = action.payload;
32+
state.id = id;
33+
state.name = name;
34+
state.updatedAt = updatedAt;
35+
state.owner = owner;
36+
state.isSaving = false;
37+
},
38+
resetProject(state) {
39+
Object.assign(state, initialState);
40+
},
41+
setProjectSavedTime(state, action) {
42+
state.updatedAt = action.payload;
43+
},
44+
startSavingProject(state) {
45+
state.isSaving = true;
46+
},
47+
endSavingProject(state) {
48+
state.isSaving = false;
49+
}
1850
}
19-
switch (action.type) {
20-
case ActionTypes.SET_PROJECT_NAME:
21-
return Object.assign({}, { ...state }, { name: action.name });
22-
case ActionTypes.NEW_PROJECT:
23-
return {
24-
id: action.project.id,
25-
name: action.project.name,
26-
updatedAt: action.project.updatedAt,
27-
owner: action.owner,
28-
isSaving: false
29-
};
30-
case ActionTypes.SET_PROJECT:
31-
return {
32-
id: action.project.id,
33-
name: action.project.name,
34-
updatedAt: action.project.updatedAt,
35-
owner: action.owner,
36-
isSaving: false
37-
};
38-
case ActionTypes.RESET_PROJECT:
39-
return initialState();
40-
case ActionTypes.SET_PROJECT_SAVED_TIME:
41-
return Object.assign({}, state, { updatedAt: action.value });
42-
case ActionTypes.START_SAVING_PROJECT:
43-
return Object.assign({}, state, { isSaving: true });
44-
case ActionTypes.END_SAVING_PROJECT:
45-
return Object.assign({}, state, { isSaving: false });
46-
default:
47-
return state;
48-
}
49-
};
51+
});
52+
53+
export const {
54+
setProjectName,
55+
newProject,
56+
setProject,
57+
resetProject,
58+
setProjectSavedTime,
59+
startSavingProject,
60+
endSavingProject
61+
} = projectSlice.actions;
5062

51-
export default project;
63+
export default projectSlice.reducer;

0 commit comments

Comments
 (0)