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';
|
|
|
|
let enabled = false;
|
|
|
|
let store = typeof window !== 'undefined' ?
|
|
|
|
window.localStorage :
|
|
|
|
false;
|
|
|
|
|
|
|
|
try {
|
|
|
|
const testKey = '__testKey__';
|
|
|
|
store.setItem(testKey, testKey);
|
2016-03-03 00:33:44 +00:00
|
|
|
enabled = store.getItem(testKey) === testKey;
|
2016-02-26 02:30:10 +00:00
|
|
|
store.removeItem(testKey);
|
|
|
|
} catch (e) {
|
|
|
|
enabled = !e;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!enabled) {
|
|
|
|
console.error(new Error('No localStorage found'));
|
|
|
|
}
|
|
|
|
|
|
|
|
export default () => ({ dispatch }) => next => {
|
|
|
|
return function localStorageSaga(action) {
|
|
|
|
if (!enabled) { return next(action); }
|
|
|
|
|
|
|
|
if (action.type === saveForm) {
|
|
|
|
const form = action.payload;
|
|
|
|
try {
|
|
|
|
store.setItem(formKey, JSON.stringify(form));
|
2016-03-03 00:33:44 +00:00
|
|
|
next(action);
|
|
|
|
return dispatch(saveCompleted(form));
|
|
|
|
} catch (error) {
|
2016-02-26 02:30:10 +00:00
|
|
|
return dispatch({
|
|
|
|
type: 'app.handleError',
|
2016-03-03 00:33:44 +00:00
|
|
|
error
|
2016-02-26 02:30:10 +00:00
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if (action.type === clearForm) {
|
|
|
|
store.removeItem(formKey);
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (action.type === loadSavedForm) {
|
|
|
|
const formString = store.getItem(formKey);
|
|
|
|
try {
|
|
|
|
const form = JSON.parse(formString);
|
|
|
|
return dispatch(loadSavedFormCompleted(form));
|
2016-03-03 00:33:44 +00:00
|
|
|
} catch (error) {
|
2016-02-26 02:30:10 +00:00
|
|
|
return dispatch({
|
|
|
|
type: 'app.handleError',
|
2016-03-03 00:33:44 +00:00
|
|
|
error
|
2016-02-26 02:30:10 +00:00
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return next(action);
|
|
|
|
};
|
|
|
|
};
|