Files
masto-fe-archos/app/javascript/flavours/glitch/actions/local_settings.js
2025-10-12 13:42:02 +02:00

73 lines
2.0 KiB
JavaScript

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