diff --git a/packages/core/src/__tests__/analytics.test.ts b/packages/core/src/__tests__/analytics.test.ts index 49ffc698a..c28305c8d 100644 --- a/packages/core/src/__tests__/analytics.test.ts +++ b/packages/core/src/__tests__/analytics.test.ts @@ -119,6 +119,19 @@ 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'); diff --git a/packages/core/src/analytics.ts b/packages/core/src/analytics.ts index 1e31cb5eb..0d8ed6da2 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"