49 lines
1.5 KiB
JavaScript
49 lines
1.5 KiB
JavaScript
|
import { getStateForContext } from './utils';
|
||
|
|
||
|
/**
|
||
|
* Selector for retrieving a specific query-state for the given context.
|
||
|
*
|
||
|
* @param {Object} state Current state.
|
||
|
* @param {string} context Context for the query-state being retrieved.
|
||
|
* @param {string} queryKey Key for the specific query-state item.
|
||
|
* @param {*} defaultValue Default value for the query-state key if it doesn't
|
||
|
* currently exist in state.
|
||
|
*
|
||
|
* @return {*} The currently stored value or the defaultValue if not present.
|
||
|
*/
|
||
|
export const getValueForQueryKey = (
|
||
|
state,
|
||
|
context,
|
||
|
queryKey,
|
||
|
defaultValue = {}
|
||
|
) => {
|
||
|
let stateContext = getStateForContext( state, context );
|
||
|
if ( stateContext === null ) {
|
||
|
return defaultValue;
|
||
|
}
|
||
|
stateContext = JSON.parse( stateContext );
|
||
|
return typeof stateContext[ queryKey ] !== 'undefined'
|
||
|
? stateContext[ queryKey ]
|
||
|
: defaultValue;
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* Selector for retrieving the query-state for the given context.
|
||
|
*
|
||
|
* @param {Object} state The current state.
|
||
|
* @param {string} context The context for the query-state being retrieved.
|
||
|
* @param {*} defaultValue The default value to return if there is no state for
|
||
|
* the given context.
|
||
|
*
|
||
|
* @return {*} The currently stored query-state for the given context or
|
||
|
* defaultValue if not present in state.
|
||
|
*/
|
||
|
export const getValueForQueryContext = (
|
||
|
state,
|
||
|
context,
|
||
|
defaultValue = {}
|
||
|
) => {
|
||
|
const stateContext = getStateForContext( state, context );
|
||
|
return stateContext === null ? defaultValue : JSON.parse( stateContext );
|
||
|
};
|