Skip to content

Commit 777f4e2

Browse files
author
James Fox
committed
cleanup usage of dataReadyPromise
1 parent 4734ead commit 777f4e2

File tree

2 files changed

+14
-14
lines changed

2 files changed

+14
-14
lines changed

src/client.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -184,13 +184,14 @@ class OptimizelyReactSDKClient implements ReactSDKClient {
184184
success: false,
185185
reason:
186186
'failed to initialize onReady before timeout, either the datafile or user info was not set before the timeout',
187+
dataReadyPromise: this.dataReadyPromise
187188
})
188189
}, timeout) as any
189190
})
190191

191192
return Promise.race([this.dataReadyPromise, timeoutPromise]).then(res => {
192193
clearTimeout(timeoutId)
193-
return Object.assign(res, { dataReadyPromise: this.dataReadyPromise });
194+
return res
194195
})
195196
}
196197

src/hooks.ts

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -89,24 +89,23 @@ export const useFeature : UseFeature = (featureKey, options = {}, overrides = {}
8989
optimizely.onReady({ timeout: finalReadyTimeout }).then((res: OnReadyResult) => {
9090
if (res.success) {
9191
// didTimeout=false
92-
setClientReady(true);
9392
useFeatureLogger.info(`feature="${featureKey}" successfully set for user="${optimizely.user.id}"`);
9493
return;
95-
} else {
96-
setDidTimeout(true);
97-
useFeatureLogger.info(
98-
`feature="${featureKey}" could not be set before timeout of ${finalReadyTimeout}ms, reason="${res.reason || ''}"`,
99-
)
100-
return res.dataReadyPromise!.then(
101-
() => {
102-
setClientReady(true);
103-
useFeatureLogger.info(
104-
`feature="${featureKey}" is now set, but after timeout.`,
105-
);
106-
});
10794
}
95+
setDidTimeout(true);
96+
useFeatureLogger.info(
97+
`feature="${featureKey}" could not be set before timeout of ${finalReadyTimeout}ms, reason="${res.reason || ''}"`,
98+
);
99+
// Since we timed out, wait for the dataReadyPromise to resolve before setting up.
100+
return res.dataReadyPromise!.then(
101+
() => {
102+
useFeatureLogger.info(
103+
`feature="${featureKey}" is now set, but after timeout.`,
104+
);
105+
});
108106
})
109107
.then(() => {
108+
setClientReady(true);
110109
setData(getCurrentValues());
111110
if (options.autoUpdate) {
112111
cleanupFns.push(

0 commit comments

Comments
 (0)