From 23ac426af5911743b13346f9b1ced13db582da28 Mon Sep 17 00:00:00 2001 From: Alan Charles Date: Thu, 10 Mar 2022 11:48:26 -0700 Subject: [PATCH 1/2] feat: add anonymousId logic to reset --- packages/core/src/__tests__/analytics.test.ts | 15 ++++++++++++++- packages/core/src/analytics.ts | 10 ++++++++-- yarn.lock | 8 ++++---- 3 files changed, 26 insertions(+), 7 deletions(-) diff --git a/packages/core/src/__tests__/analytics.test.ts b/packages/core/src/__tests__/analytics.test.ts index 49ffc698a..977d95950 100644 --- a/packages/core/src/__tests__/analytics.test.ts +++ b/packages/core/src/__tests__/analytics.test.ts @@ -119,11 +119,24 @@ describe('SegmentClient', () => { }); describe('#reset', () => { + it('resets all userInfo except anonymousId', () => { + client = new SegmentClient(clientArgs); + const setUserInfo = jest.spyOn(store.userInfo, 'set'); + + client.reset(false); + + expect(setUserInfo).toHaveBeenCalledWith({ + anonymousId: 'anonymousId', + userId: undefined, + traits: undefined, + }); + }); + it('resets user data, identity, traits', () => { client = new SegmentClient(clientArgs); const setUserInfo = jest.spyOn(store.userInfo, 'set'); - client.reset(); + client.reset(true); expect(setUserInfo).toHaveBeenCalledWith({ anonymousId: 'mocked-uuid', diff --git a/packages/core/src/analytics.ts b/packages/core/src/analytics.ts index 1e31cb5eb..6090ef355 100644 --- a/packages/core/src/analytics.ts +++ b/packages/core/src/analytics.ts @@ -651,12 +651,18 @@ export class SegmentClient { this.appState = nextAppState; } - reset() { + reset(resetAnonymousId: Boolean = true) { + const anonymousId = + resetAnonymousId === true + ? getUUID() + : this.store.userInfo.get().anonymousId; + this.store.userInfo.set({ - anonymousId: getUUID(), + anonymousId, userId: undefined, traits: undefined, }); + this.logger.info('Client has been reset'); } } diff --git a/yarn.lock b/yarn.lock index f23f6bee6..ac96af7d0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2113,10 +2113,10 @@ conventional-recommended-bump "^6.1.0" prepend-file "^2.0.0" -"@segment/sovran-react-native@^0.2.4": - version "0.2.4" - resolved "https://registry.yarnpkg.com/@segment/sovran-react-native/-/sovran-react-native-0.2.4.tgz#8f73ba41febf8cb2f711a0d15d38a79384b0b767" - integrity sha512-+r98+pDMUQj8Siw4gG3KRSH7pIt4Q6omu4vwBfT0oBRpZ0dsSz6a17xTlEZkUU3ytgDj1c/fmJQg6V8tLgkbWw== +"@segment/sovran-react-native@^0.2.6": + version "0.2.6" + resolved "https://registry.yarnpkg.com/@segment/sovran-react-native/-/sovran-react-native-0.2.6.tgz#895ef37b71c299f56c89515cf8d200f13fce2251" + integrity sha512-SxqKvMvgu9PZo0jSkZ0yys08H9qJbI1uGbaeBvJFZfs92TIvQmcW0PYQZsspqt85RPzrL4J9KDio6xoLXmHurw== dependencies: "@react-native-async-storage/async-storage" "^1.15.15" ansi-regex "5.0.1" From 07eca4eae781b5aee4548707252a2c9f46c7b7b7 Mon Sep 17 00:00:00 2001 From: Alan Charles Date: Thu, 10 Mar 2022 13:05:04 -0700 Subject: [PATCH 2/2] refactor: add Oscar's changes --- packages/core/src/__tests__/analytics.test.ts | 2 +- packages/core/src/analytics.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/core/src/__tests__/analytics.test.ts b/packages/core/src/__tests__/analytics.test.ts index 977d95950..c28305c8d 100644 --- a/packages/core/src/__tests__/analytics.test.ts +++ b/packages/core/src/__tests__/analytics.test.ts @@ -136,7 +136,7 @@ describe('SegmentClient', () => { client = new SegmentClient(clientArgs); const setUserInfo = jest.spyOn(store.userInfo, 'set'); - client.reset(true); + client.reset(); expect(setUserInfo).toHaveBeenCalledWith({ anonymousId: 'mocked-uuid', diff --git a/packages/core/src/analytics.ts b/packages/core/src/analytics.ts index 6090ef355..0d8ed6da2 100644 --- a/packages/core/src/analytics.ts +++ b/packages/core/src/analytics.ts @@ -651,7 +651,7 @@ export class SegmentClient { this.appState = nextAppState; } - reset(resetAnonymousId: Boolean = true) { + reset(resetAnonymousId: boolean = true) { const anonymousId = resetAnonymousId === true ? getUUID()