Use upstream's settings for CW auto-expand and column swiping (#1770)
* Use Mastodon server-side settings for automatically expanding toots with CWs * Add modal warning about settings changes * Use Mastodon server-side settings for disabling swiping
This commit is contained in:
@@ -1,7 +1,6 @@
|
||||
import escapeTextContentForBrowser from 'escape-html';
|
||||
import emojify from 'flavours/glitch/util/emoji';
|
||||
import { unescapeHTML } from 'flavours/glitch/util/html';
|
||||
import { expandSpoilers } from 'flavours/glitch/util/initial_state';
|
||||
|
||||
const domParser = new DOMParser();
|
||||
|
||||
|
@@ -1,4 +1,46 @@
|
||||
import { expandSpoilers, disableSwiping } from 'flavours/glitch/util/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_auto_unfold = getState().getIn(['local_settings', 'content_warnings', 'auto_unfold']);
|
||||
const local_swipe_to_change_columns = getState().getIn(['local_settings', 'swipe_to_change_columns']);
|
||||
let changed_settings = [];
|
||||
|
||||
if (local_auto_unfold !== null && local_auto_unfold !== undefined) {
|
||||
if (local_auto_unfold === expandSpoilers) {
|
||||
dispatch(deleteLocalSetting(['content_warnings', 'auto_unfold']));
|
||||
} else {
|
||||
changed_settings.push('user_setting_expand_spoilers');
|
||||
}
|
||||
}
|
||||
|
||||
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('DEPRECATED_SETTINGS', {
|
||||
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 => {
|
||||
@@ -12,6 +54,17 @@ export function changeLocalSetting(key, value) {
|
||||
};
|
||||
};
|
||||
|
||||
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
|
||||
|
Reference in New Issue
Block a user