File tree Expand file tree Collapse file tree 1 file changed +10
-6
lines changed
packages/react/src/context Expand file tree Collapse file tree 1 file changed +10
-6
lines changed Original file line number Diff line number Diff line change @@ -21,7 +21,7 @@ export type ContextMutation = {
2121 * @param updatedContext
2222 * @returns Promise for awaiting the context update
2323 */
24- setContext : ( updatedContext : EvaluationContext ) => Promise < void > ;
24+ setContext : ( updatedContext : EvaluationContext | ( ( previousContext : EvaluationContext ) => EvaluationContext ) ) => Promise < void > ;
2525} ;
2626
2727/**
@@ -34,14 +34,18 @@ export function useContextMutator(options: ContextMutationOptions = { defaultCon
3434 const { domain } = useContext ( Context ) || { } ;
3535 const previousContext = useRef < null | EvaluationContext > ( null ) ;
3636
37- const setContext = useCallback ( async ( updatedContext : EvaluationContext ) => {
38- if ( previousContext . current !== updatedContext ) {
37+ const setContext = useCallback ( async ( updatedContext : EvaluationContext | ( ( previousContext : EvaluationContext ) => EvaluationContext ) ) : Promise < void > => {
38+ const resolvedContext = typeof updatedContext === 'function'
39+ ? updatedContext ( OpenFeature . getContext ( options ?. defaultContext ? undefined : domain ) )
40+ : updatedContext ;
41+
42+ if ( previousContext . current !== resolvedContext ) {
3943 if ( ! domain || options ?. defaultContext ) {
40- OpenFeature . setContext ( updatedContext ) ;
44+ OpenFeature . setContext ( resolvedContext ) ;
4145 } else {
42- OpenFeature . setContext ( domain , updatedContext ) ;
46+ OpenFeature . setContext ( domain , resolvedContext ) ;
4347 }
44- previousContext . current = updatedContext ;
48+ previousContext . current = resolvedContext ;
4549 }
4650 } , [ domain ] ) ;
4751
You can’t perform that action at this time.
0 commit comments