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));
|
|
|
|
});
|
|
|
|
}
|