@100mslive/react-native-hms 1.8.0 → 1.9.1-beta.0

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 (214) hide show
  1. package/android/build.gradle +3 -3
  2. package/android/local.properties +8 -1
  3. package/android/src/main/java/com/reactnativehmssdk/HMSAudioshareActivity.kt +1 -1
  4. package/android/src/main/java/com/reactnativehmssdk/HMSDecoder.kt +15 -5
  5. package/android/src/main/java/com/reactnativehmssdk/HMSHLSPlayer.kt +4 -3
  6. package/android/src/main/java/com/reactnativehmssdk/HMSHelper.kt +43 -5
  7. package/android/src/main/java/com/reactnativehmssdk/HMSManager.kt +147 -47
  8. package/android/src/main/java/com/reactnativehmssdk/HMSRNSDK.kt +419 -248
  9. package/android/src/main/java/com/reactnativehmssdk/HMSView.kt +24 -4
  10. package/android/src/main/java/com/reactnativehmssdk/HmsScreenshareActivity.kt +1 -1
  11. package/ios/HMSConstants.swift +1 -0
  12. package/ios/HMSDecoder.swift +16 -5
  13. package/ios/HMSHLSPlayerManager.swift +20 -11
  14. package/ios/HMSHelper.swift +33 -4
  15. package/ios/HMSManager.m +66 -10
  16. package/ios/HMSManager.swift +65 -21
  17. package/ios/HMSRNSDK.swift +244 -100
  18. package/ios/Hmssdk.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  19. package/ios/Hmssdk.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  20. package/ios/Hmssdk.xcodeproj/project.xcworkspace/xcuserdata/jatinnagar.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  21. package/ios/Hmssdk.xcodeproj/xcuserdata/jatinnagar.xcuserdatad/xcschemes/xcschememanagement.plist +14 -0
  22. package/lib/commonjs/classes/HMSAudioCodec.js +1 -2
  23. package/lib/commonjs/classes/HMSAudioCodec.js.map +1 -1
  24. package/lib/commonjs/classes/HMSAudioDevice.js +1 -2
  25. package/lib/commonjs/classes/HMSAudioDevice.js.map +1 -1
  26. package/lib/commonjs/classes/HMSAudioMixingMode.js +1 -2
  27. package/lib/commonjs/classes/HMSAudioMixingMode.js.map +1 -1
  28. package/lib/commonjs/classes/HMSAudioMode.js +1 -2
  29. package/lib/commonjs/classes/HMSAudioMode.js.map +1 -1
  30. package/lib/commonjs/classes/HMSCameraFacing.js +1 -2
  31. package/lib/commonjs/classes/HMSCameraFacing.js.map +1 -1
  32. package/lib/commonjs/classes/HMSConstants.js +1 -2
  33. package/lib/commonjs/classes/HMSConstants.js.map +1 -1
  34. package/lib/commonjs/classes/HMSEventEmitter.js +1 -2
  35. package/lib/commonjs/classes/HMSEventEmitter.js.map +1 -1
  36. package/lib/commonjs/classes/HMSIOSAudioMode.js +1 -2
  37. package/lib/commonjs/classes/HMSIOSAudioMode.js.map +1 -1
  38. package/lib/commonjs/classes/HMSLayer.js +1 -2
  39. package/lib/commonjs/classes/HMSLayer.js.map +1 -1
  40. package/lib/commonjs/classes/HMSLogAlarmManager.js +1 -2
  41. package/lib/commonjs/classes/HMSLogAlarmManager.js.map +1 -1
  42. package/lib/commonjs/classes/HMSLogLevel.js +1 -2
  43. package/lib/commonjs/classes/HMSLogLevel.js.map +1 -1
  44. package/lib/commonjs/classes/HMSLogger.js +1 -2
  45. package/lib/commonjs/classes/HMSLogger.js.map +1 -1
  46. package/lib/commonjs/classes/HMSManagerModule.js +1 -2
  47. package/lib/commonjs/classes/HMSManagerModule.js.map +1 -1
  48. package/lib/commonjs/classes/HMSMessageRecipientType.js +1 -2
  49. package/lib/commonjs/classes/HMSMessageRecipientType.js.map +1 -1
  50. package/lib/commonjs/classes/HMSNativeEventListener.js +1 -2
  51. package/lib/commonjs/classes/HMSNativeEventListener.js.map +1 -1
  52. package/lib/commonjs/classes/HMSPIPConfig.js +4 -0
  53. package/lib/commonjs/classes/HMSPIPConfig.js.map +1 -0
  54. package/lib/commonjs/classes/HMSPIPListenerActions.js +2 -2
  55. package/lib/commonjs/classes/HMSPIPListenerActions.js.map +1 -1
  56. package/lib/commonjs/classes/HMSPeer.js +15 -0
  57. package/lib/commonjs/classes/HMSPeer.js.map +1 -1
  58. package/lib/commonjs/classes/HMSPeerListIterator.js +64 -0
  59. package/lib/commonjs/classes/HMSPeerListIterator.js.map +1 -0
  60. package/lib/commonjs/classes/HMSPeerListIteratorOptions.js +2 -0
  61. package/lib/commonjs/classes/HMSPeerListIteratorOptions.js.map +1 -0
  62. package/lib/commonjs/classes/HMSPeerUpdate.js +3 -4
  63. package/lib/commonjs/classes/HMSPeerUpdate.js.map +1 -1
  64. package/lib/commonjs/classes/HMSPeersCache.js +8 -2
  65. package/lib/commonjs/classes/HMSPeersCache.js.map +1 -1
  66. package/lib/commonjs/classes/HMSQualityLimitationReason.js +1 -2
  67. package/lib/commonjs/classes/HMSQualityLimitationReason.js.map +1 -1
  68. package/lib/commonjs/classes/HMSRoomCache.js +1 -2
  69. package/lib/commonjs/classes/HMSRoomCache.js.map +1 -1
  70. package/lib/commonjs/classes/HMSRoomUpdate.js +1 -2
  71. package/lib/commonjs/classes/HMSRoomUpdate.js.map +1 -1
  72. package/lib/commonjs/classes/HMSSDK.js +152 -8
  73. package/lib/commonjs/classes/HMSSDK.js.map +1 -1
  74. package/lib/commonjs/classes/HMSTrackSettingsInitState.js +1 -2
  75. package/lib/commonjs/classes/HMSTrackSettingsInitState.js.map +1 -1
  76. package/lib/commonjs/classes/HMSTrackSource.js +1 -2
  77. package/lib/commonjs/classes/HMSTrackSource.js.map +1 -1
  78. package/lib/commonjs/classes/HMSTrackType.js +1 -2
  79. package/lib/commonjs/classes/HMSTrackType.js.map +1 -1
  80. package/lib/commonjs/classes/HMSTrackUpdate.js +1 -2
  81. package/lib/commonjs/classes/HMSTrackUpdate.js.map +1 -1
  82. package/lib/commonjs/classes/HMSUpdateListenerActions.js +2 -2
  83. package/lib/commonjs/classes/HMSUpdateListenerActions.js.map +1 -1
  84. package/lib/commonjs/classes/HMSVideoCodec.js +1 -2
  85. package/lib/commonjs/classes/HMSVideoCodec.js.map +1 -1
  86. package/lib/commonjs/classes/HMSVideoViewMode.js +1 -2
  87. package/lib/commonjs/classes/HMSVideoViewMode.js.map +1 -1
  88. package/lib/commonjs/classes/HmsView.js +17 -5
  89. package/lib/commonjs/classes/HmsView.js.map +1 -1
  90. package/lib/commonjs/components/HMSHLSPlayer/HMSHLSPlayer.js +11 -9
  91. package/lib/commonjs/components/HMSHLSPlayer/HMSHLSPlayer.js.map +1 -1
  92. package/lib/commonjs/components/HMSHLSPlayer/RCTHMSHLSPlayer.js +2 -4
  93. package/lib/commonjs/components/HMSHLSPlayer/RCTHMSHLSPlayer.js.map +1 -1
  94. package/lib/commonjs/components/HMSHLSPlayer/hooks.js +11 -11
  95. package/lib/commonjs/components/HMSHLSPlayer/hooks.js.map +1 -1
  96. package/lib/commonjs/components/HMSHLSPlayer/index.js +8 -1
  97. package/lib/commonjs/components/HMSHLSPlayer/index.js.map +1 -1
  98. package/lib/commonjs/hooks/hmsviews.js +17 -0
  99. package/lib/commonjs/hooks/hmsviews.js.map +1 -0
  100. package/lib/commonjs/hooks/useHMSPeerUpdates.js +2 -2
  101. package/lib/commonjs/hooks/useHMSPeerUpdates.js.map +1 -1
  102. package/lib/commonjs/index.js +10 -3
  103. package/lib/commonjs/index.js.map +1 -1
  104. package/lib/commonjs/stores/hls-player-playback-slice.js +4 -0
  105. package/lib/commonjs/stores/hls-player-playback-slice.js.map +1 -1
  106. package/lib/commonjs/stores/hls-player-stats-store.js +1 -2
  107. package/lib/commonjs/stores/hls-player-stats-store.js.map +1 -1
  108. package/lib/commonjs/stores/hms-store.js +4 -3
  109. package/lib/commonjs/stores/hms-store.js.map +1 -1
  110. package/lib/commonjs/stores/hmsviews-slice.js +19 -0
  111. package/lib/commonjs/stores/hmsviews-slice.js.map +1 -0
  112. package/lib/commonjs/stores/types.js +9 -0
  113. package/lib/commonjs/stores/types.js.map +1 -1
  114. package/lib/commonjs/types.js +4 -7
  115. package/lib/commonjs/types.js.map +1 -1
  116. package/lib/module/classes/HMSPIPConfig.js +2 -0
  117. package/lib/module/classes/HMSPIPConfig.js.map +1 -0
  118. package/lib/module/classes/HMSPIPListenerActions.js +1 -0
  119. package/lib/module/classes/HMSPIPListenerActions.js.map +1 -1
  120. package/lib/module/classes/HMSPeer.js +15 -0
  121. package/lib/module/classes/HMSPeer.js.map +1 -1
  122. package/lib/module/classes/HMSPeerListIterator.js +58 -0
  123. package/lib/module/classes/HMSPeerListIterator.js.map +1 -0
  124. package/lib/module/classes/HMSPeerListIteratorOptions.js +2 -0
  125. package/lib/module/classes/HMSPeerListIteratorOptions.js.map +1 -0
  126. package/lib/module/classes/HMSPeerUpdate.js +2 -1
  127. package/lib/module/classes/HMSPeerUpdate.js.map +1 -1
  128. package/lib/module/classes/HMSPeersCache.js +7 -0
  129. package/lib/module/classes/HMSPeersCache.js.map +1 -1
  130. package/lib/module/classes/HMSSDK.js +153 -10
  131. package/lib/module/classes/HMSSDK.js.map +1 -1
  132. package/lib/module/classes/HMSUpdateListenerActions.js +1 -0
  133. package/lib/module/classes/HMSUpdateListenerActions.js.map +1 -1
  134. package/lib/module/classes/HmsView.js +14 -1
  135. package/lib/module/classes/HmsView.js.map +1 -1
  136. package/lib/module/components/HMSHLSPlayer/HMSHLSPlayer.js +9 -6
  137. package/lib/module/components/HMSHLSPlayer/HMSHLSPlayer.js.map +1 -1
  138. package/lib/module/components/HMSHLSPlayer/hooks.js +4 -0
  139. package/lib/module/components/HMSHLSPlayer/hooks.js.map +1 -1
  140. package/lib/module/components/HMSHLSPlayer/index.js +1 -1
  141. package/lib/module/components/HMSHLSPlayer/index.js.map +1 -1
  142. package/lib/module/hooks/hmsviews.js +12 -0
  143. package/lib/module/hooks/hmsviews.js.map +1 -0
  144. package/lib/module/index.js +1 -0
  145. package/lib/module/index.js.map +1 -1
  146. package/lib/module/stores/hls-player-playback-slice.js +4 -0
  147. package/lib/module/stores/hls-player-playback-slice.js.map +1 -1
  148. package/lib/module/stores/hms-store.js +3 -1
  149. package/lib/module/stores/hms-store.js.map +1 -1
  150. package/lib/module/stores/hmsviews-slice.js +12 -0
  151. package/lib/module/stores/hmsviews-slice.js.map +1 -0
  152. package/lib/module/stores/types.js +9 -0
  153. package/lib/module/stores/types.js.map +1 -1
  154. package/lib/module/types.js +1 -1
  155. package/lib/module/types.js.map +1 -1
  156. package/lib/typescript/classes/HMSPIPConfig.d.ts +7 -0
  157. package/lib/typescript/classes/HMSPIPListenerActions.d.ts +1 -0
  158. package/lib/typescript/classes/HMSPeer.d.ts +3 -0
  159. package/lib/typescript/classes/HMSPeerListIterator.d.ts +9 -0
  160. package/lib/typescript/classes/HMSPeerListIteratorOptions.d.ts +24 -0
  161. package/lib/typescript/classes/HMSPeerUpdate.d.ts +2 -1
  162. package/lib/typescript/classes/HMSPeersCache.d.ts +1 -0
  163. package/lib/typescript/classes/HMSSDK.d.ts +47 -8
  164. package/lib/typescript/classes/HMSUpdateListenerActions.d.ts +2 -1
  165. package/lib/typescript/components/HMSHLSPlayer/hooks.d.ts +2 -0
  166. package/lib/typescript/components/HMSHLSPlayer/index.d.ts +1 -1
  167. package/lib/typescript/hooks/hmsviews.d.ts +3 -0
  168. package/lib/typescript/index.d.ts +2 -0
  169. package/lib/typescript/stores/hms-store.d.ts +4 -3
  170. package/lib/typescript/stores/hmsviews-slice.d.ts +5 -0
  171. package/lib/typescript/stores/types.d.ts +14 -2
  172. package/lib/typescript/types.d.ts +9 -5
  173. package/package.json +3 -1
  174. package/sdk-versions.json +2 -2
  175. package/src/classes/HMSPIPConfig.ts +7 -0
  176. package/src/classes/HMSPIPListenerActions.ts +1 -0
  177. package/src/classes/HMSPeer.ts +25 -0
  178. package/src/classes/HMSPeerListIterator.ts +60 -0
  179. package/src/classes/HMSPeerListIteratorOptions.ts +26 -0
  180. package/src/classes/HMSPeerUpdate.ts +2 -0
  181. package/src/classes/HMSPeersCache.ts +7 -0
  182. package/src/classes/HMSSDK.tsx +188 -13
  183. package/src/classes/HMSUpdateListenerActions.ts +1 -0
  184. package/src/classes/HmsView.tsx +16 -2
  185. package/src/components/HMSHLSPlayer/HMSHLSPlayer.tsx +11 -5
  186. package/src/components/HMSHLSPlayer/hooks.ts +7 -0
  187. package/src/components/HMSHLSPlayer/index.ts +1 -0
  188. package/src/hooks/hmsviews.ts +13 -0
  189. package/src/index.ts +2 -0
  190. package/src/stores/hls-player-playback-slice.ts +3 -0
  191. package/src/stores/hms-store.ts +2 -0
  192. package/src/stores/hmsviews-slice.ts +20 -0
  193. package/src/stores/types.ts +20 -1
  194. package/src/types.ts +13 -3
  195. package/android/.gradle/6.7.1/executionHistory/executionHistory.bin +0 -0
  196. package/android/.gradle/6.7.1/executionHistory/executionHistory.lock +0 -0
  197. package/android/.gradle/6.7.1/fileChanges/last-build.bin +0 -0
  198. package/android/.gradle/6.7.1/fileHashes/fileHashes.bin +0 -0
  199. package/android/.gradle/6.7.1/fileHashes/fileHashes.lock +0 -0
  200. package/android/.gradle/6.7.1/gc.properties +0 -0
  201. package/android/.gradle/6.9/executionHistory/executionHistory.bin +0 -0
  202. package/android/.gradle/6.9/executionHistory/executionHistory.lock +0 -0
  203. package/android/.gradle/6.9/fileChanges/last-build.bin +0 -0
  204. package/android/.gradle/6.9/fileHashes/fileHashes.bin +0 -0
  205. package/android/.gradle/6.9/fileHashes/fileHashes.lock +0 -0
  206. package/android/.gradle/6.9/gc.properties +0 -0
  207. package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
  208. package/android/.gradle/buildOutputCleanup/cache.properties +0 -2
  209. package/android/.gradle/buildOutputCleanup/outputFiles.bin +0 -0
  210. package/android/.gradle/checksums/checksums.lock +0 -0
  211. package/android/.gradle/checksums/md5-checksums.bin +0 -0
  212. package/android/.gradle/checksums/sha1-checksums.bin +0 -0
  213. package/android/.gradle/configuration-cache/gc.properties +0 -0
  214. package/android/.gradle/vcs-1/gc.properties +0 -0
@@ -43,16 +43,36 @@ class HMSView(context: ReactContext) : FrameLayout(context) {
43
43
  newHeight: Int,
44
44
  ) {
45
45
  super.onResolutionChange(newWidth, newHeight)
46
- if (!jsCanApplyStyles) {
47
- val event: WritableMap = Arguments.createMap()
48
- context.getJSModule(RCTEventEmitter::class.java).receiveEvent(id, "topChange", event)
49
- jsCanApplyStyles = true
46
+
47
+ videoTrack?.let { nonnullVideoTrack ->
48
+ // emit when source is screen or `jsCanApplyStyles` is `false`
49
+ if (nonnullVideoTrack.source == "screen" || !jsCanApplyStyles) {
50
+ jsCanApplyStyles = true
51
+
52
+ val data = Arguments.createMap()
53
+ data.putInt("width", newWidth)
54
+ data.putInt("height", newHeight)
55
+
56
+ sendEventToJS("ON_RESOLUTION_CHANGE_EVENT", data)
57
+ }
50
58
  }
51
59
  }
52
60
  },
53
61
  )
54
62
  }
55
63
 
64
+ private fun sendEventToJS(
65
+ eventName: String,
66
+ data: WritableMap,
67
+ ) {
68
+ val event: WritableMap = Arguments.createMap()
69
+ event.putString("event", eventName)
70
+ event.putMap("data", data)
71
+
72
+ val reactContext = context as ReactContext
73
+ reactContext.getJSModule(RCTEventEmitter::class.java).receiveEvent(id, "topChange", event)
74
+ }
75
+
56
76
  @RequiresApi(Build.VERSION_CODES.N)
57
77
  fun captureHmsView(args: ReadableArray?) {
58
78
  hmsVideoView?.let {
@@ -27,7 +27,7 @@ class HmsScreenshareActivity : ComponentActivity() {
27
27
 
28
28
  override fun onSuccess() {
29
29
  HMSManager.hmsCollection[id]?.screenshareCallback?.resolve(
30
- HMSManager.hmsCollection[id]?.emitHMSSuccess(),
30
+ HMSManager.hmsCollection[id]?.getPromiseResolveData(),
31
31
  )
32
32
  finish()
33
33
  }
@@ -14,6 +14,7 @@ struct HMSConstants {
14
14
  static let ON_JOIN = "ON_JOIN"
15
15
  static let ON_ROOM_UPDATE = "ON_ROOM_UPDATE"
16
16
  static let ON_PEER_UPDATE = "3"
17
+ static let ON_PEER_LIST_UPDATED = "ON_PEER_LIST_UPDATED"
17
18
  static let ON_TRACK_UPDATE = "ON_TRACK_UPDATE"
18
19
  static let ON_ROLE_CHANGE_REQUEST = "ON_ROLE_CHANGE_REQUEST"
19
20
  static let ON_CHANGE_TRACK_STATE_REQUEST = "ON_CHANGE_TRACK_STATE_REQUEST"
@@ -93,6 +93,7 @@ class HMSDecoder: NSObject {
93
93
  case .nameUpdated: return "5"
94
94
  case .metadataUpdated: return "6"
95
95
  case .networkQualityUpdated: return "7"
96
+ case .handRaiseUpdated: return "8"
96
97
  default: return nil
97
98
  }
98
99
  }
@@ -112,6 +113,9 @@ class HMSDecoder: NSObject {
112
113
  case .metadataUpdated:
113
114
  peerDict["metadata"] = peer.metadata ?? ""
114
115
  return peerDict
116
+ case .handRaiseUpdated:
117
+ peerDict["isHandRaised"] = peer.isHandRaised
118
+ return peerDict
115
119
  case .roleUpdated:
116
120
  peerDict["role"] = getHmsRole(peer.role)
117
121
  return peerDict
@@ -138,6 +142,9 @@ class HMSDecoder: NSObject {
138
142
  case .metadataUpdated:
139
143
  peerDict["metadata"] = peer.metadata ?? ""
140
144
  return peerDict
145
+ case .handRaiseUpdated:
146
+ peerDict["isHandRaised"] = peer.isHandRaised
147
+ return peerDict
141
148
  case .roleUpdated:
142
149
  peerDict["role"] = getHmsRole(peer.role)
143
150
  return peerDict
@@ -167,6 +174,7 @@ class HMSDecoder: NSObject {
167
174
  if let metadata = peer.metadata {
168
175
  data["metadata"] = metadata
169
176
  }
177
+ data["isHandRaised"] = peer.isHandRaised
170
178
 
171
179
  // joinedAt
172
180
 
@@ -883,16 +891,19 @@ class HMSDecoder: NSObject {
883
891
  }
884
892
 
885
893
  static func getRemoteVideoStats(_ data: HMSRemoteVideoStats) -> [Any] {
886
- // [bitrate, bytesReceived, frameRate, jitter, packetsLost, packetsReceived, resolution]
887
- return [
894
+
895
+ var stats = [Any]()
896
+
897
+ stats = [
888
898
  data.bitrate,
889
- data.bytesReceived,
899
+ Double(data.bytesReceived),
890
900
  data.frameRate,
891
901
  data.jitter,
892
- data.packetsLost,
893
- data.packetsReceived,
902
+ Double(data.packetsLost),
903
+ Double(data.packetsReceived),
894
904
  HMSDecoder.getHmsVideoResolution(data.resolution)
895
905
  ]
906
+ return stats
896
907
  }
897
908
 
898
909
  static func getHmsMessageRecipient(_ recipient: HMSMessageRecipient) -> [String: Any] {
@@ -308,18 +308,31 @@ class HMSHLSPlayer: UIView {
308
308
  sendHLSPlaybackEventToJS(HMSHLSPlayerConstants.ON_PLAYBACK_FAILURE_EVENT, data)
309
309
  }
310
310
 
311
- fileprivate func onPlaybackStateChanged(state: HMSHLSPlaybackState? = nil, videoSizeChanged: Bool = false, aspectRatio: Double? = nil) {
311
+ fileprivate func onPlaybackStateChanged(state: HMSHLSPlaybackState) {
312
312
  guard onHmsHlsPlaybackEvent != nil else { return }
313
313
 
314
314
  var data = [String: Any]()
315
315
 
316
- data["state"] = videoSizeChanged ? "onVideoSizeChanged" : state?.description
316
+ data["state"] = state.description
317
317
 
318
- if let aspectRatio = aspectRatio {
319
- data["aspectRatio"] = aspectRatio
318
+ sendHLSPlaybackEventToJS(HMSHLSPlayerConstants.ON_PLAYBACK_STATE_CHANGE_EVENT, data)
319
+ }
320
+
321
+ fileprivate func onResolutionChanged(videoSize: CGSize) {
322
+ if videoSize.width >= videoSize.height {
323
+ hmsHLSPlayerViewController?.videoGravity = .resizeAspect
324
+ } else {
325
+ hmsHLSPlayerViewController?.videoGravity = .resizeAspectFill
320
326
  }
321
327
 
322
- sendHLSPlaybackEventToJS(HMSHLSPlayerConstants.ON_PLAYBACK_STATE_CHANGE_EVENT, data)
328
+ guard onHmsHlsPlaybackEvent != nil else { return }
329
+
330
+ var data = [String: Any]()
331
+
332
+ data["width"] = videoSize.width
333
+ data["height"] = videoSize.height
334
+
335
+ sendHLSPlaybackEventToJS(HMSHLSPlayerConstants.ON_PLAYBACK_RESOLUTION_CHANGE_EVENT, data)
323
336
  }
324
337
  }
325
338
 
@@ -343,12 +356,7 @@ class HLSPlaybackEventController: HMSHLSPlayerDelegate {
343
356
  }
344
357
 
345
358
  func onResolutionChanged(videoSize: CGSize) {
346
- if videoSize.width >= videoSize.height {
347
- hmsHlsPlayerDelegate?.hmsHLSPlayerViewController?.videoGravity = .resizeAspect
348
- } else {
349
- hmsHlsPlayerDelegate?.hmsHLSPlayerViewController?.videoGravity = .resizeAspectFill
350
- }
351
- hmsHlsPlayerDelegate?.onPlaybackStateChanged(videoSizeChanged: true, aspectRatio: videoSize.width/videoSize.height)
359
+ hmsHlsPlayerDelegate?.onResolutionChanged(videoSize: videoSize)
352
360
  }
353
361
  }
354
362
 
@@ -357,6 +365,7 @@ enum HMSHLSPlayerConstants {
357
365
  static let ON_PLAYBACK_CUE_EVENT = "ON_PLAYBACK_CUE_EVENT"
358
366
  static let ON_PLAYBACK_FAILURE_EVENT = "ON_PLAYBACK_FAILURE_EVENT"
359
367
  static let ON_PLAYBACK_STATE_CHANGE_EVENT = "ON_PLAYBACK_STATE_CHANGE_EVENT"
368
+ static let ON_PLAYBACK_RESOLUTION_CHANGE_EVENT = "ON_PLAYBACK_RESOLUTION_CHANGE_EVENT"
360
369
 
361
370
  // HLS Playback Stats Events
362
371
  static let ON_STATS_EVENT_UPDATE = "ON_STATS_EVENT_UPDATE"
@@ -17,7 +17,7 @@ class HMSHelper: NSObject {
17
17
  return "SEND_ALL_REQUIRED_KEYS"
18
18
  }
19
19
 
20
- static func getPeerFromPeerId(_ peerID: String?, remotePeers: [HMSRemotePeer]?, localPeer: HMSLocalPeer?) -> HMSPeer? {
20
+ static func getPeerFromPeerId(_ peerID: String?, remotePeers: [HMSRemotePeer]?, localPeer: HMSLocalPeer? = nil) -> HMSPeer? {
21
21
 
22
22
  guard let peerID = peerID, let peers = remotePeers else { return nil }
23
23
  if peerID == localPeer?.peerID {
@@ -26,11 +26,25 @@ class HMSHelper: NSObject {
26
26
  return peers.first { $0.peerID == peerID }
27
27
  }
28
28
 
29
- static func getRemotePeerFromPeerId(_ peerID: String?, remotePeers: [HMSRemotePeer]?) -> HMSPeer? {
29
+ static func getRemotePeerFromPeerId(_ peerID: String?, hmsSDK: HMSSDK?, completion: @escaping (_ peer: HMSPeer?) -> Void) {
30
+ guard let peerID = peerID, let hms = hmsSDK, let peers = hms.remotePeers else {
31
+ completion(nil)
32
+ return
33
+ }
30
34
 
31
- guard let peerID = peerID, let peers = remotePeers else { return nil }
35
+ if let peerFromList = peers.first(where: { $0.peerID == peerID }) {
36
+ completion(peerFromList)
37
+ return
38
+ }
32
39
 
33
- return peers.first { $0.peerID == peerID }
40
+ let peerListIterator = hms.getPeerListIterator(options: HMSPeerListIteratorOptions(filterByPeerIds: [peerID], limit: 1))
41
+ peerListIterator.next() { peers, error in
42
+ guard let nonnilPeers = peers, let firstPeer = nonnilPeers.first else {
43
+ completion(nil)
44
+ return
45
+ }
46
+ completion(firstPeer)
47
+ }
34
48
  }
35
49
 
36
50
  static func getRolesFromRoleNames(_ targetedRoles: [String]?, roles: [HMSRole]?) -> [HMSRole] {
@@ -347,6 +361,21 @@ class HMSHelper: NSObject {
347
361
  return nil
348
362
  }
349
363
 
364
+ static func getPeerListIteratorOptions(_ data: NSDictionary?) -> HMSPeerListIteratorOptions? {
365
+ guard let config = data else {
366
+ return nil
367
+ }
368
+
369
+ let role = config["byRoleName"] as? String
370
+ let peerIds = config["peerIds"] as? [String]
371
+
372
+ if let limit = config["limit"] as? Int {
373
+ return HMSPeerListIteratorOptions(filterByRoleName: role, filterByPeerIds: peerIds, limit: limit)
374
+ }
375
+
376
+ return HMSPeerListIteratorOptions(filterByRoleName: role, filterByPeerIds: peerIds)
377
+ }
378
+
350
379
  private static func getAudioMode(from mode: String?) -> HMSAudioMode? {
351
380
  switch mode {
352
381
  case "voice":
package/ios/HMSManager.m CHANGED
@@ -12,8 +12,14 @@ RCT_EXTERN_METHOD(previewForRole
12
12
  RCT_EXTERN_METHOD(cancelPreview : (NSDictionary)data
13
13
  : (RCTPromiseResolveBlock)resolve
14
14
  : (RCTPromiseRejectBlock)reject)
15
- RCT_EXTERN_METHOD(setLocalMute : (NSDictionary)isMute)
16
- RCT_EXTERN_METHOD(setLocalVideoMute : (NSDictionary)isMute)
15
+ RCT_EXTERN_METHOD(setLocalMute
16
+ : (NSDictionary)isMute
17
+ : (RCTPromiseResolveBlock)resolve
18
+ : (RCTPromiseRejectBlock)reject)
19
+ RCT_EXTERN_METHOD(setLocalVideoMute
20
+ : (NSDictionary)isMute
21
+ : (RCTPromiseResolveBlock)resolve
22
+ : (RCTPromiseRejectBlock)reject)
17
23
  RCT_EXTERN_METHOD(sendBroadcastMessage
18
24
  : (NSDictionary)data
19
25
  : (RCTPromiseResolveBlock)resolve
@@ -26,7 +32,10 @@ RCT_EXTERN_METHOD(sendDirectMessage
26
32
  : (NSDictionary)data
27
33
  : (RCTPromiseResolveBlock)resolve
28
34
  : (RCTPromiseRejectBlock)reject)
29
- RCT_EXTERN_METHOD(setPlaybackAllowed : (NSDictionary)data)
35
+ RCT_EXTERN_METHOD(setPlaybackAllowed
36
+ : (NSDictionary)data
37
+ : (RCTPromiseResolveBlock)resolve
38
+ : (RCTPromiseRejectBlock)reject)
30
39
  RCT_EXTERN_METHOD(removePeer
31
40
  : (NSDictionary)data
32
41
  : (RCTPromiseResolveBlock)resolve
@@ -54,7 +63,10 @@ RCT_EXTERN_METHOD(getRoom
54
63
  : (RCTPromiseResolveBlock)resolve
55
64
  : (RCTPromiseRejectBlock)reject)
56
65
  RCT_EXTERN_METHOD(switchCamera : (NSDictionary)data)
57
- RCT_EXTERN_METHOD(setVolume : (NSDictionary)data)
66
+ RCT_EXTERN_METHOD(setVolume
67
+ : (NSDictionary)data
68
+ : (RCTPromiseResolveBlock)resolve
69
+ : (RCTPromiseRejectBlock)reject)
58
70
  RCT_EXTERN_METHOD(build
59
71
  : (NSDictionary)data
60
72
  : (RCTPromiseResolveBlock)resolve
@@ -63,7 +75,10 @@ RCT_EXTERN_METHOD(leave
63
75
  : (NSDictionary)data
64
76
  : (RCTPromiseResolveBlock)resolve
65
77
  : (RCTPromiseRejectBlock)reject)
66
- RCT_EXTERN_METHOD(setPlaybackForAllAudio : (NSDictionary)mute)
78
+ RCT_EXTERN_METHOD(setPlaybackForAllAudio
79
+ : (NSDictionary)mute
80
+ : (RCTPromiseResolveBlock)resolve
81
+ : (RCTPromiseRejectBlock)reject)
67
82
  RCT_EXTERN_METHOD(remoteMuteAllAudio
68
83
  : (NSDictionary)data
69
84
  : (RCTPromiseResolveBlock)resolve
@@ -96,6 +111,18 @@ RCT_EXTERN_METHOD(changeName
96
111
  : (NSDictionary)data
97
112
  : (RCTPromiseResolveBlock)resolve
98
113
  : (RCTPromiseRejectBlock)reject)
114
+ RCT_EXTERN_METHOD(raiseLocalPeerHand
115
+ : (NSDictionary)data
116
+ : (RCTPromiseResolveBlock)resolve
117
+ : (RCTPromiseRejectBlock)reject)
118
+ RCT_EXTERN_METHOD(lowerLocalPeerHand
119
+ : (NSDictionary)data
120
+ : (RCTPromiseResolveBlock)resolve
121
+ : (RCTPromiseRejectBlock)reject)
122
+ RCT_EXTERN_METHOD(lowerRemotePeerHand
123
+ : (NSDictionary)data
124
+ : (RCTPromiseResolveBlock)resolve
125
+ : (RCTPromiseRejectBlock)reject)
99
126
  RCT_EXTERN_METHOD(destroy
100
127
  : (NSDictionary)data
101
128
  : (RCTPromiseResolveBlock)resolve
@@ -120,10 +147,22 @@ RCT_EXTERN_METHOD(playAudioShare
120
147
  : (NSDictionary)data
121
148
  : (RCTPromiseResolveBlock)resolve
122
149
  : (RCTPromiseRejectBlock)reject)
123
- RCT_EXTERN_METHOD(setAudioShareVolume : (NSDictionary)data)
124
- RCT_EXTERN_METHOD(stopAudioShare : (NSDictionary)data)
125
- RCT_EXTERN_METHOD(resumeAudioShare : (NSDictionary)data)
126
- RCT_EXTERN_METHOD(pauseAudioShare : (NSDictionary)data)
150
+ RCT_EXTERN_METHOD(setAudioShareVolume
151
+ : (NSDictionary)data
152
+ : (RCTPromiseResolveBlock)resolve
153
+ : (RCTPromiseRejectBlock)reject)
154
+ RCT_EXTERN_METHOD(stopAudioShare
155
+ : (NSDictionary)data
156
+ : (RCTPromiseResolveBlock)resolve
157
+ : (RCTPromiseRejectBlock)reject)
158
+ RCT_EXTERN_METHOD(resumeAudioShare
159
+ : (NSDictionary)data
160
+ : (RCTPromiseResolveBlock)resolve
161
+ : (RCTPromiseRejectBlock)reject)
162
+ RCT_EXTERN_METHOD(pauseAudioShare
163
+ : (NSDictionary)data
164
+ : (RCTPromiseResolveBlock)resolve
165
+ : (RCTPromiseRejectBlock)reject)
127
166
  RCT_EXTERN_METHOD(audioShareIsPlaying
128
167
  : (NSDictionary)data
129
168
  : (RCTPromiseResolveBlock)resolve
@@ -170,7 +209,10 @@ RCT_EXTERN_METHOD(disableEvent
170
209
  : (NSDictionary)data
171
210
  : (RCTPromiseResolveBlock)resolve
172
211
  : (RCTPromiseRejectBlock)reject)
173
- RCT_EXTERN_METHOD(restrictData : (NSDictionary)data)
212
+ RCT_EXTERN_METHOD(restrictData
213
+ : (NSDictionary)data
214
+ : (RCTPromiseResolveBlock)resolve
215
+ : (RCTPromiseRejectBlock)reject)
174
216
  RCT_EXTERN_METHOD(getAuthTokenByRoomCode
175
217
  : (NSDictionary)data
176
218
  : (RCTPromiseResolveBlock)resolve
@@ -240,4 +282,18 @@ RCT_EXTERN_METHOD(acceptRoleChange
240
282
  : (RCTPromiseResolveBlock)resolve
241
283
  : (RCTPromiseRejectBlock)reject)
242
284
 
285
+ #pragma mark - Peer List Iterator
286
+
287
+ RCT_EXTERN__BLOCKING_SYNCHRONOUS_METHOD(getPeerListIterator : (NSDictionary)data)
288
+
289
+ RCT_EXTERN_METHOD(peerListIteratorHasNext
290
+ : (NSDictionary)data
291
+ : (RCTPromiseResolveBlock)resolve
292
+ : (RCTPromiseRejectBlock)reject)
293
+
294
+ RCT_EXTERN_METHOD(peerListIteratorNext
295
+ : (NSDictionary)data
296
+ : (RCTPromiseResolveBlock)resolve
297
+ : (RCTPromiseRejectBlock)reject)
298
+
243
299
  @end
@@ -37,7 +37,7 @@ class HMSManager: RCTEventEmitter {
37
37
  }
38
38
 
39
39
  override func supportedEvents() -> [String]! {
40
- return [ON_JOIN, ON_PREVIEW, ON_ROOM_UPDATE, ON_PEER_UPDATE, ON_TRACK_UPDATE, ON_ERROR, ON_MESSAGE, ON_SPEAKER, RECONNECTING, RECONNECTED, ON_ROLE_CHANGE_REQUEST, ON_CHANGE_TRACK_STATE_REQUEST, ON_REMOVED_FROM_ROOM, ON_RTC_STATS, ON_LOCAL_AUDIO_STATS, ON_LOCAL_VIDEO_STATS, ON_REMOTE_AUDIO_STATS, ON_REMOTE_VIDEO_STATS, ON_AUDIO_DEVICE_CHANGED, HMSConstants.ON_SESSION_STORE_AVAILABLE, HMSConstants.ON_SESSION_STORE_CHANGED]
40
+ return [ON_JOIN, ON_PREVIEW, ON_ROOM_UPDATE, ON_PEER_UPDATE, ON_TRACK_UPDATE, ON_ERROR, ON_MESSAGE, ON_SPEAKER, RECONNECTING, RECONNECTED, ON_ROLE_CHANGE_REQUEST, ON_CHANGE_TRACK_STATE_REQUEST, ON_REMOVED_FROM_ROOM, ON_RTC_STATS, ON_LOCAL_AUDIO_STATS, ON_LOCAL_VIDEO_STATS, ON_REMOTE_AUDIO_STATS, ON_REMOTE_VIDEO_STATS, ON_AUDIO_DEVICE_CHANGED, HMSConstants.ON_SESSION_STORE_AVAILABLE, HMSConstants.ON_SESSION_STORE_CHANGED, HMSConstants.ON_PEER_LIST_UPDATED]
41
41
  }
42
42
 
43
43
  // MARK: - HMS SDK Delegate Callbacks
@@ -125,17 +125,17 @@ class HMSManager: RCTEventEmitter {
125
125
  // MARK: - Audio & Video Actions
126
126
 
127
127
  @objc
128
- func setLocalMute(_ data: NSDictionary) {
128
+ func setLocalMute(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
129
129
  let hms = HMSHelper.getHms(data, hmsCollection)
130
130
 
131
- hms?.setLocalMute(data)
131
+ hms?.setLocalMute(data, resolve, reject)
132
132
  }
133
133
 
134
134
  @objc
135
- func setLocalVideoMute(_ data: NSDictionary) {
135
+ func setLocalVideoMute(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
136
136
  let hms = HMSHelper.getHms(data, hmsCollection)
137
137
 
138
- hms?.setLocalVideoMute(data)
138
+ hms?.setLocalVideoMute(data, resolve, reject)
139
139
  }
140
140
 
141
141
  @objc
@@ -157,10 +157,10 @@ class HMSManager: RCTEventEmitter {
157
157
  }
158
158
 
159
159
  @objc
160
- func setPlaybackAllowed(_ data: NSDictionary) {
160
+ func setPlaybackAllowed(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
161
161
  let hms = HMSHelper.getHms(data, hmsCollection)
162
162
 
163
- hms?.setPlaybackAllowed(data)
163
+ hms?.setPlaybackAllowed(data, resolve, reject)
164
164
  }
165
165
 
166
166
  @objc
@@ -171,10 +171,10 @@ class HMSManager: RCTEventEmitter {
171
171
  }
172
172
 
173
173
  @objc
174
- func setPlaybackForAllAudio(_ data: NSDictionary) {
174
+ func setPlaybackForAllAudio(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
175
175
  let hms = HMSHelper.getHms(data, hmsCollection)
176
176
 
177
- hms?.setPlaybackForAllAudio(data)
177
+ hms?.setPlaybackForAllAudio(data, resolve, reject)
178
178
  }
179
179
 
180
180
  @objc
@@ -185,10 +185,10 @@ class HMSManager: RCTEventEmitter {
185
185
  }
186
186
 
187
187
  @objc
188
- func setVolume(_ data: NSDictionary) {
188
+ func setVolume(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
189
189
  let hms = HMSHelper.getHms(data, hmsCollection)
190
190
 
191
- hms?.setVolume(data)
191
+ hms?.setVolume(data, resolve, reject)
192
192
  }
193
193
 
194
194
  @objc
@@ -312,6 +312,27 @@ class HMSManager: RCTEventEmitter {
312
312
  hms?.changeName(data, resolve, reject)
313
313
  }
314
314
 
315
+ @objc
316
+ func raiseLocalPeerHand(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
317
+ let hms = HMSHelper.getHms(data, hmsCollection)
318
+
319
+ hms?.raiseLocalPeerHand(resolve, reject)
320
+ }
321
+
322
+ @objc
323
+ func lowerLocalPeerHand(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
324
+ let hms = HMSHelper.getHms(data, hmsCollection)
325
+
326
+ hms?.lowerLocalPeerHand(resolve, reject)
327
+ }
328
+
329
+ @objc
330
+ func lowerRemotePeerHand(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
331
+ let hms = HMSHelper.getHms(data, hmsCollection)
332
+
333
+ hms?.lowerRemotePeerHand(data, resolve, reject)
334
+ }
335
+
315
336
  // MARK: - RTMP Streaming & Recording
316
337
 
317
338
  @objc
@@ -377,31 +398,31 @@ class HMSManager: RCTEventEmitter {
377
398
  }
378
399
 
379
400
  @objc
380
- func setAudioShareVolume(_ data: NSDictionary) {
401
+ func setAudioShareVolume(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
381
402
  let hms = HMSHelper.getHms(data, hmsCollection)
382
403
 
383
- hms?.setAudioShareVolume(data)
404
+ hms?.setAudioShareVolume(data, resolve, reject)
384
405
  }
385
406
 
386
407
  @objc
387
- func stopAudioShare(_ data: NSDictionary) {
408
+ func stopAudioShare(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
388
409
  let hms = HMSHelper.getHms(data, hmsCollection)
389
410
 
390
- hms?.stopAudioShare(data)
411
+ hms?.stopAudioShare(data, resolve, reject)
391
412
  }
392
413
 
393
414
  @objc
394
- func resumeAudioShare(_ data: NSDictionary) {
415
+ func resumeAudioShare(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
395
416
  let hms = HMSHelper.getHms(data, hmsCollection)
396
417
 
397
- hms?.resumeAudioShare(data)
418
+ hms?.resumeAudioShare(data, resolve, reject)
398
419
  }
399
420
 
400
421
  @objc
401
- func pauseAudioShare(_ data: NSDictionary) {
422
+ func pauseAudioShare(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
402
423
  let hms = HMSHelper.getHms(data, hmsCollection)
403
424
 
404
- hms?.pauseAudioShare(data)
425
+ hms?.pauseAudioShare(data, resolve, reject)
405
426
  }
406
427
 
407
428
  @objc
@@ -476,10 +497,10 @@ class HMSManager: RCTEventEmitter {
476
497
  // MARK: - Restrict sending whole HMSRole object
477
498
 
478
499
  @objc
479
- func restrictData(_ data: NSDictionary) {
500
+ func restrictData(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
480
501
  let hms = HMSHelper.getHms(data, hmsCollection)
481
502
 
482
- hms?.restrictData(data)
503
+ hms?.restrictData(data, resolve, reject)
483
504
  }
484
505
 
485
506
  // MARK: - Room Code Auth Token API
@@ -599,4 +620,27 @@ class HMSManager: RCTEventEmitter {
599
620
 
600
621
  hms?.removeKeyChangeListener(data, resolve, reject)
601
622
  }
623
+
624
+ // MARK: - Peer List Iterator
625
+
626
+ @objc
627
+ func getPeerListIterator(_ data: NSDictionary) -> [AnyHashable: Any]? {
628
+ let hms = HMSHelper.getHms(data, hmsCollection)
629
+
630
+ return hms?.getPeerListIterator(data)
631
+ }
632
+
633
+ @objc
634
+ func peerListIteratorHasNext(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
635
+ let hms = HMSHelper.getHms(data, hmsCollection)
636
+
637
+ hms?.peerListIteratorHasNext(data, resolve, reject)
638
+ }
639
+
640
+ @objc
641
+ func peerListIteratorNext(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
642
+ let hms = HMSHelper.getHms(data, hmsCollection)
643
+
644
+ hms?.peerListIteratorNext(data, resolve, reject)
645
+ }
602
646
  }