@100mslive/react-native-hms 0.7.4 → 0.8.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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 +8 -2
  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 -519
  10. package/android/src/main/java/com/reactnativehmssdk/HmsSDK.kt +940 -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 +125 -398
  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 +399 -150
  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 +388 -150
  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 +40 -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} +332 -98
  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,599 +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: HMSException){
257
- val error: WritableMap = Arguments.createMap()
258
- error.putString("message",e.localizedMessage)
259
- error.putInt("code",e.code)
260
- reactApplicationContext
261
- .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java)
262
- .emit("ON_ERROR", error)
263
- }
264
-
265
- hmsSDK?.addAudioObserver(
266
- object : HMSAudioListener {
267
- override fun onAudioLevelUpdate(speakers: Array<HMSSpeaker>) {
268
- val data: WritableMap = Arguments.createMap()
269
- data.putInt("count", speakers.size)
270
- data.putString("event", "ON_SPEAKER")
271
-
272
- val peers: WritableArray = Arguments.createArray()
273
- for (speaker in speakers) {
274
- val speakerArray: WritableMap = Arguments.createMap()
275
- speakerArray.putMap("peer",HmsDecoder.getHmsPeer(speaker?.peer))
276
- speakerArray.putInt("level",speaker?.level)
277
- speakerArray.putMap("track",HmsDecoder.getHmsTrack(speaker?.hmsTrack))
278
- peers.pushMap(speakerArray)
279
- }
280
- data.putArray("peers", peers)
281
- reactApplicationContext
282
- .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java)
283
- .emit("ON_SPEAKER", data)
284
- }
285
- }
286
- )
287
- }
288
- }
55
+ val hms = HmsHelper.getHms(credentials, hmsCollection)
56
+
57
+ hms?.join(credentials)
289
58
  }
290
59
 
291
60
  @ReactMethod
292
- fun setLocalMute(isMute: Boolean) {
293
- hmsSDK?.getLocalPeer()?.audioTrack?.setMute(isMute)
61
+ fun setLocalMute(data: ReadableMap) {
62
+ val hms = HmsHelper.getHms(data, hmsCollection)
63
+
64
+ hms?.setLocalMute(data)
294
65
  }
295
66
 
296
67
  @ReactMethod
297
- fun setLocalVideoMute(isMute: Boolean) {
298
- hmsSDK?.getLocalPeer()?.videoTrack?.setMute(isMute)
68
+ fun setLocalVideoMute(data: ReadableMap) {
69
+ val hms = HmsHelper.getHms(data, hmsCollection)
70
+
71
+ hms?.setLocalVideoMute(data)
299
72
  }
300
73
 
301
74
  @ReactMethod
302
- fun switchCamera() {
303
- if (hmsSDK?.getLocalPeer()?.videoTrack?.isMute ?: true) {} else {
304
- HMSCoroutineScope.launch { hmsSDK?.getLocalPeer()?.videoTrack?.switchCamera() }
305
- }
75
+ fun switchCamera(data: ReadableMap) {
76
+ val hms = HmsHelper.getHms(data, hmsCollection)
77
+
78
+ hms?.switchCamera()
306
79
  }
307
80
 
308
81
  @ReactMethod
309
- fun leave() {
310
- hmsSDK?.leave()
82
+ fun leave(data: ReadableMap, callback: Promise?) {
83
+ val hms = HmsHelper.getHms(data, hmsCollection)
84
+
85
+ hms?.leave(callback)
311
86
  }
312
87
 
313
88
  @ReactMethod
314
- fun sendBroadcastMessage(data: ReadableMap) {
315
- val requiredKeys =
316
- HmsHelper.areAllRequiredKeysAvailable(data, arrayOf(Pair("message", "String")))
317
- if (requiredKeys) {
318
- val type =
319
- if (HmsHelper.areAllRequiredKeysAvailable(data, arrayOf(Pair("type", "String"))))
320
- data.getString("type")
321
- else "chat"
322
- hmsSDK?.sendBroadcastMessage(
323
- data.getString("message") as String,
324
- type as String,
325
- object : HMSMessageResultListener {
326
- override fun onError(error: HMSException) {}
327
- override fun onSuccess(hmsMessage: HMSMessage) {}
328
- }
329
- )
330
- }
89
+ fun sendBroadcastMessage(data: ReadableMap, callback: Promise?) {
90
+ val hms = HmsHelper.getHms(data, hmsCollection)
91
+
92
+ hms?.sendBroadcastMessage(data, callback)
331
93
  }
332
94
 
333
95
  @ReactMethod
334
- fun sendGroupMessage(data: ReadableMap) {
335
- val requiredKeys =
336
- HmsHelper.areAllRequiredKeysAvailable(
337
- data,
338
- arrayOf(Pair("message", "String"), Pair("roles", "Array"))
339
- )
340
- if (requiredKeys) {
341
- val type =
342
- if (HmsHelper.areAllRequiredKeysAvailable(data, arrayOf(Pair("type", "String"))))
343
- data.getString("type")
344
- else "chat"
345
- val message = data.getString("message")
346
- val targetedRoles = data.getArray("roles")?.toArrayList() as? ArrayList<String>
347
- val roles = hmsSDK?.getRoles()
348
- val encodedTargetedRoles = HmsHelper.getRolesFromRoleNames(targetedRoles, roles)
349
-
350
- if (message != null) {
351
- hmsSDK?.sendGroupMessage(
352
- message,
353
- type as String,
354
- encodedTargetedRoles,
355
- object : HMSMessageResultListener {
356
- override fun onError(error: HMSException) {}
357
- override fun onSuccess(hmsMessage: HMSMessage) {}
358
- }
359
- )
360
- }
361
- }
96
+ fun sendGroupMessage(data: ReadableMap, callback: Promise?) {
97
+ val hms = HmsHelper.getHms(data, hmsCollection)
98
+
99
+ hms?.sendGroupMessage(data, callback)
362
100
  }
363
101
 
364
102
  @ReactMethod
365
- fun sendDirectMessage(data: ReadableMap) {
366
- val requiredKeys =
367
- HmsHelper.areAllRequiredKeysAvailable(
368
- data,
369
- arrayOf(Pair("message", "String"), Pair("peerId", "String"))
370
- )
371
- if (requiredKeys) {
372
- val type =
373
- if (HmsHelper.areAllRequiredKeysAvailable(data, arrayOf(Pair("type", "String"))))
374
- data.getString("type")
375
- else "chat"
376
- val message = data.getString("message")
377
- val peerId = data.getString("peerId")
378
- val peers = hmsSDK?.getPeers()
379
- val peer = HmsHelper.getPeerFromPeerId(peerId, peers)
380
- if (message != null && peer != null) {
381
- hmsSDK?.sendDirectMessage(
382
- message,
383
- type as String,
384
- peer,
385
- object : HMSMessageResultListener {
386
- override fun onError(error: HMSException) {}
387
- override fun onSuccess(hmsMessage: HMSMessage) {}
388
- }
389
- )
390
- }
391
- }
103
+ fun sendDirectMessage(data: ReadableMap, callback: Promise?) {
104
+ val hms = HmsHelper.getHms(data, hmsCollection)
105
+
106
+ hms?.sendDirectMessage(data, callback)
392
107
  }
393
108
 
394
109
  @ReactMethod
395
- fun changeRole(data: ReadableMap) {
396
- val requiredKeys =
397
- HmsHelper.areAllRequiredKeysAvailable(
398
- data,
399
- arrayOf(Pair("peerId", "String"), Pair("role", "String"), Pair("force", "Boolean"))
400
- )
401
- if (requiredKeys) {
402
- val peerId = data.getString("peerId")
403
- val role = data.getString("role")
404
- val force = data.getBoolean("force")
405
-
406
- if (peerId !== null && role !== null) {
407
- val hmsPeer = HmsHelper.getPeerFromPeerId(peerId, hmsSDK?.getPeers())
408
- val hmsRole = HmsHelper.getRoleFromRoleName(role, hmsSDK?.getRoles())
409
-
410
- if (hmsRole != null && hmsPeer != null) {
411
- hmsSDK?.changeRole(
412
- hmsPeer as HMSRemotePeer,
413
- hmsRole,
414
- force,
415
- object : HMSActionResultListener {
416
- override fun onSuccess() {}
417
- override fun onError(error: HMSException) {}
418
- }
419
- )
420
- }
421
- }
422
- }
110
+ fun changeRole(data: ReadableMap, callback: Promise?) {
111
+ val hms = HmsHelper.getHms(data, hmsCollection)
112
+
113
+ hms?.changeRole(data, callback)
423
114
  }
424
115
 
425
116
  @ReactMethod
426
- fun changeTrackState(data: ReadableMap) {
427
- val requiredKeys =
428
- HmsHelper.areAllRequiredKeysAvailable(
429
- data,
430
- arrayOf(Pair("trackId", "String"), Pair("mute", "Boolean"))
431
- )
432
- if (requiredKeys) {
433
- val trackId = data.getString("trackId")
434
- val mute = data.getBoolean("mute")
435
- val remotePeers = hmsSDK?.getRemotePeers()
436
- val track = HmsHelper.getTrackFromTrackId(trackId, remotePeers)
437
- if (track != null) {
438
- hmsSDK?.changeTrackState(
439
- track,
440
- mute,
441
- object : HMSActionResultListener {
442
- override fun onSuccess() {}
443
- override fun onError(error: HMSException) {}
444
- }
445
- )
446
- }
447
- }
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)
448
128
  }
449
129
 
450
130
  @ReactMethod
451
131
  fun isMute(data: ReadableMap, callback: Promise?) {
452
- val requiredKeys =
453
- HmsHelper.areAllRequiredKeysAvailable(data, arrayOf(Pair("trackId", "String")))
454
- if (requiredKeys) {
455
- val trackId = data.getString("trackId")
456
- val remotePeers = hmsSDK?.getRemotePeers()
457
- val localPeer = hmsSDK?.getLocalPeer()
458
- val localTrack = HmsHelper.getLocalTrackFromTrackId(trackId, localPeer)
459
- if (localTrack == null) {
460
- val track = HmsHelper.getTrackFromTrackId(trackId, remotePeers)
461
- if (track != null) {
462
- val mute = track.isMute
463
- callback?.resolve(mute)
464
- } else {
465
- callback?.reject("101", "NOT_FOUND")
466
- }
467
- } else {
468
- val mute = localTrack.isMute
469
- callback?.resolve(mute)
470
- }
471
- }
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)
472
142
  }
473
143
 
474
144
  @ReactMethod
475
145
  fun isPlaybackAllowed(data: ReadableMap, callback: Promise?) {
476
- val requiredKeys =
477
- HmsHelper.areAllRequiredKeysAvailable(data, arrayOf(Pair("trackId", "String")))
478
- if (requiredKeys) {
479
- val trackId = data.getString("trackId")
480
- val remotePeers = hmsSDK?.getRemotePeers()
481
- val remoteAudioTrack = HmsHelper.getRemoteAudioTrackFromTrackId(trackId, remotePeers)
482
- val remoteVideoTrack = HmsHelper.getRemoteVideoTrackFromTrackId(trackId, remotePeers)
483
- if (remoteAudioTrack != null) {
484
- val isPlaybackAllowed = remoteAudioTrack.isPlaybackAllowed
485
- callback?.resolve(isPlaybackAllowed)
486
- } else if (remoteVideoTrack != null) {
487
- val isPlaybackAllowed = remoteVideoTrack.isPlaybackAllowed
488
- callback?.resolve(isPlaybackAllowed)
489
- } else {
490
- callback?.reject("101", "NOT_FOUND")
491
- }
492
- }else {
493
- callback?.reject("101", "TRACK_ID_NOT_FOUND")
494
- }
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)
495
156
  }
496
157
 
497
158
  @ReactMethod
498
159
  fun setPlaybackAllowed(data: ReadableMap) {
499
- val requiredKeys =
500
- HmsHelper.areAllRequiredKeysAvailable(data, arrayOf(Pair("trackId", "String"),Pair("playbackAllowed", "Boolean")))
501
- if (requiredKeys) {
502
- val trackId = data.getString("trackId")
503
- val playbackAllowed = data.getBoolean("playbackAllowed")
504
- val remotePeers = hmsSDK?.getRemotePeers()
505
- val remoteAudioTrack = HmsHelper.getRemoteAudioTrackFromTrackId(trackId, remotePeers)
506
- val remoteVideoTrack = HmsHelper.getRemoteVideoTrackFromTrackId(trackId, remotePeers)
507
- if (remoteAudioTrack != null) {
508
- remoteAudioTrack.isPlaybackAllowed = playbackAllowed
509
- } else if (remoteVideoTrack != null) {
510
- remoteVideoTrack.isPlaybackAllowed = playbackAllowed
511
- }
512
- }
160
+ val hms = HmsHelper.getHms(data, hmsCollection)
161
+
162
+ hms?.setPlaybackAllowed(data)
513
163
  }
514
164
 
165
+ @ReactMethod
166
+ fun endRoom(data: ReadableMap, callback: Promise?) {
167
+ val hms = HmsHelper.getHms(data, hmsCollection)
168
+
169
+ hms?.endRoom(data, callback)
170
+ }
515
171
 
516
172
  @ReactMethod
517
- fun removePeer(data: ReadableMap) {
518
- val requiredKeys =
519
- HmsHelper.areAllRequiredKeysAvailable(data, arrayOf(Pair("peerId", "String")))
520
- if (requiredKeys) {
521
- val peerId = data.getString("peerId")
522
- var reason = data.getString("reason")
523
- if (reason == null) {
524
- reason = ""
525
- }
526
- val peers = hmsSDK?.getRemotePeers()
527
- val peer = HmsHelper.getRemotePeerFromPeerId(peerId, peers)
528
- if (peer != null) {
529
- hmsSDK?.removePeerRequest(
530
- peer,
531
- reason,
532
- object : HMSActionResultListener {
533
- override fun onSuccess() {}
534
- override fun onError(error: HMSException) {}
535
- }
536
- )
537
- }
538
- }
173
+ fun acceptRoleChange(data: ReadableMap) {
174
+ val hms = HmsHelper.getHms(data, hmsCollection)
175
+
176
+ hms?.acceptRoleChange()
539
177
  }
540
178
 
541
179
  @ReactMethod
542
- fun endRoom(data: ReadableMap) {
543
- val requiredKeys = HmsHelper.areAllRequiredKeysAvailable(data, arrayOf(Pair("lock", "Boolean")))
544
- if (requiredKeys) {
545
- val lock = data.getBoolean("lock")
546
- var reason = data.getString("reason")
547
- if (reason == null) {
548
- reason = ""
549
- }
550
- hmsSDK?.endRoom(
551
- reason,
552
- lock,
553
- object : HMSActionResultListener {
554
- override fun onSuccess() {}
555
- override fun onError(error: HMSException) {}
556
- }
557
- )
558
- }
180
+ fun setVolume(data: ReadableMap) {
181
+ val hms = HmsHelper.getHms(data, hmsCollection)
182
+
183
+ hms?.setVolume(data)
559
184
  }
560
185
 
561
186
  @ReactMethod
562
- fun acceptRoleChange() {
563
- if (recentRoleChangeRequest !== null) {
564
- hmsSDK?.acceptChangeRole(
565
- recentRoleChangeRequest!!,
566
- object : HMSActionResultListener {
567
- override fun onSuccess() {
568
- recentRoleChangeRequest = null
569
- }
570
-
571
- override fun onError(error: HMSException) {
572
- recentRoleChangeRequest = null
573
- }
574
- }
575
- )
576
- }
187
+ fun getVolume(data: ReadableMap, callback: Promise?) {
188
+ val hms = HmsHelper.getHms(data, hmsCollection)
189
+
190
+ hms?.getVolume(data, callback)
577
191
  }
578
192
 
579
193
  @ReactMethod
580
- fun muteAllPeersAudio(mute: Boolean) {
581
- val peers = hmsSDK?.getRemotePeers()
582
- if (peers != null) {
583
- for (remotePeer in peers) {
584
- val peerId = remotePeer?.peerID
585
- val peer = HmsHelper.getRemotePeerFromPeerId(peerId, peers)
586
- if (peerId != null) {
587
- peer?.audioTrack?.isPlaybackAllowed = !mute
588
- }
589
- }
590
- val localPeerData = HmsDecoder.getHmsLocalPeer(hmsSDK?.getLocalPeer())
591
- val remotePeerData = HmsDecoder.getHmsRemotePeers(hmsSDK?.getRemotePeers())
592
-
593
- val data: WritableMap = Arguments.createMap()
594
-
595
- data.putMap("localPeer", localPeerData)
596
- data.putArray("remotePeers", remotePeerData)
597
- reactApplicationContext
598
- .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java)
599
- .emit("ON_PEER_UPDATE", data)
600
- }
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)
601
225
  }
602
226
  }