@cloudflare/realtimekit-react-native 0.2.1 → 0.2.2-staging.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.
Files changed (44) hide show
  1. package/android/build.gradle +0 -2
  2. package/android/src/main/java/com/cloudflare/realtimekit/CoreModule.java +19 -0
  3. package/android/src/main/java/com/cloudflare/realtimekit/ForegroundService.java +2 -4
  4. package/android/src/main/java/com/cloudflare/realtimekit/RTKHelperModule.java +1 -2
  5. package/android/src/main/java/com/cloudflare/realtimekit/RTKLogger.java +116 -0
  6. package/android/src/main/java/com/cloudflare/realtimekit/incallmanager/AppRTCBluetoothManager.java +75 -74
  7. package/android/src/main/java/com/cloudflare/realtimekit/incallmanager/AppRTCUtils.java +10 -9
  8. package/android/src/main/java/com/cloudflare/realtimekit/incallmanager/InCallManagerModule.java +175 -872
  9. package/android/src/main/java/com/cloudflare/realtimekit/incallmanager/InCallProximityManager.java +9 -8
  10. package/android/src/main/java/com/cloudflare/realtimekit/incallmanager/InCallWakeLockUtils.java +8 -7
  11. package/ios/BroadcastEventEmitter.m +9 -0
  12. package/ios/Core.h +9 -1
  13. package/ios/Core.m +42 -0
  14. package/ios/RNInCallManager.m +639 -700
  15. package/ios/RTKLogger.h +51 -0
  16. package/ios/RTKLogger.m +107 -0
  17. package/ios/RTKRNBackgroundTimer.m +8 -7
  18. package/ios/RTKRNPermissionHandlerNotifications.m +12 -0
  19. package/ios/RTKRNPermissions.m +24 -1
  20. package/ios/RTKScreensharePickerView.m +6 -0
  21. package/ios/screenshare/RTKScreenshareHandler.swift +1 -1
  22. package/ios/screenshare/RTKScreenshareUploader.swift +3 -3
  23. package/ios/screenshare/RTKSocketConnection.swift +8 -8
  24. package/lib/commonjs/LocalMediaHandler.js +82 -24
  25. package/lib/commonjs/LocalMediaHandler.js.map +1 -1
  26. package/lib/commonjs/LocalMediaUtils.js +60 -5
  27. package/lib/commonjs/LocalMediaUtils.js.map +1 -1
  28. package/lib/commonjs/NativeAudioManager.js +7 -3
  29. package/lib/commonjs/NativeAudioManager.js.map +1 -1
  30. package/lib/commonjs/utils/version.js +1 -1
  31. package/lib/commonjs/utils/version.js.map +1 -1
  32. package/lib/module/LocalMediaHandler.js +82 -24
  33. package/lib/module/LocalMediaHandler.js.map +1 -1
  34. package/lib/module/LocalMediaUtils.js +60 -5
  35. package/lib/module/LocalMediaUtils.js.map +1 -1
  36. package/lib/module/NativeAudioManager.js +7 -3
  37. package/lib/module/NativeAudioManager.js.map +1 -1
  38. package/lib/module/utils/version.js +1 -1
  39. package/lib/module/utils/version.js.map +1 -1
  40. package/lib/typescript/LocalMediaHandler.d.ts +1 -0
  41. package/lib/typescript/LocalMediaUtils.d.ts +1 -0
  42. package/lib/typescript/NativeAudioManager.d.ts +1 -0
  43. package/lib/typescript/utils/version.d.ts +1 -1
  44. package/package.json +2 -4
@@ -0,0 +1,51 @@
1
+ #import <Foundation/Foundation.h>
2
+
3
+ NS_ASSUME_NONNULL_BEGIN
4
+
5
+ typedef NS_ENUM(NSInteger, RTKLogLevel) {
6
+ RTKLogLevelVerbose = 0,
7
+ RTKLogLevelDebug = 1,
8
+ RTKLogLevelInfo = 2,
9
+ RTKLogLevelWarning = 3,
10
+ RTKLogLevelError = 4,
11
+ RTKLogLevelNone = 5
12
+ };
13
+
14
+ @interface RTKLogger : NSObject
15
+
16
+ /// Shared instance for global logging configuration
17
+ + (instancetype)sharedInstance;
18
+
19
+ /// Enable or disable logging globally
20
+ @property (nonatomic, assign) BOOL loggingEnabled;
21
+
22
+ /// Set minimum log level (default: RTKLogLevelDebug)
23
+ @property (nonatomic, assign) RTKLogLevel minimumLogLevel;
24
+
25
+ /// Log a verbose message
26
+ + (void)verbose:(NSString *)format, ... NS_FORMAT_FUNCTION(1,2);
27
+
28
+ /// Log a debug message
29
+ + (void)debug:(NSString *)format, ... NS_FORMAT_FUNCTION(1,2);
30
+
31
+ /// Log an info message
32
+ + (void)info:(NSString *)format, ... NS_FORMAT_FUNCTION(1,2);
33
+
34
+ /// Log a warning message
35
+ + (void)warning:(NSString *)format, ... NS_FORMAT_FUNCTION(1,2);
36
+
37
+ /// Log an error message
38
+ + (void)error:(NSString *)format, ... NS_FORMAT_FUNCTION(1,2);
39
+
40
+ /// Log with specific level
41
+ + (void)log:(RTKLogLevel)level format:(NSString *)format, ... NS_FORMAT_FUNCTION(2,3);
42
+
43
+ /// Enable logging for RealtimeKit module
44
+ + (void)enable;
45
+
46
+ /// Disable logging for RealtimeKit module
47
+ + (void)disable;
48
+
49
+ @end
50
+
51
+ NS_ASSUME_NONNULL_END
@@ -0,0 +1,107 @@
1
+ #import "RTKLogger.h"
2
+
3
+ @implementation RTKLogger
4
+
5
+ + (instancetype)sharedInstance {
6
+ static RTKLogger *sharedInstance = nil;
7
+ static dispatch_once_t onceToken;
8
+ dispatch_once(&onceToken, ^{
9
+ sharedInstance = [[self alloc] init];
10
+ sharedInstance.loggingEnabled = NO;
11
+ sharedInstance.minimumLogLevel = RTKLogLevelDebug;
12
+ });
13
+ return sharedInstance;
14
+ }
15
+
16
+ + (void)verbose:(NSString *)format, ... {
17
+ va_list args;
18
+ va_start(args, format);
19
+ [self log:RTKLogLevelVerbose format:format arguments:args];
20
+ va_end(args);
21
+ }
22
+
23
+ + (void)debug:(NSString *)format, ... {
24
+ va_list args;
25
+ va_start(args, format);
26
+ [self log:RTKLogLevelDebug format:format arguments:args];
27
+ va_end(args);
28
+ }
29
+
30
+ + (void)info:(NSString *)format, ... {
31
+ va_list args;
32
+ va_start(args, format);
33
+ [self log:RTKLogLevelInfo format:format arguments:args];
34
+ va_end(args);
35
+ }
36
+
37
+ + (void)warning:(NSString *)format, ... {
38
+ va_list args;
39
+ va_start(args, format);
40
+ [self log:RTKLogLevelWarning format:format arguments:args];
41
+ va_end(args);
42
+ }
43
+
44
+ + (void)error:(NSString *)format, ... {
45
+ va_list args;
46
+ va_start(args, format);
47
+ [self log:RTKLogLevelError format:format arguments:args];
48
+ va_end(args);
49
+ }
50
+
51
+ + (void)log:(RTKLogLevel)level format:(NSString *)format, ... {
52
+ va_list args;
53
+ va_start(args, format);
54
+ [self log:level format:format arguments:args];
55
+ va_end(args);
56
+ }
57
+
58
+ + (void)log:(RTKLogLevel)level format:(NSString *)format arguments:(va_list)args {
59
+ RTKLogger *logger = [RTKLogger sharedInstance];
60
+
61
+ if (!logger.loggingEnabled) {
62
+ return;
63
+ }
64
+
65
+ if (level < logger.minimumLogLevel) {
66
+ return;
67
+ }
68
+
69
+ NSString *message = [[NSString alloc] initWithFormat:format arguments:args];
70
+ NSString *levelString = [self stringForLogLevel:level];
71
+ NSString *logMessage = [NSString stringWithFormat:@"[RTK][%@] %@", levelString, message];
72
+
73
+ NSLog(@"%@", logMessage);
74
+ }
75
+
76
+ + (NSString *)stringForLogLevel:(RTKLogLevel)level {
77
+ switch (level) {
78
+ case RTKLogLevelVerbose:
79
+ return @"VERBOSE";
80
+ case RTKLogLevelDebug:
81
+ return @"DEBUG";
82
+ case RTKLogLevelInfo:
83
+ return @"INFO";
84
+ case RTKLogLevelWarning:
85
+ return @"WARNING";
86
+ case RTKLogLevelError:
87
+ return @"ERROR";
88
+ case RTKLogLevelNone:
89
+ return @"NONE";
90
+ default:
91
+ return @"UNKNOWN";
92
+ }
93
+ }
94
+
95
+ + (void)enable {
96
+ RTKLogger *logger = [RTKLogger sharedInstance];
97
+ logger.loggingEnabled = YES;
98
+ NSLog(@"[RTK][INFO] RealtimeKit logging enabled");
99
+ }
100
+
101
+ + (void)disable {
102
+ RTKLogger *logger = [RTKLogger sharedInstance];
103
+ NSLog(@"[RTK][INFO] RealtimeKit logging disabled");
104
+ logger.loggingEnabled = NO;
105
+ }
106
+
107
+ @end
@@ -1,12 +1,6 @@
1
- //
2
- // RNBackgroundTimer.m
3
- // react-native-background-timer
4
- //
5
- // Created by IjzerenHein on 06-09-2016.
6
- // Copyright (c) ATO Gear. All rights reserved.
7
- //
8
1
  @import UIKit;
9
2
  #import "RTKRNBackgroundTimer.h"
3
+ #import "RTKLogger.h"
10
4
 
11
5
  @implementation RTKRNBackgroundTimer {
12
6
  UIBackgroundTaskIdentifier bgTask;
@@ -34,8 +28,10 @@ RCT_EXPORT_MODULE()
34
28
 
35
29
  - (void) _start
36
30
  {
31
+ [RTKLogger debug:@"RTKRNBackgroundTimer: Starting background task"];
37
32
  [self _stop];
38
33
  bgTask = [[UIApplication sharedApplication] beginBackgroundTaskWithName:@"RNBackgroundTimer" expirationHandler:^{
34
+ [RTKLogger warning:@"RTKRNBackgroundTimer: Background task expired"];
39
35
  // Clean up any unfinished task business by marking where you
40
36
  // stopped or ending the task outright.
41
37
  [[UIApplication sharedApplication] endBackgroundTask:bgTask];
@@ -43,6 +39,7 @@ RCT_EXPORT_MODULE()
43
39
  }];
44
40
 
45
41
  UIBackgroundTaskIdentifier thisBgTask = bgTask;
42
+ [RTKLogger debug:@"RTKRNBackgroundTimer: Background task started with ID: %d", (int)thisBgTask];
46
43
  dispatch_async(dispatch_get_main_queue(), ^{
47
44
  if (hasListeners && [self canSendEvents] && thisBgTask == bgTask) {
48
45
  [self sendEventWithName:@"backgroundTimer" body:[NSNumber numberWithInt:(int)thisBgTask]];
@@ -53,6 +50,7 @@ RCT_EXPORT_MODULE()
53
50
  - (void) _stop
54
51
  {
55
52
  if (bgTask != UIBackgroundTaskInvalid) {
53
+ [RTKLogger debug:@"RTKRNBackgroundTimer: Stopping background task with ID: %d", (int)bgTask];
56
54
  [[UIApplication sharedApplication] endBackgroundTask:bgTask];
57
55
  bgTask = UIBackgroundTaskInvalid;
58
56
  }
@@ -62,6 +60,7 @@ RCT_EXPORT_METHOD(start:(double)_delay
62
60
  resolver:(RCTPromiseResolveBlock)resolve
63
61
  rejecter:(RCTPromiseRejectBlock)reject)
64
62
  {
63
+ [RTKLogger debug:@"RTKRNBackgroundTimer: start() called with delay: %f", _delay];
65
64
  delay = _delay;
66
65
  [self _start];
67
66
  resolve([NSNumber numberWithBool:YES]);
@@ -70,6 +69,7 @@ RCT_EXPORT_METHOD(start:(double)_delay
70
69
  RCT_EXPORT_METHOD(stop:(RCTPromiseResolveBlock)resolve
71
70
  rejecter:(RCTPromiseRejectBlock)reject)
72
71
  {
72
+ [RTKLogger debug:@"RTKRNBackgroundTimer: stop() called"];
73
73
  [self _stop];
74
74
  resolve([NSNumber numberWithBool:YES]);
75
75
  }
@@ -80,6 +80,7 @@ RCT_EXPORT_METHOD(setTimeout:(int)timeoutId
80
80
  rejecter:(RCTPromiseRejectBlock)reject)
81
81
  {
82
82
  __block UIBackgroundTaskIdentifier task = [[UIApplication sharedApplication] beginBackgroundTaskWithName:@"RNBackgroundTimer" expirationHandler:^{
83
+ [RTKLogger warning:@"RTKRNBackgroundTimer: setTimeout task expired for timeoutId: %d", timeoutId];
83
84
  [[UIApplication sharedApplication] endBackgroundTask:task];
84
85
  }];
85
86
 
@@ -1,4 +1,5 @@
1
1
  #import "RTKRNPermissionHandlerNotifications.h"
2
+ #import "RTKLogger.h"
2
3
 
3
4
  @import UserNotifications;
4
5
  @import UIKit;
@@ -18,6 +19,7 @@
18
19
 
19
20
  - (void)checkWithResolver:(void (^ _Nonnull)(RNPermissionStatus status, NSDictionary * _Nonnull settings))resolve
20
21
  rejecter:(void (^ _Nonnull)(NSError * _Nonnull error))reject {
22
+ [RTKLogger debug:@"RTKRNPermissionHandlerNotifications: Checking notification permissions"];
21
23
  [[UNUserNotificationCenter currentNotificationCenter] getNotificationSettingsWithCompletionHandler:^(UNNotificationSettings * _Nonnull settings) {
22
24
  NSMutableDictionary *result = [NSMutableDictionary new];
23
25
 
@@ -49,13 +51,17 @@
49
51
 
50
52
  switch (settings.authorizationStatus) {
51
53
  case UNAuthorizationStatusNotDetermined:
54
+ [RTKLogger debug:@"RTKRNPermissionHandlerNotifications: Status - NotDetermined"];
52
55
  return resolve(RNPermissionStatusNotDetermined, result);
53
56
  case UNAuthorizationStatusDenied:
57
+ [RTKLogger debug:@"RTKRNPermissionHandlerNotifications: Status - Denied"];
54
58
  return resolve(RNPermissionStatusDenied, result);
55
59
  case UNAuthorizationStatusEphemeral:
60
+ [RTKLogger debug:@"RTKRNPermissionHandlerNotifications: Status - Ephemeral/Limited"];
56
61
  return resolve(RNPermissionStatusLimited, result);
57
62
  case UNAuthorizationStatusAuthorized:
58
63
  case UNAuthorizationStatusProvisional:
64
+ [RTKLogger debug:@"RTKRNPermissionHandlerNotifications: Status - Authorized"];
59
65
  return resolve(RNPermissionStatusAuthorized, result);
60
66
  }
61
67
  }];
@@ -64,6 +70,7 @@
64
70
  - (void)requestWithResolver:(void (^ _Nonnull)(RNPermissionStatus status, NSDictionary * _Nonnull settings))resolve
65
71
  rejecter:(void (^ _Nonnull)(NSError * _Nonnull error))reject
66
72
  options:(NSArray<NSString *> * _Nonnull)options {
73
+ [RTKLogger debug:@"RTKRNPermissionHandlerNotifications: Requesting notification permissions with options: %@", options];
67
74
  bool alert = [options containsObject:@"alert"];
68
75
  bool badge = [options containsObject:@"badge"];
69
76
  bool sound = [options containsObject:@"sound"];
@@ -108,16 +115,21 @@
108
115
  types += UNAuthorizationOptionSound;
109
116
  }
110
117
 
118
+ [RTKLogger debug:@"RTKRNPermissionHandlerNotifications: Requesting authorization with types: %lu", (unsigned long)types];
111
119
  [[UNUserNotificationCenter currentNotificationCenter] requestAuthorizationWithOptions:types
112
120
  completionHandler:^(BOOL granted, NSError * _Nullable error) {
113
121
  if (error != nil) {
122
+ [RTKLogger error:@"RTKRNPermissionHandlerNotifications: Request failed with error: %@", error.localizedDescription];
114
123
  return reject(error);
115
124
  }
116
125
 
117
126
  if (granted) {
127
+ [RTKLogger debug:@"RTKRNPermissionHandlerNotifications: Permission granted, registering for remote notifications"];
118
128
  dispatch_async(dispatch_get_main_queue(), ^{
119
129
  [[UIApplication sharedApplication] registerForRemoteNotifications];
120
130
  });
131
+ } else {
132
+ [RTKLogger debug:@"RTKRNPermissionHandlerNotifications: Permission denied by user"];
121
133
  }
122
134
 
123
135
  [self checkWithResolver:resolve rejecter:reject];
@@ -1,4 +1,5 @@
1
1
  #import "RTKRNPermissions.h"
2
+ #import "RTKLogger.h"
2
3
  #import <React/RCTLog.h>
3
4
  #import <React/RCTConvert.h>
4
5
  #import "RTKRNPermissionHandlerBluetoothPeripheral.h"
@@ -81,18 +82,23 @@ RCT_EXPORT_MODULE();
81
82
 
82
83
  case RNPermissionBluetoothPeripheral:
83
84
  handler = [RTKRNPermissionHandlerBluetoothPeripheral new];
85
+ [RTKLogger debug:@"RTKRNPermissions: Created handler for BluetoothPeripheral"];
84
86
  break;
85
87
 
86
88
  case RNPermissionCamera:
87
89
  handler = [RTKRNPermissionHandlerCamera new];
90
+ [RTKLogger debug:@"RTKRNPermissions: Created handler for Camera"];
88
91
  break;
89
92
  case RNPermissionMicrophone:
90
93
  handler = [RTKRNPermissionHandlerMicrophone new];
94
+ [RTKLogger debug:@"RTKRNPermissions: Created handler for Microphone"];
91
95
  break;
92
96
  case RNPermissionPhotoLibrary:
93
97
  handler = [RTKRNPermissionHandlerPhotoLibrary new];
98
+ [RTKLogger debug:@"RTKRNPermissions: Created handler for PhotoLibrary"];
94
99
  break;
95
100
  case RNPermissionUnknown:
101
+ [RTKLogger warning:@"RTKRNPermissions: Unknown permission type"];
96
102
  break; // RCTConvert prevents this case
97
103
  }
98
104
 
@@ -156,13 +162,16 @@ RCT_EXPORT_MODULE();
156
162
  RCT_REMAP_METHOD(openSettings,
157
163
  openSettingsWithResolver:(RCTPromiseResolveBlock)resolve
158
164
  rejecter:(RCTPromiseRejectBlock)reject) {
165
+ [RTKLogger debug:@"RTKRNPermissions: openSettings() called"];
159
166
  UIApplication *sharedApplication = [UIApplication sharedApplication];
160
167
  NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
161
168
 
162
169
  [sharedApplication openURL:url options:@{} completionHandler:^(BOOL success) {
163
170
  if (success) {
171
+ [RTKLogger debug:@"RTKRNPermissions: Settings opened successfully"];
164
172
  resolve(@(true));
165
173
  } else {
174
+ [RTKLogger error:@"RTKRNPermissions: Failed to open settings"];
166
175
  reject(@"cannot_open_settings", @"Cannot open application settings", nil);
167
176
  }
168
177
  }];
@@ -172,13 +181,16 @@ RCT_REMAP_METHOD(check,
172
181
  checkWithPermission:(RNPermission)permission
173
182
  resolver:(RCTPromiseResolveBlock)resolve
174
183
  rejecter:(RCTPromiseRejectBlock)reject) {
184
+ [RTKLogger debug:@"RTKRNPermissions: check() called for permission: %ld", (long)permission];
175
185
  id<RTKRNPermissionHandler> handler = [self handlerForPermission:permission];
176
186
  NSString *lockId = [self lockHandler:handler];
177
187
 
178
188
  [handler checkWithResolver:^(RNPermissionStatus status) {
189
+ [RTKLogger debug:@"RTKRNPermissions: check() resolved with status: %@", [self stringForStatus:status]];
179
190
  resolve([self stringForStatus:status]);
180
191
  [self unlockHandler:lockId];
181
192
  } rejecter:^(NSError *error) {
193
+ [RTKLogger error:@"RTKRNPermissions: check() failed with error: %@", error.localizedDescription];
182
194
  reject([NSString stringWithFormat:@"%ld", (long)error.code], error.localizedDescription, error);
183
195
  [self unlockHandler:lockId];
184
196
  }];
@@ -188,11 +200,14 @@ RCT_REMAP_METHOD(request,
188
200
  requestWithPermission:(RNPermission)permission
189
201
  resolver:(RCTPromiseResolveBlock)resolve
190
202
  rejecter:(RCTPromiseRejectBlock)reject) {
203
+ [RTKLogger debug:@"RTKRNPermissions: request() called for permission: %ld", (long)permission];
191
204
  id<RTKRNPermissionHandler> handler = [self handlerForPermission:permission];
192
205
  NSString *lockId = [self lockHandler:handler]; [handler requestWithResolver:^(RNPermissionStatus status) {
206
+ [RTKLogger debug:@"RTKRNPermissions: request() resolved with status: %@", [self stringForStatus:status]];
193
207
  resolve([self stringForStatus:status]);
194
208
  [self unlockHandler:lockId];
195
209
  } rejecter:^(NSError *error) {
210
+ [RTKLogger error:@"RTKRNPermissions: request() failed with error: %@", error.localizedDescription];
196
211
  reject([NSString stringWithFormat:@"%ld", (long)error.code], error.localizedDescription, error);
197
212
  [self unlockHandler:lockId];
198
213
  }];
@@ -201,18 +216,22 @@ RCT_REMAP_METHOD(request,
201
216
  RCT_REMAP_METHOD(checkNotifications,
202
217
  checkNotificationsWithResolver:(RCTPromiseResolveBlock)resolve
203
218
  rejecter:(RCTPromiseRejectBlock)reject) {
219
+ [RTKLogger debug:@"RTKRNPermissions: checkNotifications() called"];
204
220
  #if __has_include("RTKRNPermissionHandlerNotifications.h")
205
221
  RTKRNPermissionHandlerNotifications *handler = [RTKRNPermissionHandlerNotifications new];
206
222
  NSString *lockId = [self lockHandler:(id<RTKRNPermissionHandler>)handler];
207
223
 
208
224
  [handler checkWithResolver:^(RNPermissionStatus status, NSDictionary * _Nonnull settings) {
225
+ [RTKLogger debug:@"RTKRNPermissions: checkNotifications() resolved with status: %@", [self stringForStatus:status]];
209
226
  resolve(@{ @"status": [self stringForStatus:status], @"settings": settings });
210
227
  [self unlockHandler:lockId];
211
228
  } rejecter:^(NSError * _Nonnull error) {
229
+ [RTKLogger error:@"RTKRNPermissions: checkNotifications() failed with error: %@", error.localizedDescription];
212
230
  reject([NSString stringWithFormat:@"%ld", (long)error.code], error.localizedDescription, error);
213
231
  [self unlockHandler:lockId];
214
232
  }];
215
233
  #else
234
+ [RTKLogger error:@"RTKRNPermissions: Notifications permission pod is missing"];
216
235
  reject(@"notifications_pod_missing", @"Notifications permission pod is missing", nil);
217
236
  #endif
218
237
  }
@@ -221,18 +240,22 @@ RCT_REMAP_METHOD(requestNotifications,
221
240
  requestNotificationsWithOptions:(NSArray<NSString *> * _Nonnull)options
222
241
  resolver:(RCTPromiseResolveBlock)resolve
223
242
  rejecter:(RCTPromiseRejectBlock)reject) {
243
+ [RTKLogger debug:@"RTKRNPermissions: requestNotifications() called with options: %@", options];
224
244
  #if __has_include("RTKRNPermissionHandlerNotifications.h")
225
245
  RTKRNPermissionHandlerNotifications *handler = [RTKRNPermissionHandlerNotifications new];
226
246
  NSString *lockId = [self lockHandler:(id<RTKRNPermissionHandler>)handler];
227
247
 
228
248
  [handler requestWithResolver:^(RNPermissionStatus status, NSDictionary * _Nonnull settings) {
249
+ [RTKLogger debug:@"RTKRNPermissions: requestNotifications() resolved with status: %@", [self stringForStatus:status]];
229
250
  resolve(@{ @"status": [self stringForStatus:status], @"settings": settings });
230
251
  [self unlockHandler:lockId];
231
252
  } rejecter:^(NSError * _Nonnull error) {
253
+ [RTKLogger error:@"RTKRNPermissions: requestNotifications() failed with error: %@", error.localizedDescription];
232
254
  reject([NSString stringWithFormat:@"%ld", (long)error.code], error.localizedDescription, error);
233
255
  [self unlockHandler:lockId];
234
256
  } options:options];
235
257
  #else
258
+ [RTKLogger error:@"RTKRNPermissions: Notifications permission pod is missing"];
236
259
  reject(@"notifications_pod_missing", @"Notifications permission pod is missing", nil);
237
260
  #endif
238
261
  }
@@ -240,7 +263,7 @@ RCT_REMAP_METHOD(requestNotifications,
240
263
  RCT_REMAP_METHOD(openLimitedPhotoLibraryPicker,
241
264
  openLimitedPhotoLibraryPickerWithResolver:(RCTPromiseResolveBlock)resolve
242
265
  rejecter:(RCTPromiseRejectBlock)reject) {
243
-
266
+ [RTKLogger debug:@"RTKRNPermissions: openLimitedPhotoLibraryPicker() called"];
244
267
  RTKRNPermissionHandlerPhotoLibrary *handler = [RTKRNPermissionHandlerPhotoLibrary new];
245
268
  [handler openLimitedPhotoLibraryPickerWithResolver:resolve rejecter:reject];
246
269
  }
@@ -1,4 +1,5 @@
1
1
  #import "RTKScreensharePickerView.h"
2
+ #import "RTKLogger.h"
2
3
  #import <React/RCTLog.h>
3
4
 
4
5
  @implementation RTKScreensharePickerView
@@ -7,8 +8,10 @@ RCT_EXPORT_MODULE()
7
8
 
8
9
  RCT_EXPORT_METHOD(showScreenSharePickerView)
9
10
  {
11
+ [RTKLogger debug:@"RTKScreensharePickerView: showScreenSharePickerView() called"];
10
12
  dispatch_async(dispatch_get_main_queue(), ^{
11
13
  NSString *screenShareExtensionId = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"RTCAppScreenSharingExtension"];
14
+ [RTKLogger debug:@"RTKScreensharePickerView: Using extension ID: %@", screenShareExtensionId];
12
15
 
13
16
  RPSystemBroadcastPickerView *view = [[RPSystemBroadcastPickerView alloc] init];
14
17
  view.preferredExtension = screenShareExtensionId;
@@ -16,10 +19,13 @@ RCT_EXPORT_METHOD(showScreenSharePickerView)
16
19
 
17
20
  SEL selector = NSSelectorFromString(@"buttonPressed:");
18
21
  if ([view respondsToSelector:selector]) {
22
+ [RTKLogger debug:@"RTKScreensharePickerView: Triggering broadcast picker button"];
19
23
  #pragma clang diagnostic push
20
24
  #pragma clang diagnostic ignored "-Warc-performSelector-leaks"
21
25
  [view performSelector:selector withObject:nil];
22
26
  #pragma clang diagnostic pop
27
+ } else {
28
+ [RTKLogger error:@"RTKScreensharePickerView: Broadcast picker view does not respond to buttonPressed: selector"];
23
29
  }
24
30
  });
25
31
  }
@@ -70,7 +70,7 @@ private extension RTKScreenshareHandler {
70
70
 
71
71
  func setupConnection() {
72
72
  clientConnection?.didClose = { [weak self] error in
73
- print("client connection did close \(String(describing: error))")
73
+ print("[RTK][DEBUG] client connection did close \(String(describing: error))")
74
74
 
75
75
  if let error = error {
76
76
  self?.finishBroadcastWithError(error)
@@ -82,7 +82,7 @@ private extension RTKScreenshareUploader {
82
82
  byteIndex = 0
83
83
  }
84
84
  } else {
85
- print("writeBufferToStream failure")
85
+ print("[RTK][ERROR] writeBufferToStream failure")
86
86
  }
87
87
 
88
88
  return true
@@ -90,7 +90,7 @@ private extension RTKScreenshareUploader {
90
90
 
91
91
  func prepare(sample buffer: CMSampleBuffer) -> Data? {
92
92
  guard let imageBuffer = CMSampleBufferGetImageBuffer(buffer) else {
93
- print("image buffer not available")
93
+ print("[RTK][ERROR] image buffer not available")
94
94
  return nil
95
95
  }
96
96
 
@@ -107,7 +107,7 @@ private extension RTKScreenshareUploader {
107
107
  CVPixelBufferUnlockBaseAddress(imageBuffer, .readOnly)
108
108
 
109
109
  guard let messageData = bufferData else {
110
- print("corrupted image buffer")
110
+ print("[RTK][ERROR] corrupted image buffer")
111
111
  return nil
112
112
  }
113
113
 
@@ -20,16 +20,16 @@ class RTKSocketConnection: NSObject {
20
20
  socketHandle = Darwin.socket(AF_UNIX, SOCK_STREAM, 0)
21
21
 
22
22
  guard socketHandle != -1 else {
23
- print("failure: create socket")
23
+ print("[RTK][ERROR] failure: create socket")
24
24
  return nil
25
25
  }
26
26
  }
27
27
 
28
28
  func open() -> Bool {
29
- print("open socket connection")
29
+ print("[RTK][DEBUG] open socket connection")
30
30
 
31
31
  guard FileManager.default.fileExists(atPath: filePath) else {
32
- print("failure: socket file missing")
32
+ print("[RTK][ERROR] failure: socket file missing")
33
33
  return false
34
34
  }
35
35
 
@@ -72,7 +72,7 @@ extension RTKSocketConnection: StreamDelegate {
72
72
  func stream(_ aStream: Stream, handle eventCode: Stream.Event) {
73
73
  switch eventCode {
74
74
  case .openCompleted:
75
- print("client stream open completed")
75
+ print("[RTK][DEBUG] client stream open completed")
76
76
  if aStream == outputStream {
77
77
  didOpen?()
78
78
  }
@@ -81,7 +81,7 @@ extension RTKSocketConnection: StreamDelegate {
81
81
  var buffer: UInt8 = 0
82
82
  let numberOfBytesRead = inputStream?.read(&buffer, maxLength: 1)
83
83
  if numberOfBytesRead == 0 && aStream.streamStatus == .atEnd {
84
- print("server socket closed")
84
+ print("[RTK][DEBUG] server socket closed")
85
85
  close()
86
86
  notifyDidClose(error: nil)
87
87
  }
@@ -91,7 +91,7 @@ extension RTKSocketConnection: StreamDelegate {
91
91
  streamHasSpaceAvailable?()
92
92
  }
93
93
  case .errorOccurred:
94
- print("client stream error occured: \(String(describing: aStream.streamError))")
94
+ print("[RTK][ERROR] client stream error occured: \(String(describing: aStream.streamError))")
95
95
  close()
96
96
  notifyDidClose(error: aStream.streamError)
97
97
 
@@ -106,7 +106,7 @@ private extension RTKSocketConnection {
106
106
  func setupAddress() -> Bool {
107
107
  var addr = sockaddr_un()
108
108
  guard filePath.count < MemoryLayout.size(ofValue: addr.sun_path) else {
109
- print("failure: fd path is too long")
109
+ print("[RTK][ERROR] failure: fd path is too long")
110
110
  return false
111
111
  }
112
112
 
@@ -132,7 +132,7 @@ private extension RTKSocketConnection {
132
132
  }
133
133
 
134
134
  guard status == noErr else {
135
- print("failure: \(status)")
135
+ print("[RTK][ERROR] failure: \(status)")
136
136
  return false
137
137
  }
138
138