freeCodeCamp/client/sagas/local-storage-saga.js

44 lines
973 B
JavaScript
Raw Normal View History

2016-04-25 04:54:48 +00:00
import store from 'store';
2016-02-26 02:30:10 +00:00
import {
saveForm,
clearForm,
loadSavedForm
2016-03-03 00:33:44 +00:00
} from '../../common/app/routes/Jobs/redux/types';
2016-02-26 02:30:10 +00:00
import {
2016-03-03 00:33:44 +00:00
saveCompleted,
2016-02-26 02:30:10 +00:00
loadSavedFormCompleted
2016-03-03 00:33:44 +00:00
} from '../../common/app/routes/Jobs/redux/actions';
2016-02-26 02:30:10 +00:00
const formKey = 'newJob';
2016-04-25 04:54:48 +00:00
export default function localStorageSaga(action$) {
return action$
.filter(action => {
return action.type === saveForm ||
action.type === clearForm ||
action.type === loadSavedForm;
})
.map(action => {
if (action.type === saveForm) {
const form = action.payload;
try {
store.setItem(formKey, form);
return saveCompleted(form);
} catch (error) {
return {
type: 'app.handleError',
error
};
}
2016-02-26 02:30:10 +00:00
}
2016-04-25 04:54:48 +00:00
if (action.type === clearForm) {
store.removeItem(formKey);
return null;
2016-02-26 02:30:10 +00:00
}
2016-04-25 04:54:48 +00:00
return loadSavedFormCompleted(store.getItem(formKey));
});
}