|
|
- /*
-
- `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));
- };
- };
|