Skip to content

Commit 9d603ef

Browse files
Handle undefined values
1 parent e5d1968 commit 9d603ef

File tree

2 files changed

+10
-15
lines changed

2 files changed

+10
-15
lines changed

src/SplitClient.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,10 @@ export function SplitClient(props: ISplitClientProps) {
1919
return (
2020
<SplitContext.Provider value={{
2121
...context,
22-
updateOnSdkReady: props.updateOnSdkReady,
23-
updateOnSdkReadyFromCache: props.updateOnSdkReadyFromCache,
24-
updateOnSdkTimedout: props.updateOnSdkTimedout,
25-
updateOnSdkUpdate: props.updateOnSdkUpdate
22+
updateOnSdkReady: props.updateOnSdkReady ?? context.updateOnSdkReady,
23+
updateOnSdkReadyFromCache: props.updateOnSdkReadyFromCache ?? context.updateOnSdkReadyFromCache,
24+
updateOnSdkTimedout: props.updateOnSdkTimedout ?? context.updateOnSdkTimedout,
25+
updateOnSdkUpdate: props.updateOnSdkUpdate ?? context.updateOnSdkUpdate
2626
}}>
2727
{
2828
typeof children === 'function' ?

src/useSplitClient.ts

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,6 @@ import { useSplitContext } from './SplitContext';
33
import { getSplitClient, initAttributes, getStatus } from './utils';
44
import { ISplitContextValues, IUseSplitClientOptions } from './types';
55

6-
export const DEFAULT_UPDATE_OPTIONS = {
7-
updateOnSdkUpdate: true,
8-
updateOnSdkTimedout: true,
9-
updateOnSdkReady: true,
10-
updateOnSdkReadyFromCache: true,
11-
};
12-
136
/**
147
* `useSplitClient` is a hook that returns an Split Context object with the client and its status corresponding to the provided key.
158
*
@@ -23,12 +16,14 @@ export const DEFAULT_UPDATE_OPTIONS = {
2316
*
2417
* @see {@link https://help.split.io/hc/en-us/articles/360020448791-JavaScript-SDK#advanced-instantiate-multiple-sdk-clients}
2518
*/
26-
export function useSplitClient(options?: IUseSplitClientOptions): ISplitContextValues {
19+
export function useSplitClient(options: IUseSplitClientOptions = {}): ISplitContextValues {
2720
const context = useSplitContext();
2821
const { client: contextClient, factory } = context;
29-
const {
30-
updateOnSdkReady, updateOnSdkReadyFromCache, updateOnSdkTimedout, updateOnSdkUpdate, splitKey, attributes
31-
} = { ...DEFAULT_UPDATE_OPTIONS, ...context, ...options };
22+
const { splitKey, attributes } = options;
23+
const updateOnSdkReady = options.updateOnSdkReady ?? context.updateOnSdkReady;
24+
const updateOnSdkReadyFromCache = options.updateOnSdkReadyFromCache ?? context.updateOnSdkReadyFromCache;
25+
const updateOnSdkTimedout = options.updateOnSdkTimedout ?? context.updateOnSdkTimedout;
26+
const updateOnSdkUpdate = options.updateOnSdkUpdate ?? context.updateOnSdkUpdate;
3227

3328
// @TODO Move `getSplitClient` side effects and reduce the function cognitive complexity
3429
// @TODO Once `SplitClient` is removed, which updates the context, simplify next line as `const client = factory ? getSplitClient(factory, splitKey) : undefined;`

0 commit comments

Comments
 (0)