@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.
- package/android/build.gradle +1 -2
- package/android/src/main/java/com/amplitude/pluginsessionreplayreactnative/PluginSessionReplayReactNativeModule.kt +10 -0
- package/ios/PluginSessionReplayReactNative.mm +4 -0
- package/ios/PluginSessionReplayReactNative.swift +14 -0
- package/lib/commonjs/session-replay.js +23 -1
- package/lib/commonjs/session-replay.js.map +1 -1
- package/lib/commonjs/version.js +1 -1
- package/lib/module/session-replay.js +23 -1
- package/lib/module/session-replay.js.map +1 -1
- package/lib/module/version.js +1 -1
- package/lib/typescript/session-replay.d.ts +3 -0
- package/lib/typescript/session-replay.d.ts.map +1 -1
- package/lib/typescript/version.d.ts +1 -1
- package/package.json +2 -2
- package/src/session-replay.ts +25 -1
- package/src/version.ts +1 -1
package/android/build.gradle
CHANGED
|
@@ -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.
|
|
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
|
-
|
|
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","
|
|
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"}
|
package/lib/commonjs/version.js
CHANGED
|
@@ -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
|
-
|
|
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","
|
|
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"}
|
package/lib/module/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const VERSION = '0.2.
|
|
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;
|
|
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.
|
|
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.
|
|
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": "
|
|
95
|
+
"gitHead": "365b0d9f0df29fbd69b9ee7df24c89a5e9884d7e"
|
|
96
96
|
}
|
package/src/session-replay.ts
CHANGED
|
@@ -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
|
-
|
|
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.
|
|
1
|
+
export const VERSION = '0.2.9';
|