@100mslive/react-native-hms 0.7.3 → 0.8.2

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