@100mslive/react-native-hms 1.12.2 → 2.0.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/android/build.gradle +70 -12
- package/android/src/main/java/com/reactnativehmssdk/HMSAudioshareActivity.kt +8 -8
- package/android/src/main/java/com/reactnativehmssdk/HMSHLSPlayer.kt +38 -12
- package/android/src/main/java/com/reactnativehmssdk/HMSHLSPlayerManagerImpl.kt +185 -0
- package/android/src/main/java/com/reactnativehmssdk/HMSHelper.kt +20 -10
- package/android/src/main/java/com/reactnativehmssdk/{HMSManager.kt → HMSManagerImpl.kt} +28 -111
- package/android/src/main/java/com/reactnativehmssdk/HMSRNSDK.kt +3 -3
- package/android/src/main/java/com/reactnativehmssdk/HMSReactNativeEvent.kt +29 -0
- package/android/src/main/java/com/reactnativehmssdk/HMSSDKViewManagerImpl.kt +119 -0
- package/android/src/main/java/com/reactnativehmssdk/HMSView.kt +33 -5
- package/android/src/main/java/com/reactnativehmssdk/HmsScreenshareActivity.kt +9 -9
- package/android/src/main/java/com/reactnativehmssdk/HmssdkPackage.kt +42 -3
- package/android/src/newarch/java/com/reactnativehmssdk/HMSHLSPlayerManager.kt +128 -0
- package/android/src/newarch/java/com/reactnativehmssdk/HMSManager.kt +332 -0
- package/android/src/newarch/java/com/reactnativehmssdk/HMSSDKViewManager.kt +102 -0
- package/android/src/oldarch/java/com/reactnativehmssdk/HMSHLSPlayerManager.kt +61 -0
- package/android/src/oldarch/java/com/reactnativehmssdk/HMSManager.kt +351 -0
- package/android/src/oldarch/java/com/reactnativehmssdk/HMSSDKViewManager.kt +87 -0
- package/ios/HMSHLSPlayerComponentView.mm +325 -0
- package/ios/HMSHLSPlayerManager.m +10 -0
- package/ios/HMSHLSPlayerManager.swift +91 -79
- package/ios/HMSManager.m +13 -0
- package/ios/HMSManager.mm +365 -0
- package/ios/HMSManager.swift +109 -103
- package/ios/HMSView.m +9 -0
- package/ios/HMSView.swift +44 -14
- package/ios/HMSViewComponentView.mm +229 -0
- package/lib/commonjs/classes/HmsView.js +45 -48
- package/lib/commonjs/classes/HmsView.js.map +1 -1
- package/lib/commonjs/components/HMSHLSPlayer/HMSHLSPlayer.js +46 -26
- package/lib/commonjs/components/HMSHLSPlayer/HMSHLSPlayer.js.map +1 -1
- package/lib/commonjs/components/HMSHLSPlayer/RCTHMSHLSPlayer.js +5 -4
- package/lib/commonjs/components/HMSHLSPlayer/RCTHMSHLSPlayer.js.map +1 -1
- package/lib/commonjs/modules/HMSManagerModule.js +3 -10
- package/lib/commonjs/modules/HMSManagerModule.js.map +1 -1
- package/lib/commonjs/specs/HMSHLSPlayerNativeComponent.js +75 -0
- package/lib/commonjs/specs/HMSHLSPlayerNativeComponent.js.map +1 -0
- package/lib/commonjs/specs/HMSViewNativeComponent.js +55 -0
- package/lib/commonjs/specs/HMSViewNativeComponent.js.map +1 -0
- package/lib/commonjs/specs/NativeHMSManager.js +38 -0
- package/lib/commonjs/specs/NativeHMSManager.js.map +1 -0
- package/lib/module/classes/HmsView.js +46 -49
- package/lib/module/classes/HmsView.js.map +1 -1
- package/lib/module/components/HMSHLSPlayer/HMSHLSPlayer.js +48 -28
- package/lib/module/components/HMSHLSPlayer/HMSHLSPlayer.js.map +1 -1
- package/lib/module/components/HMSHLSPlayer/RCTHMSHLSPlayer.js +3 -3
- package/lib/module/components/HMSHLSPlayer/RCTHMSHLSPlayer.js.map +1 -1
- package/lib/module/modules/HMSManagerModule.js +1 -9
- package/lib/module/modules/HMSManagerModule.js.map +1 -1
- package/lib/module/specs/HMSHLSPlayerNativeComponent.js +69 -0
- package/lib/module/specs/HMSHLSPlayerNativeComponent.js.map +1 -0
- package/lib/module/specs/HMSViewNativeComponent.js +49 -0
- package/lib/module/specs/HMSViewNativeComponent.js.map +1 -0
- package/lib/module/specs/NativeHMSManager.js +33 -0
- package/lib/module/specs/NativeHMSManager.js.map +1 -0
- package/lib/typescript/components/HMSHLSPlayer/RCTHMSHLSPlayer.d.ts +6 -9
- package/lib/typescript/specs/HMSHLSPlayerNativeComponent.d.ts +115 -0
- package/lib/typescript/specs/HMSViewNativeComponent.d.ts +97 -0
- package/lib/typescript/specs/NativeHMSManager.d.ts +147 -0
- package/package.json +16 -1
- package/react-native-hms.podspec +43 -0
- package/src/classes/HmsView.tsx +60 -78
- package/src/components/HMSHLSPlayer/HMSHLSPlayer.tsx +62 -128
- package/src/components/HMSHLSPlayer/RCTHMSHLSPlayer.ts +8 -13
- package/src/modules/HMSManagerModule.ts +1 -14
- package/src/specs/HMSHLSPlayerNativeComponent.ts +203 -0
- package/src/specs/HMSViewNativeComponent.ts +119 -0
- package/src/specs/NativeHMSManager.ts +307 -0
- package/android/src/main/java/com/reactnativehmssdk/HMSHLSPlayerManager.kt +0 -144
- package/android/src/main/java/com/reactnativehmssdk/HMSSDKViewManager.kt +0 -111
|
@@ -0,0 +1,332 @@
|
|
|
1
|
+
package com.reactnativehmssdk
|
|
2
|
+
|
|
3
|
+
import com.facebook.react.bridge.*
|
|
4
|
+
import com.facebook.react.module.annotations.ReactModule
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* HMSManager — new-arch wrapper for the HMSManager TurboModule.
|
|
8
|
+
*
|
|
9
|
+
* Phase 1 / 1C-2 of the New Architecture migration. This wrapper is compiled
|
|
10
|
+
* only when the consumer's app uses new architecture (newArchEnabled=true).
|
|
11
|
+
* It extends the Codegen-generated NativeHMSManagerSpec abstract class and
|
|
12
|
+
* exposes all spec-declared methods as overrides that delegate to
|
|
13
|
+
* HMSManagerImpl in src/main/.
|
|
14
|
+
*
|
|
15
|
+
* iOS-only methods (audio share, PiP, video plugin) are stubbed here as
|
|
16
|
+
* Promise rejections — Android consumers should guard with Platform.OS
|
|
17
|
+
* checks. Same pattern used in iOS HMSManager.mm for Android-only methods.
|
|
18
|
+
*
|
|
19
|
+
* The old-arch counterpart at src/oldarch/.../HMSManager.kt extends
|
|
20
|
+
* ReactContextBaseJavaModule and forwards to the same impl.
|
|
21
|
+
*
|
|
22
|
+
* Pattern reference:
|
|
23
|
+
* https://github.com/reactwg/react-native-new-architecture/blob/main/docs/backwards-compat-turbo-modules.md
|
|
24
|
+
*/
|
|
25
|
+
@ReactModule(name = HMSManagerImpl.REACT_CLASS)
|
|
26
|
+
class HMSManager(
|
|
27
|
+
reactContext: ReactApplicationContext,
|
|
28
|
+
) : NativeHMSManagerSpec(reactContext) {
|
|
29
|
+
private val impl = HMSManagerImpl(reactContext)
|
|
30
|
+
|
|
31
|
+
override fun getName(): String = HMSManagerImpl.REACT_CLASS
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Lifecycle hooks that consumer apps' MainActivity calls. Forward to
|
|
35
|
+
* the Impl's companion-object methods for backward compatibility with
|
|
36
|
+
* apps that already call HMSManager.onPictureInPictureModeChanged(...) etc.
|
|
37
|
+
*/
|
|
38
|
+
companion object {
|
|
39
|
+
@JvmStatic
|
|
40
|
+
fun onPictureInPictureModeChanged(
|
|
41
|
+
isInPictureInPictureMode: Boolean,
|
|
42
|
+
newConfig: android.content.res.Configuration,
|
|
43
|
+
) = HMSManagerImpl.onPictureInPictureModeChanged(isInPictureInPictureMode, newConfig)
|
|
44
|
+
|
|
45
|
+
@JvmStatic
|
|
46
|
+
fun onResume() = HMSManagerImpl.onResume()
|
|
47
|
+
|
|
48
|
+
@JvmStatic
|
|
49
|
+
fun onUserLeaveHint() = HMSManagerImpl.onUserLeaveHint()
|
|
50
|
+
|
|
51
|
+
/** Backward-compat: external packages (e.g. react-native-video-plugin) read this map. */
|
|
52
|
+
@JvmStatic
|
|
53
|
+
val hmsCollection: MutableMap<String, HMSRNSDK>
|
|
54
|
+
get() = HMSManagerImpl.hmsCollection
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/** Used by view managers to look up the active SDK instances map. */
|
|
58
|
+
fun getHmsInstance(): MutableMap<String, HMSRNSDK> = impl.getHmsInstance()
|
|
59
|
+
|
|
60
|
+
override fun acceptRoleChange(data: ReadableMap, promise: Promise) = impl.acceptRoleChange(data, promise)
|
|
61
|
+
|
|
62
|
+
override fun addKeyChangeListener(data: ReadableMap, promise: Promise) = impl.addKeyChangeListener(data, promise)
|
|
63
|
+
|
|
64
|
+
override fun addListener(eventName: String) = impl.addListener(eventName)
|
|
65
|
+
|
|
66
|
+
override fun addResponseOnPollQuestion(data: ReadableMap, promise: Promise) = impl.addResponseOnPollQuestion(data, promise)
|
|
67
|
+
|
|
68
|
+
override fun audioShareCurrentTime(data: ReadableMap, promise: Promise) {
|
|
69
|
+
promise.reject("NotImplemented", "audioShareCurrentTime is iOS-only", null)
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
override fun audioShareDuration(data: ReadableMap, promise: Promise) {
|
|
73
|
+
promise.reject("NotImplemented", "audioShareDuration is iOS-only", null)
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
override fun audioShareIsPlaying(data: ReadableMap, promise: Promise) {
|
|
77
|
+
promise.reject("NotImplemented", "audioShareIsPlaying is iOS-only", null)
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
override fun build(data: ReadableMap, promise: Promise) = impl.build(data, promise)
|
|
81
|
+
|
|
82
|
+
override fun cancelPreview(data: ReadableMap, promise: Promise) = impl.cancelPreview(data, promise)
|
|
83
|
+
|
|
84
|
+
override fun captureImageAtMaxSupportedResolution(data: ReadableMap, promise: Promise) = impl.captureImageAtMaxSupportedResolution(data, promise)
|
|
85
|
+
|
|
86
|
+
override fun changeIOSPIPVideoTrack(data: ReadableMap, promise: Promise) {
|
|
87
|
+
promise.reject("NotImplemented", "changeIOSPIPVideoTrack is iOS-only", null)
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
override fun changeMetadata(data: ReadableMap, promise: Promise) = impl.changeMetadata(data, promise)
|
|
91
|
+
|
|
92
|
+
override fun changeName(data: ReadableMap, promise: Promise) = impl.changeName(data, promise)
|
|
93
|
+
|
|
94
|
+
override fun changeRole(data: ReadableMap, promise: Promise) = impl.changeRole(data, promise)
|
|
95
|
+
|
|
96
|
+
override fun changeRoleOfPeer(data: ReadableMap, promise: Promise) = impl.changeRoleOfPeer(data, promise)
|
|
97
|
+
|
|
98
|
+
override fun changeRoleOfPeersWithRoles(data: ReadableMap, promise: Promise) = impl.changeRoleOfPeersWithRoles(data, promise)
|
|
99
|
+
|
|
100
|
+
override fun changeTrackState(data: ReadableMap, promise: Promise) = impl.changeTrackState(data, promise)
|
|
101
|
+
|
|
102
|
+
override fun changeTrackStateForRoles(data: ReadableMap, promise: Promise) = impl.changeTrackStateForRoles(data, promise)
|
|
103
|
+
|
|
104
|
+
override fun changeVirtualBackground(data: ReadableMap, promise: Promise) {
|
|
105
|
+
promise.reject("NotImplemented", "changeVirtualBackground is iOS-only", null)
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
override fun checkNotifications(promise: Promise) = impl.checkNotifications(promise)
|
|
109
|
+
|
|
110
|
+
override fun destroy(data: ReadableMap, promise: Promise) = impl.destroy(data, promise)
|
|
111
|
+
|
|
112
|
+
override fun disableEvent(data: ReadableMap, promise: Promise) = impl.disableEvent(data, promise)
|
|
113
|
+
|
|
114
|
+
override fun disableNetworkQualityUpdates(data: ReadableMap) = impl.disableNetworkQualityUpdates(data)
|
|
115
|
+
|
|
116
|
+
override fun disableNoiseCancellationPlugin(data: ReadableMap, promise: Promise) = impl.disableNoiseCancellationPlugin(data, promise)
|
|
117
|
+
|
|
118
|
+
override fun disableVideoPlugin(data: ReadableMap, promise: Promise) {
|
|
119
|
+
promise.reject("NotImplemented", "disableVideoPlugin is iOS-only", null)
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
override fun disposePIP(data: ReadableMap, promise: Promise) {
|
|
123
|
+
promise.reject("NotImplemented", "disposePIP is iOS-only", null)
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
override fun enableEvent(data: ReadableMap, promise: Promise) = impl.enableEvent(data, promise)
|
|
127
|
+
|
|
128
|
+
override fun enableNetworkQualityUpdates(data: ReadableMap) = impl.enableNetworkQualityUpdates(data)
|
|
129
|
+
|
|
130
|
+
override fun enableNoiseCancellationPlugin(data: ReadableMap, promise: Promise) = impl.enableNoiseCancellationPlugin(data, promise)
|
|
131
|
+
|
|
132
|
+
override fun enableVideoPlugin(data: ReadableMap, promise: Promise) {
|
|
133
|
+
promise.reject("NotImplemented", "enableVideoPlugin is iOS-only", null)
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
override fun endRoom(data: ReadableMap, promise: Promise) = impl.endRoom(data, promise)
|
|
137
|
+
|
|
138
|
+
override fun fetchLeaderboard(data: ReadableMap, promise: Promise) = impl.fetchLeaderboard(data, promise)
|
|
139
|
+
|
|
140
|
+
override fun getAudioDevicesList(data: ReadableMap, promise: Promise) = impl.getAudioDevicesList(data, promise)
|
|
141
|
+
|
|
142
|
+
override fun getAudioMixingMode(data: ReadableMap, promise: Promise) = impl.getAudioMixingMode(data, promise)
|
|
143
|
+
|
|
144
|
+
override fun getAudioOutputRouteType(data: ReadableMap, promise: Promise) = impl.getAudioOutputRouteType(data, promise)
|
|
145
|
+
|
|
146
|
+
override fun getAuthTokenByRoomCode(data: ReadableMap, promise: Promise) = impl.getAuthTokenByRoomCode(data, promise)
|
|
147
|
+
|
|
148
|
+
override fun getLocalPeer(data: ReadableMap, promise: Promise) = impl.getLocalPeer(data, promise)
|
|
149
|
+
|
|
150
|
+
override fun getPeerListIterator(data: ReadableMap): WritableMap? = impl.getPeerListIterator(data)
|
|
151
|
+
|
|
152
|
+
override fun getPeerProperty(data: ReadableMap): WritableMap? = impl.getPeerProperty(data)
|
|
153
|
+
|
|
154
|
+
override fun getRemoteAudioTrackFromTrackId(data: ReadableMap, promise: Promise) = impl.getRemoteAudioTrackFromTrackId(data, promise)
|
|
155
|
+
|
|
156
|
+
override fun getRemotePeers(data: ReadableMap, promise: Promise) = impl.getRemotePeers(data, promise)
|
|
157
|
+
|
|
158
|
+
override fun getRemoteVideoTrackFromTrackId(data: ReadableMap, promise: Promise) = impl.getRemoteVideoTrackFromTrackId(data, promise)
|
|
159
|
+
|
|
160
|
+
override fun getRoles(data: ReadableMap, promise: Promise) = impl.getRoles(data, promise)
|
|
161
|
+
|
|
162
|
+
override fun getRoom(data: ReadableMap, promise: Promise) = impl.getRoom(data, promise)
|
|
163
|
+
|
|
164
|
+
override fun getRoomLayout(data: ReadableMap, promise: Promise) = impl.getRoomLayout(data, promise)
|
|
165
|
+
|
|
166
|
+
override fun getRoomProperty(data: ReadableMap): WritableMap? = impl.getRoomProperty(data)
|
|
167
|
+
|
|
168
|
+
override fun getSessionMetadataForKey(data: ReadableMap, promise: Promise) = impl.getSessionMetadataForKey(data, promise)
|
|
169
|
+
|
|
170
|
+
override fun getSoftInputMode(): Double = impl.getSoftInputMode().toDouble()
|
|
171
|
+
|
|
172
|
+
override fun getVideoTrackLayer(data: ReadableMap, promise: Promise) = impl.getVideoTrackLayer(data, promise)
|
|
173
|
+
|
|
174
|
+
override fun getVideoTrackLayerDefinition(data: ReadableMap, promise: Promise) = impl.getVideoTrackLayerDefinition(data, promise)
|
|
175
|
+
|
|
176
|
+
override fun getVolume(data: ReadableMap, promise: Promise) = impl.getVolume(data, promise)
|
|
177
|
+
|
|
178
|
+
override fun handlePipActions(action: String, data: ReadableMap, promise: Promise) = impl.handlePipActions(action, data, promise)
|
|
179
|
+
|
|
180
|
+
override fun handleRealTimeTranscription(data: ReadableMap, promise: Promise) = impl.handleRealTimeTranscription(data, promise)
|
|
181
|
+
|
|
182
|
+
override fun hideSystemBars() = impl.hideSystemBars()
|
|
183
|
+
|
|
184
|
+
override fun isAudioShared(data: ReadableMap, promise: Promise) = impl.isAudioShared(data, promise)
|
|
185
|
+
|
|
186
|
+
override fun isMute(data: ReadableMap, promise: Promise) = impl.isMute(data, promise)
|
|
187
|
+
|
|
188
|
+
override fun isNoiseCancellationPluginAvailable(data: ReadableMap, promise: Promise) = impl.isNoiseCancellationPluginAvailable(data, promise)
|
|
189
|
+
|
|
190
|
+
override fun isNoiseCancellationPluginEnabled(data: ReadableMap, promise: Promise) = impl.isNoiseCancellationPluginEnabled(data, promise)
|
|
191
|
+
|
|
192
|
+
override fun isPIPActive(data: ReadableMap, promise: Promise) {
|
|
193
|
+
promise.reject("NotImplemented", "isPIPActive is iOS-only", null)
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
override fun isPlaybackAllowed(data: ReadableMap, promise: Promise) = impl.isPlaybackAllowed(data, promise)
|
|
197
|
+
|
|
198
|
+
override fun isScreenShared(data: ReadableMap, promise: Promise) = impl.isScreenShared(data, promise)
|
|
199
|
+
|
|
200
|
+
override fun join(data: ReadableMap) = impl.join(data)
|
|
201
|
+
|
|
202
|
+
override fun leave(data: ReadableMap, promise: Promise) = impl.leave(data, promise)
|
|
203
|
+
|
|
204
|
+
override fun lowerLocalPeerHand(data: ReadableMap, promise: Promise) = impl.lowerLocalPeerHand(data, promise)
|
|
205
|
+
|
|
206
|
+
override fun lowerRemotePeerHand(data: ReadableMap, promise: Promise) = impl.lowerRemotePeerHand(data, promise)
|
|
207
|
+
|
|
208
|
+
override fun pauseAudioShare(data: ReadableMap, promise: Promise) {
|
|
209
|
+
promise.reject("NotImplemented", "pauseAudioShare is iOS-only", null)
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
override fun peerListIteratorHasNext(data: ReadableMap, promise: Promise) = impl.peerListIteratorHasNext(data, promise)
|
|
213
|
+
|
|
214
|
+
override fun peerListIteratorNext(data: ReadableMap, promise: Promise) = impl.peerListIteratorNext(data, promise)
|
|
215
|
+
|
|
216
|
+
override fun playAudioShare(data: ReadableMap, promise: Promise) {
|
|
217
|
+
promise.reject("NotImplemented", "playAudioShare is iOS-only", null)
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
override fun preview(data: ReadableMap) = impl.preview(data)
|
|
221
|
+
|
|
222
|
+
override fun previewForRole(data: ReadableMap, promise: Promise) = impl.previewForRole(data, promise)
|
|
223
|
+
|
|
224
|
+
override fun quickStartPoll(data: ReadableMap, promise: Promise) = impl.quickStartPoll(data, promise)
|
|
225
|
+
|
|
226
|
+
override fun raiseLocalPeerHand(data: ReadableMap, promise: Promise) = impl.raiseLocalPeerHand(data, promise)
|
|
227
|
+
|
|
228
|
+
override fun remoteMuteAllAudio(data: ReadableMap, promise: Promise) = impl.remoteMuteAllAudio(data, promise)
|
|
229
|
+
|
|
230
|
+
override fun removeKeyChangeListener(data: ReadableMap, promise: Promise) = impl.removeKeyChangeListener(data, promise)
|
|
231
|
+
|
|
232
|
+
override fun removeListeners(count: Double) = impl.removeListeners(count.toInt())
|
|
233
|
+
|
|
234
|
+
override fun removePeer(data: ReadableMap, promise: Promise) = impl.removePeer(data, promise)
|
|
235
|
+
|
|
236
|
+
override fun restrictData(data: ReadableMap, promise: Promise) = impl.restrictData(data, promise)
|
|
237
|
+
|
|
238
|
+
override fun resumeAudioShare(data: ReadableMap, promise: Promise) {
|
|
239
|
+
promise.reject("NotImplemented", "resumeAudioShare is iOS-only", null)
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
override fun sendBroadcastMessage(data: ReadableMap, promise: Promise) = impl.sendBroadcastMessage(data, promise)
|
|
243
|
+
|
|
244
|
+
override fun sendDirectMessage(data: ReadableMap, promise: Promise) = impl.sendDirectMessage(data, promise)
|
|
245
|
+
|
|
246
|
+
override fun sendGroupMessage(data: ReadableMap, promise: Promise) = impl.sendGroupMessage(data, promise)
|
|
247
|
+
|
|
248
|
+
override fun sendHLSTimedMetadata(data: ReadableMap, promise: Promise) = impl.sendHLSTimedMetadata(data, promise)
|
|
249
|
+
|
|
250
|
+
override fun setActiveSpeakerInIOSPIP(data: ReadableMap, promise: Promise) {
|
|
251
|
+
promise.reject("NotImplemented", "setActiveSpeakerInIOSPIP is iOS-only", null)
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
override fun setAlwaysScreenOn(data: ReadableMap, promise: Promise) = impl.setAlwaysScreenOn(data, promise)
|
|
255
|
+
|
|
256
|
+
override fun setAudioDeviceChangeListener(data: ReadableMap) = impl.setAudioDeviceChangeListener(data)
|
|
257
|
+
|
|
258
|
+
override fun setAudioMixingMode(data: ReadableMap, promise: Promise) = impl.setAudioMixingMode(data, promise)
|
|
259
|
+
|
|
260
|
+
override fun setAudioMode(data: ReadableMap, promise: Promise) = impl.setAudioMode(data, promise)
|
|
261
|
+
|
|
262
|
+
override fun setAudioShareVolume(data: ReadableMap, promise: Promise) {
|
|
263
|
+
promise.reject("NotImplemented", "setAudioShareVolume is iOS-only", null)
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
override fun setLocalMute(data: ReadableMap) = impl.setLocalMute(data)
|
|
267
|
+
|
|
268
|
+
override fun setLocalVideoMute(data: ReadableMap) = impl.setLocalVideoMute(data)
|
|
269
|
+
|
|
270
|
+
override fun setPermissionsAccepted(data: ReadableMap, promise: Promise) = impl.setPermissionsAccepted(data, promise)
|
|
271
|
+
|
|
272
|
+
override fun setPlaybackAllowed(data: ReadableMap, promise: Promise) = impl.setPlaybackAllowed(data, promise)
|
|
273
|
+
|
|
274
|
+
override fun setPlaybackForAllAudio(data: ReadableMap, promise: Promise) = impl.setPlaybackForAllAudio(data, promise)
|
|
275
|
+
|
|
276
|
+
override fun setSessionMetadataForKey(data: ReadableMap, promise: Promise) = impl.setSessionMetadataForKey(data, promise)
|
|
277
|
+
|
|
278
|
+
override fun setSoftInputMode(inputMode: Double): Double = impl.setSoftInputMode(inputMode.toInt()).toDouble()
|
|
279
|
+
|
|
280
|
+
override fun setVideoFilterParameter(data: ReadableMap, promise: Promise) {
|
|
281
|
+
promise.reject("NotImplemented", "setVideoFilterParameter is iOS-only", null)
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
override fun setVideoTrackLayer(data: ReadableMap, promise: Promise) = impl.setVideoTrackLayer(data, promise)
|
|
285
|
+
|
|
286
|
+
override fun setVolume(data: ReadableMap, promise: Promise) = impl.setVolume(data, promise)
|
|
287
|
+
|
|
288
|
+
override fun setupPIP(data: ReadableMap, promise: Promise) {
|
|
289
|
+
promise.reject("NotImplemented", "setupPIP is iOS-only", null)
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
override fun showSystemBars() = impl.showSystemBars()
|
|
293
|
+
|
|
294
|
+
override fun startAudioshare(data: ReadableMap, promise: Promise) = impl.startAudioshare(data, promise)
|
|
295
|
+
|
|
296
|
+
override fun startHLSStreaming(data: ReadableMap, promise: Promise) = impl.startHLSStreaming(data, promise)
|
|
297
|
+
|
|
298
|
+
override fun startRTMPOrRecording(data: ReadableMap, promise: Promise) = impl.startRTMPOrRecording(data, promise)
|
|
299
|
+
|
|
300
|
+
override fun startScreenshare(data: ReadableMap, promise: Promise) = impl.startScreenshare(data, promise)
|
|
301
|
+
|
|
302
|
+
override fun startWhiteboard(data: ReadableMap, promise: Promise) = impl.startWhiteboard(data, promise)
|
|
303
|
+
|
|
304
|
+
override fun stopAudioShare(data: ReadableMap, promise: Promise) {
|
|
305
|
+
promise.reject("NotImplemented", "stopAudioShare is iOS-only", null)
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
override fun stopAudioshare(data: ReadableMap, promise: Promise) = impl.stopAudioshare(data, promise)
|
|
309
|
+
|
|
310
|
+
override fun stopHLSStreaming(data: ReadableMap, promise: Promise) = impl.stopHLSStreaming(data, promise)
|
|
311
|
+
|
|
312
|
+
override fun stopPIP(data: ReadableMap, promise: Promise) {
|
|
313
|
+
promise.reject("NotImplemented", "stopPIP is iOS-only", null)
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
override fun stopPoll(data: ReadableMap, promise: Promise) = impl.stopPoll(data, promise)
|
|
317
|
+
|
|
318
|
+
override fun stopRtmpAndRecording(data: ReadableMap, promise: Promise) = impl.stopRtmpAndRecording(data, promise)
|
|
319
|
+
|
|
320
|
+
override fun stopScreenshare(data: ReadableMap, promise: Promise) = impl.stopScreenshare(data, promise)
|
|
321
|
+
|
|
322
|
+
override fun stopWhiteboard(data: ReadableMap, promise: Promise) = impl.stopWhiteboard(data, promise)
|
|
323
|
+
|
|
324
|
+
override fun switchAudioOutput(data: ReadableMap, promise: Promise) = impl.switchAudioOutput(data, promise)
|
|
325
|
+
|
|
326
|
+
override fun switchAudioOutputUsingIOSUI(data: ReadableMap, promise: Promise) {
|
|
327
|
+
promise.reject("NotImplemented", "switchAudioOutputUsingIOSUI is iOS-only", null)
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
override fun switchCamera(data: ReadableMap) = impl.switchCamera(data)
|
|
331
|
+
|
|
332
|
+
}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
package com.reactnativehmssdk
|
|
2
|
+
|
|
3
|
+
import android.os.Build
|
|
4
|
+
import androidx.annotation.NonNull
|
|
5
|
+
import androidx.annotation.Nullable
|
|
6
|
+
import androidx.annotation.RequiresApi
|
|
7
|
+
import com.facebook.react.bridge.ReadableArray
|
|
8
|
+
import com.facebook.react.bridge.ReadableMap
|
|
9
|
+
import com.facebook.react.uimanager.SimpleViewManager
|
|
10
|
+
import com.facebook.react.uimanager.ThemedReactContext
|
|
11
|
+
import com.facebook.react.uimanager.ViewManagerDelegate
|
|
12
|
+
import com.facebook.react.viewmanagers.HMSViewManagerDelegate
|
|
13
|
+
import com.facebook.react.viewmanagers.HMSViewManagerInterface
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* HMSSDKViewManager — new-arch (Fabric) view manager for `<HMSView />`.
|
|
17
|
+
*
|
|
18
|
+
* Phase 1 / 1C-3 of the New Architecture migration. Compiled only when
|
|
19
|
+
* the consumer's app uses new architecture.
|
|
20
|
+
*
|
|
21
|
+
* Differences from the old-arch wrapper at src/oldarch/.../HMSSDKViewManager.kt:
|
|
22
|
+
* - Implements the Codegen-generated `HMSViewManagerInterface<HMSView>`
|
|
23
|
+
* (typed prop setters that Fabric calls directly).
|
|
24
|
+
* - Uses `HMSViewManagerDelegate` (also Codegen-generated) for
|
|
25
|
+
* prop dispatch via Fabric's mounting mechanism.
|
|
26
|
+
* - Drops @ReactProp annotations — Fabric doesn't scan for them;
|
|
27
|
+
* it uses the typed interface.
|
|
28
|
+
*
|
|
29
|
+
* Both arches still extend `SimpleViewManager<HMSView>` so the same
|
|
30
|
+
* paper-side machinery (event-type registration, commands map) works.
|
|
31
|
+
*
|
|
32
|
+
* All logic delegates to HMSSDKViewManagerImpl in src/main/.
|
|
33
|
+
*/
|
|
34
|
+
class HMSSDKViewManager :
|
|
35
|
+
SimpleViewManager<HMSView>(),
|
|
36
|
+
HMSViewManagerInterface<HMSView> {
|
|
37
|
+
private val mDelegate: ViewManagerDelegate<HMSView> = HMSViewManagerDelegate(this)
|
|
38
|
+
private var reactContext: ThemedReactContext? = null
|
|
39
|
+
|
|
40
|
+
override fun getName(): String = HMSSDKViewManagerImpl.REACT_CLASS
|
|
41
|
+
|
|
42
|
+
override fun getDelegate(): ViewManagerDelegate<HMSView> = mDelegate
|
|
43
|
+
|
|
44
|
+
override fun createViewInstance(reactContext: ThemedReactContext): HMSView {
|
|
45
|
+
this.reactContext = reactContext
|
|
46
|
+
return HMSSDKViewManagerImpl.createViewInstance(reactContext)
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
override fun onDropViewInstance(view: HMSView) {
|
|
50
|
+
super.onDropViewInstance(view)
|
|
51
|
+
HMSSDKViewManagerImpl.onDropViewInstance(view)
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
override fun getExportedCustomDirectEventTypeConstants(): Map<String, Any> =
|
|
55
|
+
HMSSDKViewManagerImpl.getExportedCustomDirectEventTypeConstants()
|
|
56
|
+
|
|
57
|
+
@RequiresApi(Build.VERSION_CODES.N)
|
|
58
|
+
override fun receiveCommand(
|
|
59
|
+
@NonNull root: HMSView,
|
|
60
|
+
commandId: String?,
|
|
61
|
+
args: ReadableArray?,
|
|
62
|
+
) {
|
|
63
|
+
when (commandId) {
|
|
64
|
+
"capture" -> HMSSDKViewManagerImpl.capture(root, args)
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
@Nullable
|
|
69
|
+
override fun getCommandsMap(): Map<String, Int>? = HMSSDKViewManagerImpl.getCommandsMap()
|
|
70
|
+
|
|
71
|
+
/** Codegen-interface typed `capture` command — Fabric dispatches here. */
|
|
72
|
+
override fun capture(
|
|
73
|
+
view: HMSView,
|
|
74
|
+
requestId: Int,
|
|
75
|
+
) = HMSSDKViewManagerImpl.capture(view, requestId)
|
|
76
|
+
|
|
77
|
+
// ─────────────────────────────────────────────────────────────────
|
|
78
|
+
// Codegen-interface methods (typed prop setters dispatched by Fabric)
|
|
79
|
+
// ─────────────────────────────────────────────────────────────────
|
|
80
|
+
|
|
81
|
+
override fun setData(
|
|
82
|
+
view: HMSView,
|
|
83
|
+
value: ReadableMap?,
|
|
84
|
+
) {
|
|
85
|
+
if (value != null) HMSSDKViewManagerImpl.setData(view, value, reactContext)
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
override fun setScaleType(
|
|
89
|
+
view: HMSView,
|
|
90
|
+
value: String?,
|
|
91
|
+
) = HMSSDKViewManagerImpl.setScaleType(view, value)
|
|
92
|
+
|
|
93
|
+
override fun setSetZOrderMediaOverlay(
|
|
94
|
+
view: HMSView,
|
|
95
|
+
value: Boolean,
|
|
96
|
+
) = HMSSDKViewManagerImpl.setZOrderMediaOverlay(view, value)
|
|
97
|
+
|
|
98
|
+
override fun setAutoSimulcast(
|
|
99
|
+
view: HMSView,
|
|
100
|
+
value: Boolean,
|
|
101
|
+
) = HMSSDKViewManagerImpl.setAutoSimulcast(view, value)
|
|
102
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
package com.reactnativehmssdk
|
|
2
|
+
|
|
3
|
+
import com.facebook.react.bridge.ReadableArray
|
|
4
|
+
import com.facebook.react.uimanager.SimpleViewManager
|
|
5
|
+
import com.facebook.react.uimanager.ThemedReactContext
|
|
6
|
+
import com.facebook.react.uimanager.annotations.ReactProp
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* HMSHLSPlayerManager — old-arch (paper) view manager for `<HMSHLSPlayer />`.
|
|
10
|
+
*
|
|
11
|
+
* Phase 1 / 1C-4 of the New Architecture migration. Compiled only when
|
|
12
|
+
* the consumer's app uses old architecture. All logic delegates to
|
|
13
|
+
* HMSHLSPlayerManagerImpl in src/main/.
|
|
14
|
+
*/
|
|
15
|
+
class HMSHLSPlayerManager : SimpleViewManager<HMSHLSPlayer>() {
|
|
16
|
+
override fun getName(): String = HMSHLSPlayerManagerImpl.REACT_CLASS
|
|
17
|
+
|
|
18
|
+
override fun createViewInstance(reactContext: ThemedReactContext): HMSHLSPlayer =
|
|
19
|
+
HMSHLSPlayerManagerImpl.createViewInstance(reactContext)
|
|
20
|
+
|
|
21
|
+
override fun onDropViewInstance(view: HMSHLSPlayer) {
|
|
22
|
+
super.onDropViewInstance(view)
|
|
23
|
+
HMSHLSPlayerManagerImpl.onDropViewInstance(view)
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
override fun getExportedCustomDirectEventTypeConstants(): Map<String, Any> =
|
|
27
|
+
HMSHLSPlayerManagerImpl.getExportedCustomDirectEventTypeConstants()
|
|
28
|
+
|
|
29
|
+
override fun receiveCommand(
|
|
30
|
+
root: HMSHLSPlayer,
|
|
31
|
+
commandId: Int,
|
|
32
|
+
args: ReadableArray?,
|
|
33
|
+
) {
|
|
34
|
+
super.receiveCommand(root, commandId, args)
|
|
35
|
+
HMSHLSPlayerManagerImpl.receiveCommandById(root, commandId, args)
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
override fun getCommandsMap(): Map<String, Int> = HMSHLSPlayerManagerImpl.getCommandsMap()
|
|
39
|
+
|
|
40
|
+
// ─────────────────────────────────────────────────────────────────
|
|
41
|
+
// Paper @ReactProp setters
|
|
42
|
+
// ─────────────────────────────────────────────────────────────────
|
|
43
|
+
|
|
44
|
+
@ReactProp(name = "url")
|
|
45
|
+
fun setStreamURL(
|
|
46
|
+
view: HMSHLSPlayer,
|
|
47
|
+
data: String?,
|
|
48
|
+
) = HMSHLSPlayerManagerImpl.setUrl(view, data)
|
|
49
|
+
|
|
50
|
+
@ReactProp(name = "enableStats", defaultBoolean = false)
|
|
51
|
+
fun setEnableStats(
|
|
52
|
+
view: HMSHLSPlayer,
|
|
53
|
+
data: Boolean,
|
|
54
|
+
) = HMSHLSPlayerManagerImpl.setEnableStats(view, data)
|
|
55
|
+
|
|
56
|
+
@ReactProp(name = "enableControls", defaultBoolean = false)
|
|
57
|
+
fun setEnableControls(
|
|
58
|
+
view: HMSHLSPlayer,
|
|
59
|
+
data: Boolean,
|
|
60
|
+
) = HMSHLSPlayerManagerImpl.setEnableControls(view, data)
|
|
61
|
+
}
|