Documentation pt. I
This commit is contained in:
		
							parent
							
								
									5770d461b2
								
							
						
					
					
						commit
						35fda84ba8
					
				
					 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