* 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
		
			
				
	
	
		
			77 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			77 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 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 => {
 | |
|     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));
 | |
|   };
 | |
| };
 |