@amplitude/plugin-session-replay-react-native 0.2.7 → 0.2.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -90,7 +90,7 @@ repositories {
90
90
  def kotlin_version = getExtOrDefault("kotlinVersion")
91
91
 
92
92
  dependencies {
93
- implementation("com.amplitude:session-replay-android:[0.16.4, 1.0.0]")
93
+ implementation("com.amplitude:session-replay-android:[0.19.0, 1.0.0]")
94
94
 
95
95
  // For < 0.71, this will be from the local maven repo
96
96
  // For > 0.71, this will be replaced by `com.facebook.react:react-android:$version` by react gradle plugin
@@ -98,4 +98,3 @@ dependencies {
98
98
  implementation "com.facebook.react:react-native:+"
99
99
  implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
100
100
  }
101
-
@@ -61,6 +61,16 @@ class PluginSessionReplayReactNativeModule(private val reactContext: ReactApplic
61
61
  }
62
62
  promise.resolve(map)
63
63
  }
64
+
65
+ @ReactMethod
66
+ fun start() {
67
+ sessionReplay.start()
68
+ }
69
+
70
+ @ReactMethod
71
+ fun stop() {
72
+ sessionReplay.stop()
73
+ }
64
74
 
65
75
  @ReactMethod
66
76
  fun flush() {
@@ -10,6 +10,10 @@ RCT_EXTERN_METHOD(getSessionId:(RCTPromiseResolveBlock)resolve reject:(RCTPromis
10
10
 
11
11
  RCT_EXTERN_METHOD(getSessionReplayProperties:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
12
12
 
13
+ RCT_EXTERN_METHOD(start:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
14
+
15
+ RCT_EXTERN_METHOD(stop:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
16
+
13
17
  RCT_EXTERN_METHOD(flush:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
14
18
 
15
19
  RCT_EXTERN_METHOD(teardown:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
@@ -38,6 +38,20 @@ class PluginSessionReplayReactNative: NSObject {
38
38
  resolve(sessionReplay.additionalEventProperties)
39
39
  }
40
40
 
41
+ @objc(start:reject:)
42
+ func start(_ resolve: RCTPromiseResolveBlock, reject: RCTPromiseRejectBlock) -> Void {
43
+ print("start")
44
+ sessionReplay.start()
45
+ resolve(nil)
46
+ }
47
+
48
+ @objc(stop:reject:)
49
+ func stop(_ resolve: RCTPromiseResolveBlock, reject: RCTPromiseRejectBlock) -> Void {
50
+ print("stop")
51
+ sessionReplay.stop()
52
+ resolve(nil)
53
+ }
54
+
41
55
  @objc(flush:reject:)
42
56
  func flush(_ resolve: RCTPromiseResolveBlock, reject: RCTPromiseRejectBlock) -> Void {
43
57
  print("flush")
@@ -20,6 +20,7 @@ class SessionReplayPlugin {
20
20
  _defineProperty(this, "name", '@amplitude/plugin-session-replay-react-native');
21
21
  _defineProperty(this, "type", 'enrichment');
22
22
  _defineProperty(this, "config", void 0);
23
+ _defineProperty(this, "isInitialized", false);
23
24
  _defineProperty(this, "sessionReplayConfig", void 0);
24
25
  this.sessionReplayConfig = {
25
26
  ...(0, _sessionReplayConfig.getDefaultConfig)(),
@@ -31,8 +32,13 @@ class SessionReplayPlugin {
31
32
  this.config = config;
32
33
  console.log(`Installing @amplitude/plugin-session-replay-react-native, version ${_version.VERSION}.`);
33
34
  await _nativeModule.PluginSessionReplayReactNative.setup(config.apiKey, config.deviceId, config.sessionId, this.sessionReplayConfig.sampleRate ?? 1, this.sessionReplayConfig.enableRemoteConfig ?? true);
35
+ this.isInitialized = true;
34
36
  }
35
37
  async execute(event) {
38
+ if (!this.isInitialized) {
39
+ return Promise.resolve(event);
40
+ }
41
+
36
42
  // On event, synchronize the session id to the what's on the browserConfig (source of truth)
37
43
  // Choosing not to read from event object here, concerned about offline/delayed events messing up the state stored
38
44
  // in SR.
@@ -50,15 +56,31 @@ class SessionReplayPlugin {
50
56
  }
51
57
  return Promise.resolve(event);
52
58
  }
59
+ async start() {
60
+ if (this.isInitialized) {
61
+ await _nativeModule.PluginSessionReplayReactNative.start();
62
+ }
63
+ }
64
+ async stop() {
65
+ if (this.isInitialized) {
66
+ await _nativeModule.PluginSessionReplayReactNative.stop();
67
+ }
68
+ }
53
69
  async teardown() {
54
- await _nativeModule.PluginSessionReplayReactNative.teardown();
70
+ if (this.isInitialized) {
71
+ await _nativeModule.PluginSessionReplayReactNative.teardown();
72
+ }
55
73
  // the following are initialized in setup() which will always be called first
56
74
  // here we reset them to null to prevent memory leaks
57
75
 
58
76
  // @ts-ignore
59
77
  this.config = null;
78
+ this.isInitialized = false;
60
79
  }
61
80
  async getSessionReplayProperties() {
81
+ if (!this.isInitialized) {
82
+ return {};
83
+ }
62
84
  return _nativeModule.PluginSessionReplayReactNative.getSessionReplayProperties();
63
85
  }
64
86
  }
@@ -1 +1 @@
1
- {"version":3,"names":["SessionReplayPlugin","constructor","config","sessionReplayConfig","getDefaultConfig","console","log","setup","_","VERSION","PluginSessionReplayReactNative","apiKey","deviceId","sessionId","sampleRate","enableRemoteConfig","execute","event","getSessionId","setSessionId","session_id","sessionRecordingProperties","getSessionReplayProperties","event_properties","Promise","resolve","teardown"],"sourceRoot":"../../src","sources":["session-replay.ts"],"mappings":";;;;;;AAOA;AACA;AACA;AAAgF;AAAA;AAAA;AAEzE,MAAMA,mBAAmB,CAAmE;EAGjG;;EAEA;;EAKAC,WAAW,GAAmC;IAAA,IAAlCC,MAA2B,uEAAG,CAAC,CAAC;IAAA,8BATrC,+CAA+C;IAAA,8BAC/C,YAAY;IAAA;IAAA;IASjB,IAAI,CAACC,mBAAmB,GAAG;MACzB,GAAG,IAAAC,qCAAgB,GAAE;MACrB,GAAGF;IACL,CAAC;IACDG,OAAO,CAACC,GAAG,CAAC,gDAAgD,EAAE,IAAI,CAACH,mBAAmB,CAAC;EACzF;EAEA,MAAMI,KAAK,CAACL,MAAyB,EAAEM,CAAoB,EAAiB;IAC1E,IAAI,CAACN,MAAM,GAAGA,MAAM;IACpBG,OAAO,CAACC,GAAG,CAAE,qEAAoEG,gBAAQ,GAAE,CAAC;IAC5F,MAAMC,4CAA8B,CAACH,KAAK,CACxCL,MAAM,CAACS,MAAM,EACbT,MAAM,CAACU,QAAQ,EACfV,MAAM,CAACW,SAAS,EAChB,IAAI,CAACV,mBAAmB,CAACW,UAAU,IAAI,CAAC,EACxC,IAAI,CAACX,mBAAmB,CAACY,kBAAkB,IAAI,IAAI,CACpD;EACH;EAEA,MAAMC,OAAO,CAACC,KAAY,EAAyB;IACjD;IACA;IACA;IACA,IAAI,IAAI,CAACf,MAAM,CAACW,SAAS,IAAI,IAAI,CAACX,MAAM,CAACW,SAAS,MAAM,MAAMH,4CAA8B,CAACQ,YAAY,EAAE,CAAC,EAAE;MAC5G,MAAMR,4CAA8B,CAACS,YAAY,CAAC,IAAI,CAACjB,MAAM,CAACW,SAAS,CAAC;IAC1E;IACA;IACA;IACA,IAAI,IAAI,CAACX,MAAM,CAACW,SAAS,IAAI,IAAI,CAACX,MAAM,CAACW,SAAS,KAAKI,KAAK,CAACG,UAAU,EAAE;MACvE,MAAMC,0BAA0B,GAAG,MAAMX,4CAA8B,CAACY,0BAA0B,EAAE;MACpGL,KAAK,CAACM,gBAAgB,GAAG;QACvB,GAAGN,KAAK,CAACM,gBAAgB;QACzB,GAAGF;MACL,CAAC;IACH;IACA,OAAOG,OAAO,CAACC,OAAO,CAACR,KAAK,CAAC;EAC/B;EAEA,MAAMS,QAAQ,GAAkB;IAC9B,MAAMhB,4CAA8B,CAACgB,QAAQ,EAAE;IAC/C;IACA;;IAEA;IACA,IAAI,CAACxB,MAAM,GAAG,IAAI;EACpB;EAEA,MAAMoB,0BAA0B,GAAG;IACjC,OAAOZ,4CAA8B,CAACY,0BAA0B,EAAE;EACpE;AACF;AAAC"}
1
+ {"version":3,"names":["SessionReplayPlugin","constructor","config","sessionReplayConfig","getDefaultConfig","console","log","setup","_","VERSION","PluginSessionReplayReactNative","apiKey","deviceId","sessionId","sampleRate","enableRemoteConfig","isInitialized","execute","event","Promise","resolve","getSessionId","setSessionId","session_id","sessionRecordingProperties","getSessionReplayProperties","event_properties","start","stop","teardown"],"sourceRoot":"../../src","sources":["session-replay.ts"],"mappings":";;;;;;AAOA;AACA;AACA;AAAgF;AAAA;AAAA;AAEzE,MAAMA,mBAAmB,CAAmE;EAGjG;;EAEA;;EAMAC,WAAW,GAAmC;IAAA,IAAlCC,MAA2B,uEAAG,CAAC,CAAC;IAAA,8BAVrC,+CAA+C;IAAA,8BAC/C,YAAY;IAAA;IAAA,uCAKH,KAAK;IAAA;IAKnB,IAAI,CAACC,mBAAmB,GAAG;MACzB,GAAG,IAAAC,qCAAgB,GAAE;MACrB,GAAGF;IACL,CAAC;IACDG,OAAO,CAACC,GAAG,CAAC,gDAAgD,EAAE,IAAI,CAACH,mBAAmB,CAAC;EACzF;EAEA,MAAMI,KAAK,CAACL,MAAyB,EAAEM,CAAoB,EAAiB;IAC1E,IAAI,CAACN,MAAM,GAAGA,MAAM;IACpBG,OAAO,CAACC,GAAG,CAAE,qEAAoEG,gBAAQ,GAAE,CAAC;IAC5F,MAAMC,4CAA8B,CAACH,KAAK,CACxCL,MAAM,CAACS,MAAM,EACbT,MAAM,CAACU,QAAQ,EACfV,MAAM,CAACW,SAAS,EAChB,IAAI,CAACV,mBAAmB,CAACW,UAAU,IAAI,CAAC,EACxC,IAAI,CAACX,mBAAmB,CAACY,kBAAkB,IAAI,IAAI,CACpD;IACD,IAAI,CAACC,aAAa,GAAG,IAAI;EAC3B;EAEA,MAAMC,OAAO,CAACC,KAAY,EAAyB;IACjD,IAAI,CAAC,IAAI,CAACF,aAAa,EAAE;MACvB,OAAOG,OAAO,CAACC,OAAO,CAACF,KAAK,CAAC;IAC/B;;IAEA;IACA;IACA;IACA,IAAI,IAAI,CAAChB,MAAM,CAACW,SAAS,IAAI,IAAI,CAACX,MAAM,CAACW,SAAS,MAAM,MAAMH,4CAA8B,CAACW,YAAY,EAAE,CAAC,EAAE;MAC5G,MAAMX,4CAA8B,CAACY,YAAY,CAAC,IAAI,CAACpB,MAAM,CAACW,SAAS,CAAC;IAC1E;IACA;IACA;IACA,IAAI,IAAI,CAACX,MAAM,CAACW,SAAS,IAAI,IAAI,CAACX,MAAM,CAACW,SAAS,KAAKK,KAAK,CAACK,UAAU,EAAE;MACvE,MAAMC,0BAA0B,GAAG,MAAMd,4CAA8B,CAACe,0BAA0B,EAAE;MACpGP,KAAK,CAACQ,gBAAgB,GAAG;QACvB,GAAGR,KAAK,CAACQ,gBAAgB;QACzB,GAAGF;MACL,CAAC;IACH;IACA,OAAOL,OAAO,CAACC,OAAO,CAACF,KAAK,CAAC;EAC/B;EAEA,MAAMS,KAAK,GAAkB;IAC3B,IAAI,IAAI,CAACX,aAAa,EAAE;MACtB,MAAMN,4CAA8B,CAACiB,KAAK,EAAE;IAC9C;EACF;EAEA,MAAMC,IAAI,GAAkB;IAC1B,IAAI,IAAI,CAACZ,aAAa,EAAE;MACtB,MAAMN,4CAA8B,CAACkB,IAAI,EAAE;IAC7C;EACF;EAEA,MAAMC,QAAQ,GAAkB;IAC9B,IAAI,IAAI,CAACb,aAAa,EAAE;MACtB,MAAMN,4CAA8B,CAACmB,QAAQ,EAAE;IACjD;IACA;IACA;;IAEA;IACA,IAAI,CAAC3B,MAAM,GAAG,IAAI;IAClB,IAAI,CAACc,aAAa,GAAG,KAAK;EAC5B;EAEA,MAAMS,0BAA0B,GAAG;IACjC,IAAI,CAAC,IAAI,CAACT,aAAa,EAAE;MACvB,OAAO,CAAC,CAAC;IACX;IACA,OAAON,4CAA8B,CAACe,0BAA0B,EAAE;EACpE;AACF;AAAC"}
@@ -4,6 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.VERSION = void 0;
7
- const VERSION = '0.2.7';
7
+ const VERSION = '0.2.9';
8
8
  exports.VERSION = VERSION;
9
9
  //# sourceMappingURL=version.js.map
@@ -20,6 +20,7 @@ export class SessionReplayPlugin {
20
20
  _defineProperty(this, "name", '@amplitude/plugin-session-replay-react-native');
21
21
  _defineProperty(this, "type", 'enrichment');
22
22
  _defineProperty(this, "config", void 0);
23
+ _defineProperty(this, "isInitialized", false);
23
24
  _defineProperty(this, "sessionReplayConfig", void 0);
24
25
  this.sessionReplayConfig = {
25
26
  ...getDefaultConfig(),
@@ -31,8 +32,13 @@ export class SessionReplayPlugin {
31
32
  this.config = config;
32
33
  console.log(`Installing @amplitude/plugin-session-replay-react-native, version ${VERSION}.`);
33
34
  await PluginSessionReplayReactNative.setup(config.apiKey, config.deviceId, config.sessionId, this.sessionReplayConfig.sampleRate ?? 1, this.sessionReplayConfig.enableRemoteConfig ?? true);
35
+ this.isInitialized = true;
34
36
  }
35
37
  async execute(event) {
38
+ if (!this.isInitialized) {
39
+ return Promise.resolve(event);
40
+ }
41
+
36
42
  // On event, synchronize the session id to the what's on the browserConfig (source of truth)
37
43
  // Choosing not to read from event object here, concerned about offline/delayed events messing up the state stored
38
44
  // in SR.
@@ -50,15 +56,31 @@ export class SessionReplayPlugin {
50
56
  }
51
57
  return Promise.resolve(event);
52
58
  }
59
+ async start() {
60
+ if (this.isInitialized) {
61
+ await PluginSessionReplayReactNative.start();
62
+ }
63
+ }
64
+ async stop() {
65
+ if (this.isInitialized) {
66
+ await PluginSessionReplayReactNative.stop();
67
+ }
68
+ }
53
69
  async teardown() {
54
- await PluginSessionReplayReactNative.teardown();
70
+ if (this.isInitialized) {
71
+ await PluginSessionReplayReactNative.teardown();
72
+ }
55
73
  // the following are initialized in setup() which will always be called first
56
74
  // here we reset them to null to prevent memory leaks
57
75
 
58
76
  // @ts-ignore
59
77
  this.config = null;
78
+ this.isInitialized = false;
60
79
  }
61
80
  async getSessionReplayProperties() {
81
+ if (!this.isInitialized) {
82
+ return {};
83
+ }
62
84
  return PluginSessionReplayReactNative.getSessionReplayProperties();
63
85
  }
64
86
  }
@@ -1 +1 @@
1
- {"version":3,"names":["PluginSessionReplayReactNative","VERSION","getDefaultConfig","SessionReplayPlugin","constructor","config","sessionReplayConfig","console","log","setup","_","apiKey","deviceId","sessionId","sampleRate","enableRemoteConfig","execute","event","getSessionId","setSessionId","session_id","sessionRecordingProperties","getSessionReplayProperties","event_properties","Promise","resolve","teardown"],"sourceRoot":"../../src","sources":["session-replay.ts"],"mappings":";;;AAAA;AACA;AACA;AACA;AACA;;AAGA,SAASA,8BAA8B,QAAQ,iBAAiB;AAChE,SAASC,OAAO,QAAQ,WAAW;AACnC,SAA8BC,gBAAgB,QAAQ,yBAAyB;AAE/E,OAAO,MAAMC,mBAAmB,CAAmE;EAGjG;;EAEA;;EAKAC,WAAW,GAAmC;IAAA,IAAlCC,MAA2B,uEAAG,CAAC,CAAC;IAAA,8BATrC,+CAA+C;IAAA,8BAC/C,YAAY;IAAA;IAAA;IASjB,IAAI,CAACC,mBAAmB,GAAG;MACzB,GAAGJ,gBAAgB,EAAE;MACrB,GAAGG;IACL,CAAC;IACDE,OAAO,CAACC,GAAG,CAAC,gDAAgD,EAAE,IAAI,CAACF,mBAAmB,CAAC;EACzF;EAEA,MAAMG,KAAK,CAACJ,MAAyB,EAAEK,CAAoB,EAAiB;IAC1E,IAAI,CAACL,MAAM,GAAGA,MAAM;IACpBE,OAAO,CAACC,GAAG,CAAE,qEAAoEP,OAAQ,GAAE,CAAC;IAC5F,MAAMD,8BAA8B,CAACS,KAAK,CACxCJ,MAAM,CAACM,MAAM,EACbN,MAAM,CAACO,QAAQ,EACfP,MAAM,CAACQ,SAAS,EAChB,IAAI,CAACP,mBAAmB,CAACQ,UAAU,IAAI,CAAC,EACxC,IAAI,CAACR,mBAAmB,CAACS,kBAAkB,IAAI,IAAI,CACpD;EACH;EAEA,MAAMC,OAAO,CAACC,KAAY,EAAyB;IACjD;IACA;IACA;IACA,IAAI,IAAI,CAACZ,MAAM,CAACQ,SAAS,IAAI,IAAI,CAACR,MAAM,CAACQ,SAAS,MAAM,MAAMb,8BAA8B,CAACkB,YAAY,EAAE,CAAC,EAAE;MAC5G,MAAMlB,8BAA8B,CAACmB,YAAY,CAAC,IAAI,CAACd,MAAM,CAACQ,SAAS,CAAC;IAC1E;IACA;IACA;IACA,IAAI,IAAI,CAACR,MAAM,CAACQ,SAAS,IAAI,IAAI,CAACR,MAAM,CAACQ,SAAS,KAAKI,KAAK,CAACG,UAAU,EAAE;MACvE,MAAMC,0BAA0B,GAAG,MAAMrB,8BAA8B,CAACsB,0BAA0B,EAAE;MACpGL,KAAK,CAACM,gBAAgB,GAAG;QACvB,GAAGN,KAAK,CAACM,gBAAgB;QACzB,GAAGF;MACL,CAAC;IACH;IACA,OAAOG,OAAO,CAACC,OAAO,CAACR,KAAK,CAAC;EAC/B;EAEA,MAAMS,QAAQ,GAAkB;IAC9B,MAAM1B,8BAA8B,CAAC0B,QAAQ,EAAE;IAC/C;IACA;;IAEA;IACA,IAAI,CAACrB,MAAM,GAAG,IAAI;EACpB;EAEA,MAAMiB,0BAA0B,GAAG;IACjC,OAAOtB,8BAA8B,CAACsB,0BAA0B,EAAE;EACpE;AACF"}
1
+ {"version":3,"names":["PluginSessionReplayReactNative","VERSION","getDefaultConfig","SessionReplayPlugin","constructor","config","sessionReplayConfig","console","log","setup","_","apiKey","deviceId","sessionId","sampleRate","enableRemoteConfig","isInitialized","execute","event","Promise","resolve","getSessionId","setSessionId","session_id","sessionRecordingProperties","getSessionReplayProperties","event_properties","start","stop","teardown"],"sourceRoot":"../../src","sources":["session-replay.ts"],"mappings":";;;AAAA;AACA;AACA;AACA;AACA;;AAGA,SAASA,8BAA8B,QAAQ,iBAAiB;AAChE,SAASC,OAAO,QAAQ,WAAW;AACnC,SAA8BC,gBAAgB,QAAQ,yBAAyB;AAE/E,OAAO,MAAMC,mBAAmB,CAAmE;EAGjG;;EAEA;;EAMAC,WAAW,GAAmC;IAAA,IAAlCC,MAA2B,uEAAG,CAAC,CAAC;IAAA,8BAVrC,+CAA+C;IAAA,8BAC/C,YAAY;IAAA;IAAA,uCAKH,KAAK;IAAA;IAKnB,IAAI,CAACC,mBAAmB,GAAG;MACzB,GAAGJ,gBAAgB,EAAE;MACrB,GAAGG;IACL,CAAC;IACDE,OAAO,CAACC,GAAG,CAAC,gDAAgD,EAAE,IAAI,CAACF,mBAAmB,CAAC;EACzF;EAEA,MAAMG,KAAK,CAACJ,MAAyB,EAAEK,CAAoB,EAAiB;IAC1E,IAAI,CAACL,MAAM,GAAGA,MAAM;IACpBE,OAAO,CAACC,GAAG,CAAE,qEAAoEP,OAAQ,GAAE,CAAC;IAC5F,MAAMD,8BAA8B,CAACS,KAAK,CACxCJ,MAAM,CAACM,MAAM,EACbN,MAAM,CAACO,QAAQ,EACfP,MAAM,CAACQ,SAAS,EAChB,IAAI,CAACP,mBAAmB,CAACQ,UAAU,IAAI,CAAC,EACxC,IAAI,CAACR,mBAAmB,CAACS,kBAAkB,IAAI,IAAI,CACpD;IACD,IAAI,CAACC,aAAa,GAAG,IAAI;EAC3B;EAEA,MAAMC,OAAO,CAACC,KAAY,EAAyB;IACjD,IAAI,CAAC,IAAI,CAACF,aAAa,EAAE;MACvB,OAAOG,OAAO,CAACC,OAAO,CAACF,KAAK,CAAC;IAC/B;;IAEA;IACA;IACA;IACA,IAAI,IAAI,CAACb,MAAM,CAACQ,SAAS,IAAI,IAAI,CAACR,MAAM,CAACQ,SAAS,MAAM,MAAMb,8BAA8B,CAACqB,YAAY,EAAE,CAAC,EAAE;MAC5G,MAAMrB,8BAA8B,CAACsB,YAAY,CAAC,IAAI,CAACjB,MAAM,CAACQ,SAAS,CAAC;IAC1E;IACA;IACA;IACA,IAAI,IAAI,CAACR,MAAM,CAACQ,SAAS,IAAI,IAAI,CAACR,MAAM,CAACQ,SAAS,KAAKK,KAAK,CAACK,UAAU,EAAE;MACvE,MAAMC,0BAA0B,GAAG,MAAMxB,8BAA8B,CAACyB,0BAA0B,EAAE;MACpGP,KAAK,CAACQ,gBAAgB,GAAG;QACvB,GAAGR,KAAK,CAACQ,gBAAgB;QACzB,GAAGF;MACL,CAAC;IACH;IACA,OAAOL,OAAO,CAACC,OAAO,CAACF,KAAK,CAAC;EAC/B;EAEA,MAAMS,KAAK,GAAkB;IAC3B,IAAI,IAAI,CAACX,aAAa,EAAE;MACtB,MAAMhB,8BAA8B,CAAC2B,KAAK,EAAE;IAC9C;EACF;EAEA,MAAMC,IAAI,GAAkB;IAC1B,IAAI,IAAI,CAACZ,aAAa,EAAE;MACtB,MAAMhB,8BAA8B,CAAC4B,IAAI,EAAE;IAC7C;EACF;EAEA,MAAMC,QAAQ,GAAkB;IAC9B,IAAI,IAAI,CAACb,aAAa,EAAE;MACtB,MAAMhB,8BAA8B,CAAC6B,QAAQ,EAAE;IACjD;IACA;IACA;;IAEA;IACA,IAAI,CAACxB,MAAM,GAAG,IAAI;IAClB,IAAI,CAACW,aAAa,GAAG,KAAK;EAC5B;EAEA,MAAMS,0BAA0B,GAAG;IACjC,IAAI,CAAC,IAAI,CAACT,aAAa,EAAE;MACvB,OAAO,CAAC,CAAC;IACX;IACA,OAAOhB,8BAA8B,CAACyB,0BAA0B,EAAE;EACpE;AACF"}
@@ -1,2 +1,2 @@
1
- export const VERSION = '0.2.7';
1
+ export const VERSION = '0.2.9';
2
2
  //# sourceMappingURL=version.js.map
@@ -4,10 +4,13 @@ export declare class SessionReplayPlugin implements EnrichmentPlugin<ReactNative
4
4
  name: string;
5
5
  type: "enrichment";
6
6
  config: ReactNativeConfig;
7
+ isInitialized: boolean;
7
8
  sessionReplayConfig: SessionReplayConfig;
8
9
  constructor(config?: SessionReplayConfig);
9
10
  setup(config: ReactNativeConfig, _: ReactNativeClient): Promise<void>;
10
11
  execute(event: Event): Promise<Event | null>;
12
+ start(): Promise<void>;
13
+ stop(): Promise<void>;
11
14
  teardown(): Promise<void>;
12
15
  getSessionReplayProperties(): Promise<any>;
13
16
  }
@@ -1 +1 @@
1
- {"version":3,"file":"session-replay.d.ts","sourceRoot":"","sources":["../../src/session-replay.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAIhH,OAAO,EAAE,mBAAmB,EAAoB,MAAM,yBAAyB,CAAC;AAEhF,qBAAa,mBAAoB,YAAW,gBAAgB,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAChG,IAAI,SAAmD;IACvD,IAAI,eAAyB;IAI7B,MAAM,EAAE,iBAAiB,CAAC;IAE1B,mBAAmB,EAAE,mBAAmB,CAAC;gBAE7B,MAAM,GAAE,mBAAwB;IAQtC,KAAK,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAYrE,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAmB5C,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IASzB,0BAA0B;CAGjC"}
1
+ {"version":3,"file":"session-replay.d.ts","sourceRoot":"","sources":["../../src/session-replay.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAIhH,OAAO,EAAE,mBAAmB,EAAoB,MAAM,yBAAyB,CAAC;AAEhF,qBAAa,mBAAoB,YAAW,gBAAgB,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAChG,IAAI,SAAmD;IACvD,IAAI,eAAyB;IAI7B,MAAM,EAAE,iBAAiB,CAAC;IAC1B,aAAa,UAAS;IAEtB,mBAAmB,EAAE,mBAAmB,CAAC;gBAE7B,MAAM,GAAE,mBAAwB;IAQtC,KAAK,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAarE,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAuB5C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAMtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAMrB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAYzB,0BAA0B;CAMjC"}
@@ -1,2 +1,2 @@
1
- export declare const VERSION = "0.2.7";
1
+ export declare const VERSION = "0.2.9";
2
2
  //# sourceMappingURL=version.d.ts.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@amplitude/plugin-session-replay-react-native",
3
- "version": "0.2.7",
3
+ "version": "0.2.9",
4
4
  "description": "Amplitude Session Replay plugin for React Native",
5
5
  "keywords": [
6
6
  "analytics",
@@ -92,5 +92,5 @@
92
92
  ]
93
93
  ]
94
94
  },
95
- "gitHead": "4282675115e45f48afe14fc4fc621f1c3b972dd8"
95
+ "gitHead": "365b0d9f0df29fbd69b9ee7df24c89a5e9884d7e"
96
96
  }
@@ -16,6 +16,7 @@ export class SessionReplayPlugin implements EnrichmentPlugin<ReactNativeClient,
16
16
 
17
17
  // @ts-ignore
18
18
  config: ReactNativeConfig;
19
+ isInitialized = false;
19
20
 
20
21
  sessionReplayConfig: SessionReplayConfig;
21
22
 
@@ -37,9 +38,14 @@ export class SessionReplayPlugin implements EnrichmentPlugin<ReactNativeClient,
37
38
  this.sessionReplayConfig.sampleRate ?? 1,
38
39
  this.sessionReplayConfig.enableRemoteConfig ?? true,
39
40
  );
41
+ this.isInitialized = true;
40
42
  }
41
43
 
42
44
  async execute(event: Event): Promise<Event | null> {
45
+ if (!this.isInitialized) {
46
+ return Promise.resolve(event);
47
+ }
48
+
43
49
  // On event, synchronize the session id to the what's on the browserConfig (source of truth)
44
50
  // Choosing not to read from event object here, concerned about offline/delayed events messing up the state stored
45
51
  // in SR.
@@ -58,16 +64,34 @@ export class SessionReplayPlugin implements EnrichmentPlugin<ReactNativeClient,
58
64
  return Promise.resolve(event);
59
65
  }
60
66
 
67
+ async start(): Promise<void> {
68
+ if (this.isInitialized) {
69
+ await PluginSessionReplayReactNative.start();
70
+ }
71
+ }
72
+
73
+ async stop(): Promise<void> {
74
+ if (this.isInitialized) {
75
+ await PluginSessionReplayReactNative.stop();
76
+ }
77
+ }
78
+
61
79
  async teardown(): Promise<void> {
62
- await PluginSessionReplayReactNative.teardown();
80
+ if (this.isInitialized) {
81
+ await PluginSessionReplayReactNative.teardown();
82
+ }
63
83
  // the following are initialized in setup() which will always be called first
64
84
  // here we reset them to null to prevent memory leaks
65
85
 
66
86
  // @ts-ignore
67
87
  this.config = null;
88
+ this.isInitialized = false;
68
89
  }
69
90
 
70
91
  async getSessionReplayProperties() {
92
+ if (!this.isInitialized) {
93
+ return {};
94
+ }
71
95
  return PluginSessionReplayReactNative.getSessionReplayProperties();
72
96
  }
73
97
  }
package/src/version.ts CHANGED
@@ -1 +1 @@
1
- export const VERSION = '0.2.7';
1
+ export const VERSION = '0.2.9';