Skip to content

Commit 9eca548

Browse files
committed
Only update user once we have the flags for that user.
1 parent f0b6093 commit 9eca548

File tree

2 files changed

+27
-2
lines changed

2 files changed

+27
-2
lines changed

src/__tests__/LDClient-test.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -407,6 +407,23 @@ describe('LDClient', () => {
407407
});
408408

409409
describe('identify', () => {
410+
it('does not set user until the flag config has been updated', async () => {
411+
function sleep(ms) {
412+
return new Promise(resolve => setTimeout(resolve, ms));
413+
}
414+
415+
const user2 = { key: 'user2' };
416+
const client = platform.testing.makeClient(envName, user);
417+
await client.waitForInitialization();
418+
server.autoRespond = false;
419+
const identifyPromise = client.identify(user2);
420+
await sleep(200); // sleep to jump some async ticks.
421+
expect(client.getUser()).toEqual(user);
422+
server.respond();
423+
await identifyPromise;
424+
expect(client.getUser()).toEqual(user2);
425+
});
426+
410427
it('updates flag values when the user changes', async () => {
411428
const user2 = { key: 'user2' };
412429
const client = platform.testing.makeClient(envName, user);

src/index.js

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -191,8 +191,16 @@ export function initialize(env, user, specifiedOptions, platform, extraDefaults)
191191
return utils.wrapPromiseCallback(
192192
clearFirst
193193
.then(() => userValidator.validateUser(user))
194-
.then(realUser => ident.setUser(realUser))
195-
.then(() => requestor.fetchFlagSettings(ident.getUser(), hash))
194+
.then(realUser =>
195+
requestor.fetchFlagSettings(realUser, hash).then(requestedFlags => ({ requestedFlags, realUser }))
196+
)
197+
.then(({ requestedFlags, realUser }) => {
198+
ident.setUser(realUser);
199+
return requestedFlags;
200+
})
201+
202+
// .then(realUser => ident.setUser(realUser))
203+
// .then(() => requestor.fetchFlagSettings(ident.getUser(), hash))
196204
.then(requestedFlags => {
197205
const flagValueMap = utils.transformVersionedValuesToValues(requestedFlags);
198206
if (requestedFlags) {

0 commit comments

Comments
 (0)