react-native-gleapsdk 6.4.4 → 6.4.8

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/LICENSE CHANGED
@@ -1,21 +1,3 @@
1
- MIT License
1
+ Copyright (C) 2020 by Gleap GmbH. Permission is hereby granted to use this framework as is, modification are not allowed. All rights reserved.
2
2
 
3
- Copyright (c) 2021 gleap
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
3
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. FURTHER RESELLING OF THE SDK OR IT'S CODE IS ONLY GRANTED WITH A WRITTEN PERMISSION BY GLEAP GMBH.
@@ -56,5 +56,5 @@ 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.10'
59
+ implementation group: 'io.gleap', name: 'gleap-android-sdk', version: '6.4.12'
60
60
  }
@@ -1,6 +1,5 @@
1
1
  package com.reactnativegleapsdk;
2
2
 
3
-
4
3
  import android.app.Activity;
5
4
  import android.os.Build;
6
5
  import android.os.Handler;
@@ -9,8 +8,10 @@ import androidx.annotation.NonNull;
9
8
  import androidx.annotation.RequiresApi;
10
9
 
11
10
  import com.facebook.react.ReactApplication;
11
+ import com.facebook.react.ReactInstanceManager;
12
12
  import com.facebook.react.bridge.LifecycleEventListener;
13
13
  import com.facebook.react.bridge.ReactApplicationContext;
14
+ import com.facebook.react.bridge.ReactContext;
14
15
  import com.facebook.react.bridge.ReactContextBaseJavaModule;
15
16
  import com.facebook.react.bridge.ReactMethod;
16
17
  import com.facebook.react.bridge.ReadableArray;
@@ -27,6 +28,7 @@ import java.io.FileOutputStream;
27
28
  import java.io.OutputStream;
28
29
  import java.util.ArrayList;
29
30
  import java.util.Base64;
31
+ import java.util.logging.Logger;
30
32
  import java.util.regex.Matcher;
31
33
  import java.util.regex.Pattern;
32
34
 
@@ -36,6 +38,7 @@ import io.gleap.CustomActionCallback;
36
38
  import io.gleap.FeedbackSentCallback;
37
39
  import io.gleap.FeedbackSentWithDataCallback;
38
40
  import io.gleap.FeedbackWillBeSentCallback;
41
+ import io.gleap.GetActivityCallback;
39
42
  import io.gleap.Gleap;
40
43
  import io.gleap.GleapActivationMethod;
41
44
  import io.gleap.GleapUserProperties;
@@ -47,10 +50,18 @@ public class GleapsdkModule extends ReactContextBaseJavaModule implements Lifecy
47
50
  private boolean isSilentBugReport = false;
48
51
  private boolean invalidated = false;
49
52
 
50
- public GleapsdkModule(ReactApplicationContext reactContext) {
51
- super(reactContext);
53
+ public GleapsdkModule(ReactApplicationContext context) {
54
+ super(context);
55
+ Gleap.getInstance().setGetActivityCallback(new GetActivityCallback() {
56
+ @Override
57
+ public Activity getActivity() {
58
+ return context.getCurrentActivity();
59
+ }
60
+ });
61
+
52
62
  }
53
63
 
64
+
54
65
  @Override
55
66
  @NonNull
56
67
  public String getName() {
@@ -64,86 +75,91 @@ public class GleapsdkModule extends ReactContextBaseJavaModule implements Lifecy
64
75
  */
65
76
  @ReactMethod
66
77
  public void initialize(String sdkKey) {
67
- getCurrentActivity().runOnUiThread(
68
- new Runnable() {
69
- @Override
70
- public void run() {
71
- try {
72
- Activity activity = getReactApplicationContext()
73
- .getCurrentActivity();
74
- if (activity != null && !invalidated) {
75
- Gleap.getInstance().setApplicationType(APPLICATIONTYPE.REACTNATIVE);
76
- Gleap.getInstance().setFeedbackWillBeSentCallback(new FeedbackWillBeSentCallback() {
77
- @Override
78
- public void flowInvoced() {
79
- if (!invalidated) {
80
- getReactApplicationContext().getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class).emit("feedbackWillBeSent", null);
78
+ try {
79
+ getActivitySafe().runOnUiThread(
80
+ new Runnable() {
81
+ @Override
82
+ public void run() {
83
+ try {
84
+ Activity activity = getReactApplicationContext()
85
+ .getCurrentActivity();
86
+ if (activity != null && !invalidated) {
87
+ Gleap.getInstance().setApplicationType(APPLICATIONTYPE.REACTNATIVE);
88
+ Gleap.getInstance().setFeedbackWillBeSentCallback(new FeedbackWillBeSentCallback() {
89
+ @Override
90
+ public void flowInvoced() {
91
+ if (!invalidated) {
92
+ getReactApplicationContext().getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
93
+ .emit("feedbackWillBeSent", null);
94
+ }
81
95
  }
82
- }
83
- });
84
-
85
- Gleap.initialize(sdkKey, activity.getApplication());
86
- Gleap.getInstance().setConfigLoadedCallback(new ConfigLoadedCallback() {
87
- @Override
88
- public void configLoaded(JSONObject jsonObject) {
89
- if (!invalidated) {
90
- getReactApplicationContext().getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class).emit("configLoaded", jsonObject.toString());
96
+ });
97
+
98
+ Gleap.initialize(sdkKey, activity.getApplication());
99
+ Gleap.getInstance().setConfigLoadedCallback(new ConfigLoadedCallback() {
100
+ @Override
101
+ public void configLoaded(JSONObject jsonObject) {
102
+ if (!invalidated) {
103
+ getReactApplicationContext().getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
104
+ .emit("configLoaded", jsonObject.toString());
105
+ }
91
106
  }
92
- }
93
- });
94
-
95
- Gleap.getInstance().registerCustomAction(new CustomActionCallback() {
96
- @Override
97
- public void invoke(String message) {
98
- JSONObject obj = new JSONObject();
99
- try {
100
- obj.put("name", message);
101
- } catch (JSONException e) {
102
- e.printStackTrace();
107
+ });
108
+
109
+ Gleap.getInstance().registerCustomAction(new CustomActionCallback() {
110
+ @Override
111
+ public void invoke(String message) {
112
+ JSONObject obj = new JSONObject();
113
+ try {
114
+ obj.put("name", message);
115
+ } catch (JSONException e) {
116
+ e.printStackTrace();
117
+ }
118
+ if (!invalidated) {
119
+ getReactApplicationContext().getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
120
+ .emit("customActionTriggered", obj.toString());
121
+ }
103
122
  }
104
- if (!invalidated) {
105
- getReactApplicationContext().getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class).emit("customActionTriggered", obj.toString());
123
+ });
124
+
125
+ Gleap.getInstance().setFeedbackSentWithDataCallback(new FeedbackSentWithDataCallback() {
126
+ @Override
127
+ public void close(JSONObject jsonObject) {
128
+ getReactApplicationContext().getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
129
+ .emit("feedbackSent", jsonObject.toString());
130
+ new java.util.Timer().schedule(
131
+ new java.util.TimerTask() {
132
+ @Override
133
+ public void run() {
134
+ showDevMenu();
135
+ }
136
+ },
137
+ 500);
106
138
  }
107
- }
108
- });
109
-
110
- Gleap.getInstance().setFeedbackSentWithDataCallback(new FeedbackSentWithDataCallback() {
111
- @Override
112
- public void close(JSONObject jsonObject) {
113
- getReactApplicationContext().getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class).emit("feedbackSent", jsonObject.toString());
114
- new java.util.Timer().schedule(
115
- new java.util.TimerTask() {
116
- @Override
117
- public void run() {
118
- showDevMenu();
119
- }
120
- },
121
- 500
122
- );
123
- }
124
- });
125
-
126
- Gleap.getInstance().setFeedbackSentCallback(new FeedbackSentCallback() {
127
- @Override
128
- public void close() {
129
- new java.util.Timer().schedule(
130
- new java.util.TimerTask() {
131
- @Override
132
- public void run() {
133
- showDevMenu();
134
- }
135
- },
136
- 500
137
- );
138
- }
139
- });
139
+ });
140
+
141
+ Gleap.getInstance().setFeedbackSentCallback(new FeedbackSentCallback() {
142
+ @Override
143
+ public void close() {
144
+ new java.util.Timer().schedule(
145
+ new java.util.TimerTask() {
146
+ @Override
147
+ public void run() {
148
+ showDevMenu();
149
+ }
150
+ },
151
+ 500);
152
+ }
153
+ });
154
+ }
155
+ } catch (Exception ex) {
156
+ System.out.println(ex);
140
157
  }
141
- } catch (Exception ex) {
142
- System.out.println(ex);
143
158
  }
144
- }
145
- }
146
- );
159
+ });
160
+ } catch (NoUiThreadException e) {
161
+ System.err.println(e.getMessage());
162
+ }
147
163
  }
148
164
 
149
165
  @ReactMethod
@@ -161,71 +177,77 @@ public class GleapsdkModule extends ReactContextBaseJavaModule implements Lifecy
161
177
  */
162
178
  @ReactMethod
163
179
  public void open() {
164
- getCurrentActivity().runOnUiThread(
165
- new Runnable() {
166
- @Override
167
- public void run() {
168
- try {
169
- Gleap.getInstance().startFeedbackFlow();
170
- Gleap.getInstance().setFeedbackSentCallback(new FeedbackSentCallback() {
171
- @Override
172
- public void close() {
173
- new java.util.Timer().schedule(
174
- new java.util.TimerTask() {
175
- @Override
176
- public void run() {
177
- if (!isSilentBugReport) {
178
- showDevMenu();
179
- } else {
180
- isSilentBugReport = false;
180
+ try {
181
+ getActivitySafe().runOnUiThread(
182
+ new Runnable() {
183
+ @Override
184
+ public void run() {
185
+ try {
186
+ Gleap.getInstance().startFeedbackFlow();
187
+ Gleap.getInstance().setFeedbackSentCallback(new FeedbackSentCallback() {
188
+ @Override
189
+ public void close() {
190
+ new java.util.Timer().schedule(
191
+ new java.util.TimerTask() {
192
+ @Override
193
+ public void run() {
194
+ if (!isSilentBugReport) {
195
+ showDevMenu();
196
+ } else {
197
+ isSilentBugReport = false;
198
+ }
181
199
  }
182
- }
183
- },
184
- 500
185
- );
186
- }
187
- });
188
- } catch (Exception e) {
189
- System.out.println(e);
200
+ },
201
+ 500);
202
+ }
203
+ });
204
+ } catch (Exception e) {
205
+ System.out.println(e);
206
+ }
190
207
  }
191
- }
192
- });
208
+ });
209
+ } catch (NoUiThreadException e) {
210
+ System.err.println(e.getMessage());
211
+ }
193
212
  }
194
213
 
195
214
  /**
196
215
  * Start bug report manually by calling this function.
197
216
  */
198
217
  @ReactMethod
199
- public void startFeedbackFlow(String feedbackFlow) {
200
- getCurrentActivity().runOnUiThread(
201
- new Runnable() {
202
- @Override
203
- public void run() {
204
- try {
205
- Gleap.getInstance().startFeedbackFlow(feedbackFlow);
206
- Gleap.getInstance().setFeedbackSentCallback(new FeedbackSentCallback() {
207
- @Override
208
- public void close() {
209
- new java.util.Timer().schedule(
210
- new java.util.TimerTask() {
211
- @Override
212
- public void run() {
213
- if (!isSilentBugReport) {
214
- showDevMenu();
215
- } else {
216
- isSilentBugReport = false;
218
+ public void startFeedbackFlow(String feedbackFlow){
219
+ try {
220
+ getActivitySafe().runOnUiThread(
221
+ new Runnable() {
222
+ @Override
223
+ public void run() {
224
+ try {
225
+ Gleap.getInstance().startFeedbackFlow(feedbackFlow);
226
+ Gleap.getInstance().setFeedbackSentCallback(new FeedbackSentCallback() {
227
+ @Override
228
+ public void close() {
229
+ new java.util.Timer().schedule(
230
+ new java.util.TimerTask() {
231
+ @Override
232
+ public void run() {
233
+ if (!isSilentBugReport) {
234
+ showDevMenu();
235
+ } else {
236
+ isSilentBugReport = false;
237
+ }
217
238
  }
218
- }
219
- },
220
- 500
221
- );
222
- }
223
- });
224
- } catch (Exception e) {
225
- System.out.println(e);
239
+ },
240
+ 500);
241
+ }
242
+ });
243
+ } catch (Exception e) {
244
+ System.out.println(e);
245
+ }
226
246
  }
227
- }
228
- });
247
+ });
248
+ } catch (NoUiThreadException e) {
249
+ System.err.println(e.getMessage());
250
+ }
229
251
  }
230
252
 
231
253
  /**
@@ -234,23 +256,55 @@ public class GleapsdkModule extends ReactContextBaseJavaModule implements Lifecy
234
256
  @ReactMethod
235
257
  public void sendSilentBugReport(
236
258
  String description,
237
- String priority
238
- ) {
239
- getCurrentActivity().runOnUiThread(
240
- new Runnable() {
241
- @Override
242
- public void run() {
243
- isSilentBugReport = true;
244
- Gleap.SEVERITY severity = Gleap.SEVERITY.LOW;
245
- if (priority == "MEDIUM") {
246
- severity = Gleap.SEVERITY.MEDIUM;
259
+ String priority) {
260
+ try {
261
+ getActivitySafe().runOnUiThread(
262
+ new Runnable() {
263
+ @Override
264
+ public void run() {
265
+ isSilentBugReport = true;
266
+ Gleap.SEVERITY severity = Gleap.SEVERITY.LOW;
267
+ if (priority == "MEDIUM") {
268
+ severity = Gleap.SEVERITY.MEDIUM;
269
+ }
270
+ if (priority == "HIGH") {
271
+ severity = Gleap.SEVERITY.HIGH;
272
+ }
273
+ Gleap.getInstance().sendSilentBugReport(description, severity);
247
274
  }
248
- if (priority == "HIGH") {
249
- severity = Gleap.SEVERITY.HIGH;
275
+ });
276
+ } catch (NoUiThreadException e) {
277
+ System.err.println(e.getMessage());
278
+ }
279
+ }
280
+
281
+ /**
282
+ * Manually start a silent bug reporting workflow.
283
+ */
284
+ @ReactMethod
285
+ public void sendSilentBugReportWithType(
286
+ String description,
287
+ String priority,
288
+ String type) {
289
+ try {
290
+ getActivitySafe().runOnUiThread(
291
+ new Runnable() {
292
+ @Override
293
+ public void run() {
294
+ isSilentBugReport = true;
295
+ Gleap.SEVERITY severity = Gleap.SEVERITY.LOW;
296
+ if (priority == "MEDIUM") {
297
+ severity = Gleap.SEVERITY.MEDIUM;
298
+ }
299
+ if (priority == "HIGH") {
300
+ severity = Gleap.SEVERITY.HIGH;
301
+ }
302
+ Gleap.getInstance().sendSilentBugReport(description, severity, type);
250
303
  }
251
- Gleap.getInstance().sendSilentBugReport(description, severity);
252
- }
253
- });
304
+ });
305
+ } catch (NoUiThreadException e) {
306
+ System.err.println(e.getMessage());
307
+ }
254
308
  }
255
309
 
256
310
  @ReactMethod
@@ -259,32 +313,40 @@ public class GleapsdkModule extends ReactContextBaseJavaModule implements Lifecy
259
313
  }
260
314
 
261
315
  @ReactMethod
262
- public void enableDebugConsoleLog() {}
316
+ public void enableDebugConsoleLog() {
317
+ }
263
318
 
264
319
  @ReactMethod
265
320
  public void identify(String userid, ReadableMap data) {
266
- getCurrentActivity().runOnUiThread(
267
- new Runnable() {
268
- @Override
269
- public void run() {
270
- JSONObject jsonObject = null;
271
- String name = "";
272
- String email = "";
273
- try {
274
- jsonObject = GleapUtil.convertMapToJson(data);
275
- if (jsonObject.has("name")) {
276
- name = jsonObject.getString("name");
321
+ try {
322
+ getActivitySafe().runOnUiThread(
323
+ new Runnable() {
324
+ @Override
325
+ public void run() {
326
+ JSONObject jsonObject = null;
327
+ String name = "";
328
+ String email = "";
329
+ try {
330
+ jsonObject = GleapUtil.convertMapToJson(data);
331
+ if (jsonObject.has("name")) {
332
+ name = jsonObject.getString("name");
333
+ }
334
+ if (jsonObject.has("email")) {
335
+ email = jsonObject.getString("email");
336
+ }
337
+ } catch (JSONException e) {
338
+ e.printStackTrace();
277
339
  }
278
- if (jsonObject.has("email")) {
279
- email = jsonObject.getString("email");
340
+ GleapUserProperties gleapUserSession = new GleapUserProperties(name, email);
341
+ if(Gleap.getInstance() == null) {
342
+ return;
280
343
  }
281
- } catch (JSONException e) {
282
- e.printStackTrace();
344
+ Gleap.getInstance().identifyUser(userid, gleapUserSession);
283
345
  }
284
- GleapUserProperties gleapUserSession = new GleapUserProperties(name, email);
285
- Gleap.getInstance().identifyUser(userid, gleapUserSession);
286
- }
287
- });
346
+ });
347
+ } catch (NoUiThreadException e) {
348
+ System.err.println(e.getMessage());
349
+ }
288
350
  }
289
351
 
290
352
  @ReactMethod
@@ -293,7 +355,8 @@ public class GleapsdkModule extends ReactContextBaseJavaModule implements Lifecy
293
355
  }
294
356
 
295
357
  /**
296
- * Attaches custom data, which can be viewed in the BugBattle dashboard. New data will be merged with existing custom data.
358
+ * Attaches custom data, which can be viewed in the BugBattle dashboard. New
359
+ * data will be merged with existing custom data.
297
360
  *
298
361
  * @param customData The data to attach to a bug report.
299
362
  * @author BugBattle
@@ -302,6 +365,9 @@ public class GleapsdkModule extends ReactContextBaseJavaModule implements Lifecy
302
365
  public void attachCustomData(ReadableMap customData) {
303
366
  try {
304
367
  JSONObject jsonObject = GleapUtil.convertMapToJson(customData);
368
+ if(Gleap.getInstance() == null) {
369
+ return;
370
+ }
305
371
  Gleap.getInstance().appendCustomData(jsonObject);
306
372
  } catch (Exception e) {
307
373
  System.out.println(e);
@@ -338,7 +404,8 @@ public class GleapsdkModule extends ReactContextBaseJavaModule implements Lifecy
338
404
  }
339
405
 
340
406
  /**
341
- * Attaches custom data, which can be viewed in the Gleap dashboard. New data will be merged with existing custom data.
407
+ * Attaches custom data, which can be viewed in the Gleap dashboard. New data
408
+ * will be merged with existing custom data.
342
409
  *
343
410
  * @param customData The data to attach to a bug report.
344
411
  * @author Gleap
@@ -365,7 +432,6 @@ public class GleapsdkModule extends ReactContextBaseJavaModule implements Lifecy
365
432
  Gleap.getInstance().setCustomData(key, value);
366
433
  }
367
434
 
368
-
369
435
  /**
370
436
  * Removes one key from existing custom data.
371
437
  *
@@ -377,7 +443,6 @@ public class GleapsdkModule extends ReactContextBaseJavaModule implements Lifecy
377
443
  Gleap.getInstance().removeCustomDataForKey(key);
378
444
  }
379
445
 
380
-
381
446
  /**
382
447
  * Sets an array of activation methods.
383
448
  *
@@ -395,10 +460,10 @@ public class GleapsdkModule extends ReactContextBaseJavaModule implements Lifecy
395
460
  internalActivationMethods.add(GleapActivationMethod.SCREENSHOT);
396
461
  }
397
462
  }
398
- Gleap.getInstance().setActivationMethods(internalActivationMethods.toArray(new GleapActivationMethod[internalActivationMethods.size()]));
463
+ Gleap.getInstance().setActivationMethods(
464
+ internalActivationMethods.toArray(new GleapActivationMethod[internalActivationMethods.size()]));
399
465
  }
400
466
 
401
-
402
467
  /**
403
468
  * Clears all custom data.
404
469
  */
@@ -423,7 +488,9 @@ public class GleapsdkModule extends ReactContextBaseJavaModule implements Lifecy
423
488
  if (currentRequest.has("request")) {
424
489
  request = (JSONObject) currentRequest.get("request");
425
490
  }
426
- Gleap.getInstance().logNetwork(currentRequest.getString("url"), RequestType.valueOf(currentRequest.getString("type")), response.getInt("status"), currentRequest.getInt("duration"), request, response);
491
+ Gleap.getInstance().logNetwork(currentRequest.getString("url"),
492
+ RequestType.valueOf(currentRequest.getString("type")), response.getInt("status"),
493
+ currentRequest.getInt("duration"), request, response);
427
494
  }
428
495
 
429
496
  } catch (Exception ex) {
@@ -460,7 +527,6 @@ public class GleapsdkModule extends ReactContextBaseJavaModule implements Lifecy
460
527
  }
461
528
  }
462
529
 
463
-
464
530
  @RequiresApi(api = Build.VERSION_CODES.O)
465
531
  @ReactMethod
466
532
  /**
@@ -559,41 +625,48 @@ public class GleapsdkModule extends ReactContextBaseJavaModule implements Lifecy
559
625
  * Show dev menu after shaking the phone.
560
626
  */
561
627
  private void showDevMenu() {
562
- getCurrentActivity().runOnUiThread(
563
- new Runnable() {
564
- @Override
565
- public void run() {
566
- final ReactApplication application = (ReactApplication) getReactApplicationContext()
567
- .getCurrentActivity()
568
- .getApplication();
569
- Handler mainHandler = new Handler(GleapsdkModule.this.getReactApplicationContext().getMainLooper());
570
- Runnable myRunnable = new Runnable() {
571
- @Override
572
- public void run() {
573
- try {
574
- application
575
- .getReactNativeHost()
576
- .getReactInstanceManager()
577
- .getDevSupportManager()
578
- .showDevOptionsDialog();
579
- } catch (Exception e) {
580
- e.printStackTrace();
628
+ try {
629
+ getActivitySafe().runOnUiThread(
630
+ new Runnable() {
631
+ @Override
632
+ public void run() {
633
+ final ReactApplication application = (ReactApplication) getReactApplicationContext()
634
+ .getCurrentActivity()
635
+ .getApplication();
636
+ Handler mainHandler = new Handler(GleapsdkModule.this.getReactApplicationContext().getMainLooper());
637
+ Runnable myRunnable = new Runnable() {
638
+ @Override
639
+ public void run() {
640
+ try {
641
+ application
642
+ .getReactNativeHost()
643
+ .getReactInstanceManager()
644
+ .getDevSupportManager()
645
+ .showDevOptionsDialog();
646
+ } catch (Exception e) {
647
+ e.printStackTrace();
648
+ }
581
649
  }
582
- }
583
- };
584
- mainHandler.post(myRunnable);
585
- }
586
- });
650
+ };
651
+ mainHandler.post(myRunnable);
652
+ }
653
+ });
654
+ } catch (NoUiThreadException e) {
655
+ System.err.println(e.getMessage());
656
+ }
587
657
  }
588
658
 
589
659
  @Override
590
- public void onHostResume() {}
660
+ public void onHostResume() {
661
+ }
591
662
 
592
663
  @Override
593
- public void onHostPause() {}
664
+ public void onHostPause() {
665
+ }
594
666
 
595
667
  @Override
596
- public void onHostDestroy() {}
668
+ public void onHostDestroy() {
669
+ }
597
670
 
598
671
  @Override
599
672
  public void onCatalystInstanceDestroy() {
@@ -606,4 +679,12 @@ public class GleapsdkModule extends ReactContextBaseJavaModule implements Lifecy
606
679
  invalidated = true;
607
680
  super.invalidate();
608
681
  }
682
+
683
+ private Activity getActivitySafe() throws NoUiThreadException {
684
+ Activity activity = getCurrentActivity();
685
+ if(activity == null) {
686
+ throw new NoUiThreadException();
687
+ }
688
+ return activity;
689
+ }
609
690
  }
@@ -0,0 +1,7 @@
1
+ package com.reactnativegleapsdk;
2
+
3
+ public class NoUiThreadException extends Exception{
4
+ public NoUiThreadException() {
5
+ super("No ui thread found. Please be careful when initialising the sdk.");
6
+ }
7
+ }
package/ios/Gleapsdk.m CHANGED
@@ -64,16 +64,18 @@ RCT_EXPORT_METHOD(initialize:(NSString *)token)
64
64
  }
65
65
  }];
66
66
 
67
- NSMutableArray *activationMethods = [[NSMutableArray alloc] init];
68
- if ([config objectForKey: @"activationMethodShake"] != nil && [[config objectForKey: @"activationMethodShake"] boolValue] == YES) {
69
- [activationMethods addObject: @(SHAKE)];
70
- }
71
- if ([config objectForKey: @"activationMethodScreenshotGesture"] != nil && [[config objectForKey: @"activationMethodScreenshotGesture"] boolValue] == YES) {
72
- [activationMethods addObject: @(SCREENSHOT)];
67
+ if ([Gleap sharedInstance].activationMethods.count == 0) {
68
+ NSMutableArray *activationMethods = [[NSMutableArray alloc] init];
69
+ if ([config objectForKey: @"activationMethodShake"] != nil && [[config objectForKey: @"activationMethodShake"] boolValue] == YES) {
70
+ [activationMethods addObject: @(SHAKE)];
71
+ }
72
+ if ([config objectForKey: @"activationMethodScreenshotGesture"] != nil && [[config objectForKey: @"activationMethodScreenshotGesture"] boolValue] == YES) {
73
+ [activationMethods addObject: @(SCREENSHOT)];
74
+ }
75
+
76
+ [[Gleap sharedInstance] setActivationMethods: activationMethods];
73
77
  }
74
78
 
75
- [[Gleap sharedInstance] setActivationMethods: activationMethods];
76
-
77
79
  if (_hasListeners) {
78
80
  [self sendEventWithName:@"configLoaded" body: config];
79
81
  }
@@ -140,6 +142,20 @@ RCT_EXPORT_METHOD(sendSilentBugReport:(NSString *)description andSeverity:(NSStr
140
142
  });
141
143
  }
142
144
 
145
+ RCT_EXPORT_METHOD(sendSilentBugReportWithType:(NSString *)description andSeverity:(NSString *)priority andType:(NSString *)type)
146
+ {
147
+ dispatch_async(dispatch_get_main_queue(), ^{
148
+ GleapBugSeverity prio = MEDIUM;
149
+ if ([priority isEqualToString: @"LOW"]) {
150
+ prio = LOW;
151
+ }
152
+ if ([priority isEqualToString: @"HIGH"]) {
153
+ prio = HIGH;
154
+ }
155
+ [Gleap sendSilentBugReportWith: description andSeverity: prio andType: type];
156
+ });
157
+ }
158
+
143
159
  RCT_EXPORT_METHOD(attachNetworkLog:(NSArray *)networkLogs)
144
160
  {
145
161
  dispatch_async(dispatch_get_main_queue(), ^{
@@ -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","registerListener","eventType","callback","push","registerCustomAction","customActionCallback","notifyCallback","data","length","i","gleapEmitter","NativeEventEmitter","addListener","config","configJSON","Object","JSON","parse","enableNetworkLogs","exp","requests","getRequests","OS","attachNetworkLog","stringify","dataJSON","isJsonString","str","e","name","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 registerListener(eventType: string, callback: (data?: any) => void): 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.registerListener = (eventType: string, callback: any) => {\n if (!callbacks[eventType]) {\n callbacks[eventType] = [];\n }\n callbacks[eventType].push(callback);\n };\n\n GleapSdk.registerCustomAction = (customActionCallback: any) => {\n GleapSdk.registerListener('customActionTriggered', customActionCallback);\n };\n\n const notifyCallback = function (eventType: string, data?: any) {\n if (callbacks && callbacks[eventType] && callbacks[eventType].length > 0) {\n for (var i = 0; i < callbacks[eventType].length; i++) {\n if (callbacks[eventType][i]) {\n callbacks[eventType][i](data);\n }\n }\n }\n };\n\n const gleapEmitter = new NativeEventEmitter(NativeModules.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 notifyCallback('configLoaded', configJSON);\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 notifyCallback('feedbackWillBeSent');\n });\n\n gleapEmitter.addListener('feedbackSent', (data) => {\n try {\n const dataJSON = data instanceof Object ? data : JSON.parse(data);\n notifyCallback('feedbackSent', dataJSON);\n } catch (exp) {}\n });\n\n gleapEmitter.addListener('feedbackSendingFailed', () => {\n notifyCallback('feedbackSendingFailed');\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) {\n notifyCallback('customActionTriggered', {\n name,\n });\n }\n } catch (exp) {}\n });\n\n GleapSdk.removeAllAttachments();\n\n GleapSdk.touched = true;\n}\n\nexport default GleapSdk as GleapSdkType;\n"]}
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","registerListener","eventType","callback","push","registerCustomAction","customActionCallback","notifyCallback","data","length","i","gleapEmitter","NativeEventEmitter","addListener","config","configJSON","Object","JSON","parse","enableNetworkLogs","exp","requests","getRequests","OS","attachNetworkLog","stringify","dataJSON","isJsonString","str","e","name","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 sendSilentBugReportWithType(\n description: string,\n severity: 'LOW' | 'MEDIUM' | 'HIGH',\n type: string\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 registerListener(eventType: string, callback: (data?: any) => void): 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.registerListener = (eventType: string, callback: any) => {\n if (!callbacks[eventType]) {\n callbacks[eventType] = [];\n }\n callbacks[eventType].push(callback);\n };\n\n GleapSdk.registerCustomAction = (customActionCallback: any) => {\n GleapSdk.registerListener('customActionTriggered', customActionCallback);\n };\n\n const notifyCallback = function (eventType: string, data?: any) {\n if (callbacks && callbacks[eventType] && callbacks[eventType].length > 0) {\n for (var i = 0; i < callbacks[eventType].length; i++) {\n if (callbacks[eventType][i]) {\n callbacks[eventType][i](data);\n }\n }\n }\n };\n\n const gleapEmitter = new NativeEventEmitter(NativeModules.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 notifyCallback('configLoaded', configJSON);\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 notifyCallback('feedbackWillBeSent');\n });\n\n gleapEmitter.addListener('feedbackSent', (data) => {\n try {\n const dataJSON = data instanceof Object ? data : JSON.parse(data);\n notifyCallback('feedbackSent', dataJSON);\n } catch (exp) {}\n });\n\n gleapEmitter.addListener('feedbackSendingFailed', () => {\n notifyCallback('feedbackSendingFailed');\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) {\n notifyCallback('customActionTriggered', {\n name,\n });\n }\n } catch (exp) {}\n });\n\n GleapSdk.removeAllAttachments();\n\n GleapSdk.touched = true;\n}\n\nexport default GleapSdk as GleapSdkType;\n"]}
@@ -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","registerListener","eventType","callback","push","registerCustomAction","customActionCallback","notifyCallback","data","length","i","gleapEmitter","addListener","config","configJSON","Object","JSON","parse","enableNetworkLogs","exp","requests","getRequests","OS","attachNetworkLog","stringify","dataJSON","isJsonString","str","e","name","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 registerListener(eventType: string, callback: (data?: any) => void): 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.registerListener = (eventType: string, callback: any) => {\n if (!callbacks[eventType]) {\n callbacks[eventType] = [];\n }\n callbacks[eventType].push(callback);\n };\n\n GleapSdk.registerCustomAction = (customActionCallback: any) => {\n GleapSdk.registerListener('customActionTriggered', customActionCallback);\n };\n\n const notifyCallback = function (eventType: string, data?: any) {\n if (callbacks && callbacks[eventType] && callbacks[eventType].length > 0) {\n for (var i = 0; i < callbacks[eventType].length; i++) {\n if (callbacks[eventType][i]) {\n callbacks[eventType][i](data);\n }\n }\n }\n };\n\n const gleapEmitter = new NativeEventEmitter(NativeModules.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 notifyCallback('configLoaded', configJSON);\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 notifyCallback('feedbackWillBeSent');\n });\n\n gleapEmitter.addListener('feedbackSent', (data) => {\n try {\n const dataJSON = data instanceof Object ? data : JSON.parse(data);\n notifyCallback('feedbackSent', dataJSON);\n } catch (exp) {}\n });\n\n gleapEmitter.addListener('feedbackSendingFailed', () => {\n notifyCallback('feedbackSendingFailed');\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) {\n notifyCallback('customActionTriggered', {\n name,\n });\n }\n } catch (exp) {}\n });\n\n GleapSdk.removeAllAttachments();\n\n GleapSdk.touched = true;\n}\n\nexport default GleapSdk as GleapSdkType;\n"]}
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","registerListener","eventType","callback","push","registerCustomAction","customActionCallback","notifyCallback","data","length","i","gleapEmitter","addListener","config","configJSON","Object","JSON","parse","enableNetworkLogs","exp","requests","getRequests","OS","attachNetworkLog","stringify","dataJSON","isJsonString","str","e","name","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 sendSilentBugReportWithType(\n description: string,\n severity: 'LOW' | 'MEDIUM' | 'HIGH',\n type: string\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 registerListener(eventType: string, callback: (data?: any) => void): 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.registerListener = (eventType: string, callback: any) => {\n if (!callbacks[eventType]) {\n callbacks[eventType] = [];\n }\n callbacks[eventType].push(callback);\n };\n\n GleapSdk.registerCustomAction = (customActionCallback: any) => {\n GleapSdk.registerListener('customActionTriggered', customActionCallback);\n };\n\n const notifyCallback = function (eventType: string, data?: any) {\n if (callbacks && callbacks[eventType] && callbacks[eventType].length > 0) {\n for (var i = 0; i < callbacks[eventType].length; i++) {\n if (callbacks[eventType][i]) {\n callbacks[eventType][i](data);\n }\n }\n }\n };\n\n const gleapEmitter = new NativeEventEmitter(NativeModules.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 notifyCallback('configLoaded', configJSON);\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 notifyCallback('feedbackWillBeSent');\n });\n\n gleapEmitter.addListener('feedbackSent', (data) => {\n try {\n const dataJSON = data instanceof Object ? data : JSON.parse(data);\n notifyCallback('feedbackSent', dataJSON);\n } catch (exp) {}\n });\n\n gleapEmitter.addListener('feedbackSendingFailed', () => {\n notifyCallback('feedbackSendingFailed');\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) {\n notifyCallback('customActionTriggered', {\n name,\n });\n }\n } catch (exp) {}\n });\n\n GleapSdk.removeAllAttachments();\n\n GleapSdk.touched = true;\n}\n\nexport default GleapSdk as GleapSdkType;\n"]}
@@ -8,6 +8,7 @@ declare type GleapSdkType = {
8
8
  open(): void;
9
9
  startFeedbackFlow(feedbackFlow: string): void;
10
10
  sendSilentBugReport(description: string, severity: 'LOW' | 'MEDIUM' | 'HIGH'): void;
11
+ sendSilentBugReportWithType(description: string, severity: 'LOW' | 'MEDIUM' | 'HIGH', type: string): void;
11
12
  identify(userId: string, userProperties: GleapUserProperty): void;
12
13
  clearIdentity(): void;
13
14
  setApiUrl(apiUrl: string): void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-gleapsdk",
3
- "version": "6.4.4",
3
+ "version": "6.4.8",
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",
@@ -16,5 +16,5 @@ Pod::Spec.new do |s|
16
16
  s.source_files = "ios/**/*.{h,m,mm}"
17
17
 
18
18
  s.dependency "React-Core"
19
- s.dependency "Gleap", "6.4.5"
19
+ s.dependency "Gleap", "6.4.8"
20
20
  end
package/src/index.tsx CHANGED
@@ -22,6 +22,11 @@ type GleapSdkType = {
22
22
  description: string,
23
23
  severity: 'LOW' | 'MEDIUM' | 'HIGH'
24
24
  ): void;
25
+ sendSilentBugReportWithType(
26
+ description: string,
27
+ severity: 'LOW' | 'MEDIUM' | 'HIGH',
28
+ type: string
29
+ ): void;
25
30
  identify(userId: string, userProperties: GleapUserProperty): void;
26
31
  clearIdentity(): void;
27
32
  setApiUrl(apiUrl: string): void;