react-native-webrtc-nitro 1.1.0 → 1.2.3

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 (100) hide show
  1. package/3rdparty/output/android/libdatachannel/arm64-v8a/include/rtc/configuration.hpp +1 -1
  2. package/3rdparty/output/android/libdatachannel/arm64-v8a/include/rtc/rtc.h +9 -1
  3. package/3rdparty/output/android/libdatachannel/arm64-v8a/include/rtc/rtcpreceivingsession.hpp +26 -1
  4. package/3rdparty/output/android/libdatachannel/arm64-v8a/include/rtc/rtp.hpp +1 -1
  5. package/3rdparty/output/android/libdatachannel/arm64-v8a/include/rtc/rtppacketizationconfig.hpp +9 -0
  6. package/3rdparty/output/android/libdatachannel/arm64-v8a/include/rtc/version.h +3 -3
  7. package/3rdparty/output/android/libdatachannel/arm64-v8a/lib/libdatachannel.so +0 -0
  8. package/3rdparty/output/android/libdatachannel/armeabi-v7a/include/rtc/configuration.hpp +1 -1
  9. package/3rdparty/output/android/libdatachannel/armeabi-v7a/include/rtc/rtc.h +9 -1
  10. package/3rdparty/output/android/libdatachannel/armeabi-v7a/include/rtc/rtcpreceivingsession.hpp +26 -1
  11. package/3rdparty/output/android/libdatachannel/armeabi-v7a/include/rtc/rtp.hpp +1 -1
  12. package/3rdparty/output/android/libdatachannel/armeabi-v7a/include/rtc/rtppacketizationconfig.hpp +9 -0
  13. package/3rdparty/output/android/libdatachannel/armeabi-v7a/include/rtc/version.h +3 -3
  14. package/3rdparty/output/android/libdatachannel/armeabi-v7a/lib/libdatachannel.so +0 -0
  15. package/3rdparty/output/android/libdatachannel/x86/include/rtc/configuration.hpp +1 -1
  16. package/3rdparty/output/android/libdatachannel/x86/include/rtc/rtc.h +9 -1
  17. package/3rdparty/output/android/libdatachannel/x86/include/rtc/rtcpreceivingsession.hpp +26 -1
  18. package/3rdparty/output/android/libdatachannel/x86/include/rtc/rtp.hpp +1 -1
  19. package/3rdparty/output/android/libdatachannel/x86/include/rtc/rtppacketizationconfig.hpp +9 -0
  20. package/3rdparty/output/android/libdatachannel/x86/include/rtc/version.h +3 -3
  21. package/3rdparty/output/android/libdatachannel/x86/lib/libdatachannel.so +0 -0
  22. package/3rdparty/output/android/libdatachannel/x86_64/include/rtc/configuration.hpp +1 -1
  23. package/3rdparty/output/android/libdatachannel/x86_64/include/rtc/rtc.h +9 -1
  24. package/3rdparty/output/android/libdatachannel/x86_64/include/rtc/rtcpreceivingsession.hpp +26 -1
  25. package/3rdparty/output/android/libdatachannel/x86_64/include/rtc/rtp.hpp +1 -1
  26. package/3rdparty/output/android/libdatachannel/x86_64/include/rtc/rtppacketizationconfig.hpp +9 -0
  27. package/3rdparty/output/android/libdatachannel/x86_64/include/rtc/version.h +3 -3
  28. package/3rdparty/output/android/libdatachannel/x86_64/lib/libdatachannel.so +0 -0
  29. package/3rdparty/output/ios/ffmpeg.xcframework/ios-arm64/libffmpeg.a +0 -0
  30. package/3rdparty/output/ios/ffmpeg.xcframework/ios-arm64_x86_64-simulator/libffmpeg.a +0 -0
  31. package/3rdparty/output/ios/libdatachannel.xcframework/Info.plist +5 -5
  32. package/3rdparty/output/ios/libdatachannel.xcframework/ios-arm64/Headers/rtc/configuration.hpp +1 -1
  33. package/3rdparty/output/ios/libdatachannel.xcframework/ios-arm64/Headers/rtc/rtc.h +9 -1
  34. package/3rdparty/output/ios/libdatachannel.xcframework/ios-arm64/Headers/rtc/rtcpreceivingsession.hpp +26 -1
  35. package/3rdparty/output/ios/libdatachannel.xcframework/ios-arm64/Headers/rtc/rtp.hpp +1 -1
  36. package/3rdparty/output/ios/libdatachannel.xcframework/ios-arm64/Headers/rtc/rtppacketizationconfig.hpp +9 -0
  37. package/3rdparty/output/ios/libdatachannel.xcframework/ios-arm64/Headers/rtc/version.h +3 -3
  38. package/3rdparty/output/ios/libdatachannel.xcframework/ios-arm64/libdatachannel.a +0 -0
  39. package/3rdparty/output/ios/libdatachannel.xcframework/ios-arm64_x86_64-simulator/Headers/rtc/configuration.hpp +1 -1
  40. package/3rdparty/output/ios/libdatachannel.xcframework/ios-arm64_x86_64-simulator/Headers/rtc/rtc.h +9 -1
  41. package/3rdparty/output/ios/libdatachannel.xcframework/ios-arm64_x86_64-simulator/Headers/rtc/rtcpreceivingsession.hpp +26 -1
  42. package/3rdparty/output/ios/libdatachannel.xcframework/ios-arm64_x86_64-simulator/Headers/rtc/rtp.hpp +1 -1
  43. package/3rdparty/output/ios/libdatachannel.xcframework/ios-arm64_x86_64-simulator/Headers/rtc/rtppacketizationconfig.hpp +9 -0
  44. package/3rdparty/output/ios/libdatachannel.xcframework/ios-arm64_x86_64-simulator/Headers/rtc/version.h +3 -3
  45. package/3rdparty/output/ios/libdatachannel.xcframework/ios-arm64_x86_64-simulator/libdatachannel.a +0 -0
  46. package/README.md +563 -13
  47. package/android/src/main/java/com/webrtc/HybridCamera.kt +0 -1
  48. package/android/src/main/java/com/webrtc/HybridMicrophone.kt +0 -1
  49. package/android/src/main/java/com/webrtc/HybridPermissions.kt +95 -0
  50. package/cpp/Hybrid/HybridMediaDevices.cpp +23 -19
  51. package/ios/HybridCamera.swift +1 -3
  52. package/ios/HybridMicrophone.swift +1 -3
  53. package/ios/HybridPermissions.swift +63 -0
  54. package/lib/commonjs/index.js +11 -0
  55. package/lib/commonjs/index.js.map +1 -1
  56. package/lib/commonjs/specs/Permissions.nitro.js +9 -0
  57. package/lib/commonjs/specs/Permissions.nitro.js.map +1 -0
  58. package/lib/module/index.js +1 -0
  59. package/lib/module/index.js.map +1 -1
  60. package/lib/module/specs/Permissions.nitro.js +6 -0
  61. package/lib/module/specs/Permissions.nitro.js.map +1 -0
  62. package/lib/typescript/src/index.d.ts +1 -0
  63. package/lib/typescript/src/index.d.ts.map +1 -1
  64. package/lib/typescript/src/specs/Permissions.nitro.d.ts +17 -0
  65. package/lib/typescript/src/specs/Permissions.nitro.d.ts.map +1 -0
  66. package/nitro.json +4 -0
  67. package/nitrogen/generated/android/Webrtc+autolinking.cmake +2 -0
  68. package/nitrogen/generated/android/WebrtcOnLoad.cpp +10 -0
  69. package/nitrogen/generated/android/c++/JHybridPermissionsSpec.cpp +91 -0
  70. package/nitrogen/generated/android/c++/JHybridPermissionsSpec.hpp +66 -0
  71. package/nitrogen/generated/android/c++/JPermissionDescriptor.hpp +58 -0
  72. package/nitrogen/generated/android/c++/JPermissionName.hpp +59 -0
  73. package/nitrogen/generated/android/c++/JPermissionState.hpp +62 -0
  74. package/nitrogen/generated/android/kotlin/com/margelo/nitro/webrtc/HybridPermissionsSpec.kt +62 -0
  75. package/nitrogen/generated/android/kotlin/com/margelo/nitro/webrtc/PermissionDescriptor.kt +38 -0
  76. package/nitrogen/generated/android/kotlin/com/margelo/nitro/webrtc/PermissionName.kt +21 -0
  77. package/nitrogen/generated/android/kotlin/com/margelo/nitro/webrtc/PermissionState.kt +22 -0
  78. package/nitrogen/generated/ios/Webrtc-Swift-Cxx-Bridge.cpp +25 -0
  79. package/nitrogen/generated/ios/Webrtc-Swift-Cxx-Bridge.hpp +63 -0
  80. package/nitrogen/generated/ios/Webrtc-Swift-Cxx-Umbrella.hpp +14 -0
  81. package/nitrogen/generated/ios/WebrtcAutolinking.mm +8 -0
  82. package/nitrogen/generated/ios/WebrtcAutolinking.swift +15 -0
  83. package/nitrogen/generated/ios/c++/HybridPermissionsSpecSwift.cpp +11 -0
  84. package/nitrogen/generated/ios/c++/HybridPermissionsSpecSwift.hpp +92 -0
  85. package/nitrogen/generated/ios/swift/Func_void_PermissionState.swift +47 -0
  86. package/nitrogen/generated/ios/swift/HybridPermissionsSpec.swift +57 -0
  87. package/nitrogen/generated/ios/swift/HybridPermissionsSpec_cxx.swift +157 -0
  88. package/nitrogen/generated/ios/swift/PermissionDescriptor.swift +36 -0
  89. package/nitrogen/generated/ios/swift/PermissionName.swift +40 -0
  90. package/nitrogen/generated/ios/swift/PermissionState.swift +44 -0
  91. package/nitrogen/generated/shared/c++/HybridPermissionsSpec.cpp +22 -0
  92. package/nitrogen/generated/shared/c++/HybridPermissionsSpec.hpp +68 -0
  93. package/nitrogen/generated/shared/c++/PermissionDescriptor.hpp +76 -0
  94. package/nitrogen/generated/shared/c++/PermissionName.hpp +76 -0
  95. package/nitrogen/generated/shared/c++/PermissionState.hpp +80 -0
  96. package/package.json +4 -5
  97. package/src/index.ts +1 -0
  98. package/src/specs/Permissions.nitro.ts +22 -0
  99. package/android/src/main/java/com/webrtc/Permission.kt +0 -58
  100. package/ios/Permission.swift +0 -26
@@ -10,25 +10,29 @@ auto
10
10
  HybridMediaDevices::getMockMedia (const MediaStreamConstraints &constraints)
11
11
  -> std::shared_ptr<Promise<std::shared_ptr<HybridMediaStreamSpec>>>
12
12
  {
13
- auto hybridMediaStreams = std::make_shared<HybridMediaStream> ();
14
- if (constraints.audio.value_or (false))
15
- {
16
- auto hybridAudioTrack
17
- = std::make_shared<HybridMediaStreamTrack> ("audio");
18
- hybridAudioTrack->mockMicrophone = std::make_shared<MockMicrophone> (
19
- hybridAudioTrack->get_srcPipeId ());
20
- hybridMediaStreams->addTrack (hybridAudioTrack);
21
- }
22
- if (constraints.video.value_or (false))
23
- {
24
- auto hybridVideoTrack
25
- = std::make_shared<HybridMediaStreamTrack> ("video");
26
- hybridVideoTrack->mockCamera = std::make_shared<MockCamera> (
27
- hybridVideoTrack->get_srcPipeId ());
28
- hybridMediaStreams->addTrack (hybridVideoTrack);
29
- }
30
- return Promise<std::shared_ptr<HybridMediaStreamSpec>>::resolved (
31
- hybridMediaStreams);
13
+ return Promise<std::shared_ptr<HybridMediaStreamSpec>>::async (
14
+ [constraints] ()
15
+ {
16
+ auto hybridMediaStreams = std::make_shared<HybridMediaStream> ();
17
+ if (constraints.audio.value_or (false))
18
+ {
19
+ auto hybridAudioTrack
20
+ = std::make_shared<HybridMediaStreamTrack> ("audio");
21
+ hybridAudioTrack->mockMicrophone
22
+ = std::make_shared<MockMicrophone> (
23
+ hybridAudioTrack->get_srcPipeId ());
24
+ hybridMediaStreams->addTrack (hybridAudioTrack);
25
+ }
26
+ if (constraints.video.value_or (false))
27
+ {
28
+ auto hybridVideoTrack
29
+ = std::make_shared<HybridMediaStreamTrack> ("video");
30
+ hybridVideoTrack->mockCamera = std::make_shared<MockCamera> (
31
+ hybridVideoTrack->get_srcPipeId ());
32
+ hybridMediaStreams->addTrack (hybridVideoTrack);
33
+ }
34
+ return hybridMediaStreams;
35
+ });
32
36
  };
33
37
 
34
38
  auto
@@ -95,10 +95,8 @@ public class HybridCamera: HybridCameraSpec {
95
95
  throw RuntimeError.error(withMessage: "Pipe ID cannot be empty")
96
96
  }
97
97
 
98
- try cameraManager.prepare()
99
-
100
98
  return Promise.async {
101
- try await requestPermission(for: .video)
99
+ try self.cameraManager.prepare()
102
100
  self.pipeId = pipeId
103
101
  self.cameraManager.addActivePipeId(pipeId)
104
102
  }
@@ -87,10 +87,8 @@ public class HybridMicrophone: HybridMicrophoneSpec {
87
87
  throw RuntimeError.error(withMessage: "Pipe ID cannot be empty")
88
88
  }
89
89
 
90
- try microphoneManager.prepare()
91
-
92
90
  return Promise.async {
93
- try await requestPermission(for: .audio)
91
+ try self.microphoneManager.prepare()
94
92
  self.pipeId = pipeId
95
93
  self.microphoneManager.addActivePipeId(pipeId)
96
94
  }
@@ -0,0 +1,63 @@
1
+ //
2
+ // HybridPermissions.swift
3
+ // Pods
4
+ //
5
+ // Created by kaizhi-singtown on 2025/11/27.
6
+ //
7
+
8
+ import Foundation
9
+ import NitroModules
10
+
11
+ public class HybridPermissions: HybridPermissionsSpec {
12
+ public func query(permissionDesc: PermissionDescriptor) throws -> Promise<PermissionState> {
13
+ return Promise.async {
14
+
15
+ let mediaType: AVMediaType
16
+ switch permissionDesc.name {
17
+ case .camera:
18
+ mediaType = .video
19
+ case .microphone:
20
+ mediaType = .audio
21
+ default:
22
+ return .denied
23
+ }
24
+
25
+ let status = AVCaptureDevice.authorizationStatus(for: mediaType)
26
+ switch status {
27
+ case .authorized:
28
+ return .granted
29
+ case .denied, .restricted:
30
+ return .denied
31
+ case .notDetermined:
32
+ return .prompt
33
+ @unknown default:
34
+ return .denied
35
+ }
36
+ }
37
+ }
38
+
39
+ public func request(permissionDesc: PermissionDescriptor) throws -> Promise<PermissionState> {
40
+ return Promise.async {
41
+ let mediaType: AVMediaType
42
+ switch permissionDesc.name {
43
+ case .camera:
44
+ mediaType = .video
45
+ case .microphone:
46
+ mediaType = .audio
47
+ default:
48
+ return .denied
49
+ }
50
+
51
+ let granted = await withCheckedContinuation { (continuation) in
52
+ AVCaptureDevice.requestAccess(for: mediaType) { ok in
53
+ continuation.resume(returning: ok)
54
+ }
55
+ }
56
+ if granted {
57
+ return .granted
58
+ } else {
59
+ return .denied
60
+ }
61
+ }
62
+ }
63
+ }
@@ -14,6 +14,17 @@ Object.keys(_WebrtcView).forEach(function (key) {
14
14
  }
15
15
  });
16
16
  });
17
+ var _Permissions = require("./specs/Permissions.nitro");
18
+ Object.keys(_Permissions).forEach(function (key) {
19
+ if (key === "default" || key === "__esModule") return;
20
+ if (key in exports && exports[key] === _Permissions[key]) return;
21
+ Object.defineProperty(exports, key, {
22
+ enumerable: true,
23
+ get: function () {
24
+ return _Permissions[key];
25
+ }
26
+ });
27
+ });
17
28
  var _MediaDevices = require("./specs/MediaDevices.nitro");
18
29
  Object.keys(_MediaDevices).forEach(function (key) {
19
30
  if (key === "default" || key === "__esModule") return;
@@ -1 +1 @@
1
- {"version":3,"names":["_WebrtcView","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_MediaDevices","_MediaStream","_MediaStreamTrack","_RTCPeerConnection","_RTCRtpSender","_RTCRtpReceiver","_RTCRtpTransceiver","_MediaRecorder"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_WebrtcView","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_Permissions","_MediaDevices","_MediaStream","_MediaStreamTrack","_RTCPeerConnection","_RTCRtpSender","_RTCRtpReceiver","_RTCRtpTransceiver","_MediaRecorder"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.Permissions = void 0;
7
+ var _reactNativeNitroModules = require("react-native-nitro-modules");
8
+ const PermissionsExport = exports.Permissions = _reactNativeNitroModules.NitroModules.createHybridObject('Permissions');
9
+ //# sourceMappingURL=Permissions.nitro.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_reactNativeNitroModules","require","PermissionsExport","exports","Permissions","NitroModules","createHybridObject"],"sourceRoot":"../../../src","sources":["specs/Permissions.nitro.ts"],"mappings":";;;;;;AACA,IAAAA,wBAAA,GAAAC,OAAA;AAiBA,MAAMC,iBAAiB,GAAAC,OAAA,CAAAC,WAAA,GACrBC,qCAAY,CAACC,kBAAkB,CAAc,aAAa,CAAC","ignoreList":[]}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  export * from './views/WebrtcView';
4
+ export * from './specs/Permissions.nitro';
4
5
  export * from './specs/MediaDevices.nitro';
5
6
  export * from './specs/MediaStream.nitro';
6
7
  export * from './specs/MediaStreamTrack.nitro';
@@ -1 +1 @@
1
- {"version":3,"names":[],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA,cAAc,oBAAoB;AAClC,cAAc,4BAA4B;AAC1C,cAAc,2BAA2B;AACzC,cAAc,gCAAgC;AAC9C,cAAc,iCAAiC;AAC/C,cAAc,4BAA4B;AAC1C,cAAc,8BAA8B;AAC5C,cAAc,iCAAiC;AAC/C,cAAc,6BAA6B","ignoreList":[]}
1
+ {"version":3,"names":[],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA,cAAc,oBAAoB;AAClC,cAAc,2BAA2B;AACzC,cAAc,4BAA4B;AAC1C,cAAc,2BAA2B;AACzC,cAAc,gCAAgC;AAC9C,cAAc,iCAAiC;AAC/C,cAAc,4BAA4B;AAC1C,cAAc,8BAA8B;AAC5C,cAAc,iCAAiC;AAC/C,cAAc,6BAA6B","ignoreList":[]}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+
3
+ import { NitroModules } from 'react-native-nitro-modules';
4
+ const PermissionsExport = NitroModules.createHybridObject('Permissions');
5
+ export { PermissionsExport as Permissions };
6
+ //# sourceMappingURL=Permissions.nitro.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["NitroModules","PermissionsExport","createHybridObject","Permissions"],"sourceRoot":"../../../src","sources":["specs/Permissions.nitro.ts"],"mappings":";;AACA,SAASA,YAAY,QAAQ,4BAA4B;AAiBzD,MAAMC,iBAAiB,GACrBD,YAAY,CAACE,kBAAkB,CAAc,aAAa,CAAC;AAE7D,SAASD,iBAAiB,IAAIE,WAAW","ignoreList":[]}
@@ -1,4 +1,5 @@
1
1
  export * from './views/WebrtcView';
2
+ export * from './specs/Permissions.nitro';
2
3
  export * from './specs/MediaDevices.nitro';
3
4
  export * from './specs/MediaStream.nitro';
4
5
  export * from './specs/MediaStreamTrack.nitro';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAA;AAClC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,2BAA2B,CAAA;AACzC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,iCAAiC,CAAA;AAC/C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,8BAA8B,CAAA;AAC5C,cAAc,iCAAiC,CAAA;AAC/C,cAAc,6BAA6B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAA;AAClC,cAAc,2BAA2B,CAAA;AACzC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,2BAA2B,CAAA;AACzC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,iCAAiC,CAAA;AAC/C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,8BAA8B,CAAA;AAC5C,cAAc,iCAAiC,CAAA;AAC/C,cAAc,6BAA6B,CAAA"}
@@ -0,0 +1,17 @@
1
+ import { type HybridObject } from 'react-native-nitro-modules';
2
+ export type PermissionState = 'denied' | 'granted' | 'prompt';
3
+ type PermissionName = 'camera' | 'microphone';
4
+ export interface PermissionDescriptor {
5
+ name: PermissionName;
6
+ }
7
+ interface Permissions extends HybridObject<{
8
+ ios: 'swift';
9
+ android: 'kotlin';
10
+ }> {
11
+ query(permissionDesc: PermissionDescriptor): Promise<PermissionState>;
12
+ request(permissionDesc: PermissionDescriptor): Promise<PermissionState>;
13
+ }
14
+ declare const PermissionsExport: Permissions;
15
+ type PermissionsExport = Permissions;
16
+ export { PermissionsExport as Permissions };
17
+ //# sourceMappingURL=Permissions.nitro.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Permissions.nitro.d.ts","sourceRoot":"","sources":["../../../../src/specs/Permissions.nitro.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAG9D,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAA;AAC7D,KAAK,cAAc,GAAG,QAAQ,GAAG,YAAY,CAAA;AAE7C,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,cAAc,CAAA;CACrB;AAED,UAAU,WAAY,SAAQ,YAAY,CAAC;IACzC,GAAG,EAAE,OAAO,CAAA;IACZ,OAAO,EAAE,QAAQ,CAAA;CAClB,CAAC;IACA,KAAK,CAAC,cAAc,EAAE,oBAAoB,GAAG,OAAO,CAAC,eAAe,CAAC,CAAA;IACrE,OAAO,CAAC,cAAc,EAAE,oBAAoB,GAAG,OAAO,CAAC,eAAe,CAAC,CAAA;CACxE;AAED,QAAA,MAAM,iBAAiB,aACsC,CAAA;AAC7D,KAAK,iBAAiB,GAAG,WAAW,CAAA;AACpC,OAAO,EAAE,iBAAiB,IAAI,WAAW,EAAE,CAAA"}
package/nitro.json CHANGED
@@ -13,6 +13,10 @@
13
13
  "androidCxxLibName": "Webrtc"
14
14
  },
15
15
  "autolinking": {
16
+ "Permissions": {
17
+ "swift": "HybridPermissions",
18
+ "kotlin": "HybridPermissions"
19
+ },
16
20
  "Microphone": {
17
21
  "swift": "HybridMicrophone",
18
22
  "kotlin": "HybridMicrophone"
@@ -39,6 +39,7 @@ target_sources(
39
39
  ../nitrogen/generated/shared/c++/HybridMediaStreamSpec.cpp
40
40
  ../nitrogen/generated/shared/c++/HybridMediaStreamTrackSpec.cpp
41
41
  ../nitrogen/generated/shared/c++/HybridMicrophoneSpec.cpp
42
+ ../nitrogen/generated/shared/c++/HybridPermissionsSpec.cpp
42
43
  ../nitrogen/generated/shared/c++/HybridRTCPeerConnectionSpec.cpp
43
44
  ../nitrogen/generated/shared/c++/HybridRTCRtpReceiverSpec.cpp
44
45
  ../nitrogen/generated/shared/c++/HybridRTCRtpSenderSpec.cpp
@@ -48,6 +49,7 @@ target_sources(
48
49
  # Android-specific Nitrogen C++ sources
49
50
  ../nitrogen/generated/android/c++/JHybridCameraSpec.cpp
50
51
  ../nitrogen/generated/android/c++/JHybridMicrophoneSpec.cpp
52
+ ../nitrogen/generated/android/c++/JHybridPermissionsSpec.cpp
51
53
  ../nitrogen/generated/android/c++/JHybridWebrtcViewSpec.cpp
52
54
  ../nitrogen/generated/android/c++/views/JHybridWebrtcViewStateUpdater.cpp
53
55
  )
@@ -17,6 +17,7 @@
17
17
 
18
18
  #include "JHybridCameraSpec.hpp"
19
19
  #include "JHybridMicrophoneSpec.hpp"
20
+ #include "JHybridPermissionsSpec.hpp"
20
21
  #include "JHybridWebrtcViewSpec.hpp"
21
22
  #include "views/JHybridWebrtcViewStateUpdater.hpp"
22
23
  #include <NitroModules/DefaultConstructableObject.hpp>
@@ -40,10 +41,19 @@ int initialize(JavaVM* vm) {
40
41
  // Register native JNI methods
41
42
  margelo::nitro::webrtc::JHybridCameraSpec::registerNatives();
42
43
  margelo::nitro::webrtc::JHybridMicrophoneSpec::registerNatives();
44
+ margelo::nitro::webrtc::JHybridPermissionsSpec::registerNatives();
43
45
  margelo::nitro::webrtc::JHybridWebrtcViewSpec::registerNatives();
44
46
  margelo::nitro::webrtc::views::JHybridWebrtcViewStateUpdater::registerNatives();
45
47
 
46
48
  // Register Nitro Hybrid Objects
49
+ HybridObjectRegistry::registerHybridObjectConstructor(
50
+ "Permissions",
51
+ []() -> std::shared_ptr<HybridObject> {
52
+ static DefaultConstructableObject<JHybridPermissionsSpec::javaobject> object("com/webrtc/HybridPermissions");
53
+ auto instance = object.create();
54
+ return instance->cthis()->shared();
55
+ }
56
+ );
47
57
  HybridObjectRegistry::registerHybridObjectConstructor(
48
58
  "Microphone",
49
59
  []() -> std::shared_ptr<HybridObject> {
@@ -0,0 +1,91 @@
1
+ ///
2
+ /// JHybridPermissionsSpec.cpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © 2025 Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #include "JHybridPermissionsSpec.hpp"
9
+
10
+ // Forward declaration of `PermissionState` to properly resolve imports.
11
+ namespace margelo::nitro::webrtc { enum class PermissionState; }
12
+ // Forward declaration of `PermissionDescriptor` to properly resolve imports.
13
+ namespace margelo::nitro::webrtc { struct PermissionDescriptor; }
14
+ // Forward declaration of `PermissionName` to properly resolve imports.
15
+ namespace margelo::nitro::webrtc { enum class PermissionName; }
16
+
17
+ #include "PermissionState.hpp"
18
+ #include <NitroModules/Promise.hpp>
19
+ #include <NitroModules/JPromise.hpp>
20
+ #include "JPermissionState.hpp"
21
+ #include "PermissionDescriptor.hpp"
22
+ #include "JPermissionDescriptor.hpp"
23
+ #include "PermissionName.hpp"
24
+ #include "JPermissionName.hpp"
25
+
26
+ namespace margelo::nitro::webrtc {
27
+
28
+ jni::local_ref<JHybridPermissionsSpec::jhybriddata> JHybridPermissionsSpec::initHybrid(jni::alias_ref<jhybridobject> jThis) {
29
+ return makeCxxInstance(jThis);
30
+ }
31
+
32
+ void JHybridPermissionsSpec::registerNatives() {
33
+ registerHybrid({
34
+ makeNativeMethod("initHybrid", JHybridPermissionsSpec::initHybrid),
35
+ });
36
+ }
37
+
38
+ size_t JHybridPermissionsSpec::getExternalMemorySize() noexcept {
39
+ static const auto method = javaClassStatic()->getMethod<jlong()>("getMemorySize");
40
+ return method(_javaPart);
41
+ }
42
+
43
+ void JHybridPermissionsSpec::dispose() noexcept {
44
+ static const auto method = javaClassStatic()->getMethod<void()>("dispose");
45
+ method(_javaPart);
46
+ }
47
+
48
+ std::string JHybridPermissionsSpec::toString() {
49
+ static const auto method = javaClassStatic()->getMethod<jni::JString()>("toString");
50
+ auto javaString = method(_javaPart);
51
+ return javaString->toStdString();
52
+ }
53
+
54
+ // Properties
55
+
56
+
57
+ // Methods
58
+ std::shared_ptr<Promise<PermissionState>> JHybridPermissionsSpec::query(const PermissionDescriptor& permissionDesc) {
59
+ static const auto method = javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<JPermissionDescriptor> /* permissionDesc */)>("query");
60
+ auto __result = method(_javaPart, JPermissionDescriptor::fromCpp(permissionDesc));
61
+ return [&]() {
62
+ auto __promise = Promise<PermissionState>::create();
63
+ __result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& __boxedResult) {
64
+ auto __result = jni::static_ref_cast<JPermissionState>(__boxedResult);
65
+ __promise->resolve(__result->toCpp());
66
+ });
67
+ __result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
68
+ jni::JniException __jniError(__throwable);
69
+ __promise->reject(std::make_exception_ptr(__jniError));
70
+ });
71
+ return __promise;
72
+ }();
73
+ }
74
+ std::shared_ptr<Promise<PermissionState>> JHybridPermissionsSpec::request(const PermissionDescriptor& permissionDesc) {
75
+ static const auto method = javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<JPermissionDescriptor> /* permissionDesc */)>("request");
76
+ auto __result = method(_javaPart, JPermissionDescriptor::fromCpp(permissionDesc));
77
+ return [&]() {
78
+ auto __promise = Promise<PermissionState>::create();
79
+ __result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& __boxedResult) {
80
+ auto __result = jni::static_ref_cast<JPermissionState>(__boxedResult);
81
+ __promise->resolve(__result->toCpp());
82
+ });
83
+ __result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
84
+ jni::JniException __jniError(__throwable);
85
+ __promise->reject(std::make_exception_ptr(__jniError));
86
+ });
87
+ return __promise;
88
+ }();
89
+ }
90
+
91
+ } // namespace margelo::nitro::webrtc
@@ -0,0 +1,66 @@
1
+ ///
2
+ /// HybridPermissionsSpec.hpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © 2025 Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #pragma once
9
+
10
+ #include <NitroModules/JHybridObject.hpp>
11
+ #include <fbjni/fbjni.h>
12
+ #include "HybridPermissionsSpec.hpp"
13
+
14
+
15
+
16
+
17
+ namespace margelo::nitro::webrtc {
18
+
19
+ using namespace facebook;
20
+
21
+ class JHybridPermissionsSpec: public jni::HybridClass<JHybridPermissionsSpec, JHybridObject>,
22
+ public virtual HybridPermissionsSpec {
23
+ public:
24
+ static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/webrtc/HybridPermissionsSpec;";
25
+ static jni::local_ref<jhybriddata> initHybrid(jni::alias_ref<jhybridobject> jThis);
26
+ static void registerNatives();
27
+
28
+ protected:
29
+ // C++ constructor (called from Java via `initHybrid()`)
30
+ explicit JHybridPermissionsSpec(jni::alias_ref<jhybridobject> jThis) :
31
+ HybridObject(HybridPermissionsSpec::TAG),
32
+ HybridBase(jThis),
33
+ _javaPart(jni::make_global(jThis)) {}
34
+
35
+ public:
36
+ ~JHybridPermissionsSpec() override {
37
+ // Hermes GC can destroy JS objects on a non-JNI Thread.
38
+ jni::ThreadScope::WithClassLoader([&] { _javaPart.reset(); });
39
+ }
40
+
41
+ public:
42
+ size_t getExternalMemorySize() noexcept override;
43
+ void dispose() noexcept override;
44
+ std::string toString() override;
45
+
46
+ public:
47
+ inline const jni::global_ref<JHybridPermissionsSpec::javaobject>& getJavaPart() const noexcept {
48
+ return _javaPart;
49
+ }
50
+
51
+ public:
52
+ // Properties
53
+
54
+
55
+ public:
56
+ // Methods
57
+ std::shared_ptr<Promise<PermissionState>> query(const PermissionDescriptor& permissionDesc) override;
58
+ std::shared_ptr<Promise<PermissionState>> request(const PermissionDescriptor& permissionDesc) override;
59
+
60
+ private:
61
+ friend HybridBase;
62
+ using HybridBase::HybridBase;
63
+ jni::global_ref<JHybridPermissionsSpec::javaobject> _javaPart;
64
+ };
65
+
66
+ } // namespace margelo::nitro::webrtc
@@ -0,0 +1,58 @@
1
+ ///
2
+ /// JPermissionDescriptor.hpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © 2025 Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #pragma once
9
+
10
+ #include <fbjni/fbjni.h>
11
+ #include "PermissionDescriptor.hpp"
12
+
13
+ #include "JPermissionName.hpp"
14
+ #include "PermissionName.hpp"
15
+
16
+ namespace margelo::nitro::webrtc {
17
+
18
+ using namespace facebook;
19
+
20
+ /**
21
+ * The C++ JNI bridge between the C++ struct "PermissionDescriptor" and the the Kotlin data class "PermissionDescriptor".
22
+ */
23
+ struct JPermissionDescriptor final: public jni::JavaClass<JPermissionDescriptor> {
24
+ public:
25
+ static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/webrtc/PermissionDescriptor;";
26
+
27
+ public:
28
+ /**
29
+ * Convert this Java/Kotlin-based struct to the C++ struct PermissionDescriptor by copying all values to C++.
30
+ */
31
+ [[maybe_unused]]
32
+ [[nodiscard]]
33
+ PermissionDescriptor toCpp() const {
34
+ static const auto clazz = javaClassStatic();
35
+ static const auto fieldName = clazz->getField<JPermissionName>("name");
36
+ jni::local_ref<JPermissionName> name = this->getFieldValue(fieldName);
37
+ return PermissionDescriptor(
38
+ name->toCpp()
39
+ );
40
+ }
41
+
42
+ public:
43
+ /**
44
+ * Create a Java/Kotlin-based struct by copying all values from the given C++ struct to Java.
45
+ */
46
+ [[maybe_unused]]
47
+ static jni::local_ref<JPermissionDescriptor::javaobject> fromCpp(const PermissionDescriptor& value) {
48
+ using JSignature = JPermissionDescriptor(jni::alias_ref<JPermissionName>);
49
+ static const auto clazz = javaClassStatic();
50
+ static const auto create = clazz->getStaticMethod<JSignature>("fromCpp");
51
+ return create(
52
+ clazz,
53
+ JPermissionName::fromCpp(value.name)
54
+ );
55
+ }
56
+ };
57
+
58
+ } // namespace margelo::nitro::webrtc
@@ -0,0 +1,59 @@
1
+ ///
2
+ /// JPermissionName.hpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © 2025 Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #pragma once
9
+
10
+ #include <fbjni/fbjni.h>
11
+ #include "PermissionName.hpp"
12
+
13
+ namespace margelo::nitro::webrtc {
14
+
15
+ using namespace facebook;
16
+
17
+ /**
18
+ * The C++ JNI bridge between the C++ enum "PermissionName" and the the Kotlin enum "PermissionName".
19
+ */
20
+ struct JPermissionName final: public jni::JavaClass<JPermissionName> {
21
+ public:
22
+ static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/webrtc/PermissionName;";
23
+
24
+ public:
25
+ /**
26
+ * Convert this Java/Kotlin-based enum to the C++ enum PermissionName.
27
+ */
28
+ [[maybe_unused]]
29
+ [[nodiscard]]
30
+ PermissionName toCpp() const {
31
+ static const auto clazz = javaClassStatic();
32
+ static const auto fieldOrdinal = clazz->getField<int>("value");
33
+ int ordinal = this->getFieldValue(fieldOrdinal);
34
+ return static_cast<PermissionName>(ordinal);
35
+ }
36
+
37
+ public:
38
+ /**
39
+ * Create a Java/Kotlin-based enum with the given C++ enum's value.
40
+ */
41
+ [[maybe_unused]]
42
+ static jni::alias_ref<JPermissionName> fromCpp(PermissionName value) {
43
+ static const auto clazz = javaClassStatic();
44
+ static const auto fieldCAMERA = clazz->getStaticField<JPermissionName>("CAMERA");
45
+ static const auto fieldMICROPHONE = clazz->getStaticField<JPermissionName>("MICROPHONE");
46
+
47
+ switch (value) {
48
+ case PermissionName::CAMERA:
49
+ return clazz->getStaticFieldValue(fieldCAMERA);
50
+ case PermissionName::MICROPHONE:
51
+ return clazz->getStaticFieldValue(fieldMICROPHONE);
52
+ default:
53
+ std::string stringValue = std::to_string(static_cast<int>(value));
54
+ throw std::invalid_argument("Invalid enum value (" + stringValue + "!");
55
+ }
56
+ }
57
+ };
58
+
59
+ } // namespace margelo::nitro::webrtc
@@ -0,0 +1,62 @@
1
+ ///
2
+ /// JPermissionState.hpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © 2025 Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #pragma once
9
+
10
+ #include <fbjni/fbjni.h>
11
+ #include "PermissionState.hpp"
12
+
13
+ namespace margelo::nitro::webrtc {
14
+
15
+ using namespace facebook;
16
+
17
+ /**
18
+ * The C++ JNI bridge between the C++ enum "PermissionState" and the the Kotlin enum "PermissionState".
19
+ */
20
+ struct JPermissionState final: public jni::JavaClass<JPermissionState> {
21
+ public:
22
+ static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/webrtc/PermissionState;";
23
+
24
+ public:
25
+ /**
26
+ * Convert this Java/Kotlin-based enum to the C++ enum PermissionState.
27
+ */
28
+ [[maybe_unused]]
29
+ [[nodiscard]]
30
+ PermissionState toCpp() const {
31
+ static const auto clazz = javaClassStatic();
32
+ static const auto fieldOrdinal = clazz->getField<int>("value");
33
+ int ordinal = this->getFieldValue(fieldOrdinal);
34
+ return static_cast<PermissionState>(ordinal);
35
+ }
36
+
37
+ public:
38
+ /**
39
+ * Create a Java/Kotlin-based enum with the given C++ enum's value.
40
+ */
41
+ [[maybe_unused]]
42
+ static jni::alias_ref<JPermissionState> fromCpp(PermissionState value) {
43
+ static const auto clazz = javaClassStatic();
44
+ static const auto fieldDENIED = clazz->getStaticField<JPermissionState>("DENIED");
45
+ static const auto fieldGRANTED = clazz->getStaticField<JPermissionState>("GRANTED");
46
+ static const auto fieldPROMPT = clazz->getStaticField<JPermissionState>("PROMPT");
47
+
48
+ switch (value) {
49
+ case PermissionState::DENIED:
50
+ return clazz->getStaticFieldValue(fieldDENIED);
51
+ case PermissionState::GRANTED:
52
+ return clazz->getStaticFieldValue(fieldGRANTED);
53
+ case PermissionState::PROMPT:
54
+ return clazz->getStaticFieldValue(fieldPROMPT);
55
+ default:
56
+ std::string stringValue = std::to_string(static_cast<int>(value));
57
+ throw std::invalid_argument("Invalid enum value (" + stringValue + "!");
58
+ }
59
+ }
60
+ };
61
+
62
+ } // namespace margelo::nitro::webrtc