This also prevents the 'Can't verify CSRF token authenticity' errors that popup whenever you modify a 'web setting', such as the column layout. ~~NB: There is something funky going on. This works 99% of the time and sometimes doesn't?~~ Fixed now, there was two bits of stuff in verify_state doing the same thing, removed the duplicate. Reviewed-on: https://codeberg.org/superseriousbusiness/masto-fe-standalone/pulls/2 Co-authored-by: julia <midnight@trainwit.ch> Co-committed-by: julia <midnight@trainwit.ch>
36 lines
832 B
JavaScript
36 lines
832 B
JavaScript
import { debounce } from 'lodash';
|
|
|
|
import api from '../api';
|
|
|
|
import { showAlertForError } from './alerts';
|
|
|
|
export const SETTING_CHANGE = 'SETTING_CHANGE';
|
|
export const SETTING_SAVE = 'SETTING_SAVE';
|
|
|
|
export function changeSetting(path, value) {
|
|
return dispatch => {
|
|
dispatch({
|
|
type: SETTING_CHANGE,
|
|
path,
|
|
value,
|
|
});
|
|
|
|
dispatch(saveSettings());
|
|
};
|
|
}
|
|
|
|
const debouncedSave = debounce((dispatch, getState) => {
|
|
if (getState().getIn(['settings', 'saved'])) {
|
|
return;
|
|
}
|
|
|
|
const data = getState().get('settings').filter((_, path) => path !== 'saved').toJS();
|
|
|
|
localStorage.setItem('web_settings', JSON.stringify(data));
|
|
dispatch({ type: SETTING_SAVE });
|
|
}, 5000, { trailing: true });
|
|
|
|
export function saveSettings() {
|
|
return (dispatch, getState) => debouncedSave(dispatch, getState);
|
|
}
|