react-native-gleapsdk 6.4.1 → 6.4.2
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 -1
- package/android/src/main/java/com/reactnativegleapsdk/GleapsdkModule.java +27 -3
- package/ios/Gleapsdk.m +51 -37
- package/lib/commonjs/index.js.map +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/index.d.ts +2 -0
- package/package.json +1 -1
- package/react-native-gleapsdk.podspec +1 -1
- package/src/index.tsx +3 -0
package/android/build.gradle
CHANGED
|
@@ -56,6 +56,6 @@ dependencies {
|
|
|
56
56
|
//noinspection GradleDynamicVersion
|
|
57
57
|
implementation "com.facebook.react:react-native:+" // From node_modules
|
|
58
58
|
// https://mvnrepository.com/artifact/io.gleap/gleap-android-sdk
|
|
59
|
-
implementation group: 'io.gleap', name: 'gleap-android-sdk', version: '6.4.
|
|
59
|
+
implementation group: 'io.gleap', name: 'gleap-android-sdk', version: '6.4.8'
|
|
60
60
|
|
|
61
61
|
}
|
|
@@ -13,6 +13,7 @@ import com.facebook.react.bridge.LifecycleEventListener;
|
|
|
13
13
|
import com.facebook.react.bridge.ReactApplicationContext;
|
|
14
14
|
import com.facebook.react.bridge.ReactContextBaseJavaModule;
|
|
15
15
|
import com.facebook.react.bridge.ReactMethod;
|
|
16
|
+
import com.facebook.react.bridge.ReadableArray;
|
|
16
17
|
import com.facebook.react.bridge.ReadableMap;
|
|
17
18
|
import com.facebook.react.module.annotations.ReactModule;
|
|
18
19
|
import com.facebook.react.modules.core.DeviceEventManagerModule;
|
|
@@ -24,6 +25,7 @@ import org.json.JSONObject;
|
|
|
24
25
|
import java.io.File;
|
|
25
26
|
import java.io.FileOutputStream;
|
|
26
27
|
import java.io.OutputStream;
|
|
28
|
+
import java.util.ArrayList;
|
|
27
29
|
import java.util.Base64;
|
|
28
30
|
import java.util.regex.Matcher;
|
|
29
31
|
import java.util.regex.Pattern;
|
|
@@ -34,6 +36,7 @@ import io.gleap.CustomActionCallback;
|
|
|
34
36
|
import io.gleap.FeedbackSentCallback;
|
|
35
37
|
import io.gleap.FeedbackWillBeSentCallback;
|
|
36
38
|
import io.gleap.Gleap;
|
|
39
|
+
import io.gleap.GleapActivationMethod;
|
|
37
40
|
import io.gleap.GleapUserProperties;
|
|
38
41
|
import io.gleap.RequestType;
|
|
39
42
|
|
|
@@ -77,7 +80,7 @@ public class GleapsdkModule extends ReactContextBaseJavaModule implements Lifecy
|
|
|
77
80
|
}
|
|
78
81
|
}
|
|
79
82
|
});
|
|
80
|
-
|
|
83
|
+
|
|
81
84
|
Gleap.initialize(sdkKey, activity.getApplication());
|
|
82
85
|
Gleap.getInstance().setConfigLoadedCallback(new ConfigLoadedCallback() {
|
|
83
86
|
@Override
|
|
@@ -358,6 +361,27 @@ public class GleapsdkModule extends ReactContextBaseJavaModule implements Lifecy
|
|
|
358
361
|
}
|
|
359
362
|
|
|
360
363
|
|
|
364
|
+
/**
|
|
365
|
+
* Sets an array of activation methods.
|
|
366
|
+
*
|
|
367
|
+
* @param activationMethods Array of activation methods.
|
|
368
|
+
* @author Gleap
|
|
369
|
+
*/
|
|
370
|
+
@ReactMethod
|
|
371
|
+
public void setActivationMethods(ReadableArray activationMethods) {
|
|
372
|
+
ArrayList<GleapActivationMethod> internalActivationMethods = new ArrayList<>();
|
|
373
|
+
for (int i = 0; i < activationMethods.size(); i++) {
|
|
374
|
+
if (activationMethods.getString(i).equalsIgnoreCase("SHAKE")) {
|
|
375
|
+
internalActivationMethods.add(GleapActivationMethod.SHAKE);
|
|
376
|
+
}
|
|
377
|
+
if (activationMethods.getString(i).equalsIgnoreCase("SCREENSHOT")) {
|
|
378
|
+
internalActivationMethods.add(GleapActivationMethod.SCREENSHOT);
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
Gleap.getInstance().setActivationMethods(internalActivationMethods.toArray(new GleapActivationMethod[internalActivationMethods.size()]));
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
|
|
361
385
|
/**
|
|
362
386
|
* Clears all custom data.
|
|
363
387
|
*/
|
|
@@ -560,10 +584,10 @@ public class GleapsdkModule extends ReactContextBaseJavaModule implements Lifecy
|
|
|
560
584
|
invalidated = true;
|
|
561
585
|
super.onCatalystInstanceDestroy();
|
|
562
586
|
}
|
|
563
|
-
|
|
587
|
+
|
|
564
588
|
@Override
|
|
565
589
|
public void invalidate() {
|
|
566
590
|
invalidated = true;
|
|
567
591
|
super.invalidate();
|
|
568
592
|
}
|
|
569
|
-
}
|
|
593
|
+
}
|
package/ios/Gleapsdk.m
CHANGED
|
@@ -24,7 +24,6 @@ static NSString *const RCTShowDevMenuNotification = @"RCTShowDevMenuNotification
|
|
|
24
24
|
@implementation Gleapsdk
|
|
25
25
|
{
|
|
26
26
|
BOOL _hasListeners;
|
|
27
|
-
UITapGestureRecognizer *tapGestureRecognizer;
|
|
28
27
|
}
|
|
29
28
|
|
|
30
29
|
RCT_EXPORT_MODULE()
|
|
@@ -38,56 +37,53 @@ RCT_EXPORT_METHOD(initialize:(NSString *)token)
|
|
|
38
37
|
{
|
|
39
38
|
dispatch_async(dispatch_get_main_queue(), ^{
|
|
40
39
|
[self initSDK];
|
|
40
|
+
[Gleap setAutoActivationMethodsDisabled];
|
|
41
41
|
[Gleap initializeWithToken: token];
|
|
42
42
|
});
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
- (void)configLoaded:(NSDictionary *)config {
|
|
46
|
+
// Hook up shake gesture recognizer.
|
|
47
|
+
[[NSNotificationCenter defaultCenter] addObserver: self
|
|
48
|
+
selector: @selector(motionEnded:)
|
|
49
|
+
name: RCTShowDevMenuNotification
|
|
50
|
+
object: nil];
|
|
51
|
+
|
|
52
|
+
#if !RCT_DEV
|
|
53
|
+
RCTSwapInstanceMethods([UIWindow class], @selector(motionEnded:withEvent:), @selector(handleShakeEvent:withEvent:));
|
|
54
|
+
#endif
|
|
55
|
+
|
|
56
|
+
// Add screenshot gesture recognizer
|
|
57
|
+
NSOperationQueue *mainQueue = [NSOperationQueue mainQueue];
|
|
58
|
+
[[NSNotificationCenter defaultCenter] addObserverForName:UIApplicationUserDidTakeScreenshotNotification
|
|
59
|
+
object:nil
|
|
60
|
+
queue:mainQueue
|
|
61
|
+
usingBlock:^(NSNotification *note) {
|
|
62
|
+
if ([[Gleap sharedInstance] isActivationMethodActive: SCREENSHOT]) {
|
|
63
|
+
[Gleap startFeedbackFlow];
|
|
64
|
+
}
|
|
65
|
+
}];
|
|
66
|
+
|
|
67
|
+
NSMutableArray *activationMethods = [[NSMutableArray alloc] init];
|
|
46
68
|
if ([config objectForKey: @"activationMethodShake"] != nil && [[config objectForKey: @"activationMethodShake"] boolValue] == YES) {
|
|
47
|
-
[
|
|
48
|
-
selector: @selector(motionEnded:)
|
|
49
|
-
name: RCTShowDevMenuNotification
|
|
50
|
-
object: nil];
|
|
51
|
-
|
|
52
|
-
#if !RCT_DEV
|
|
53
|
-
RCTSwapInstanceMethods([UIWindow class], @selector(motionEnded:withEvent:), @selector(handleShakeEvent:withEvent:));
|
|
54
|
-
#endif
|
|
69
|
+
[activationMethods addObject: @(SHAKE)];
|
|
55
70
|
}
|
|
56
71
|
if ([config objectForKey: @"activationMethodScreenshotGesture"] != nil && [[config objectForKey: @"activationMethodScreenshotGesture"] boolValue] == YES) {
|
|
57
|
-
|
|
58
|
-
[[NSNotificationCenter defaultCenter] addObserverForName:UIApplicationUserDidTakeScreenshotNotification
|
|
59
|
-
object:nil
|
|
60
|
-
queue:mainQueue
|
|
61
|
-
usingBlock:^(NSNotification *note) {
|
|
62
|
-
[Gleap startFeedbackFlow];
|
|
63
|
-
}];
|
|
64
|
-
}
|
|
65
|
-
if ([config objectForKey: @"activationMethodThreeFingerDoubleTab"] != nil && [[config objectForKey: @"activationMethodThreeFingerDoubleTab"] boolValue] == YES) {
|
|
66
|
-
[self initializeGestureRecognizer];
|
|
72
|
+
[activationMethods addObject: @(SCREENSHOT)];
|
|
67
73
|
}
|
|
68
74
|
|
|
75
|
+
[[Gleap sharedInstance] setActivationMethods: activationMethods];
|
|
76
|
+
|
|
69
77
|
if (_hasListeners) {
|
|
70
78
|
[self sendEventWithName:@"configLoaded" body: config];
|
|
71
79
|
}
|
|
72
80
|
}
|
|
73
81
|
|
|
74
|
-
- (void)initializeGestureRecognizer {
|
|
75
|
-
tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget: self action: @selector(handleTapGestureActivation:)];
|
|
76
|
-
tapGestureRecognizer.numberOfTapsRequired = 2;
|
|
77
|
-
tapGestureRecognizer.numberOfTouchesRequired = 3;
|
|
78
|
-
tapGestureRecognizer.cancelsTouchesInView = false;
|
|
79
|
-
|
|
80
|
-
[[[[UIApplication sharedApplication] delegate] window] addGestureRecognizer: tapGestureRecognizer];
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
- (void)handleTapGestureActivation: (UITapGestureRecognizer *)recognizer
|
|
84
|
-
{
|
|
85
|
-
[Gleap startFeedbackFlow];
|
|
86
|
-
}
|
|
87
|
-
|
|
88
82
|
- (void)motionEnded:(NSNotification *)notification
|
|
89
83
|
{
|
|
90
|
-
[Gleap
|
|
84
|
+
if ([[Gleap sharedInstance] isActivationMethodActive: SHAKE]) {
|
|
85
|
+
[Gleap startFeedbackFlow];
|
|
86
|
+
}
|
|
91
87
|
}
|
|
92
88
|
|
|
93
89
|
- (void)feedbackWillBeSent {
|
|
@@ -151,6 +147,24 @@ RCT_EXPORT_METHOD(attachNetworkLog:(NSArray *)networkLogs)
|
|
|
151
147
|
});
|
|
152
148
|
}
|
|
153
149
|
|
|
150
|
+
|
|
151
|
+
RCT_EXPORT_METHOD(setActivationMethods:(NSArray *)activationMethods)
|
|
152
|
+
{
|
|
153
|
+
dispatch_async(dispatch_get_main_queue(), ^{
|
|
154
|
+
NSMutableArray *internalActivationMethods = [[NSMutableArray alloc] init];
|
|
155
|
+
for (int i = 0; i < activationMethods.count; i++) {
|
|
156
|
+
if ([[activationMethods objectAtIndex: i] isEqualToString: @"SHAKE"]) {
|
|
157
|
+
[internalActivationMethods addObject: @(SHAKE)];
|
|
158
|
+
}
|
|
159
|
+
if ([[activationMethods objectAtIndex: i] isEqualToString: @"SCREENSHOT"]) {
|
|
160
|
+
[internalActivationMethods addObject: @(SCREENSHOT)];
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
[Gleap setActivationMethods: internalActivationMethods];
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
|
|
154
168
|
RCT_EXPORT_METHOD(startFeedbackFlow:(NSString *)feedbackFlow)
|
|
155
169
|
{
|
|
156
170
|
dispatch_async(dispatch_get_main_queue(), ^{
|
|
@@ -272,9 +286,9 @@ RCT_EXPORT_METHOD(addAttachment:(NSString *)base64file withFileName:(NSString *)
|
|
|
272
286
|
|
|
273
287
|
- (void)dealloc
|
|
274
288
|
{
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
}
|
|
289
|
+
@try{
|
|
290
|
+
[[NSNotificationCenter defaultCenter] removeObserver: self];
|
|
291
|
+
} @catch(id anException) {}
|
|
278
292
|
}
|
|
279
293
|
|
|
280
294
|
@end
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["index.tsx"],"names":["LINKING_ERROR","Platform","select","ios","default","GleapSdk","NativeModules","Gleapsdk","Proxy","get","Error","touched","networkLogger","GleapNetworkIntercepter","startNetworkLogging","start","stopNetworkLogging","setStopped","callbacks","registerCustomAction","customActionCallback","push","gleapEmitter","NativeEventEmitter","addListener","config","configJSON","Object","JSON","parse","enableNetworkLogs","exp","requests","getRequests","OS","attachNetworkLog","stringify","isJsonString","str","e","data","name","length","i","removeAllAttachments"],"mappings":";;;;;;;AAAA;;AACA;;;;AAEA,MAAMA,aAAa,GAChB,gFAAD,GACAC,sBAASC,MAAT,CAAgB;AAAEC,EAAAA,GAAG,EAAE,gCAAP;AAAyCC,EAAAA,OAAO,EAAE;AAAlD,CAAhB,CADA,GAEA,sDAFA,GAGA,6CAJF;
|
|
1
|
+
{"version":3,"sources":["index.tsx"],"names":["LINKING_ERROR","Platform","select","ios","default","GleapSdk","NativeModules","Gleapsdk","Proxy","get","Error","touched","networkLogger","GleapNetworkIntercepter","startNetworkLogging","start","stopNetworkLogging","setStopped","callbacks","registerCustomAction","customActionCallback","push","gleapEmitter","NativeEventEmitter","addListener","config","configJSON","Object","JSON","parse","enableNetworkLogs","exp","requests","getRequests","OS","attachNetworkLog","stringify","isJsonString","str","e","data","name","length","i","removeAllAttachments"],"mappings":";;;;;;;AAAA;;AACA;;;;AAEA,MAAMA,aAAa,GAChB,gFAAD,GACAC,sBAASC,MAAT,CAAgB;AAAEC,EAAAA,GAAG,EAAE,gCAAP;AAAyCC,EAAAA,OAAO,EAAE;AAAlD,CAAhB,CADA,GAEA,sDAFA,GAGA,6CAJF;AA0CA,MAAMC,QAAQ,GAAGC,2BAAcC,QAAd,GACbD,2BAAcC,QADD,GAEb,IAAIC,KAAJ,CACE,EADF,EAEE;AACEC,EAAAA,GAAG,GAAG;AACJ,UAAM,IAAIC,KAAJ,CAAUV,aAAV,CAAN;AACD;;AAHH,CAFF,CAFJ;;AAWA,IAAIK,QAAQ,IAAI,CAACA,QAAQ,CAACM,OAA1B,EAAmC;AACjC,QAAMC,aAAa,GAAG,IAAIC,sBAAJ,EAAtB;;AAEAR,EAAAA,QAAQ,CAACS,mBAAT,GAA+B,MAAM;AACnCF,IAAAA,aAAa,CAACG,KAAd;AACD,GAFD;;AAIAV,EAAAA,QAAQ,CAACW,kBAAT,GAA8B,MAAM;AAClCJ,IAAAA,aAAa,CAACK,UAAd,CAAyB,IAAzB;AACD,GAFD;;AAIA,MAAIC,SAAgB,GAAG,EAAvB;;AAEAb,EAAAA,QAAQ,CAACc,oBAAT,GAAiCC,oBAAD,IAA+B;AAC7DF,IAAAA,SAAS,CAACG,IAAV,CAAeD,oBAAf;AACD,GAFD;;AAIA,QAAME,YAAY,GAAG,IAAIC,+BAAJ,CAAuBlB,QAAvB,CAArB;AAEAiB,EAAAA,YAAY,CAACE,WAAb,CAAyB,cAAzB,EAA0CC,MAAD,IAAiB;AACxD,QAAI;AACF,YAAMC,UAAU,GAAGD,MAAM,YAAYE,MAAlB,GAA2BF,MAA3B,GAAoCG,IAAI,CAACC,KAAL,CAAWJ,MAAX,CAAvD;;AACA,UAAIC,UAAU,CAACI,iBAAf,EAAkC;AAChCzB,QAAAA,QAAQ,CAACS,mBAAT;AACD;AACF,KALD,CAKE,OAAOiB,GAAP,EAAY,CAAE;AACjB,GAPD;AASAT,EAAAA,YAAY,CAACE,WAAb,CAAyB,oBAAzB,EAA+C,MAAM;AACnD;AACA,UAAMQ,QAAQ,GAAGpB,aAAa,CAACqB,WAAd,EAAjB;;AACA,QAAIhC,sBAASiC,EAAT,KAAgB,SAApB,EAA+B;AAC7B7B,MAAAA,QAAQ,CAAC8B,gBAAT,CAA0BP,IAAI,CAACQ,SAAL,CAAeJ,QAAf,CAA1B;AACD,KAFD,MAEO;AACL3B,MAAAA,QAAQ,CAAC8B,gBAAT,CAA0BP,IAAI,CAACC,KAAL,CAAWD,IAAI,CAACQ,SAAL,CAAeJ,QAAf,CAAX,CAA1B;AACD;AACF,GARD;;AAUA,WAASK,YAAT,CAAsBC,GAAtB,EAAmC;AACjC,QAAI;AACFV,MAAAA,IAAI,CAACC,KAAL,CAAWS,GAAX;AACD,KAFD,CAEE,OAAOC,CAAP,EAAU;AACV,aAAO,KAAP;AACD;;AACD,WAAO,IAAP;AACD;;AAEDjB,EAAAA,YAAY,CAACE,WAAb,CAAyB,uBAAzB,EAAmDgB,IAAD,IAAe;AAC/D,QAAI;AACF,UAAIH,YAAY,CAACG,IAAD,CAAhB,EAAwB;AACtBA,QAAAA,IAAI,GAAGZ,IAAI,CAACC,KAAL,CAAWW,IAAX,CAAP;AACD;;AACD,YAAM;AAAEC,QAAAA;AAAF,UAAWD,IAAjB;;AACA,UAAIC,IAAI,IAAIvB,SAAS,CAACwB,MAAV,GAAmB,CAA/B,EAAkC;AAChC,aAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGzB,SAAS,CAACwB,MAA9B,EAAsCC,CAAC,EAAvC,EAA2C;AACzC,cAAIzB,SAAS,CAACyB,CAAD,CAAb,EAAkB;AAChBzB,YAAAA,SAAS,CAACyB,CAAD,CAAT,CAAa;AACXF,cAAAA;AADW,aAAb;AAGD;AACF;AACF;AACF,KAdD,CAcE,OAAOV,GAAP,EAAY,CAAE;AACjB,GAhBD;AAkBA1B,EAAAA,QAAQ,CAACuC,oBAAT;AAEAvC,EAAAA,QAAQ,CAACM,OAAT,GAAmB,IAAnB;AACD;;eAEcN,Q","sourcesContent":["import { NativeModules, NativeEventEmitter, Platform } from 'react-native';\nimport GleapNetworkIntercepter from './networklogger';\n\nconst LINKING_ERROR =\n `The package 'react-native-gleapsdk' doesn't seem to be linked. Make sure: \\n\\n` +\n Platform.select({ ios: \"- You have run 'pod install'\\n\", default: '' }) +\n '- You rebuilt the app after installing the package\\n' +\n '- You are not using Expo managed workflow\\n';\n\nexport type GleapUserProperty = {\n email?: string;\n name?: string;\n};\n\ntype GleapActivationMethod = 'SHAKE' | 'SCREENSHOT';\n\ntype GleapSdkType = {\n initialize(token: string): void;\n open(): void;\n startFeedbackFlow(feedbackFlow: string): void;\n sendSilentBugReport(\n description: string,\n severity: 'LOW' | 'MEDIUM' | 'HIGH'\n ): void;\n identify(userId: string, userProperties: GleapUserProperty): void;\n clearIdentity(): void;\n setApiUrl(apiUrl: string): void;\n setWidgetUrl(widgetUrl: string): void;\n attachCustomData(customData: any): void;\n setCustomData(key: string, value: string): void;\n removeCustomDataForKey(key: string): void;\n clearCustomData(): void;\n registerCustomAction(\n customActionCallback: (data: { name: string }) => void\n ): void;\n setLanguage(language: string): void;\n logEvent(name: string, data: any): void;\n addAttachment(base64file: string, fileName: string): void;\n removeAllAttachments(): void;\n startNetworkLogging(): void;\n stopNetworkLogging(): void;\n enableDebugConsoleLog(): void;\n setActivationMethods(activationMethods: GleapActivationMethod[]): void;\n};\n\nconst GleapSdk = NativeModules.Gleapsdk\n ? NativeModules.Gleapsdk\n : new Proxy(\n {},\n {\n get() {\n throw new Error(LINKING_ERROR);\n },\n }\n );\n\nif (GleapSdk && !GleapSdk.touched) {\n const networkLogger = new GleapNetworkIntercepter();\n\n GleapSdk.startNetworkLogging = () => {\n networkLogger.start();\n };\n\n GleapSdk.stopNetworkLogging = () => {\n networkLogger.setStopped(true);\n };\n\n var callbacks: any[] = [];\n\n GleapSdk.registerCustomAction = (customActionCallback: any) => {\n callbacks.push(customActionCallback);\n };\n\n const gleapEmitter = new NativeEventEmitter(GleapSdk);\n\n gleapEmitter.addListener('configLoaded', (config: any) => {\n try {\n const configJSON = config instanceof Object ? config : JSON.parse(config);\n if (configJSON.enableNetworkLogs) {\n GleapSdk.startNetworkLogging();\n }\n } catch (exp) {}\n });\n\n gleapEmitter.addListener('feedbackWillBeSent', () => {\n // Push the network log to the native SDK.\n const requests = networkLogger.getRequests();\n if (Platform.OS === 'android') {\n GleapSdk.attachNetworkLog(JSON.stringify(requests));\n } else {\n GleapSdk.attachNetworkLog(JSON.parse(JSON.stringify(requests)));\n }\n });\n\n function isJsonString(str: string) {\n try {\n JSON.parse(str);\n } catch (e) {\n return false;\n }\n return true;\n }\n\n gleapEmitter.addListener('customActionTriggered', (data: any) => {\n try {\n if (isJsonString(data)) {\n data = JSON.parse(data);\n }\n const { name } = data;\n if (name && callbacks.length > 0) {\n for (var i = 0; i < callbacks.length; i++) {\n if (callbacks[i]) {\n callbacks[i]({\n name,\n });\n }\n }\n }\n } catch (exp) {}\n });\n\n GleapSdk.removeAllAttachments();\n\n GleapSdk.touched = true;\n}\n\nexport default GleapSdk as GleapSdkType;\n"]}
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["index.tsx"],"names":["NativeModules","NativeEventEmitter","Platform","GleapNetworkIntercepter","LINKING_ERROR","select","ios","default","GleapSdk","Gleapsdk","Proxy","get","Error","touched","networkLogger","startNetworkLogging","start","stopNetworkLogging","setStopped","callbacks","registerCustomAction","customActionCallback","push","gleapEmitter","addListener","config","configJSON","Object","JSON","parse","enableNetworkLogs","exp","requests","getRequests","OS","attachNetworkLog","stringify","isJsonString","str","e","data","name","length","i","removeAllAttachments"],"mappings":"AAAA,SAASA,aAAT,EAAwBC,kBAAxB,EAA4CC,QAA5C,QAA4D,cAA5D;AACA,OAAOC,uBAAP,MAAoC,iBAApC;AAEA,MAAMC,aAAa,GAChB,gFAAD,GACAF,QAAQ,CAACG,MAAT,CAAgB;AAAEC,EAAAA,GAAG,EAAE,gCAAP;AAAyCC,EAAAA,OAAO,EAAE;AAAlD,CAAhB,CADA,GAEA,sDAFA,GAGA,6CAJF;
|
|
1
|
+
{"version":3,"sources":["index.tsx"],"names":["NativeModules","NativeEventEmitter","Platform","GleapNetworkIntercepter","LINKING_ERROR","select","ios","default","GleapSdk","Gleapsdk","Proxy","get","Error","touched","networkLogger","startNetworkLogging","start","stopNetworkLogging","setStopped","callbacks","registerCustomAction","customActionCallback","push","gleapEmitter","addListener","config","configJSON","Object","JSON","parse","enableNetworkLogs","exp","requests","getRequests","OS","attachNetworkLog","stringify","isJsonString","str","e","data","name","length","i","removeAllAttachments"],"mappings":"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","sourcesContent":["import { NativeModules, NativeEventEmitter, Platform } from 'react-native';\nimport GleapNetworkIntercepter from './networklogger';\n\nconst LINKING_ERROR =\n `The package 'react-native-gleapsdk' doesn't seem to be linked. Make sure: \\n\\n` +\n Platform.select({ ios: \"- You have run 'pod install'\\n\", default: '' }) +\n '- You rebuilt the app after installing the package\\n' +\n '- You are not using Expo managed workflow\\n';\n\nexport type GleapUserProperty = {\n email?: string;\n name?: string;\n};\n\ntype GleapActivationMethod = 'SHAKE' | 'SCREENSHOT';\n\ntype GleapSdkType = {\n initialize(token: string): void;\n open(): void;\n startFeedbackFlow(feedbackFlow: string): void;\n sendSilentBugReport(\n description: string,\n severity: 'LOW' | 'MEDIUM' | 'HIGH'\n ): void;\n identify(userId: string, userProperties: GleapUserProperty): void;\n clearIdentity(): void;\n setApiUrl(apiUrl: string): void;\n setWidgetUrl(widgetUrl: string): void;\n attachCustomData(customData: any): void;\n setCustomData(key: string, value: string): void;\n removeCustomDataForKey(key: string): void;\n clearCustomData(): void;\n registerCustomAction(\n customActionCallback: (data: { name: string }) => void\n ): void;\n setLanguage(language: string): void;\n logEvent(name: string, data: any): void;\n addAttachment(base64file: string, fileName: string): void;\n removeAllAttachments(): void;\n startNetworkLogging(): void;\n stopNetworkLogging(): void;\n enableDebugConsoleLog(): void;\n setActivationMethods(activationMethods: GleapActivationMethod[]): void;\n};\n\nconst GleapSdk = NativeModules.Gleapsdk\n ? NativeModules.Gleapsdk\n : new Proxy(\n {},\n {\n get() {\n throw new Error(LINKING_ERROR);\n },\n }\n );\n\nif (GleapSdk && !GleapSdk.touched) {\n const networkLogger = new GleapNetworkIntercepter();\n\n GleapSdk.startNetworkLogging = () => {\n networkLogger.start();\n };\n\n GleapSdk.stopNetworkLogging = () => {\n networkLogger.setStopped(true);\n };\n\n var callbacks: any[] = [];\n\n GleapSdk.registerCustomAction = (customActionCallback: any) => {\n callbacks.push(customActionCallback);\n };\n\n const gleapEmitter = new NativeEventEmitter(GleapSdk);\n\n gleapEmitter.addListener('configLoaded', (config: any) => {\n try {\n const configJSON = config instanceof Object ? config : JSON.parse(config);\n if (configJSON.enableNetworkLogs) {\n GleapSdk.startNetworkLogging();\n }\n } catch (exp) {}\n });\n\n gleapEmitter.addListener('feedbackWillBeSent', () => {\n // Push the network log to the native SDK.\n const requests = networkLogger.getRequests();\n if (Platform.OS === 'android') {\n GleapSdk.attachNetworkLog(JSON.stringify(requests));\n } else {\n GleapSdk.attachNetworkLog(JSON.parse(JSON.stringify(requests)));\n }\n });\n\n function isJsonString(str: string) {\n try {\n JSON.parse(str);\n } catch (e) {\n return false;\n }\n return true;\n }\n\n gleapEmitter.addListener('customActionTriggered', (data: any) => {\n try {\n if (isJsonString(data)) {\n data = JSON.parse(data);\n }\n const { name } = data;\n if (name && callbacks.length > 0) {\n for (var i = 0; i < callbacks.length; i++) {\n if (callbacks[i]) {\n callbacks[i]({\n name,\n });\n }\n }\n }\n } catch (exp) {}\n });\n\n GleapSdk.removeAllAttachments();\n\n GleapSdk.touched = true;\n}\n\nexport default GleapSdk as GleapSdkType;\n"]}
|
|
@@ -2,6 +2,7 @@ export declare type GleapUserProperty = {
|
|
|
2
2
|
email?: string;
|
|
3
3
|
name?: string;
|
|
4
4
|
};
|
|
5
|
+
declare type GleapActivationMethod = 'SHAKE' | 'SCREENSHOT';
|
|
5
6
|
declare type GleapSdkType = {
|
|
6
7
|
initialize(token: string): void;
|
|
7
8
|
open(): void;
|
|
@@ -25,6 +26,7 @@ declare type GleapSdkType = {
|
|
|
25
26
|
startNetworkLogging(): void;
|
|
26
27
|
stopNetworkLogging(): void;
|
|
27
28
|
enableDebugConsoleLog(): void;
|
|
29
|
+
setActivationMethods(activationMethods: GleapActivationMethod[]): void;
|
|
28
30
|
};
|
|
29
31
|
declare const _default: GleapSdkType;
|
|
30
32
|
export default _default;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-gleapsdk",
|
|
3
|
-
"version": "6.4.
|
|
3
|
+
"version": "6.4.2",
|
|
4
4
|
"description": "Know exactly why and how a bug happened. Get reports with screenshots, live action replays and all of the important metadata every time.",
|
|
5
5
|
"main": "lib/commonjs/index",
|
|
6
6
|
"module": "lib/module/index",
|
package/src/index.tsx
CHANGED
|
@@ -12,6 +12,8 @@ export type GleapUserProperty = {
|
|
|
12
12
|
name?: string;
|
|
13
13
|
};
|
|
14
14
|
|
|
15
|
+
type GleapActivationMethod = 'SHAKE' | 'SCREENSHOT';
|
|
16
|
+
|
|
15
17
|
type GleapSdkType = {
|
|
16
18
|
initialize(token: string): void;
|
|
17
19
|
open(): void;
|
|
@@ -38,6 +40,7 @@ type GleapSdkType = {
|
|
|
38
40
|
startNetworkLogging(): void;
|
|
39
41
|
stopNetworkLogging(): void;
|
|
40
42
|
enableDebugConsoleLog(): void;
|
|
43
|
+
setActivationMethods(activationMethods: GleapActivationMethod[]): void;
|
|
41
44
|
};
|
|
42
45
|
|
|
43
46
|
const GleapSdk = NativeModules.Gleapsdk
|