import { disableSwiping } from "flavours/glitch/initial_state"; import { openModal } from "./modal"; export const LOCAL_SETTING_CHANGE = "LOCAL_SETTING_CHANGE"; export const LOCAL_SETTING_DELETE = "LOCAL_SETTING_DELETE"; export function checkDeprecatedLocalSettings() { return (dispatch, getState) => { const local_swipe_to_change_columns = getState().getIn(["local_settings", "swipe_to_change_columns"]); let changed_settings = []; if (local_swipe_to_change_columns !== null && local_swipe_to_change_columns !== undefined) { if (local_swipe_to_change_columns === !disableSwiping) { dispatch(deleteLocalSetting(["swipe_to_change_columns"])); } else { changed_settings.push("user_setting_disable_swiping"); } } if (changed_settings.length > 0) { dispatch(openModal({ modalType: "DEPRECATED_SETTINGS", modalProps: { settings: changed_settings, onConfirm: () => dispatch(clearDeprecatedLocalSettings()), }, })); } }; } export function clearDeprecatedLocalSettings() { return (dispatch) => { dispatch(deleteLocalSetting(["content_warnings", "auto_unfold"])); dispatch(deleteLocalSetting(["swipe_to_change_columns"])); }; } export function changeLocalSetting(key, value) { return dispatch => { dispatch({ type: LOCAL_SETTING_CHANGE, key, value, }); dispatch(saveLocalSettings()); }; } export function deleteLocalSetting(key) { return dispatch => { dispatch({ type: LOCAL_SETTING_DELETE, key, }); dispatch(saveLocalSettings()); }; } // __TODO :__ // Right now `saveLocalSettings()` doesn't keep track of which user // is currently signed in, but it might be better to give each user // their *own* local settings. export function saveLocalSettings() { return (_, getState) => { const localSettings = getState().get("local_settings").toJS(); localStorage.setItem("mastodon-settings", JSON.stringify(localSettings)); }; }