From bb8366f576f9c2044b67392f73cf11fa0c230787 Mon Sep 17 00:00:00 2001 From: Alan Charles Date: Mon, 4 Apr 2022 11:29:16 -0600 Subject: [PATCH] feat: add reset to plugins --- example/ios/Podfile.lock | 8 ++++---- packages/core/src/analytics.ts | 4 +++- packages/core/src/util.ts | 15 +++++++++++++++ 3 files changed, 22 insertions(+), 5 deletions(-) diff --git a/example/ios/Podfile.lock b/example/ios/Podfile.lock index 0303d7e0b..abe356580 100644 --- a/example/ios/Podfile.lock +++ b/example/ios/Podfile.lock @@ -286,10 +286,10 @@ PODS: - React - RNGestureHandler (2.3.0): - React-Core - - segment-analytics-react-native (2.1.8): + - segment-analytics-react-native (2.1.9): - React-Core - sovran-react-native - - segment-analytics-react-native-plugin-idfa (0.2.0-beta): + - segment-analytics-react-native-plugin-idfa (0.2.1): - React-Core - sovran-react-native (0.2.6): - React-Core @@ -459,8 +459,8 @@ SPEC CHECKSUMS: RNCAsyncStorage: b49b4e38a1548d03b74b30e558a1d18465b94be7 RNCMaskedView: 0e1bc4bfa8365eba5fbbb71e07fbdc0555249489 RNGestureHandler: 77d59828d40838c9fabb76a12d2d0a80c006906f - segment-analytics-react-native: 1b6238e92a7d9e85148b7113ef3b6c529d1cfc29 - segment-analytics-react-native-plugin-idfa: 2dc6e38506a5b034db4a4cf16db48643b2f356a2 + segment-analytics-react-native: 4b7a033f75bd5f0d50ca700c36048bdd2a997a76 + segment-analytics-react-native-plugin-idfa: 80e5d610f537156833eabea12a1804523355de95 sovran-react-native: ef02f663b489ac5e63ea7b80cd8426bf82992263 Yoga: 90dcd029e45d8a7c1ff059e8b3c6612ff409061a diff --git a/packages/core/src/analytics.ts b/packages/core/src/analytics.ts index 0d8ed6da2..f8c9b0c4f 100644 --- a/packages/core/src/analytics.ts +++ b/packages/core/src/analytics.ts @@ -29,7 +29,7 @@ import { UserInfoState, UserTraits, } from './types'; -import { getPluginsWithFlush } from './util'; +import { getPluginsWithFlush, getPluginsWithReset } from './util'; import { getUUID } from './uuid'; export class SegmentClient { @@ -663,6 +663,8 @@ export class SegmentClient { traits: undefined, }); + getPluginsWithReset(this.timeline).forEach((plugin) => plugin.reset()); + this.logger.info('Client has been reset'); } } diff --git a/packages/core/src/util.ts b/packages/core/src/util.ts index 6fafbccca..794e57a7d 100644 --- a/packages/core/src/util.ts +++ b/packages/core/src/util.ts @@ -38,3 +38,18 @@ export const getPluginsWithFlush = (timeline: Timeline) => { return eventPlugins; }; + +export const getPluginsWithReset = (timeline: Timeline) => { + if (!timeline) { + return []; + } + + const allPlugins = getAllPlugins(timeline); + + // checking for the existence of .reset() + const eventPlugins = allPlugins?.filter( + (f) => (f as EventPlugin).reset + ) as EventPlugin[]; + + return eventPlugins; +};