@100mslive/react-native-hms 0.7.2 → 0.8.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.
Files changed (196) hide show
  1. package/README.md +37 -39
  2. package/android/.gradle/checksums/checksums.lock +0 -0
  3. package/android/.gradle/checksums/md5-checksums.bin +0 -0
  4. package/android/.gradle/checksums/sha1-checksums.bin +0 -0
  5. package/android/.project +34 -0
  6. package/android/build.gradle +1 -1
  7. package/android/src/main/java/com/reactnativehmssdk/HmsDecoder.kt +129 -29
  8. package/android/src/main/java/com/reactnativehmssdk/HmsHelper.kt +124 -2
  9. package/android/src/main/java/com/reactnativehmssdk/HmsModule.kt +138 -495
  10. package/android/src/main/java/com/reactnativehmssdk/HmsSDK.kt +899 -0
  11. package/android/src/main/java/com/reactnativehmssdk/HmsView.kt +26 -8
  12. package/android/src/main/java/com/reactnativehmssdk/HmssdkViewManager.kt +8 -6
  13. package/ios/HmsDecoder.swift +142 -20
  14. package/ios/HmsHelper.swift +110 -0
  15. package/ios/HmsManager.m +13 -7
  16. package/ios/HmsManager.swift +115 -375
  17. package/ios/HmsSDK.swift +716 -0
  18. package/ios/HmsView.swift +16 -8
  19. package/lib/commonjs/classes/HMSAudioTrack.js.map +1 -1
  20. package/lib/commonjs/classes/HMSAudioTrackSettings.js +3 -0
  21. package/lib/commonjs/classes/HMSAudioTrackSettings.js.map +1 -1
  22. package/lib/commonjs/classes/HMSBrowserRecordingState.js +23 -0
  23. package/lib/commonjs/classes/HMSBrowserRecordingState.js.map +1 -0
  24. package/lib/commonjs/classes/HMSCameraFacing.js +14 -0
  25. package/lib/commonjs/classes/HMSCameraFacing.js.map +1 -0
  26. package/lib/commonjs/classes/HMSConfig.js +3 -7
  27. package/lib/commonjs/classes/HMSConfig.js.map +1 -1
  28. package/lib/commonjs/classes/HMSEncoder.js +60 -32
  29. package/lib/commonjs/classes/HMSEncoder.js.map +1 -1
  30. package/lib/commonjs/classes/HMSException.js +30 -0
  31. package/lib/commonjs/classes/HMSException.js.map +1 -0
  32. package/lib/commonjs/classes/HMSHelper.js +2 -2
  33. package/lib/commonjs/classes/HMSHelper.js.map +1 -1
  34. package/lib/commonjs/classes/HMSLocalAudioTrack.js +19 -1
  35. package/lib/commonjs/classes/HMSLocalAudioTrack.js.map +1 -1
  36. package/lib/commonjs/classes/HMSLocalPeer.js.map +1 -1
  37. package/lib/commonjs/classes/HMSLocalVideoTrack.js +10 -2
  38. package/lib/commonjs/classes/HMSLocalVideoTrack.js.map +1 -1
  39. package/lib/commonjs/classes/HMSLogger.js.map +1 -1
  40. package/lib/commonjs/classes/HMSPeer.js +3 -0
  41. package/lib/commonjs/classes/HMSPeer.js.map +1 -1
  42. package/lib/commonjs/classes/HMSPeerUpdate.js +1 -0
  43. package/lib/commonjs/classes/HMSPeerUpdate.js.map +1 -1
  44. package/lib/commonjs/classes/HMSPermissions.js +7 -7
  45. package/lib/commonjs/classes/HMSPermissions.js.map +1 -1
  46. package/lib/commonjs/classes/HMSRTMPConfig.js +26 -0
  47. package/lib/commonjs/classes/HMSRTMPConfig.js.map +1 -0
  48. package/lib/commonjs/classes/HMSRemoteAudioTrack.js +2 -0
  49. package/lib/commonjs/classes/HMSRemoteAudioTrack.js.map +1 -1
  50. package/lib/commonjs/classes/HMSRemotePeer.js.map +1 -1
  51. package/lib/commonjs/classes/HMSRemoteVideoTrack.js +2 -0
  52. package/lib/commonjs/classes/HMSRemoteVideoTrack.js.map +1 -1
  53. package/lib/commonjs/classes/HMSRoom.js +9 -0
  54. package/lib/commonjs/classes/HMSRoom.js.map +1 -1
  55. package/lib/commonjs/classes/HMSRtmpStreamingState.js +23 -0
  56. package/lib/commonjs/classes/HMSRtmpStreamingState.js.map +1 -0
  57. package/lib/commonjs/classes/HMSSDK.js +336 -109
  58. package/lib/commonjs/classes/HMSSDK.js.map +1 -1
  59. package/lib/commonjs/classes/HMSServerRecordingState.js +23 -0
  60. package/lib/commonjs/classes/HMSServerRecordingState.js.map +1 -0
  61. package/lib/commonjs/classes/HMSTrack.js +8 -18
  62. package/lib/commonjs/classes/HMSTrack.js.map +1 -1
  63. package/lib/commonjs/classes/HMSTrackType.js +14 -0
  64. package/lib/commonjs/classes/HMSTrackType.js.map +1 -0
  65. package/lib/commonjs/classes/HMSVideoResolution.js +23 -0
  66. package/lib/commonjs/classes/HMSVideoResolution.js.map +1 -0
  67. package/lib/commonjs/classes/HMSVideoSettings.js.map +1 -1
  68. package/lib/commonjs/classes/HMSVideoTrack.js +2 -0
  69. package/lib/commonjs/classes/HMSVideoTrack.js.map +1 -1
  70. package/lib/commonjs/classes/HMSVideoTrackSettings.js +0 -3
  71. package/lib/commonjs/classes/HMSVideoTrackSettings.js.map +1 -1
  72. package/lib/commonjs/classes/HmsView.js +10 -7
  73. package/lib/commonjs/classes/HmsView.js.map +1 -1
  74. package/lib/commonjs/index.js +98 -0
  75. package/lib/commonjs/index.js.map +1 -1
  76. package/lib/module/classes/HMSAudioTrack.js.map +1 -1
  77. package/lib/module/classes/HMSAudioTrackSettings.js +3 -0
  78. package/lib/module/classes/HMSAudioTrackSettings.js.map +1 -1
  79. package/lib/module/classes/HMSBrowserRecordingState.js +14 -0
  80. package/lib/module/classes/HMSBrowserRecordingState.js.map +1 -0
  81. package/lib/module/classes/HMSCameraFacing.js +7 -0
  82. package/lib/module/classes/HMSCameraFacing.js.map +1 -0
  83. package/lib/module/classes/HMSConfig.js +3 -7
  84. package/lib/module/classes/HMSConfig.js.map +1 -1
  85. package/lib/module/classes/HMSEncoder.js +59 -32
  86. package/lib/module/classes/HMSEncoder.js.map +1 -1
  87. package/lib/module/classes/HMSException.js +21 -0
  88. package/lib/module/classes/HMSException.js.map +1 -0
  89. package/lib/module/classes/HMSHelper.js +2 -2
  90. package/lib/module/classes/HMSHelper.js.map +1 -1
  91. package/lib/module/classes/HMSLocalAudioTrack.js +20 -2
  92. package/lib/module/classes/HMSLocalAudioTrack.js.map +1 -1
  93. package/lib/module/classes/HMSLocalPeer.js.map +1 -1
  94. package/lib/module/classes/HMSLocalVideoTrack.js +10 -2
  95. package/lib/module/classes/HMSLocalVideoTrack.js.map +1 -1
  96. package/lib/module/classes/HMSLogger.js.map +1 -1
  97. package/lib/module/classes/HMSPeer.js +3 -0
  98. package/lib/module/classes/HMSPeer.js.map +1 -1
  99. package/lib/module/classes/HMSPeerUpdate.js +1 -0
  100. package/lib/module/classes/HMSPeerUpdate.js.map +1 -1
  101. package/lib/module/classes/HMSPermissions.js +7 -7
  102. package/lib/module/classes/HMSPermissions.js.map +1 -1
  103. package/lib/module/classes/HMSRTMPConfig.js +17 -0
  104. package/lib/module/classes/HMSRTMPConfig.js.map +1 -0
  105. package/lib/module/classes/HMSRemoteAudioTrack.js +2 -0
  106. package/lib/module/classes/HMSRemoteAudioTrack.js.map +1 -1
  107. package/lib/module/classes/HMSRemotePeer.js.map +1 -1
  108. package/lib/module/classes/HMSRemoteVideoTrack.js +2 -0
  109. package/lib/module/classes/HMSRemoteVideoTrack.js.map +1 -1
  110. package/lib/module/classes/HMSRoom.js +9 -0
  111. package/lib/module/classes/HMSRoom.js.map +1 -1
  112. package/lib/module/classes/HMSRtmpStreamingState.js +14 -0
  113. package/lib/module/classes/HMSRtmpStreamingState.js.map +1 -0
  114. package/lib/module/classes/HMSSDK.js +328 -109
  115. package/lib/module/classes/HMSSDK.js.map +1 -1
  116. package/lib/module/classes/HMSServerRecordingState.js +14 -0
  117. package/lib/module/classes/HMSServerRecordingState.js.map +1 -0
  118. package/lib/module/classes/HMSTrack.js +8 -16
  119. package/lib/module/classes/HMSTrack.js.map +1 -1
  120. package/lib/module/classes/HMSTrackType.js +7 -0
  121. package/lib/module/classes/HMSTrackType.js.map +1 -0
  122. package/lib/module/classes/HMSVideoResolution.js +14 -0
  123. package/lib/module/classes/HMSVideoResolution.js.map +1 -0
  124. package/lib/module/classes/HMSVideoSettings.js.map +1 -1
  125. package/lib/module/classes/HMSVideoTrack.js +2 -0
  126. package/lib/module/classes/HMSVideoTrack.js.map +1 -1
  127. package/lib/module/classes/HMSVideoTrackSettings.js +0 -3
  128. package/lib/module/classes/HMSVideoTrackSettings.js.map +1 -1
  129. package/lib/module/classes/HmsView.js +10 -7
  130. package/lib/module/classes/HmsView.js.map +1 -1
  131. package/lib/module/index.js +7 -0
  132. package/lib/module/index.js.map +1 -1
  133. package/lib/typescript/classes/HMSAudioTrack.d.ts +3 -0
  134. package/lib/typescript/classes/HMSAudioTrackSettings.d.ts +3 -0
  135. package/lib/typescript/classes/HMSBrowserRecordingState.d.ts +9 -0
  136. package/lib/typescript/classes/HMSCameraFacing.d.ts +4 -0
  137. package/lib/typescript/classes/HMSConfig.d.ts +2 -4
  138. package/lib/typescript/classes/HMSEncoder.d.ts +14 -12
  139. package/lib/typescript/classes/HMSException.d.ts +22 -0
  140. package/lib/typescript/classes/HMSLocalAudioTrack.d.ts +5 -0
  141. package/lib/typescript/classes/HMSLocalPeer.d.ts +3 -0
  142. package/lib/typescript/classes/HMSLocalVideoTrack.d.ts +4 -0
  143. package/lib/typescript/classes/HMSLogger.d.ts +4 -4
  144. package/lib/typescript/classes/HMSPeer.d.ts +2 -0
  145. package/lib/typescript/classes/HMSPeerUpdate.d.ts +1 -0
  146. package/lib/typescript/classes/HMSPermissions.d.ts +6 -6
  147. package/lib/typescript/classes/HMSRTMPConfig.d.ts +10 -0
  148. package/lib/typescript/classes/HMSRemoteAudioTrack.d.ts +4 -0
  149. package/lib/typescript/classes/HMSRemotePeer.d.ts +3 -0
  150. package/lib/typescript/classes/HMSRemoteVideoTrack.d.ts +4 -0
  151. package/lib/typescript/classes/HMSRoom.d.ts +9 -0
  152. package/lib/typescript/classes/HMSRtmpStreamingState.d.ts +9 -0
  153. package/lib/typescript/classes/HMSSDK.d.ts +36 -6
  154. package/lib/typescript/classes/HMSServerRecordingState.d.ts +9 -0
  155. package/lib/typescript/classes/HMSTrack.d.ts +6 -1
  156. package/lib/typescript/classes/HMSTrackType.d.ts +4 -0
  157. package/lib/typescript/classes/HMSVideoResolution.d.ts +8 -0
  158. package/lib/typescript/classes/HMSVideoSettings.d.ts +3 -3
  159. package/lib/typescript/classes/HMSVideoTrack.d.ts +5 -1
  160. package/lib/typescript/classes/HMSVideoTrackSettings.d.ts +13 -10
  161. package/lib/typescript/classes/HmsView.d.ts +2 -1
  162. package/lib/typescript/index.d.ts +7 -0
  163. package/package.json +1 -1
  164. package/src/classes/HMSAudioTrack.ts +3 -0
  165. package/src/classes/HMSAudioTrackSettings.ts +9 -1
  166. package/src/classes/HMSBrowserRecordingState.ts +11 -0
  167. package/src/classes/HMSCameraFacing.ts +4 -0
  168. package/src/classes/HMSConfig.ts +3 -7
  169. package/src/classes/HMSEncoder.ts +62 -28
  170. package/src/classes/HMSException.ts +33 -0
  171. package/src/classes/HMSHelper.ts +2 -2
  172. package/src/classes/HMSLocalAudioTrack.ts +19 -2
  173. package/src/classes/HMSLocalPeer.ts +3 -0
  174. package/src/classes/HMSLocalVideoTrack.ts +7 -2
  175. package/src/classes/HMSLogger.ts +5 -5
  176. package/src/classes/HMSPeer.ts +3 -0
  177. package/src/classes/HMSPeerUpdate.ts +1 -0
  178. package/src/classes/HMSPermissions.ts +9 -9
  179. package/src/classes/HMSRTMPConfig.ts +15 -0
  180. package/src/classes/HMSRemoteAudioTrack.ts +13 -2
  181. package/src/classes/HMSRemotePeer.ts +3 -0
  182. package/src/classes/HMSRemoteVideoTrack.ts +13 -2
  183. package/src/classes/HMSRoom.ts +12 -0
  184. package/src/classes/HMSRtmpStreamingState.ts +11 -0
  185. package/src/classes/{HMSSDK.ts → HMSSDK.tsx} +284 -42
  186. package/src/classes/HMSServerRecordingState.ts +11 -0
  187. package/src/classes/HMSTrack.ts +9 -15
  188. package/src/classes/HMSTrackType.ts +4 -0
  189. package/src/classes/HMSVideoResolution.ts +9 -0
  190. package/src/classes/HMSVideoSettings.ts +3 -3
  191. package/src/classes/HMSVideoTrack.ts +6 -1
  192. package/src/classes/HMSVideoTrackSettings.ts +13 -10
  193. package/src/classes/HmsView.tsx +4 -0
  194. package/src/index.ts +7 -0
  195. package/ios/Hmssdk.m +0 -8
  196. package/ios/Hmssdk.swift +0 -8
@@ -4,580 +4,223 @@ import com.facebook.react.bridge.*
4
4
  import com.facebook.react.module.annotations.ReactModule
5
5
  import com.facebook.react.modules.core.DeviceEventManagerModule
6
6
  import com.reactnativehmssdk.HmsModule.Companion.REACT_CLASS
7
- import java.util.*
8
- import kotlinx.coroutines.launch
9
- import live.hms.video.error.HMSException
10
- import live.hms.video.media.tracks.*
11
- import live.hms.video.sdk.*
12
- import live.hms.video.sdk.models.*
13
- import live.hms.video.sdk.models.HMSConfig
14
- import live.hms.video.sdk.models.enums.HMSPeerUpdate
15
- import live.hms.video.sdk.models.enums.HMSRoomUpdate
16
- import live.hms.video.sdk.models.enums.HMSTrackUpdate
17
- import live.hms.video.sdk.models.trackchangerequest.HMSChangeTrackStateRequest
18
- import live.hms.video.utils.HMSCoroutineScope
7
+ import java.util.UUID
19
8
 
20
9
  @ReactModule(name = REACT_CLASS)
21
10
  class HmsModule(reactContext: ReactApplicationContext) : ReactContextBaseJavaModule(reactContext) {
22
11
  companion object {
23
12
  const val REACT_CLASS = "HmsManager"
24
13
  }
25
- private var hmsSDK: HMSSDK? = null
26
- private var recentRoleChangeRequest: HMSRoleChangeRequest? = null
27
- private var changeTrackStateRequest: HMSChangeTrackStateRequest? = null
28
-
14
+ private var hmsCollection = mutableMapOf<String, HmsSDK>()
29
15
  override fun getName(): String {
30
16
  return "HmsManager"
31
17
  }
32
18
 
33
- fun getHmsInstance(): HMSSDK? {
34
- return hmsSDK
19
+ fun getHmsInstance(): MutableMap<String, HmsSDK> {
20
+ return hmsCollection
35
21
  }
36
22
 
37
23
  // Example method
38
24
  // See https://reactnative.dev/docs/native-modules-android
39
25
  @ReactMethod
40
- fun build() {
41
- hmsSDK = HMSSDK.Builder(reactApplicationContext).build()
26
+ fun build(data: ReadableMap?, callback: Promise?) {
27
+ val hasItem = hmsCollection.containsKey("12345")
28
+ if (hasItem) {
29
+ val uuid = UUID.randomUUID()
30
+ val randomUUIDString = uuid.toString()
31
+ val sdkInstance: HmsSDK = HmsSDK(data, this, randomUUIDString, reactApplicationContext)
32
+
33
+ hmsCollection[randomUUIDString] = sdkInstance
34
+
35
+ callback?.resolve(randomUUIDString)
36
+ } else {
37
+ val randomUUIDString = "12345"
38
+ val sdkInstance: HmsSDK = HmsSDK(data, this, randomUUIDString, reactApplicationContext)
39
+
40
+ hmsCollection[randomUUIDString] = sdkInstance
41
+
42
+ callback?.resolve(randomUUIDString)
43
+ }
42
44
  }
43
45
 
44
46
  @ReactMethod
45
47
  fun preview(credentials: ReadableMap) {
46
- val requiredKeys =
47
- HmsHelper.areAllRequiredKeysAvailable(
48
- credentials,
49
- arrayOf(Pair("username", "String"), Pair("authToken", "String"))
50
- )
51
- if (requiredKeys) {
52
- var config =
53
- HMSConfig(
54
- credentials.getString("username") as String,
55
- credentials.getString("authToken") as String
56
- )
57
-
58
- if (HmsHelper.areAllRequiredKeysAvailable(credentials, arrayOf(Pair("endpoint", "String")))) {
59
- config =
60
- HMSConfig(
61
- credentials.getString("username") as String,
62
- credentials.getString("authToken") as String,
63
- initEndpoint = credentials.getString("endpoint") as String
64
- )
65
- }
66
-
67
- hmsSDK?.preview(
68
- config,
69
- object : HMSPreviewListener {
70
- override fun onError(error: HMSException) {
71
- reactApplicationContext
72
- .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java)
73
- .emit("ON_ERROR", "ERROR")
74
- }
75
-
76
- override fun onPreview(room: HMSRoom, localTracks: Array<HMSTrack>) {
77
- val previewTracks = HmsDecoder.getPreviewTracks(localTracks)
78
- val hmsRoom = HmsDecoder.getHmsRoom(room)
79
- val localPeerData = HmsDecoder.getHmsLocalPeer(hmsSDK?.getLocalPeer())
80
-
81
- val data: WritableMap = Arguments.createMap()
82
-
83
- data.putMap("previewTracks", previewTracks)
84
- data.putMap("room", hmsRoom)
85
- data.putMap("localPeer", localPeerData)
86
-
87
- reactApplicationContext
88
- .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java)
89
- .emit("ON_PREVIEW", data)
90
- }
91
- }
92
- )
93
- }
48
+ val hms = HmsHelper.getHms(credentials, hmsCollection)
49
+
50
+ hms?.preview(credentials)
94
51
  }
95
52
 
96
53
  @ReactMethod
97
54
  fun join(credentials: ReadableMap) {
98
- val requiredKeys =
99
- HmsHelper.areAllRequiredKeysAvailable(
100
- credentials,
101
- arrayOf(Pair("username", "String"), Pair("authToken", "String"))
102
- )
103
- if (requiredKeys) {
104
- var config =
105
- HMSConfig(
106
- credentials.getString("username") as String,
107
- credentials.getString("authToken") as String
108
- )
109
-
110
- if (HmsHelper.areAllRequiredKeysAvailable(credentials, arrayOf(Pair("endpoint", "String")))) {
111
- config =
112
- HMSConfig(
113
- credentials.getString("username") as String,
114
- credentials.getString("authToken") as String,
115
- initEndpoint = credentials.getString("endpoint") as String
116
- )
117
- }
118
-
119
- HMSCoroutineScope.launch {
120
- hmsSDK?.join(
121
- config,
122
- object : HMSUpdateListener {
123
- override fun onChangeTrackStateRequest(request: HMSChangeTrackStateRequest) {
124
- val decodedChangeTrackStateRequest = HmsDecoder.getHmsChangeTrackStateRequest(request)
125
- reactApplicationContext.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java).emit("ON_CHANGE_TRACK_STATE_REQUEST", decodedChangeTrackStateRequest)
126
- changeTrackStateRequest = request
127
- }
128
-
129
- override fun onRemovedFromRoom(notification: HMSRemovedFromRoom) {
130
- super.onRemovedFromRoom(notification)
131
-
132
- val data: WritableMap = Arguments.createMap()
133
-
134
- val requestedBy = HmsDecoder.getHmsRemotePeer(notification.peerWhoRemoved)
135
- val roomEnded = notification.roomWasEnded
136
- val reason = notification.reason
137
-
138
- data.putMap("requestedBy", requestedBy)
139
- data.putBoolean("roomEnded", roomEnded)
140
- data.putString("reason", reason)
141
-
142
- reactApplicationContext
143
- .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java)
144
- .emit("ON_REMOVED_FROM_ROOM", data)
145
- }
146
-
147
- override fun onError(error: HMSException) {
148
- reactApplicationContext
149
- .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java)
150
- .emit("ON_ERROR", "ERROR")
151
- }
152
-
153
- override fun onJoin(room: HMSRoom) {
154
- val roomData = HmsDecoder.getHmsRoom(room)
155
- val localPeerData = HmsDecoder.getHmsLocalPeer(hmsSDK?.getLocalPeer())
156
- val remotePeerData = HmsDecoder.getHmsRemotePeers(hmsSDK?.getRemotePeers())
157
- val roles = HmsDecoder.getAllRoles(hmsSDK?.getRoles())
158
-
159
- val data: WritableMap = Arguments.createMap()
160
-
161
- data.putMap("room", roomData)
162
- data.putMap("localPeer", localPeerData)
163
- data.putArray("remotePeers", remotePeerData)
164
- data.putArray("roles", roles)
165
- reactApplicationContext
166
- .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java)
167
- .emit("ON_JOIN", data)
168
- }
169
-
170
- override fun onPeerUpdate(type: HMSPeerUpdate, hmsPeer: HMSPeer) {
171
-
172
- val type = type.name
173
- val localPeerData = HmsDecoder.getHmsLocalPeer(hmsSDK?.getLocalPeer())
174
- val remotePeerData = HmsDecoder.getHmsRemotePeers(hmsSDK?.getRemotePeers())
175
-
176
- val data: WritableMap = Arguments.createMap()
177
-
178
- data.putString("type", type)
179
- data.putMap("localPeer", localPeerData)
180
- data.putArray("remotePeers", remotePeerData)
181
- reactApplicationContext
182
- .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java)
183
- .emit("ON_PEER_UPDATE", data)
184
- }
185
-
186
- override fun onRoomUpdate(type: HMSRoomUpdate, hmsRoom: HMSRoom) {
187
- val type = type.name
188
- val roomData = HmsDecoder.getHmsRoom(hmsRoom)
189
- val localPeerData = HmsDecoder.getHmsLocalPeer(hmsSDK?.getLocalPeer())
190
- val remotePeerData = HmsDecoder.getHmsRemotePeers(hmsSDK?.getRemotePeers())
191
-
192
- val data: WritableMap = Arguments.createMap()
193
-
194
- data.putString("type", type)
195
- data.putMap("room", roomData)
196
- data.putMap("localPeer", localPeerData)
197
- data.putArray("remotePeers", remotePeerData)
198
- reactApplicationContext
199
- .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java)
200
- .emit("ON_ROOM_UPDATE", data)
201
- }
202
-
203
- override fun onTrackUpdate(type: HMSTrackUpdate, track: HMSTrack, peer: HMSPeer) {
204
- val type = type.name
205
- val localPeerData = HmsDecoder.getHmsLocalPeer(hmsSDK?.getLocalPeer())
206
- val remotePeerData = HmsDecoder.getHmsRemotePeers(hmsSDK?.getRemotePeers())
207
-
208
- val data: WritableMap = Arguments.createMap()
209
-
210
- data.putString("type", type)
211
- data.putMap("localPeer", localPeerData)
212
- data.putArray("remotePeers", remotePeerData)
213
- reactApplicationContext
214
- .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java)
215
- .emit("ON_TRACK_UPDATE", data)
216
- }
217
-
218
- override fun onMessageReceived(message: HMSMessage) {
219
- val data: WritableMap = Arguments.createMap()
220
-
221
- data.putString("sender", message.sender.name)
222
- data.putString("message", message.message)
223
- data.putString("type", message.type)
224
- data.putString("time", message.serverReceiveTime.toString())
225
- data.putString("event", "ON_MESSAGE")
226
-
227
- reactApplicationContext
228
- .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java)
229
- .emit("ON_MESSAGE", data)
230
- }
231
-
232
- override fun onReconnected() {
233
- reactApplicationContext
234
- .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java)
235
- .emit("RECONNECTED", "RECONNECTED")
236
- }
237
-
238
- override fun onReconnecting(error: HMSException) {
239
- reactApplicationContext
240
- .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java)
241
- .emit("RECONNECTING", "RECONNECTING")
242
- }
243
-
244
- override fun onRoleChangeRequest(request: HMSRoleChangeRequest) {
245
- val decodedChangeRoleRequest = HmsDecoder.getHmsRoleChangeRequest(request)
246
- reactApplicationContext
247
- .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java)
248
- .emit("ON_ROLE_CHANGE_REQUEST", decodedChangeRoleRequest)
249
- recentRoleChangeRequest = request
250
- }
251
- }
252
- )
253
-
254
- hmsSDK?.addAudioObserver(
255
- object : HMSAudioListener {
256
- override fun onAudioLevelUpdate(speakers: Array<HMSSpeaker>) {
257
- val data: WritableMap = Arguments.createMap()
258
- data.putInt("count", speakers.size)
259
- data.putString("event", "ON_SPEAKER")
260
-
261
- val peers: WritableArray = Arguments.createArray()
262
- for (speaker in speakers) {
263
- val speakerArray: WritableMap = Arguments.createMap()
264
- speakerArray.putMap("peer",HmsDecoder.getHmsPeer(speaker?.peer))
265
- speakerArray.putInt("level",speaker?.level)
266
- speakerArray.putMap("track",HmsDecoder.getHmsTrack(speaker?.hmsTrack))
267
- peers.pushMap(speakerArray)
268
- }
269
- data.putArray("peers", peers)
270
- reactApplicationContext
271
- .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java)
272
- .emit("ON_SPEAKER", data)
273
- }
274
- }
275
- )
276
- }
277
- }
55
+ val hms = HmsHelper.getHms(credentials, hmsCollection)
56
+
57
+ hms?.join(credentials)
278
58
  }
279
59
 
280
60
  @ReactMethod
281
- fun setLocalMute(isMute: Boolean) {
282
- hmsSDK?.getLocalPeer()?.audioTrack?.setMute(isMute)
61
+ fun setLocalMute(data: ReadableMap) {
62
+ val hms = HmsHelper.getHms(data, hmsCollection)
63
+
64
+ hms?.setLocalMute(data)
283
65
  }
284
66
 
285
67
  @ReactMethod
286
- fun setLocalVideoMute(isMute: Boolean) {
287
- hmsSDK?.getLocalPeer()?.videoTrack?.setMute(isMute)
68
+ fun setLocalVideoMute(data: ReadableMap) {
69
+ val hms = HmsHelper.getHms(data, hmsCollection)
70
+
71
+ hms?.setLocalVideoMute(data)
288
72
  }
289
73
 
290
74
  @ReactMethod
291
- fun switchCamera() {
292
- if (hmsSDK?.getLocalPeer()?.videoTrack?.isMute ?: true) {} else {
293
- HMSCoroutineScope.launch { hmsSDK?.getLocalPeer()?.videoTrack?.switchCamera() }
294
- }
75
+ fun switchCamera(data: ReadableMap) {
76
+ val hms = HmsHelper.getHms(data, hmsCollection)
77
+
78
+ hms?.switchCamera()
295
79
  }
296
80
 
297
81
  @ReactMethod
298
- fun leave() {
299
- hmsSDK?.leave()
82
+ fun leave(data: ReadableMap, callback: Promise?) {
83
+ val hms = HmsHelper.getHms(data, hmsCollection)
84
+
85
+ hms?.leave(callback)
300
86
  }
301
87
 
302
88
  @ReactMethod
303
89
  fun sendBroadcastMessage(data: ReadableMap) {
304
- val requiredKeys =
305
- HmsHelper.areAllRequiredKeysAvailable(data, arrayOf(Pair("message", "String")))
306
- if (requiredKeys) {
307
- val type =
308
- if (HmsHelper.areAllRequiredKeysAvailable(data, arrayOf(Pair("type", "String"))))
309
- data.getString("type")
310
- else "chat"
311
- hmsSDK?.sendBroadcastMessage(
312
- data.getString("message") as String,
313
- type as String,
314
- object : HMSMessageResultListener {
315
- override fun onError(error: HMSException) {}
316
- override fun onSuccess(hmsMessage: HMSMessage) {}
317
- }
318
- )
319
- }
90
+ val hms = HmsHelper.getHms(data, hmsCollection)
91
+
92
+ hms?.sendBroadcastMessage(data)
320
93
  }
321
94
 
322
95
  @ReactMethod
323
96
  fun sendGroupMessage(data: ReadableMap) {
324
- val requiredKeys =
325
- HmsHelper.areAllRequiredKeysAvailable(
326
- data,
327
- arrayOf(Pair("message", "String"), Pair("roles", "Array"))
328
- )
329
- if (requiredKeys) {
330
- val message = data.getString("message")
331
- val targetedRoles = data.getArray("roles")?.toArrayList() as? ArrayList<String>
332
- val roles = hmsSDK?.getRoles()
333
- val encodedTargetedRoles = HmsHelper.getRolesFromRoleNames(targetedRoles, roles)
334
-
335
- if (message != null) {
336
- hmsSDK?.sendGroupMessage(
337
- message,
338
- "chat",
339
- encodedTargetedRoles,
340
- object : HMSMessageResultListener {
341
- override fun onError(error: HMSException) {}
342
- override fun onSuccess(hmsMessage: HMSMessage) {}
343
- }
344
- )
345
- }
346
- }
97
+ val hms = HmsHelper.getHms(data, hmsCollection)
98
+
99
+ hms?.sendGroupMessage(data)
347
100
  }
348
101
 
349
102
  @ReactMethod
350
103
  fun sendDirectMessage(data: ReadableMap) {
351
- val requiredKeys =
352
- HmsHelper.areAllRequiredKeysAvailable(
353
- data,
354
- arrayOf(Pair("message", "String"), Pair("peerId", "String"))
355
- )
356
- if (requiredKeys) {
357
- val message = data.getString("message")
358
- val peerId = data.getString("peerId")
359
- val peers = hmsSDK?.getPeers()
360
- val peer = HmsHelper.getPeerFromPeerId(peerId, peers)
361
- if (message != null && peer != null) {
362
- hmsSDK?.sendDirectMessage(
363
- message,
364
- "chat",
365
- peer,
366
- object : HMSMessageResultListener {
367
- override fun onError(error: HMSException) {}
368
- override fun onSuccess(hmsMessage: HMSMessage) {}
369
- }
370
- )
371
- }
372
- }
104
+ val hms = HmsHelper.getHms(data, hmsCollection)
105
+
106
+ hms?.sendDirectMessage(data)
373
107
  }
374
108
 
375
109
  @ReactMethod
376
110
  fun changeRole(data: ReadableMap) {
377
- val requiredKeys =
378
- HmsHelper.areAllRequiredKeysAvailable(
379
- data,
380
- arrayOf(Pair("peerId", "String"), Pair("role", "String"), Pair("force", "Boolean"))
381
- )
382
- if (requiredKeys) {
383
- val peerId = data.getString("peerId")
384
- val role = data.getString("role")
385
- val force = data.getBoolean("force")
386
-
387
- if (peerId !== null && role !== null) {
388
- val hmsPeer = HmsHelper.getPeerFromPeerId(peerId, hmsSDK?.getPeers())
389
- val hmsRole = HmsHelper.getRoleFromRoleName(role, hmsSDK?.getRoles())
390
-
391
- if (hmsRole != null && hmsPeer != null) {
392
- hmsSDK?.changeRole(
393
- hmsPeer as HMSRemotePeer,
394
- hmsRole,
395
- force,
396
- object : HMSActionResultListener {
397
- override fun onSuccess() {}
398
- override fun onError(error: HMSException) {}
399
- }
400
- )
401
- }
402
- }
403
- }
111
+ val hms = HmsHelper.getHms(data, hmsCollection)
112
+
113
+ hms?.changeRole(data)
404
114
  }
405
115
 
406
116
  @ReactMethod
407
117
  fun changeTrackState(data: ReadableMap) {
408
- val requiredKeys =
409
- HmsHelper.areAllRequiredKeysAvailable(
410
- data,
411
- arrayOf(Pair("trackId", "String"), Pair("mute", "Boolean"))
412
- )
413
- if (requiredKeys) {
414
- val trackId = data.getString("trackId")
415
- val mute = data.getBoolean("mute")
416
- val remotePeers = hmsSDK?.getRemotePeers()
417
- val track = HmsHelper.getTrackFromTrackId(trackId, remotePeers)
418
- if (track != null) {
419
- hmsSDK?.changeTrackState(
420
- track,
421
- mute,
422
- object : HMSActionResultListener {
423
- override fun onSuccess() {}
424
- override fun onError(error: HMSException) {}
425
- }
426
- )
427
- }
428
- }
118
+ val hms = HmsHelper.getHms(data, hmsCollection)
119
+
120
+ hms?.changeTrackState(data)
121
+ }
122
+
123
+ @ReactMethod
124
+ fun changeTrackStateRoles(data: ReadableMap) {
125
+ val hms = HmsHelper.getHms(data, hmsCollection)
126
+
127
+ hms?.changeTrackStateRoles(data)
429
128
  }
430
129
 
431
130
  @ReactMethod
432
131
  fun isMute(data: ReadableMap, callback: Promise?) {
433
- val requiredKeys =
434
- HmsHelper.areAllRequiredKeysAvailable(data, arrayOf(Pair("trackId", "String")))
435
- if (requiredKeys) {
436
- val trackId = data.getString("trackId")
437
- val remotePeers = hmsSDK?.getRemotePeers()
438
- val localPeer = hmsSDK?.getLocalPeer()
439
- val localTrack = HmsHelper.getLocalTrackFromTrackId(trackId, localPeer)
440
- if (localTrack == null) {
441
- val track = HmsHelper.getTrackFromTrackId(trackId, remotePeers)
442
- if (track != null) {
443
- val mute = track.isMute
444
- callback?.resolve(mute)
445
- } else {
446
- callback?.reject("101", "NOT_FOUND")
447
- }
448
- } else {
449
- val mute = localTrack.isMute
450
- callback?.resolve(mute)
451
- }
452
- }
132
+ val hms = HmsHelper.getHms(data, hmsCollection)
133
+
134
+ hms?.isMute(data, callback)
135
+ }
136
+
137
+ @ReactMethod
138
+ fun removePeer(data: ReadableMap) {
139
+ val hms = HmsHelper.getHms(data, hmsCollection)
140
+
141
+ hms?.removePeer(data)
453
142
  }
454
143
 
455
144
  @ReactMethod
456
145
  fun isPlaybackAllowed(data: ReadableMap, callback: Promise?) {
457
- val requiredKeys =
458
- HmsHelper.areAllRequiredKeysAvailable(data, arrayOf(Pair("trackId", "String")))
459
- if (requiredKeys) {
460
- val trackId = data.getString("trackId")
461
- val remotePeers = hmsSDK?.getRemotePeers()
462
- val remoteAudioTrack = HmsHelper.getRemoteAudioTrackFromTrackId(trackId, remotePeers)
463
- val remoteVideoTrack = HmsHelper.getRemoteVideoTrackFromTrackId(trackId, remotePeers)
464
- if (remoteAudioTrack != null) {
465
- val isPlaybackAllowed = remoteAudioTrack.isPlaybackAllowed
466
- callback?.resolve(isPlaybackAllowed)
467
- } else if (remoteVideoTrack != null) {
468
- val isPlaybackAllowed = remoteVideoTrack.isPlaybackAllowed
469
- callback?.resolve(isPlaybackAllowed)
470
- } else {
471
- callback?.reject("101", "NOT_FOUND")
472
- }
473
- }else {
474
- callback?.reject("101", "TRACK_ID_NOT_FOUND")
475
- }
146
+ val hms = HmsHelper.getHms(data, hmsCollection)
147
+
148
+ hms?.isPlaybackAllowed(data, callback)
149
+ }
150
+
151
+ @ReactMethod
152
+ fun getRoom(data: ReadableMap, callback: Promise?) {
153
+ val hms = HmsHelper.getHms(data, hmsCollection)
154
+
155
+ hms?.getRoom(callback)
476
156
  }
477
157
 
478
158
  @ReactMethod
479
159
  fun setPlaybackAllowed(data: ReadableMap) {
480
- val requiredKeys =
481
- HmsHelper.areAllRequiredKeysAvailable(data, arrayOf(Pair("trackId", "String"),Pair("playbackAllowed", "Boolean")))
482
- if (requiredKeys) {
483
- val trackId = data.getString("trackId")
484
- val playbackAllowed = data.getBoolean("playbackAllowed")
485
- val remotePeers = hmsSDK?.getRemotePeers()
486
- val remoteAudioTrack = HmsHelper.getRemoteAudioTrackFromTrackId(trackId, remotePeers)
487
- val remoteVideoTrack = HmsHelper.getRemoteVideoTrackFromTrackId(trackId, remotePeers)
488
- if (remoteAudioTrack != null) {
489
- remoteAudioTrack.isPlaybackAllowed = playbackAllowed
490
- } else if (remoteVideoTrack != null) {
491
- remoteVideoTrack.isPlaybackAllowed = playbackAllowed
492
- }
493
- }
160
+ val hms = HmsHelper.getHms(data, hmsCollection)
161
+
162
+ hms?.setPlaybackAllowed(data)
494
163
  }
495
164
 
165
+ @ReactMethod
166
+ fun endRoom(data: ReadableMap) {
167
+ val hms = HmsHelper.getHms(data, hmsCollection)
168
+
169
+ hms?.endRoom(data)
170
+ }
496
171
 
497
172
  @ReactMethod
498
- fun removePeer(data: ReadableMap) {
499
- val requiredKeys =
500
- HmsHelper.areAllRequiredKeysAvailable(data, arrayOf(Pair("peerId", "String")))
501
- if (requiredKeys) {
502
- val peerId = data.getString("peerId")
503
- var reason = data.getString("reason")
504
- if (reason == null) {
505
- reason = ""
506
- }
507
- val peers = hmsSDK?.getRemotePeers()
508
- val peer = HmsHelper.getRemotePeerFromPeerId(peerId, peers)
509
- if (peer != null) {
510
- hmsSDK?.removePeerRequest(
511
- peer,
512
- reason,
513
- object : HMSActionResultListener {
514
- override fun onSuccess() {}
515
- override fun onError(error: HMSException) {}
516
- }
517
- )
518
- }
519
- }
173
+ fun acceptRoleChange(data: ReadableMap) {
174
+ val hms = HmsHelper.getHms(data, hmsCollection)
175
+
176
+ hms?.acceptRoleChange()
520
177
  }
521
178
 
522
179
  @ReactMethod
523
- fun endRoom(data: ReadableMap) {
524
- val requiredKeys = HmsHelper.areAllRequiredKeysAvailable(data, arrayOf(Pair("lock", "Boolean")))
525
- if (requiredKeys) {
526
- val lock = data.getBoolean("lock")
527
- var reason = data.getString("reason")
528
- if (reason == null) {
529
- reason = ""
530
- }
531
- hmsSDK?.endRoom(
532
- reason,
533
- lock,
534
- object : HMSActionResultListener {
535
- override fun onSuccess() {}
536
- override fun onError(error: HMSException) {}
537
- }
538
- )
539
- }
180
+ fun setVolume(data: ReadableMap) {
181
+ val hms = HmsHelper.getHms(data, hmsCollection)
182
+
183
+ hms?.setVolume(data)
540
184
  }
541
185
 
542
186
  @ReactMethod
543
- fun acceptRoleChange() {
544
- if (recentRoleChangeRequest !== null) {
545
- hmsSDK?.acceptChangeRole(
546
- recentRoleChangeRequest!!,
547
- object : HMSActionResultListener {
548
- override fun onSuccess() {
549
- recentRoleChangeRequest = null
550
- }
551
-
552
- override fun onError(error: HMSException) {
553
- recentRoleChangeRequest = null
554
- }
555
- }
556
- )
557
- }
187
+ fun getVolume(data: ReadableMap, callback: Promise?) {
188
+ val hms = HmsHelper.getHms(data, hmsCollection)
189
+
190
+ hms?.getVolume(data, callback)
558
191
  }
559
192
 
560
193
  @ReactMethod
561
- fun muteAllPeersAudio(mute: Boolean) {
562
- val peers = hmsSDK?.getRemotePeers()
563
- if (peers != null) {
564
- for (remotePeer in peers) {
565
- val peerId = remotePeer?.peerID
566
- val peer = HmsHelper.getRemotePeerFromPeerId(peerId, peers)
567
- if (peerId != null) {
568
- peer?.audioTrack?.isPlaybackAllowed = !mute
569
- }
570
- }
571
- val localPeerData = HmsDecoder.getHmsLocalPeer(hmsSDK?.getLocalPeer())
572
- val remotePeerData = HmsDecoder.getHmsRemotePeers(hmsSDK?.getRemotePeers())
573
-
574
- val data: WritableMap = Arguments.createMap()
575
-
576
- data.putMap("localPeer", localPeerData)
577
- data.putArray("remotePeers", remotePeerData)
578
- reactApplicationContext
579
- .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java)
580
- .emit("ON_PEER_UPDATE", data)
581
- }
194
+ fun muteAllPeersAudio(data: ReadableMap) {
195
+ val hms = HmsHelper.getHms(data, hmsCollection)
196
+
197
+ hms?.muteAllPeersAudio(data)
198
+ }
199
+
200
+ @ReactMethod
201
+ fun changeMetadata(data: ReadableMap, callback: Promise?) {
202
+ val hms = HmsHelper.getHms(data, hmsCollection)
203
+
204
+ hms?.changeMetadata(data, callback)
205
+ }
206
+
207
+ @ReactMethod
208
+ fun startRTMPOrRecording(data: ReadableMap, callback: Promise?) {
209
+ val hms = HmsHelper.getHms(data, hmsCollection)
210
+
211
+ hms?.startRTMPOrRecording(data, callback)
212
+ }
213
+
214
+ @ReactMethod
215
+ fun stopRtmpAndRecording(data: ReadableMap, callback: Promise?) {
216
+ val hms = HmsHelper.getHms(data, hmsCollection)
217
+
218
+ hms?.stopRtmpAndRecording(callback)
219
+ }
220
+
221
+ fun emitEvent(event: String, data: WritableMap) {
222
+ reactApplicationContext
223
+ .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java)
224
+ .emit(event, data)
582
225
  }
583
226
  }