@cloudflare/realtimekit-react-native 0.0.0 → 0.0.1-staging.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 (83) hide show
  1. package/LICENSE +13 -0
  2. package/README.md +83 -0
  3. package/RealtimeKitCore.podspec +19 -0
  4. package/android/build.gradle +58 -0
  5. package/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  6. package/android/gradle/wrapper/gradle-wrapper.properties +5 -0
  7. package/android/gradlew +185 -0
  8. package/android/gradlew.bat +89 -0
  9. package/android/src/main/AndroidManifest.xml +23 -0
  10. package/android/src/main/java/com/reactnativecore/BackgroundTimer/RNBackgroundTimer.java +97 -0
  11. package/android/src/main/java/com/reactnativecore/Constants.java +14 -0
  12. package/android/src/main/java/com/reactnativecore/CoreModule.java +49 -0
  13. package/android/src/main/java/com/reactnativecore/CorePackage.java +34 -0
  14. package/android/src/main/java/com/reactnativecore/DyteHelperModule.java +268 -0
  15. package/android/src/main/java/com/reactnativecore/DyteHolder.java +7 -0
  16. package/android/src/main/java/com/reactnativecore/ForegroundService.java +48 -0
  17. package/android/src/main/java/com/reactnativecore/NotificationHelper.java +127 -0
  18. package/android/src/main/java/com/reactnativecore/RNPermissionsModule.java +226 -0
  19. package/android/src/main/java/com/reactnativecore/incallmanager/AppRTCBluetoothManager.java +637 -0
  20. package/android/src/main/java/com/reactnativecore/incallmanager/AppRTCProximitySensor.java +133 -0
  21. package/android/src/main/java/com/reactnativecore/incallmanager/AppRTCUtils.java +41 -0
  22. package/android/src/main/java/com/reactnativecore/incallmanager/InCallManagerModule.java +1881 -0
  23. package/android/src/main/java/com/reactnativecore/incallmanager/InCallProximityManager.java +162 -0
  24. package/android/src/main/java/com/reactnativecore/incallmanager/InCallWakeLockUtils.java +116 -0
  25. package/android/src/main/java/com/reactnativecore/incallmanager/ThreadUtils.java +39 -0
  26. package/app.plugin.js +1 -0
  27. package/ios/BroadcastEventEmitter.h +11 -0
  28. package/ios/BroadcastEventEmitter.m +72 -0
  29. package/ios/Core.h +5 -0
  30. package/ios/Core.m +28 -0
  31. package/ios/Core.xcodeproj/project.pbxproj +287 -0
  32. package/ios/DyteRNBackgroundTimer.h +22 -0
  33. package/ios/DyteRNBackgroundTimer.m +90 -0
  34. package/ios/DyteRNPermissionHandlerNotifications.h +17 -0
  35. package/ios/DyteRNPermissionHandlerNotifications.m +127 -0
  36. package/ios/DyteRNPermissions.h +50 -0
  37. package/ios/DyteRNPermissions.m +275 -0
  38. package/ios/DyteScreensharePickerView.h +8 -0
  39. package/ios/DyteScreensharePickerView.m +27 -0
  40. package/ios/PrivacyInfo.xcprivacy +60 -0
  41. package/ios/RNInCallManager.h +16 -0
  42. package/ios/RNInCallManager.m +1354 -0
  43. package/ios/permissions/DyteRNPermissionHandlerBluetoothPeripheral.h +4 -0
  44. package/ios/permissions/DyteRNPermissionHandlerBluetoothPeripheral.m +87 -0
  45. package/ios/permissions/DyteRNPermissionHandlerCamera.h +5 -0
  46. package/ios/permissions/DyteRNPermissionHandlerCamera.m +38 -0
  47. package/ios/permissions/DyteRNPermissionHandlerMicrophone.h +5 -0
  48. package/ios/permissions/DyteRNPermissionHandlerMicrophone.m +34 -0
  49. package/ios/permissions/DyteRNPermissionHandlerPhotoLibrary.h +8 -0
  50. package/ios/permissions/DyteRNPermissionHandlerPhotoLibrary.m +70 -0
  51. package/ios/screenshare/DyteDarwinNotificationCenter.swift +21 -0
  52. package/ios/screenshare/DyteScreenshareAtomic.swift +29 -0
  53. package/ios/screenshare/DyteScreenshareHandler.swift +103 -0
  54. package/ios/screenshare/DyteScreenshareUploader.swift +139 -0
  55. package/ios/screenshare/DyteSocketConnection.swift +190 -0
  56. package/lib/BackgroundHandler.d.ts +20 -0
  57. package/lib/BackgroundHandler.js +87 -0
  58. package/lib/LocalMediaError.d.ts +4 -0
  59. package/lib/LocalMediaError.js +6 -0
  60. package/lib/LocalMediaHandler.d.ts +118 -0
  61. package/lib/LocalMediaHandler.js +853 -0
  62. package/lib/LocalMediaInterfaces.d.ts +76 -0
  63. package/lib/LocalMediaInterfaces.js +1 -0
  64. package/lib/LocalMediaUtils.d.ts +93 -0
  65. package/lib/LocalMediaUtils.js +276 -0
  66. package/lib/NativeAudioManager.d.ts +16 -0
  67. package/lib/NativeAudioManager.js +93 -0
  68. package/lib/PermissionHandler.d.ts +34 -0
  69. package/lib/PermissionHandler.js +179 -0
  70. package/lib/ReactContext.d.ts +42 -0
  71. package/lib/ReactContext.js +96 -0
  72. package/lib/ReactHooks.d.ts +11 -0
  73. package/lib/ReactHooks.js +73 -0
  74. package/lib/index.d.ts +10 -0
  75. package/lib/index.js +40 -0
  76. package/lib/utils/crypto.d.ts +17 -0
  77. package/lib/utils/crypto.js +82 -0
  78. package/package.json +51 -4
  79. package/plugin/build/withDyte.d.ts +25 -0
  80. package/plugin/build/withDyte.js +100 -0
  81. package/plugin/src/withDyte.ts +150 -0
  82. package/plugin/tsconfig.json +10 -0
  83. package/plugin/tsconfig.tsbuildinfo +1 -0
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const config_plugins_1 = require("@expo/config-plugins");
4
+ const MICROPHONE = 'Allow $(PRODUCT_NAME) to access the microphone';
5
+ const CAMERA = 'Allow $(PRODUCT_NAME) to access the camera';
6
+ const BLUETOOTH = 'Allow $(PRODUCT_NAME) to access the bluetooth';
7
+ const BLUETOOTH_ALWAYS = 'Allow $(PRODUCT_NAME) to access the bluetooth';
8
+ const LIBRARY = 'Allow $(PRODUCT_NAME) to access the files';
9
+ /**
10
+ * Adds `NSMicrophoneUsageDescription` and `NSSpeechRecognitionUsageDescription` to the `Info.plist`.
11
+ *
12
+ * @param props.speechRecognitionPermission speech recognition message
13
+ * @param props.microphonePermission microphone permission message
14
+ * @returns
15
+ */
16
+ const withIosPermissions = (c, { microphonePermission, cameraPermission, libraryPermission, bluetoothPermission, bluetoothAlwaysPermission, } = {}) => {
17
+ return (0, config_plugins_1.withInfoPlist)(c, (config) => {
18
+ if (microphonePermission !== false) {
19
+ config.modResults.NSMicrophoneUsageDescription =
20
+ microphonePermission ||
21
+ config.modResults.NSMicrophoneUsageDescription ||
22
+ MICROPHONE;
23
+ }
24
+ if (cameraPermission !== false) {
25
+ config.modResults.NSCameraUsageDescription =
26
+ cameraPermission ||
27
+ config.modResults.NSCameraUsageDescription ||
28
+ CAMERA;
29
+ }
30
+ if (bluetoothPermission !== false) {
31
+ config.modResults.NSBluetoothPeripheralUsageDescription =
32
+ bluetoothPermission ||
33
+ config.modResults.NSBluetoothPeripheralUsageDescription ||
34
+ BLUETOOTH;
35
+ }
36
+ if (bluetoothAlwaysPermission !== false) {
37
+ config.modResults.NSBluetoothAlwaysUsageDescription =
38
+ bluetoothAlwaysPermission ||
39
+ config.modResults.NSBluetoothAlwaysUsageDescription ||
40
+ BLUETOOTH_ALWAYS;
41
+ }
42
+ if (libraryPermission !== false) {
43
+ config.modResults.NSPhotoLibraryUsageDescription =
44
+ libraryPermission ||
45
+ config.modResults.NSPhotoLibraryUsageDescription ||
46
+ LIBRARY;
47
+ }
48
+ if (config.modResults.UIBackgroundModes === undefined) {
49
+ config.modResults.UIBackgroundModes = ['audio', 'voip'];
50
+ }
51
+ return config;
52
+ });
53
+ };
54
+ /**
55
+ * Adds the following to the `AndroidManifest.xml`:
56
+ * <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
57
+ <uses-permission android:name="android.permission.BLUETOOTH"/>
58
+ <uses-permission android:name="android.permission.BLUETOOTH_CONNECT"/>
59
+ <uses-permission android:name="android.permission.CAMERA"/>
60
+ <uses-permission android:name="android.permission.INTERNET"/>
61
+ <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
62
+ <uses-permission android:name="android.permission.RECORD_AUDIO"/>
63
+ <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
64
+ <uses-permission android:name="android.permission.WAKE_LOCK"/>
65
+ <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
66
+ <uses-permission android:name="android.permission.FOREGROUND_SERVICE_CAMERA" />
67
+ <uses-permission android:name="android.permission.FOREGROUND_SERVICE_MICROPHONE" />
68
+ <uses-permission android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PROJECTION" />
69
+ <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
70
+ <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
71
+ <uses-permission android:name="android.permission.MICROPHONE" />
72
+ */
73
+ const withAndroidPermissions = (config) => {
74
+ return config_plugins_1.AndroidConfig.Permissions.withPermissions(config, [
75
+ 'android.permission.ACCESS_NETWORK_STATE',
76
+ 'android.permission.BLUETOOTH',
77
+ 'android.permission.CAMERA',
78
+ 'android.permission.INTERNET',
79
+ 'android.permission.MODIFY_AUDIO_SETTINGS',
80
+ 'android.permission.RECORD_AUDIO',
81
+ 'android.permission.SYSTEM_ALERT_WINDOW',
82
+ 'android.permission.WAKE_LOCK',
83
+ 'android.permission.FOREGROUND_SERVICE',
84
+ 'android.permission.FOREGROUND_SERVICE_CAMERA',
85
+ 'android.permission.FOREGROUND_SERVICE_MICROPHONE',
86
+ 'android.permission.FOREGROUND_SERVICE_MEDIA_PROJECTION',
87
+ 'android.permission.WRITE_EXTERNAL_STORAGE',
88
+ 'android.permission.READ_EXTERNAL_STORAGE',
89
+ 'android.permission.MICROPHONE',
90
+ ]);
91
+ };
92
+ const withVoice = (config, props = {}) => {
93
+ const _props = props ? props : {};
94
+ config = withIosPermissions(config, _props);
95
+ if (_props.microphonePermission !== false) {
96
+ config = withAndroidPermissions(config);
97
+ }
98
+ return config;
99
+ };
100
+ exports.default = (0, config_plugins_1.createRunOncePlugin)(withVoice, '@dytesdk/react-native-core');
@@ -0,0 +1,150 @@
1
+ import {
2
+ AndroidConfig,
3
+ ConfigPlugin,
4
+ createRunOncePlugin,
5
+ withInfoPlist,
6
+ } from '@expo/config-plugins';
7
+
8
+ const MICROPHONE = 'Allow $(PRODUCT_NAME) to access the microphone';
9
+ const CAMERA = 'Allow $(PRODUCT_NAME) to access the camera';
10
+ const BLUETOOTH = 'Allow $(PRODUCT_NAME) to access the bluetooth';
11
+ const BLUETOOTH_ALWAYS = 'Allow $(PRODUCT_NAME) to access the bluetooth';
12
+ const LIBRARY = 'Allow $(PRODUCT_NAME) to access the files';
13
+
14
+ export type Props = {
15
+ /**
16
+ * `NSMicrophoneUsageDescription` message.
17
+ */
18
+ microphonePermission?: string | false;
19
+
20
+ /**
21
+ * `NSCameraUsageDescription` message.
22
+ */
23
+ cameraPermission?: string | false;
24
+
25
+ /**
26
+ * `NSBluetoothPeripheralUsageDescription` message.
27
+ */
28
+ bluetoothPermission?: string | false;
29
+
30
+ /**
31
+ * `NSBluetoothPeripheralUsageDescription` message.
32
+ */
33
+ bluetoothAlwaysPermission?: string | false;
34
+
35
+ /**
36
+ * `NSPhotoLibraryUsageDescription` message.
37
+ */
38
+ libraryPermission?: string | false;
39
+ };
40
+
41
+ /**
42
+ * Adds `NSMicrophoneUsageDescription` and `NSSpeechRecognitionUsageDescription` to the `Info.plist`.
43
+ *
44
+ * @param props.speechRecognitionPermission speech recognition message
45
+ * @param props.microphonePermission microphone permission message
46
+ * @returns
47
+ */
48
+ const withIosPermissions: ConfigPlugin<Props> = (
49
+ c,
50
+ {
51
+ microphonePermission,
52
+ cameraPermission,
53
+ libraryPermission,
54
+ bluetoothPermission,
55
+ bluetoothAlwaysPermission,
56
+ } = {}
57
+ ) => {
58
+ return withInfoPlist(c, (config) => {
59
+ if (microphonePermission !== false) {
60
+ config.modResults.NSMicrophoneUsageDescription =
61
+ microphonePermission ||
62
+ config.modResults.NSMicrophoneUsageDescription ||
63
+ MICROPHONE;
64
+ }
65
+
66
+ if (cameraPermission !== false) {
67
+ config.modResults.NSCameraUsageDescription =
68
+ cameraPermission ||
69
+ config.modResults.NSCameraUsageDescription ||
70
+ CAMERA;
71
+ }
72
+
73
+ if (bluetoothPermission !== false) {
74
+ config.modResults.NSBluetoothPeripheralUsageDescription =
75
+ bluetoothPermission ||
76
+ config.modResults.NSBluetoothPeripheralUsageDescription ||
77
+ BLUETOOTH;
78
+ }
79
+
80
+ if (bluetoothAlwaysPermission !== false) {
81
+ config.modResults.NSBluetoothAlwaysUsageDescription =
82
+ bluetoothAlwaysPermission ||
83
+ config.modResults.NSBluetoothAlwaysUsageDescription ||
84
+ BLUETOOTH_ALWAYS;
85
+ }
86
+
87
+ if (libraryPermission !== false) {
88
+ config.modResults.NSPhotoLibraryUsageDescription =
89
+ libraryPermission ||
90
+ config.modResults.NSPhotoLibraryUsageDescription ||
91
+ LIBRARY;
92
+ }
93
+
94
+ if (config.modResults.UIBackgroundModes === undefined) {
95
+ config.modResults.UIBackgroundModes = ['audio', 'voip'];
96
+ }
97
+
98
+ return config;
99
+ });
100
+ };
101
+
102
+ /**
103
+ * Adds the following to the `AndroidManifest.xml`:
104
+ * <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
105
+ <uses-permission android:name="android.permission.BLUETOOTH"/>
106
+ <uses-permission android:name="android.permission.BLUETOOTH_CONNECT"/>
107
+ <uses-permission android:name="android.permission.CAMERA"/>
108
+ <uses-permission android:name="android.permission.INTERNET"/>
109
+ <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
110
+ <uses-permission android:name="android.permission.RECORD_AUDIO"/>
111
+ <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
112
+ <uses-permission android:name="android.permission.WAKE_LOCK"/>
113
+ <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
114
+ <uses-permission android:name="android.permission.FOREGROUND_SERVICE_CAMERA" />
115
+ <uses-permission android:name="android.permission.FOREGROUND_SERVICE_MICROPHONE" />
116
+ <uses-permission android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PROJECTION" />
117
+ <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
118
+ <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
119
+ <uses-permission android:name="android.permission.MICROPHONE" />
120
+ */
121
+ const withAndroidPermissions: ConfigPlugin = (config) => {
122
+ return AndroidConfig.Permissions.withPermissions(config, [
123
+ 'android.permission.ACCESS_NETWORK_STATE',
124
+ 'android.permission.BLUETOOTH',
125
+ 'android.permission.CAMERA',
126
+ 'android.permission.INTERNET',
127
+ 'android.permission.MODIFY_AUDIO_SETTINGS',
128
+ 'android.permission.RECORD_AUDIO',
129
+ 'android.permission.SYSTEM_ALERT_WINDOW',
130
+ 'android.permission.WAKE_LOCK',
131
+ 'android.permission.FOREGROUND_SERVICE',
132
+ 'android.permission.FOREGROUND_SERVICE_CAMERA',
133
+ 'android.permission.FOREGROUND_SERVICE_MICROPHONE',
134
+ 'android.permission.FOREGROUND_SERVICE_MEDIA_PROJECTION',
135
+ 'android.permission.WRITE_EXTERNAL_STORAGE',
136
+ 'android.permission.READ_EXTERNAL_STORAGE',
137
+ 'android.permission.MICROPHONE',
138
+ ]);
139
+ };
140
+
141
+ const withVoice: ConfigPlugin<Props | void> = (config, props = {}) => {
142
+ const _props = props ? props : {};
143
+ config = withIosPermissions(config, _props);
144
+ if (_props.microphonePermission !== false) {
145
+ config = withAndroidPermissions(config);
146
+ }
147
+ return config;
148
+ };
149
+
150
+ export default createRunOncePlugin(withVoice, '@dytesdk/react-native-core');
@@ -0,0 +1,10 @@
1
+ {
2
+ "extends": "expo-module-scripts/tsconfig.plugin",
3
+ "compilerOptions": {
4
+ "outDir": "build",
5
+ "rootDir": "src",
6
+ "declaration": true
7
+ },
8
+ "include": ["./src"],
9
+ "exclude": ["**/__mocks__/*", "**/__tests__/*"]
10
+ }
@@ -0,0 +1 @@
1
+ {"root":["./src/withDyte.ts"],"version":"5.8.3"}