93 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			93 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /*
 | |
| 
 | |
| `actions/local_settings`
 | |
| ========================
 | |
| 
 | |
| >   For more information on the contents of this file, please contact:
 | |
| >
 | |
| >   - kibigo! [@kibi@glitch.social]
 | |
| 
 | |
| This file provides our Redux actions related to local settings. It
 | |
| consists of the following:
 | |
| 
 | |
|  -  __`changesLocalSetting(key, value)` :__
 | |
|     Changes the local setting with the given `key` to the given
 | |
|     `value`. `key` **MUST** be an array of strings, as required by
 | |
|     `Immutable.Map.prototype.getIn()`.
 | |
| 
 | |
|  -  __`saveLocalSettings()` :__
 | |
|     Saves the local settings to `localStorage` as a JSON object. We
 | |
|     shouldn't ever need to call this ourselves.
 | |
| 
 | |
| */
 | |
| 
 | |
| //  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
 | |
| 
 | |
| /*
 | |
| 
 | |
| Constants:
 | |
| ----------
 | |
| 
 | |
| We provide the following constants:
 | |
| 
 | |
|  -  __`LOCAL_SETTING_CHANGE` :__
 | |
|     This string constant is used to dispatch a setting change to our
 | |
|     reducer in `reducers/local_settings`, where the setting is
 | |
|     actually changed.
 | |
| 
 | |
| */
 | |
| 
 | |
| export const LOCAL_SETTING_CHANGE = 'LOCAL_SETTING_CHANGE';
 | |
| 
 | |
| //  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
 | |
| 
 | |
| /*
 | |
| 
 | |
| `changeLocalSetting(key, value)`:
 | |
| ---------------------------------
 | |
| 
 | |
| Changes the local setting with the given `key` to the given `value`.
 | |
| `key` **MUST** be an array of strings, as required by
 | |
| `Immutable.Map.prototype.getIn()`.
 | |
| 
 | |
| To accomplish this, we just dispatch a `LOCAL_SETTING_CHANGE` to our
 | |
| reducer in `reducers/local_settings`.
 | |
| 
 | |
| */
 | |
| 
 | |
| export function changeLocalSetting(key, value) {
 | |
|   return dispatch => {
 | |
|     dispatch({
 | |
|       type: LOCAL_SETTING_CHANGE,
 | |
|       key,
 | |
|       value,
 | |
|     });
 | |
| 
 | |
|     dispatch(saveLocalSettings());
 | |
|   };
 | |
| };
 | |
| 
 | |
| //  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
 | |
| 
 | |
| /*
 | |
| 
 | |
| `saveLocalSettings()`:
 | |
| ----------------------
 | |
| 
 | |
| Saves the local settings to `localStorage` as a JSON object.
 | |
| `changeLocalSetting()` calls this whenever it changes a setting. We
 | |
| shouldn't ever need to call this ourselves.
 | |
| 
 | |
| >   __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));
 | |
|   };
 | |
| };
 |