@luciq/react-native 19.4.0-44237-SNAPSHOT → 19.4.0-47504-SNAPSHOT

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.
Files changed (116) hide show
  1. package/README.md +0 -118
  2. package/RNLuciq.podspec +2 -6
  3. package/android/build.gradle +0 -25
  4. package/android/proguard-rules.txt +1 -1
  5. package/android/src/main/java/ai/luciq/reactlibrary/RNLuciqAPMModule.java +12 -3
  6. package/android/src/main/java/ai/luciq/reactlibrary/RNLuciqBugReportingModule.java +24 -28
  7. package/android/src/main/java/ai/luciq/reactlibrary/RNLuciqCrashReportingModule.java +7 -18
  8. package/android/src/main/java/ai/luciq/reactlibrary/RNLuciqFeatureRequestsModule.java +2 -1
  9. package/android/src/main/java/ai/luciq/reactlibrary/RNLuciqNetworkLoggerModule.java +56 -29
  10. package/android/src/main/java/ai/luciq/reactlibrary/RNLuciqReactnativeModule.java +47 -78
  11. package/android/src/main/java/ai/luciq/reactlibrary/RNLuciqRepliesModule.java +16 -4
  12. package/android/src/main/java/ai/luciq/reactlibrary/RNLuciqSessionReplayModule.java +16 -5
  13. package/android/src/main/java/ai/luciq/reactlibrary/RNLuciqSurveysModule.java +15 -7
  14. package/android/src/main/java/ai/luciq/reactlibrary/utils/EventEmitterModule.java +7 -0
  15. package/dist/modules/BugReporting.js +3 -3
  16. package/dist/modules/Luciq.js +3 -2
  17. package/dist/modules/NetworkLogger.d.ts +0 -5
  18. package/dist/modules/NetworkLogger.js +9 -1
  19. package/dist/modules/Replies.js +1 -1
  20. package/dist/modules/Surveys.js +2 -2
  21. package/dist/native/NativeBugReporting.d.ts +4 -4
  22. package/dist/native/NativeCrashReporting.d.ts +2 -2
  23. package/dist/native/NativeLuciq.d.ts +3 -2
  24. package/dist/native/NativePackage.js +2 -25
  25. package/dist/native/NativeReplies.d.ts +1 -1
  26. package/dist/native/NativeSurveys.d.ts +2 -2
  27. package/dist/utils/Enums.js +1 -3
  28. package/dist/utils/FeatureFlags.d.ts +6 -0
  29. package/dist/utils/FeatureFlags.js +35 -0
  30. package/dist/utils/LuciqUtils.d.ts +1 -1
  31. package/dist/utils/LuciqUtils.js +9 -0
  32. package/dist/utils/XhrNetworkInterceptor.js +85 -53
  33. package/ios/RNLuciq/LuciqAPMBridge.h +5 -5
  34. package/ios/RNLuciq/{LuciqAPMBridge.mm → LuciqAPMBridge.m} +39 -48
  35. package/ios/RNLuciq/LuciqBugReportingBridge.h +6 -6
  36. package/ios/RNLuciq/LuciqBugReportingBridge.m +249 -0
  37. package/ios/RNLuciq/LuciqCrashReportingBridge.h +5 -16
  38. package/ios/RNLuciq/LuciqCrashReportingBridge.m +68 -0
  39. package/ios/RNLuciq/LuciqFeatureRequestsBridge.h +1 -1
  40. package/ios/RNLuciq/{LuciqFeatureRequestsBridge.mm → LuciqFeatureRequestsBridge.m} +16 -21
  41. package/ios/RNLuciq/LuciqNetworkLoggerBridge.h +30 -1
  42. package/ios/RNLuciq/{LuciqNetworkLoggerBridge.mm → LuciqNetworkLoggerBridge.m} +77 -46
  43. package/ios/RNLuciq/LuciqReactBridge.h +13 -13
  44. package/ios/RNLuciq/{LuciqReactBridge.mm → LuciqReactBridge.m} +34 -83
  45. package/ios/RNLuciq/LuciqRepliesBridge.h +3 -3
  46. package/ios/RNLuciq/LuciqRepliesBridge.m +80 -0
  47. package/ios/RNLuciq/LuciqSessionReplayBridge.h +5 -5
  48. package/ios/RNLuciq/{LuciqSessionReplayBridge.mm → LuciqSessionReplayBridge.m} +25 -35
  49. package/ios/RNLuciq/LuciqSurveysBridge.h +5 -5
  50. package/ios/RNLuciq/{LuciqSurveysBridge.mm → LuciqSurveysBridge.m} +35 -34
  51. package/package.json +1 -9
  52. package/scripts/get-github-app-token.sh +70 -0
  53. package/scripts/notify-github.sh +17 -8
  54. package/src/modules/BugReporting.ts +3 -3
  55. package/src/modules/Luciq.ts +4 -2
  56. package/src/modules/NetworkLogger.ts +26 -1
  57. package/src/modules/Replies.ts +1 -1
  58. package/src/modules/Surveys.ts +2 -2
  59. package/src/native/NativeBugReporting.ts +6 -3
  60. package/src/native/NativeCrashReporting.ts +2 -2
  61. package/src/native/NativeLuciq.ts +3 -2
  62. package/src/native/NativePackage.ts +2 -52
  63. package/src/native/NativeReplies.ts +1 -1
  64. package/src/native/NativeSurveys.ts +2 -2
  65. package/src/utils/Enums.ts +1 -4
  66. package/src/utils/FeatureFlags.ts +44 -0
  67. package/src/utils/LuciqUtils.ts +21 -1
  68. package/src/utils/XhrNetworkInterceptor.ts +128 -55
  69. package/android/src/newarch/java/ai/luciq/reactlibrary/RNLuciqAPMBaseSpec.java +0 -9
  70. package/android/src/newarch/java/ai/luciq/reactlibrary/RNLuciqBaseSpec.java +0 -33
  71. package/android/src/newarch/java/ai/luciq/reactlibrary/RNLuciqBugReportingBaseSpec.java +0 -33
  72. package/android/src/newarch/java/ai/luciq/reactlibrary/RNLuciqCrashReportingBaseSpec.java +0 -9
  73. package/android/src/newarch/java/ai/luciq/reactlibrary/RNLuciqFeatureRequestsBaseSpec.java +0 -9
  74. package/android/src/newarch/java/ai/luciq/reactlibrary/RNLuciqNetworkLoggerBaseSpec.java +0 -33
  75. package/android/src/newarch/java/ai/luciq/reactlibrary/RNLuciqRepliesBaseSpec.java +0 -33
  76. package/android/src/newarch/java/ai/luciq/reactlibrary/RNLuciqSessionReplayBaseSpec.java +0 -33
  77. package/android/src/newarch/java/ai/luciq/reactlibrary/RNLuciqSurveysBaseSpec.java +0 -33
  78. package/android/src/oldarch/java/ai/luciq/reactlibrary/RNLuciqAPMBaseSpec.java +0 -11
  79. package/android/src/oldarch/java/ai/luciq/reactlibrary/RNLuciqBaseSpec.java +0 -22
  80. package/android/src/oldarch/java/ai/luciq/reactlibrary/RNLuciqBugReportingBaseSpec.java +0 -22
  81. package/android/src/oldarch/java/ai/luciq/reactlibrary/RNLuciqCrashReportingBaseSpec.java +0 -10
  82. package/android/src/oldarch/java/ai/luciq/reactlibrary/RNLuciqFeatureRequestsBaseSpec.java +0 -10
  83. package/android/src/oldarch/java/ai/luciq/reactlibrary/RNLuciqNetworkLoggerBaseSpec.java +0 -22
  84. package/android/src/oldarch/java/ai/luciq/reactlibrary/RNLuciqRepliesBaseSpec.java +0 -22
  85. package/android/src/oldarch/java/ai/luciq/reactlibrary/RNLuciqSessionReplayBaseSpec.java +0 -22
  86. package/android/src/oldarch/java/ai/luciq/reactlibrary/RNLuciqSurveysBaseSpec.java +0 -22
  87. package/dist/native/specs/NativeAPM.d.ts +0 -21
  88. package/dist/native/specs/NativeAPM.js +0 -2
  89. package/dist/native/specs/NativeBugReporting.d.ts +0 -29
  90. package/dist/native/specs/NativeBugReporting.js +0 -2
  91. package/dist/native/specs/NativeCrashReporting.d.ts +0 -12
  92. package/dist/native/specs/NativeCrashReporting.js +0 -2
  93. package/dist/native/specs/NativeFeatureRequests.d.ts +0 -8
  94. package/dist/native/specs/NativeFeatureRequests.js +0 -2
  95. package/dist/native/specs/NativeLuciq.d.ts +0 -80
  96. package/dist/native/specs/NativeLuciq.js +0 -2
  97. package/dist/native/specs/NativeNetworkLogger.d.ts +0 -16
  98. package/dist/native/specs/NativeNetworkLogger.js +0 -2
  99. package/dist/native/specs/NativeReplies.d.ts +0 -21
  100. package/dist/native/specs/NativeReplies.js +0 -2
  101. package/dist/native/specs/NativeSessionReplay.d.ts +0 -17
  102. package/dist/native/specs/NativeSessionReplay.js +0 -2
  103. package/dist/native/specs/NativeSurveys.d.ts +0 -18
  104. package/dist/native/specs/NativeSurveys.js +0 -2
  105. package/ios/RNLuciq/LuciqBugReportingBridge.mm +0 -234
  106. package/ios/RNLuciq/LuciqCrashReportingBridge.mm +0 -91
  107. package/ios/RNLuciq/LuciqRepliesBridge.mm +0 -86
  108. package/src/native/specs/NativeAPM.ts +0 -47
  109. package/src/native/specs/NativeBugReporting.ts +0 -53
  110. package/src/native/specs/NativeCrashReporting.ts +0 -23
  111. package/src/native/specs/NativeFeatureRequests.ts +0 -10
  112. package/src/native/specs/NativeLuciq.ts +0 -137
  113. package/src/native/specs/NativeNetworkLogger.ts +0 -31
  114. package/src/native/specs/NativeReplies.ts +0 -27
  115. package/src/native/specs/NativeSessionReplay.ts +0 -20
  116. package/src/native/specs/NativeSurveys.ts +0 -23
@@ -1,3 +1,5 @@
1
+
2
+
1
3
  #import "LuciqAPMBridge.h"
2
4
  #import <LuciqSDK/LCQAPM.h>
3
5
  #import <asl.h>
@@ -7,13 +9,6 @@
7
9
  #import <React/RCTUIManager.h>
8
10
  #import "Util/LCQAPM+PrivateAPIs.h"
9
11
 
10
- #ifdef RCT_NEW_ARCH_ENABLED
11
- #import <RNLuciqSpec/RNLuciqSpec.h>
12
-
13
- @interface LuciqAPMBridge () <NativeAPMSpec>
14
- @end
15
- #endif
16
-
17
12
  @implementation LuciqAPMBridge
18
13
 
19
14
  - (dispatch_queue_t)methodQueue {
@@ -31,91 +26,86 @@
31
26
 
32
27
  RCT_EXPORT_MODULE(LCQAPM)
33
28
 
34
- - (id)init
29
+ - (id) init
35
30
  {
36
31
  self = [super init];
37
32
  return self;
38
33
  }
39
34
 
40
- RCT_EXPORT_METHOD(lcqSleep) {
35
+ // Pauses the current thread for 3 seconds.
36
+ RCT_EXPORT_METHOD(LCQSleep) {
41
37
  [NSThread sleepForTimeInterval:3.0f];
42
38
  }
43
39
 
40
+ // Enables or disables APM.
44
41
  RCT_EXPORT_METHOD(setEnabled:(BOOL)isEnabled) {
45
42
  LCQAPM.enabled = isEnabled;
46
43
  }
47
44
 
45
+ // Determines either coldAppLaunch is enabled or not.
48
46
  RCT_EXPORT_METHOD(setAppLaunchEnabled:(BOOL)isEnabled) {
49
47
  LCQAPM.coldAppLaunchEnabled = isEnabled;
50
48
  }
51
49
 
50
+ // This method is used to signal the end of the app launch process.
52
51
  RCT_EXPORT_METHOD(endAppLaunch) {
53
52
  [LCQAPM endAppLaunch];
54
53
  }
55
54
 
55
+ // Controls whether automatic tracing of UI interactions is enabled or disabled within the SDK.
56
56
  RCT_EXPORT_METHOD(setAutoUITraceEnabled:(BOOL)isEnabled) {
57
57
  LCQAPM.autoUITraceEnabled = isEnabled;
58
58
  }
59
59
 
60
- RCT_EXPORT_METHOD(startFlow:(NSString *)name) {
60
+ // Starts a flow trace with the specified `name`,
61
+ // allowing the SDK to capture and analyze the flow of execution within the application.
62
+ RCT_EXPORT_METHOD(startFlow: (NSString *)name) {
61
63
  [LCQAPM startFlowWithName:name];
62
64
  }
63
65
 
64
- RCT_EXPORT_METHOD(endFlow:(NSString *)name) {
66
+ // Ends a flow with the specified `name`.
67
+ RCT_EXPORT_METHOD(endFlow: (NSString *)name) {
65
68
  [LCQAPM endFlowWithName:name];
66
69
  }
67
70
 
68
- RCT_EXPORT_METHOD(setFlowAttribute:(NSString *)name
69
- key:(NSString *)key
70
- value:(NSString * _Nullable)value) {
71
+
72
+ // Sets a user defined attribute for the currently active flow.
73
+ RCT_EXPORT_METHOD(setFlowAttribute:(NSString *)name :(NSString *)key :(NSString *_Nullable)value) {
71
74
  [LCQAPM setAttributeForFlowWithName:name key:key value:value];
72
75
  }
73
76
 
77
+ // Starts a new `UITrace` with the provided `name` parameter,
78
+ // allowing the SDK to capture and analyze the UI components within the application.
74
79
  RCT_EXPORT_METHOD(startUITrace:(NSString *)name) {
75
80
  [LCQAPM startUITraceWithName:name];
76
81
  }
77
82
 
83
+ // Terminates the currently active UI trace.
78
84
  RCT_EXPORT_METHOD(endUITrace) {
79
85
  [LCQAPM endUITrace];
80
86
  }
81
87
 
88
+ // Enables or disables screen render.
82
89
  RCT_EXPORT_METHOD(setScreenRenderingEnabled:(BOOL)isEnabled) {
83
90
  LCQAPM.screenRenderingEnabled = isEnabled;
84
91
  }
85
92
 
86
- RCT_EXPORT_METHOD(networkLogAndroid:(double)requestStartTime
87
- requestDuration:(double)requestDuration
88
- requestHeaders:(NSString *)requestHeaders
89
- requestBody:(NSString *)requestBody
90
- requestBodySize:(double)requestBodySize
91
- requestMethod:(NSString *)requestMethod
92
- requestUrl:(NSString *)requestUrl
93
- requestContentType:(NSString *)requestContentType
94
- responseHeaders:(NSString *)responseHeaders
95
- responseBody:(NSString * _Nullable)responseBody
96
- responseBodySize:(double)responseBodySize
97
- statusCode:(double)statusCode
98
- responseContentType:(NSString *)responseContentType
99
- errorDomain:(NSString *)errorDomain
100
- w3cExternalTraceAttributes:(NSDictionary *)w3cExternalTraceAttributes
101
- gqlQueryName:(NSString * _Nullable)gqlQueryName
102
- serverErrorMessage:(NSString * _Nullable)serverErrorMessage) {
103
- // Android-only; iOS no-op to satisfy unified spec.
104
- }
105
-
93
+ // Syncs a custom span to the native SDK (currently logs only)
106
94
  RCT_EXPORT_METHOD(syncCustomSpan:(NSString *)name
107
95
  startTimestamp:(double)startTimestamp
108
96
  endTimestamp:(double)endTimestamp
109
- resolve:(RCTPromiseResolveBlock)resolve
110
- reject:(RCTPromiseRejectBlock)reject)
97
+ resolver:(RCTPromiseResolveBlock)resolve
98
+ rejecter:(RCTPromiseRejectBlock)reject)
111
99
  {
112
100
  @try {
101
+ // Convert microseconds → seconds (NSDate uses seconds)
113
102
  NSTimeInterval startSeconds = startTimestamp / 1e6;
114
103
  NSTimeInterval endSeconds = endTimestamp / 1e6;
115
104
 
116
105
  NSDate *startDate = [NSDate dateWithTimeIntervalSince1970:startSeconds];
117
106
  NSDate *endDate = [NSDate dateWithTimeIntervalSince1970:endSeconds];
118
107
 
108
+ // Add completed span to APM
119
109
  [LCQAPM addCompletedCustomSpanWithName:name
120
110
  startDate:startDate
121
111
  endDate:endDate];
@@ -123,14 +113,17 @@ RCT_EXPORT_METHOD(syncCustomSpan:(NSString *)name
123
113
  resolve(@YES);
124
114
  }
125
115
  @catch (NSException *exception) {
126
- reject(@"SYNC_CUSTOM_SPAN_ERROR",
127
- exception.reason ?: @"Failed to sync custom span",
128
- nil);
116
+ reject(
117
+ @"SYNC_CUSTOM_SPAN_ERROR",
118
+ exception.reason ?: @"Failed to sync custom span",
119
+ nil
120
+ );
129
121
  }
130
122
  }
131
123
 
124
+ // Checks if custom spans feature is enabled
132
125
  RCT_EXPORT_METHOD(isCustomSpanEnabled:(RCTPromiseResolveBlock)resolve
133
- reject:(RCTPromiseRejectBlock)reject) {
126
+ rejecter:(RCTPromiseRejectBlock)reject) {
134
127
  @try {
135
128
  BOOL enabled = LCQAPM.customSpansEnabled;
136
129
  resolve(@(enabled));
@@ -140,8 +133,9 @@ RCT_EXPORT_METHOD(isCustomSpanEnabled:(RCTPromiseResolveBlock)resolve
140
133
  }
141
134
  }
142
135
 
136
+ // Checks if APM is enabled
143
137
  RCT_EXPORT_METHOD(isAPMEnabled:(RCTPromiseResolveBlock)resolve
144
- reject:(RCTPromiseRejectBlock)reject) {
138
+ rejecter:(RCTPromiseRejectBlock)reject) {
145
139
  @try {
146
140
  BOOL enabled = LCQAPM.enabled;
147
141
  resolve(@(enabled));
@@ -151,16 +145,13 @@ RCT_EXPORT_METHOD(isAPMEnabled:(RCTPromiseResolveBlock)resolve
151
145
  }
152
146
  }
153
147
 
154
- #ifdef RCT_NEW_ARCH_ENABLED
155
- - (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:
156
- (const facebook::react::ObjCTurboModule::InitParams &)params
157
- {
158
- return std::make_shared<facebook::react::NativeAPMSpecJSI>(params);
159
- }
160
- #endif
148
+
161
149
 
162
150
  @synthesize description;
151
+
163
152
  @synthesize hash;
153
+
164
154
  @synthesize superclass;
165
155
 
166
156
  @end
157
+
@@ -25,21 +25,21 @@
25
25
 
26
26
  - (void)setOptions:(NSArray *)optionsArray;
27
27
 
28
- - (void)setFloatingButtonEdge:(NSString *)edge offset:(double)offset;
28
+ - (void)setFloatingButtonEdge:(CGRectEdge)floatingButtonEdge withTopOffset:(double)floatingButtonOffsetFromTop;
29
29
 
30
- - (void)setOnInvokeHandler;
30
+ - (void)setOnInvokeHandler:(RCTResponseSenderBlock)callBack;
31
31
 
32
- - (void)setOnSDKDismissedHandler;
32
+ - (void)setOnSDKDismissedHandler:(RCTResponseSenderBlock)callBack;
33
33
 
34
34
  - (void)setShakingThresholdForiPhone:(double)iPhoneShakingThreshold;
35
35
 
36
36
  - (void)setShakingThresholdForiPad:(double)iPadShakingThreshold;
37
37
 
38
- - (void)setExtendedBugReportMode:(NSString *)mode;
38
+ - (void)setExtendedBugReportMode:(LCQExtendedBugReportMode)extendedBugReportMode;
39
39
 
40
40
  - (void)setReportTypes:(NSArray *)types;
41
41
 
42
- - (void)show:(NSString *)type options:(NSArray *)options;
42
+ - (void)show:(LCQBugReportingReportType)type options:(NSArray *)options;
43
43
 
44
44
  - (void)setAutoScreenRecordingEnabled:(BOOL)enabled;
45
45
 
@@ -57,6 +57,6 @@
57
57
  checked:(BOOL)checked
58
58
  actionType:(id)actionType;
59
59
 
60
- - (void)setProactiveReportingConfigurations:(BOOL)enabled gapBetweenModals:(double)gapBetweenModals modalDelayAfterDetection:(double)modalDelayAfterDetection;
60
+ - (void)setProactiveReportingConfigurations:(BOOL)enabled gap:(NSNumber* )gap model:(NSNumber* )modal;
61
61
 
62
62
  @end
@@ -0,0 +1,249 @@
1
+ //
2
+ // LuciqBugReportingBridge.m
3
+ // RNLuciq
4
+ //
5
+ // Created by Salma Ali on 7/30/19.
6
+ // Copyright © 2019 luciq. All rights reserved.
7
+ //
8
+
9
+ #import "LuciqBugReportingBridge.h"
10
+ #import <LuciqSDK/LCQBugReporting.h>
11
+ #import <asl.h>
12
+ #import <React/RCTLog.h>
13
+ #import <os/log.h>
14
+ #import <React/RCTUIManager.h>
15
+
16
+ @implementation LuciqBugReportingBridge
17
+
18
+ - (dispatch_queue_t)methodQueue {
19
+ return dispatch_get_main_queue();
20
+ }
21
+
22
+ + (BOOL)requiresMainQueueSetup
23
+ {
24
+ return NO;
25
+ }
26
+
27
+ - (NSArray<NSString *> *)supportedEvents {
28
+ return @[
29
+ @"LCQpreInvocationHandler",
30
+ @"LCQpostInvocationHandler",
31
+ @"LCQDidSelectPromptOptionHandler",
32
+ ];
33
+ }
34
+
35
+ RCT_EXPORT_MODULE(LCQBugReporting)
36
+
37
+ RCT_EXPORT_METHOD(setEnabled:(BOOL) isEnabled) {
38
+ LCQBugReporting.enabled = isEnabled;
39
+ }
40
+
41
+ RCT_EXPORT_METHOD(setAutoScreenRecordingEnabled:(BOOL)enabled) {
42
+ LCQBugReporting.autoScreenRecordingEnabled = enabled;
43
+ }
44
+
45
+ RCT_EXPORT_METHOD(setAutoScreenRecordingDuration:(CGFloat)duration) {
46
+ LCQBugReporting.autoScreenRecordingDuration = duration;
47
+ }
48
+
49
+ RCT_EXPORT_METHOD(setOnInvokeHandler:(RCTResponseSenderBlock)callBack) {
50
+ if (callBack != nil) {
51
+ LCQBugReporting.willInvokeHandler = ^{
52
+ [self sendEventWithName:@"LCQpreInvocationHandler" body:nil];
53
+ };
54
+ } else {
55
+ LCQBugReporting.willInvokeHandler = nil;
56
+ }
57
+ }
58
+
59
+ RCT_EXPORT_METHOD(setOnSDKDismissedHandler:(RCTResponseSenderBlock)callBack) {
60
+ if (callBack != nil) {
61
+ LCQBugReporting.didDismissHandler = ^(LCQDismissType dismissType, LCQReportCategory reportType) {
62
+
63
+ //parse dismiss type enum
64
+ NSString* dismissTypeString;
65
+ if (dismissType == LCQDismissTypeCancel) {
66
+ dismissTypeString = @"CANCEL";
67
+ } else if (dismissType == LCQDismissTypeSubmit) {
68
+ dismissTypeString = @"SUBMIT";
69
+ } else if (dismissType == LCQDismissTypeAddAttachment) {
70
+ dismissTypeString = @"ADD_ATTACHMENT";
71
+ }
72
+
73
+ //parse report type enum
74
+ NSString* reportTypeString;
75
+ if (reportType == LCQReportCategoryBug) {
76
+ reportTypeString = @"bug";
77
+ } else if (reportType == LCQReportCategoryFeedback) {
78
+ reportTypeString = @"feedback";
79
+ } else {
80
+ reportTypeString = @"other";
81
+ }
82
+ NSDictionary *result = @{ @"dismissType": dismissTypeString,
83
+ @"reportType": reportTypeString};
84
+ [self sendEventWithName:@"LCQpostInvocationHandler" body: result];
85
+ };
86
+ } else {
87
+ LCQBugReporting.didDismissHandler = nil;
88
+ }
89
+ }
90
+
91
+ RCT_EXPORT_METHOD(setDidSelectPromptOptionHandler:(RCTResponseSenderBlock)callBack) {
92
+ if (callBack != nil) {
93
+
94
+ LCQBugReporting.didSelectPromptOptionHandler = ^(LCQPromptOption promptOption) {
95
+
96
+ NSString *promptOptionString;
97
+ if (promptOption == LCQPromptOptionBug) {
98
+ promptOptionString = @"bug";
99
+ } else if (promptOption == LCQBugReportingTypeFeedback) {
100
+ promptOptionString = @"feedback";
101
+ } else if (promptOption == LCQPromptOptionChat) {
102
+ promptOptionString = @"chat";
103
+ } else {
104
+ promptOptionString = @"none";
105
+ }
106
+
107
+ [self sendEventWithName:@"LCQDidSelectPromptOptionHandler" body:@{
108
+ @"promptOption": promptOptionString
109
+ }];
110
+ };
111
+ } else {
112
+ LCQBugReporting.didSelectPromptOptionHandler = nil;
113
+ }
114
+ }
115
+
116
+ RCT_EXPORT_METHOD(setInvocationEvents:(NSArray*)invocationEventsArray) {
117
+ LCQInvocationEvent invocationEvents = 0;
118
+ for (NSNumber *boxedValue in invocationEventsArray) {
119
+ invocationEvents |= [boxedValue intValue];
120
+ }
121
+ LCQBugReporting.invocationEvents = invocationEvents;
122
+ }
123
+
124
+ RCT_EXPORT_METHOD(setOptions:(NSArray*)invocationOptionsArray) {
125
+ LCQBugReportingOption invocationOptions = 0;
126
+
127
+ for (NSNumber *boxedValue in invocationOptionsArray) {
128
+ invocationOptions |= [boxedValue intValue];
129
+ }
130
+
131
+ LCQBugReporting.bugReportingOptions = invocationOptions;
132
+ }
133
+
134
+ RCT_EXPORT_METHOD(setFloatingButtonEdge:(CGRectEdge)floatingButtonEdge withTopOffset:(double)floatingButtonOffsetFromTop) {
135
+ LCQBugReporting.floatingButtonEdge = floatingButtonEdge;
136
+ LCQBugReporting.floatingButtonTopOffset = floatingButtonOffsetFromTop;
137
+ }
138
+
139
+ RCT_EXPORT_METHOD(setExtendedBugReportMode:(LCQExtendedBugReportMode)extendedBugReportMode) {
140
+ LCQBugReporting.extendedBugReportMode = extendedBugReportMode;
141
+ }
142
+
143
+ RCT_EXPORT_METHOD(setEnabledAttachmentTypes:(BOOL)screenShot
144
+ extraScreenShot:(BOOL)extraScreenShot
145
+ galleryImage:(BOOL)galleryImage
146
+ screenRecording:(BOOL)screenRecording) {
147
+ LCQAttachmentType attachmentTypes = 0;
148
+ if(screenShot) {
149
+ attachmentTypes = LCQAttachmentTypeScreenShot;
150
+ }
151
+ if(extraScreenShot) {
152
+ attachmentTypes |= LCQAttachmentTypeExtraScreenShot;
153
+ }
154
+ if(galleryImage) {
155
+ attachmentTypes |= LCQAttachmentTypeGalleryImage;
156
+ }
157
+ if(screenRecording) {
158
+ attachmentTypes |= LCQAttachmentTypeScreenRecording;
159
+ }
160
+
161
+ LCQBugReporting.enabledAttachmentTypes = attachmentTypes;
162
+ }
163
+
164
+ RCT_EXPORT_METHOD(setViewHierarchyEnabled:(BOOL)viewHirearchyEnabled) {
165
+ LCQBugReporting.shouldCaptureViewHierarchy = viewHirearchyEnabled;
166
+ }
167
+
168
+ RCT_EXPORT_METHOD(setVideoRecordingFloatingButtonPosition:(LCQPosition)position) {
169
+ LCQBugReporting.videoRecordingFloatingButtonPosition = position;
170
+ }
171
+
172
+ RCT_EXPORT_METHOD(setReportTypes:(NSArray*) types ) {
173
+ LCQBugReportingReportType reportTypes = 0;
174
+ for (NSNumber *boxedValue in types) {
175
+ reportTypes |= [boxedValue intValue];
176
+ }
177
+ [LCQBugReporting setPromptOptionsEnabledReportTypes: reportTypes];
178
+ }
179
+
180
+ RCT_EXPORT_METHOD(show:(LCQBugReportingReportType)type options:(NSArray*) options) {
181
+ LCQBugReportingOption parsedOptions = 0;
182
+ for (NSNumber *boxedValue in options) {
183
+ parsedOptions |= [boxedValue intValue];
184
+ }
185
+ NSArray* args = @[@(type), @(parsedOptions)];
186
+ [[NSRunLoop mainRunLoop] performSelector:@selector(showBugReportingWithReportTypeAndOptionsHelper:) target:self argument:args order:0 modes:@[NSDefaultRunLoopMode]];
187
+ }
188
+
189
+ - (void) showBugReportingWithReportTypeAndOptionsHelper:(NSArray*)args {
190
+ LCQBugReportingReportType parsedreportType = [args[0] intValue];
191
+ LCQBugReportingOption parsedOptions = [args[1] intValue];
192
+ [LCQBugReporting showWithReportType:parsedreportType options:parsedOptions];
193
+ }
194
+
195
+ RCT_EXPORT_METHOD(setShakingThresholdForiPhone:(double)iPhoneShakingThreshold) {
196
+ LCQBugReporting.shakingThresholdForiPhone = iPhoneShakingThreshold;
197
+ }
198
+
199
+ RCT_EXPORT_METHOD(setShakingThresholdForiPad:(double)iPadShakingThreshold) {
200
+ LCQBugReporting.shakingThresholdForiPad = iPadShakingThreshold;
201
+ }
202
+
203
+ RCT_EXPORT_METHOD(setDisclaimerText:(NSString*)text) {
204
+ [LCQBugReporting setDisclaimerText:text];
205
+ }
206
+
207
+ RCT_EXPORT_METHOD(setCommentMinimumCharacterCount:(nonnull NSNumber *)limit reportTypes:(NSArray *)reportTypes) {
208
+ LCQBugReportingType parsedReportTypes = 0;
209
+ if (![reportTypes count]) {
210
+ parsedReportTypes = @(LCQBugReportingTypeBug).integerValue | @(LCQBugReportingTypeFeedback).integerValue | @(LCQBugReportingTypeQuestion).integerValue;
211
+ }
212
+ else {
213
+ for (NSNumber *reportType in reportTypes) {
214
+ parsedReportTypes |= [reportType intValue];
215
+ }
216
+ }
217
+ [LCQBugReporting setCommentMinimumCharacterCount:[limit integerValue] forBugReportType:parsedReportTypes];
218
+ }
219
+
220
+ RCT_EXPORT_METHOD(addUserConsent:(NSString *)key
221
+ description:(NSString *)description
222
+ mandatory:(BOOL)mandatory
223
+ checked:(BOOL)checked
224
+ actionType:(id)actionType) {
225
+ LCQConsentAction mappedActionType = (LCQConsentAction)[actionType integerValue];
226
+
227
+ [LCQBugReporting addUserConsentWithKey:key
228
+ description:description
229
+ mandatory:mandatory
230
+ checked:checked
231
+ actionType:mappedActionType];
232
+ }
233
+
234
+ RCT_EXPORT_METHOD(setProactiveReportingConfigurations:(BOOL)enabled gap:(nonnull NSNumber* )gap model:(nonnull NSNumber* )modal) {
235
+ LCQProactiveReportingConfigurations *configurations = [[LCQProactiveReportingConfigurations alloc] init];
236
+ configurations.enabled = enabled; //Enable/disable
237
+ configurations.gapBetweenModals = gap; // Time in seconds
238
+ configurations.modalDelayAfterDetection = modal; // Time in seconds
239
+ [LCQBugReporting setProactiveReportingConfigurations:configurations];
240
+ }
241
+
242
+
243
+ @synthesize description;
244
+
245
+ @synthesize hash;
246
+
247
+ @synthesize superclass;
248
+
249
+ @end
@@ -9,21 +9,10 @@
9
9
 
10
10
  @interface LuciqCrashReportingBridge : RCTEventEmitter <RCTBridgeModule>
11
11
 
12
- - (void)setEnabled:(BOOL)isEnabled;
13
-
14
- - (void)sendJSCrash:(NSDictionary * _Nonnull)data
15
- resolve:(RCTPromiseResolveBlock _Nullable)resolve
16
- reject:(RCTPromiseRejectBlock _Nullable)reject;
17
-
18
- - (void)sendHandledJSCrash:(NSDictionary * _Nonnull)data
19
- userAttributes:(NSDictionary * _Nullable)userAttributes
20
- fingerprint:(NSString * _Nullable)fingerprint
21
- nonFatalExceptionLevel:(NSString * _Nullable)nonFatalExceptionLevel
22
- resolve:(RCTPromiseResolveBlock _Nullable)resolve
23
- reject:(RCTPromiseRejectBlock _Nullable)reject;
24
-
25
- - (void)setNDKCrashesEnabled:(BOOL)isEnabled
26
- resolve:(RCTPromiseResolveBlock _Nullable)resolve
27
- reject:(RCTPromiseRejectBlock _Nullable)reject;
12
+ - (void)setEnabled:(BOOL) isEnabled;
13
+ - (void)sendJSCrash:(NSDictionary *_Nonnull )stackTrace resolver:(RCTPromiseResolveBlock _Nullable )resolve
14
+ rejecter:(RCTPromiseRejectBlock _Nullable )reject;
15
+ - (void)sendHandledJSCrash:(NSDictionary *_Nonnull)stackTrace userAttributes:(nullable NSDictionary *)userAttributes fingerprint:(nullable NSString *)fingerprint nonFatalExceptionLevel:(LCQNonFatalLevel) nonFatalExceptionLevel resolver:(RCTPromiseResolveBlock _Nullable )resolve
16
+ rejecter:(RCTPromiseRejectBlock _Nullable )reject;
28
17
 
29
18
  @end
@@ -0,0 +1,68 @@
1
+ #import "LuciqCrashReportingBridge.h"
2
+ #import "Util/LCQCrashReporting+CP.h"
3
+
4
+
5
+ @implementation LuciqCrashReportingBridge
6
+
7
+ - (dispatch_queue_t)methodQueue {
8
+ return dispatch_get_main_queue();
9
+ }
10
+
11
+ + (BOOL)requiresMainQueueSetup
12
+ {
13
+ return NO;
14
+ }
15
+
16
+ - (NSArray<NSString *> *)supportedEvents {
17
+ return @[
18
+ @"LCQSendHandledJSCrash",
19
+ @"LCQSendUnhandledJSCrash",
20
+ ];
21
+ }
22
+
23
+ RCT_EXPORT_MODULE(LCQCrashReporting)
24
+
25
+ RCT_EXPORT_METHOD(setEnabled: (BOOL) isEnabled) {
26
+ LCQCrashReporting.enabled = isEnabled;
27
+ }
28
+
29
+ RCT_EXPORT_METHOD(sendJSCrash:(NSDictionary *)stackTrace
30
+ resolver:(RCTPromiseResolveBlock)resolve
31
+ rejecter:(RCTPromiseRejectBlock)reject) {
32
+
33
+ dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0ul);
34
+ dispatch_async(queue, ^{
35
+ [LCQCrashReporting cp_reportFatalCrashWithStackTrace:stackTrace];
36
+ resolve([NSNull null]);
37
+ });
38
+ }
39
+
40
+ RCT_EXPORT_METHOD(sendHandledJSCrash: (NSDictionary *)stackTrace
41
+ userAttributes:(nullable NSDictionary *)userAttributes fingerprint:(nullable NSString *)fingerprint nonFatalExceptionLevel:(LCQNonFatalLevel)nonFatalExceptionLevel
42
+ resolver:(RCTPromiseResolveBlock)resolve
43
+ rejecter:(RCTPromiseRejectBlock)reject) {
44
+
45
+ if([fingerprint isKindOfClass:NSNull.class]){
46
+ fingerprint = nil;
47
+ }
48
+
49
+ if([userAttributes isKindOfClass:NSNull.class]){
50
+ userAttributes = nil;
51
+ }
52
+ dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul);
53
+ dispatch_async(queue, ^{
54
+ [LCQCrashReporting cp_reportNonFatalCrashWithStackTrace:stackTrace level:nonFatalExceptionLevel groupingString:fingerprint userAttributes:userAttributes];
55
+
56
+ resolve([NSNull null]);
57
+ });
58
+
59
+ }
60
+ @synthesize description;
61
+
62
+ @synthesize hash;
63
+
64
+ @synthesize superclass;
65
+
66
+ @end
67
+
68
+
@@ -18,7 +18,7 @@
18
18
  +------------------------------------------------------------------------+
19
19
  */
20
20
 
21
- - (void)setEmailFieldRequiredForFeatureRequests:(BOOL)isEmailFieldRequired types:(NSArray *)actionTypesArray;
21
+ - (void)setEmailFieldRequiredForFeatureRequests:(BOOL)isEmailFieldRequired forAction:(NSArray *)actionTypesArray;
22
22
 
23
23
  - (void)show;
24
24
 
@@ -1,3 +1,11 @@
1
+ //
2
+ // LuciqFeatureRequestsBridge.m
3
+ // RNLuciq
4
+ //
5
+ // Created by Salma Ali on 7/30/19.
6
+ // Copyright © 2019 luciq. All rights reserved.
7
+ //
8
+
1
9
  #import "LuciqFeatureRequestsBridge.h"
2
10
  #import <LuciqSDK/LCQFeatureRequests.h>
3
11
  #import <asl.h>
@@ -6,13 +14,6 @@
6
14
  #import <LuciqSDK/LCQTypes.h>
7
15
  #import <React/RCTUIManager.h>
8
16
 
9
- #ifdef RCT_NEW_ARCH_ENABLED
10
- #import <RNLuciqSpec/RNLuciqSpec.h>
11
-
12
- @interface LuciqFeatureRequestsBridge () <NativeFeatureRequestsSpec>
13
- @end
14
- #endif
15
-
16
17
  @implementation LuciqFeatureRequestsBridge
17
18
 
18
19
  - (dispatch_queue_t)methodQueue {
@@ -35,32 +36,26 @@ RCT_EXPORT_METHOD(show) {
35
36
  }
36
37
 
37
38
  RCT_EXPORT_METHOD(setEmailFieldRequiredForFeatureRequests:(BOOL)isEmailFieldRequired
38
- types:(NSArray *)actionTypesArray) {
39
+ forAction:(NSArray *)actionTypesArray) {
39
40
  LCQAction actionTypes = 0;
40
41
 
41
- for (id value in actionTypesArray) {
42
- if ([value isKindOfClass:[NSNumber class]] || [value isKindOfClass:[NSString class]]) {
43
- actionTypes |= [value intValue];
44
- }
42
+ for (NSNumber *boxedValue in actionTypesArray) {
43
+ actionTypes |= [boxedValue intValue];
45
44
  }
46
45
 
47
46
  [LCQFeatureRequests setEmailFieldRequired:isEmailFieldRequired forAction:actionTypes];
48
47
  }
49
48
 
50
- RCT_EXPORT_METHOD(setEnabled:(BOOL)isEnabled) {
49
+ RCT_EXPORT_METHOD(setEnabled: (BOOL) isEnabled) {
51
50
  LCQFeatureRequests.enabled = isEnabled;
52
51
  }
53
52
 
54
- #ifdef RCT_NEW_ARCH_ENABLED
55
- - (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:
56
- (const facebook::react::ObjCTurboModule::InitParams &)params
57
- {
58
- return std::make_shared<facebook::react::NativeFeatureRequestsSpecJSI>(params);
59
- }
60
- #endif
61
-
62
53
  @synthesize description;
54
+
63
55
  @synthesize hash;
56
+
64
57
  @synthesize superclass;
65
58
 
66
59
  @end
60
+
61
+
@@ -2,9 +2,15 @@
2
2
  #import <React/RCTEventEmitter.h>
3
3
  #import <LuciqSDK/LCQTypes.h>
4
4
 
5
- typedef void (^LCQURLRequestAsyncObfuscationCompletedHandler)(NSURLRequest * _Nonnull request);
5
+ typedef void (^ LCQURLRequestAsyncObfuscationCompletedHandler)(NSURLRequest * _Nonnull request);
6
6
  typedef void (^LCQURLRequestResponseAsyncFilteringCompletedHandler)(BOOL keep);
7
7
 
8
+ typedef NS_ENUM(NSInteger, NetworkListenerType) {
9
+ NetworkListenerTypeFiltering,
10
+ NetworkListenerTypeObfuscation,
11
+ NetworkListenerTypeBoth
12
+ };
13
+
8
14
  @interface LuciqNetworkLoggerBridge : RCTEventEmitter <RCTBridgeModule>
9
15
 
10
16
  @property NSMutableDictionary<NSString *, LCQURLRequestAsyncObfuscationCompletedHandler> * _Nonnull requestObfuscationCompletionDictionary;
@@ -12,4 +18,27 @@ typedef void (^LCQURLRequestResponseAsyncFilteringCompletedHandler)(BOOL keep);
12
18
  @property NSMutableDictionary<NSString *, LCQURLRequestResponseAsyncFilteringCompletedHandler> * _Nonnull requestFilteringCompletionDictionary;
13
19
  @property NSMutableDictionary<NSString *, LCQURLRequestResponseAsyncFilteringCompletedHandler> * _Nonnull responseFilteringCompletionDictionary;
14
20
 
21
+ /*
22
+ +------------------------------------------------------------------------+
23
+ | NetworkLogger Module |
24
+ +------------------------------------------------------------------------+
25
+ */
26
+
27
+ - (BOOL)isNativeInterceptionEnabled;
28
+
29
+ - (void) registerNetworkLogsListener:(NetworkListenerType)listenerType;
30
+
31
+ - (void)updateNetworkLogSnapshot:(NSString * _Nonnull)url
32
+ callbackID:(NSString * _Nonnull)callbackID
33
+ requestBody:(NSString * _Nullable)requestBody
34
+ responseBody:(NSString * _Nullable)responseBody
35
+ responseCode:(double)responseCode
36
+ requestHeaders:(NSDictionary * _Nullable)requestHeaders
37
+ responseHeaders:(NSDictionary * _Nullable)responseHeaders;
38
+
39
+ - (void) setNetworkLoggingRequestFilterPredicateIOS:(NSString * _Nonnull) callbackID : (BOOL)value;
40
+
41
+ - (void)forceStartNetworkLoggingIOS;
42
+
43
+ - (void)forceStopNetworkLoggingIOS;
15
44
  @end