Documentation pt. I
This commit is contained in:
parent
1b225a979a
commit
b5fca98672
3 changed files with 182 additions and 0 deletions
|
@ -1,5 +1,60 @@
|
||||||
|
/*
|
||||||
|
|
||||||
|
`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';
|
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) {
|
export function changeLocalSetting(key, value) {
|
||||||
return dispatch => {
|
return dispatch => {
|
||||||
dispatch({
|
dispatch({
|
||||||
|
@ -12,6 +67,24 @@ export function changeLocalSetting(key, value) {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* * * * */
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
`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() {
|
export function saveLocalSettings() {
|
||||||
return (_, getState) => {
|
return (_, getState) => {
|
||||||
const localSettings = getState().get('local_settings').toJS();
|
const localSettings = getState().get('local_settings').toJS();
|
||||||
|
|
|
@ -1,3 +1,32 @@
|
||||||
|
/*
|
||||||
|
|
||||||
|
`reducers/local_settings`
|
||||||
|
========================
|
||||||
|
|
||||||
|
> For more information on the contents of this file, please contact:
|
||||||
|
>
|
||||||
|
> - kibigo! [@kibi@glitch.social]
|
||||||
|
|
||||||
|
This file provides our Redux reducers related to local settings. The
|
||||||
|
associated actions are:
|
||||||
|
|
||||||
|
- __`STORE_HYDRATE` :__
|
||||||
|
Used to hydrate the store with its initial values.
|
||||||
|
|
||||||
|
- __`LOCAL_SETTING_CHANGE` :__
|
||||||
|
Used to change the value of a local setting in the store.
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* * * * */
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
Imports
|
||||||
|
-------
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
// Package imports //
|
// Package imports //
|
||||||
import Immutable from 'immutable';
|
import Immutable from 'immutable';
|
||||||
|
|
||||||
|
@ -7,6 +36,18 @@ import { STORE_HYDRATE } from '../../mastodon/actions/store';
|
||||||
// Our imports //
|
// Our imports //
|
||||||
import { LOCAL_SETTING_CHANGE } from '../actions/local_settings';
|
import { LOCAL_SETTING_CHANGE } from '../actions/local_settings';
|
||||||
|
|
||||||
|
/* * * * */
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
initialState
|
||||||
|
------------
|
||||||
|
|
||||||
|
You can see the default values for all of our local settings here.
|
||||||
|
These are only used if no previously-saved values exist.
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
const initialState = Immutable.fromJS({
|
const initialState = Immutable.fromJS({
|
||||||
layout : 'auto',
|
layout : 'auto',
|
||||||
stretch : true,
|
stretch : true,
|
||||||
|
@ -30,8 +71,46 @@ const initialState = Immutable.fromJS({
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/* * * * */
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
Helper functions
|
||||||
|
----------------
|
||||||
|
|
||||||
|
### `hydrate(state, localSettings)`
|
||||||
|
|
||||||
|
`hydrate()` is used to hydrate the `local_settings` part of our store
|
||||||
|
with its initial values. The `state` will probably just be the
|
||||||
|
`initialState`, and the `localSettings` should be whatever we pulled
|
||||||
|
from `localStorage`.
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
const hydrate = (state, localSettings) => state.mergeDeep(localSettings);
|
const hydrate = (state, localSettings) => state.mergeDeep(localSettings);
|
||||||
|
|
||||||
|
/* * * * */
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
`localSettings(state = initialState, action)`
|
||||||
|
---------------------------------------------
|
||||||
|
|
||||||
|
This function holds our actual reducer.
|
||||||
|
|
||||||
|
If our action is `STORE_HYDRATE`, then we call `hydrate()` with the
|
||||||
|
`local_settings` property of the provided `action.state`.
|
||||||
|
|
||||||
|
If our action is `LOCAL_SETTING_CHANGE`, then we set `action.key` in
|
||||||
|
our state to the provided `action.value`. Note that `action.key` MUST
|
||||||
|
be an array, since we use `setIn()`.
|
||||||
|
|
||||||
|
> __Note :__
|
||||||
|
> We call this function `localSettings`, but its associated object
|
||||||
|
> in the store is `local_settings`.
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
export default function localSettings(state = initialState, action) {
|
export default function localSettings(state = initialState, action) {
|
||||||
switch(action.type) {
|
switch(action.type) {
|
||||||
case STORE_HYDRATE:
|
case STORE_HYDRATE:
|
||||||
|
|
|
@ -1,3 +1,33 @@
|
||||||
|
/*
|
||||||
|
|
||||||
|
`util/bio_metadata`
|
||||||
|
========================
|
||||||
|
|
||||||
|
> For more information on the contents of this file, please contact:
|
||||||
|
>
|
||||||
|
> - kibigo! [@kibi@glitch.social]
|
||||||
|
|
||||||
|
This file provides two functions for dealing with bio metadata. The
|
||||||
|
functions are:
|
||||||
|
|
||||||
|
- __`processBio(content)` :__
|
||||||
|
Processes `content` to extract any frontmatter. The returned
|
||||||
|
object has two properties: `text`, which contains the text of
|
||||||
|
`content` sans-frontmatter, and `metadata`, which is an array
|
||||||
|
of key-value pairs (in two-element array format). If no
|
||||||
|
frontmatter was provided in `content`, then `metadata` will be
|
||||||
|
an empty array.
|
||||||
|
|
||||||
|
- __`createBio(note, data)` :__
|
||||||
|
Reverses the process in `processBio()`; takes a `note` and an
|
||||||
|
array of two-element arrays (which should give keys and values)
|
||||||
|
and outputs a string containing a well-formed bio with
|
||||||
|
frontmatter.
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* * * * */
|
||||||
|
|
||||||
/*********************************************************************\
|
/*********************************************************************\
|
||||||
|
|
||||||
To my lovely code maintainers,
|
To my lovely code maintainers,
|
||||||
|
|
Loading…
Reference in a new issue