@100mslive/react-native-hms 1.1.1 → 1.3.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 (312) hide show
  1. package/README.md +145 -340
  2. package/android/build.gradle +1 -1
  3. package/android/src/main/java/com/reactnativehmssdk/HMSDecoder.kt +292 -94
  4. package/android/src/main/java/com/reactnativehmssdk/HMSHelper.kt +127 -127
  5. package/android/src/main/java/com/reactnativehmssdk/HMSManager.kt +167 -115
  6. package/android/src/main/java/com/reactnativehmssdk/HMSRNSDK.kt +283 -45
  7. package/android/src/main/java/com/reactnativehmssdk/HMSSDKViewManager.kt +7 -7
  8. package/ios/HMSDecoder.swift +276 -137
  9. package/ios/HMSHelper.swift +3 -3
  10. package/ios/HMSManager.m +7 -0
  11. package/ios/HMSManager.swift +37 -2
  12. package/ios/HMSRNSDK.swift +339 -97
  13. package/ios/HMSView.m +2 -0
  14. package/ios/HMSView.swift +35 -3
  15. package/ios/Hmssdk.xcodeproj/project.xcworkspace/xcuserdata/yogesh.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  16. package/lib/commonjs/classes/HMSAudioCodec.js +4 -4
  17. package/lib/commonjs/classes/HMSAudioCodec.js.map +1 -1
  18. package/lib/commonjs/classes/HMSAudioDevice.js +4 -4
  19. package/lib/commonjs/classes/HMSAudioDevice.js.map +1 -1
  20. package/lib/commonjs/classes/HMSAudioFilePlayerNode.js.map +1 -1
  21. package/lib/commonjs/classes/HMSAudioMixerSource.js.map +1 -1
  22. package/lib/commonjs/classes/HMSAudioMixingMode.js +4 -4
  23. package/lib/commonjs/classes/HMSAudioMixingMode.js.map +1 -1
  24. package/lib/commonjs/classes/HMSAudioMode.js +4 -4
  25. package/lib/commonjs/classes/HMSAudioMode.js.map +1 -1
  26. package/lib/commonjs/classes/HMSAudioNode.js +2 -1
  27. package/lib/commonjs/classes/HMSAudioNode.js.map +1 -1
  28. package/lib/commonjs/classes/HMSAudioSettings.js.map +1 -1
  29. package/lib/commonjs/classes/HMSAudioTrack.js.map +1 -1
  30. package/lib/commonjs/classes/HMSAudioTrackSettings.js.map +1 -1
  31. package/lib/commonjs/classes/HMSBrowserRecordingState.js.map +1 -1
  32. package/lib/commonjs/classes/HMSCameraFacing.js +4 -4
  33. package/lib/commonjs/classes/HMSCameraFacing.js.map +1 -1
  34. package/lib/commonjs/classes/HMSChangeTrackStateRequest.js.map +1 -1
  35. package/lib/commonjs/classes/HMSConfig.js.map +1 -1
  36. package/lib/commonjs/classes/HMSConstants.js +11 -0
  37. package/lib/commonjs/classes/HMSConstants.js.map +1 -0
  38. package/lib/commonjs/classes/HMSEncoder.js +129 -102
  39. package/lib/commonjs/classes/HMSEncoder.js.map +1 -1
  40. package/lib/commonjs/classes/HMSException.js.map +1 -1
  41. package/lib/commonjs/classes/HMSHLSConfig.js.map +1 -1
  42. package/lib/commonjs/classes/HMSHLSMeetingURLVariant.js.map +1 -1
  43. package/lib/commonjs/classes/HMSHLSRecordingConfig.js.map +1 -1
  44. package/lib/commonjs/classes/HMSHLSRecordingState.js.map +1 -1
  45. package/lib/commonjs/classes/HMSHLSStreamingState.js.map +1 -1
  46. package/lib/commonjs/classes/HMSHLSVariant.js.map +1 -1
  47. package/lib/commonjs/classes/HMSHelper.js.map +1 -1
  48. package/lib/commonjs/classes/HMSLocalAudioStats.js.map +1 -1
  49. package/lib/commonjs/classes/HMSLocalAudioTrack.js.map +1 -1
  50. package/lib/commonjs/classes/HMSLocalPeer.js +0 -1
  51. package/lib/commonjs/classes/HMSLocalPeer.js.map +1 -1
  52. package/lib/commonjs/classes/HMSLocalVideoStats.js.map +1 -1
  53. package/lib/commonjs/classes/HMSLocalVideoTrack.js +0 -2
  54. package/lib/commonjs/classes/HMSLocalVideoTrack.js.map +1 -1
  55. package/lib/commonjs/classes/HMSLogAlarmManager.js +4 -4
  56. package/lib/commonjs/classes/HMSLogAlarmManager.js.map +1 -1
  57. package/lib/commonjs/classes/HMSLogLevel.js +4 -4
  58. package/lib/commonjs/classes/HMSLogLevel.js.map +1 -1
  59. package/lib/commonjs/classes/HMSLogSettings.js.map +1 -1
  60. package/lib/commonjs/classes/HMSLogger.js +17 -25
  61. package/lib/commonjs/classes/HMSLogger.js.map +1 -1
  62. package/lib/commonjs/classes/HMSMessage.js.map +1 -1
  63. package/lib/commonjs/classes/HMSMessageRecipient.js +1 -1
  64. package/lib/commonjs/classes/HMSMessageRecipient.js.map +1 -1
  65. package/lib/commonjs/classes/HMSMessageRecipientType.js +4 -4
  66. package/lib/commonjs/classes/HMSMessageRecipientType.js.map +1 -1
  67. package/lib/commonjs/classes/HMSMessageType.js +4 -4
  68. package/lib/commonjs/classes/HMSMessageType.js.map +1 -1
  69. package/lib/commonjs/classes/HMSMicNode.js.map +1 -1
  70. package/lib/commonjs/classes/HMSNativeEventEmitter.js +101 -0
  71. package/lib/commonjs/classes/HMSNativeEventEmitter.js.map +1 -0
  72. package/lib/commonjs/classes/HMSNetworkQuality.js.map +1 -1
  73. package/lib/commonjs/classes/HMSPIPListenerActions.js +4 -4
  74. package/lib/commonjs/classes/HMSPIPListenerActions.js.map +1 -1
  75. package/lib/commonjs/classes/HMSPeer.js +69 -18
  76. package/lib/commonjs/classes/HMSPeer.js.map +1 -1
  77. package/lib/commonjs/classes/HMSPeerUpdate.js +7 -5
  78. package/lib/commonjs/classes/HMSPeerUpdate.js.map +1 -1
  79. package/lib/commonjs/classes/HMSPeersCache.js +229 -0
  80. package/lib/commonjs/classes/HMSPeersCache.js.map +1 -0
  81. package/lib/commonjs/classes/HMSPermissions.js.map +1 -1
  82. package/lib/commonjs/classes/HMSPublishSettings.js +0 -6
  83. package/lib/commonjs/classes/HMSPublishSettings.js.map +1 -1
  84. package/lib/commonjs/classes/HMSRTCStats.js.map +1 -1
  85. package/lib/commonjs/classes/HMSRTCStatsReport.js.map +1 -1
  86. package/lib/commonjs/classes/HMSRTMPConfig.js.map +1 -1
  87. package/lib/commonjs/classes/HMSRemoteAudioStats.js.map +1 -1
  88. package/lib/commonjs/classes/HMSRemoteAudioTrack.js.map +1 -1
  89. package/lib/commonjs/classes/HMSRemotePeer.js +0 -1
  90. package/lib/commonjs/classes/HMSRemotePeer.js.map +1 -1
  91. package/lib/commonjs/classes/HMSRemoteVideoStats.js.map +1 -1
  92. package/lib/commonjs/classes/HMSRemoteVideoTrack.js.map +1 -1
  93. package/lib/commonjs/classes/HMSRole.js +0 -6
  94. package/lib/commonjs/classes/HMSRole.js.map +1 -1
  95. package/lib/commonjs/classes/HMSRoleChangeRequest.js +3 -1
  96. package/lib/commonjs/classes/HMSRoleChangeRequest.js.map +1 -1
  97. package/lib/commonjs/classes/HMSRoom.js +79 -22
  98. package/lib/commonjs/classes/HMSRoom.js.map +1 -1
  99. package/lib/commonjs/classes/HMSRoomCache.js +128 -0
  100. package/lib/commonjs/classes/HMSRoomCache.js.map +1 -0
  101. package/lib/commonjs/classes/HMSRoomUpdate.js +4 -4
  102. package/lib/commonjs/classes/HMSRoomUpdate.js.map +1 -1
  103. package/lib/commonjs/classes/HMSRtmpStreamingState.js.map +1 -1
  104. package/lib/commonjs/classes/HMSRtmpVideoResolution.js.map +1 -1
  105. package/lib/commonjs/classes/HMSSDK.js +933 -158
  106. package/lib/commonjs/classes/HMSSDK.js.map +1 -1
  107. package/lib/commonjs/classes/HMSScreenBroadcastAudioReceiverNode.js.map +1 -1
  108. package/lib/commonjs/classes/HMSServerRecordingState.js.map +1 -1
  109. package/lib/commonjs/classes/HMSSimulcastLayerSettings.js.map +1 -1
  110. package/lib/commonjs/classes/HMSSimulcastSettings.js.map +1 -1
  111. package/lib/commonjs/classes/HMSSpeaker.js.map +1 -1
  112. package/lib/commonjs/classes/HMSSubscribeSettings.js +0 -2
  113. package/lib/commonjs/classes/HMSSubscribeSettings.js.map +1 -1
  114. package/lib/commonjs/classes/HMSTrack.js.map +1 -1
  115. package/lib/commonjs/classes/HMSTrackSettings.js.map +1 -1
  116. package/lib/commonjs/classes/HMSTrackSettingsInitState.js +4 -4
  117. package/lib/commonjs/classes/HMSTrackSettingsInitState.js.map +1 -1
  118. package/lib/commonjs/classes/HMSTrackSource.js +4 -4
  119. package/lib/commonjs/classes/HMSTrackSource.js.map +1 -1
  120. package/lib/commonjs/classes/HMSTrackType.js +4 -4
  121. package/lib/commonjs/classes/HMSTrackType.js.map +1 -1
  122. package/lib/commonjs/classes/HMSTrackUpdate.js +4 -4
  123. package/lib/commonjs/classes/HMSTrackUpdate.js.map +1 -1
  124. package/lib/commonjs/classes/HMSUpdateListenerActions.js +5 -5
  125. package/lib/commonjs/classes/HMSUpdateListenerActions.js.map +1 -1
  126. package/lib/commonjs/classes/HMSVideoCodec.js +4 -4
  127. package/lib/commonjs/classes/HMSVideoCodec.js.map +1 -1
  128. package/lib/commonjs/classes/HMSVideoResolution.js.map +1 -1
  129. package/lib/commonjs/classes/HMSVideoSettings.js.map +1 -1
  130. package/lib/commonjs/classes/HMSVideoTrack.js.map +1 -1
  131. package/lib/commonjs/classes/HMSVideoTrackSettings.js.map +1 -1
  132. package/lib/commonjs/classes/HMSVideoViewMode.js +4 -4
  133. package/lib/commonjs/classes/HMSVideoViewMode.js.map +1 -1
  134. package/lib/commonjs/classes/HmsView.js +2 -1
  135. package/lib/commonjs/classes/HmsView.js.map +1 -1
  136. package/lib/commonjs/index.js.map +1 -1
  137. package/lib/module/classes/HMSAudioCodec.js +3 -3
  138. package/lib/module/classes/HMSAudioCodec.js.map +1 -1
  139. package/lib/module/classes/HMSAudioDevice.js +3 -3
  140. package/lib/module/classes/HMSAudioDevice.js.map +1 -1
  141. package/lib/module/classes/HMSAudioFilePlayerNode.js.map +1 -1
  142. package/lib/module/classes/HMSAudioMixerSource.js.map +1 -1
  143. package/lib/module/classes/HMSAudioMixingMode.js +3 -3
  144. package/lib/module/classes/HMSAudioMixingMode.js.map +1 -1
  145. package/lib/module/classes/HMSAudioMode.js +3 -3
  146. package/lib/module/classes/HMSAudioMode.js.map +1 -1
  147. package/lib/module/classes/HMSAudioNode.js +2 -1
  148. package/lib/module/classes/HMSAudioNode.js.map +1 -1
  149. package/lib/module/classes/HMSAudioSettings.js.map +1 -1
  150. package/lib/module/classes/HMSAudioTrack.js.map +1 -1
  151. package/lib/module/classes/HMSAudioTrackSettings.js.map +1 -1
  152. package/lib/module/classes/HMSBrowserRecordingState.js.map +1 -1
  153. package/lib/module/classes/HMSCameraFacing.js +3 -3
  154. package/lib/module/classes/HMSCameraFacing.js.map +1 -1
  155. package/lib/module/classes/HMSChangeTrackStateRequest.js.map +1 -1
  156. package/lib/module/classes/HMSConfig.js.map +1 -1
  157. package/lib/module/classes/HMSConstants.js +4 -0
  158. package/lib/module/classes/HMSConstants.js.map +1 -0
  159. package/lib/module/classes/HMSEncoder.js +129 -102
  160. package/lib/module/classes/HMSEncoder.js.map +1 -1
  161. package/lib/module/classes/HMSException.js.map +1 -1
  162. package/lib/module/classes/HMSHLSConfig.js.map +1 -1
  163. package/lib/module/classes/HMSHLSMeetingURLVariant.js.map +1 -1
  164. package/lib/module/classes/HMSHLSRecordingConfig.js.map +1 -1
  165. package/lib/module/classes/HMSHLSRecordingState.js.map +1 -1
  166. package/lib/module/classes/HMSHLSStreamingState.js.map +1 -1
  167. package/lib/module/classes/HMSHLSVariant.js.map +1 -1
  168. package/lib/module/classes/HMSHelper.js.map +1 -1
  169. package/lib/module/classes/HMSLocalAudioStats.js.map +1 -1
  170. package/lib/module/classes/HMSLocalAudioTrack.js.map +1 -1
  171. package/lib/module/classes/HMSLocalPeer.js +0 -1
  172. package/lib/module/classes/HMSLocalPeer.js.map +1 -1
  173. package/lib/module/classes/HMSLocalVideoStats.js.map +1 -1
  174. package/lib/module/classes/HMSLocalVideoTrack.js +0 -2
  175. package/lib/module/classes/HMSLocalVideoTrack.js.map +1 -1
  176. package/lib/module/classes/HMSLogAlarmManager.js +3 -3
  177. package/lib/module/classes/HMSLogAlarmManager.js.map +1 -1
  178. package/lib/module/classes/HMSLogLevel.js +3 -3
  179. package/lib/module/classes/HMSLogLevel.js.map +1 -1
  180. package/lib/module/classes/HMSLogSettings.js.map +1 -1
  181. package/lib/module/classes/HMSLogger.js +17 -25
  182. package/lib/module/classes/HMSLogger.js.map +1 -1
  183. package/lib/module/classes/HMSMessage.js.map +1 -1
  184. package/lib/module/classes/HMSMessageRecipient.js +1 -1
  185. package/lib/module/classes/HMSMessageRecipient.js.map +1 -1
  186. package/lib/module/classes/HMSMessageRecipientType.js +3 -3
  187. package/lib/module/classes/HMSMessageRecipientType.js.map +1 -1
  188. package/lib/module/classes/HMSMessageType.js +3 -3
  189. package/lib/module/classes/HMSMessageType.js.map +1 -1
  190. package/lib/module/classes/HMSMicNode.js.map +1 -1
  191. package/lib/module/classes/HMSNativeEventEmitter.js +94 -0
  192. package/lib/module/classes/HMSNativeEventEmitter.js.map +1 -0
  193. package/lib/module/classes/HMSNetworkQuality.js.map +1 -1
  194. package/lib/module/classes/HMSPIPListenerActions.js +3 -3
  195. package/lib/module/classes/HMSPIPListenerActions.js.map +1 -1
  196. package/lib/module/classes/HMSPeer.js +69 -18
  197. package/lib/module/classes/HMSPeer.js.map +1 -1
  198. package/lib/module/classes/HMSPeerUpdate.js +4 -3
  199. package/lib/module/classes/HMSPeerUpdate.js.map +1 -1
  200. package/lib/module/classes/HMSPeersCache.js +216 -0
  201. package/lib/module/classes/HMSPeersCache.js.map +1 -0
  202. package/lib/module/classes/HMSPermissions.js.map +1 -1
  203. package/lib/module/classes/HMSPublishSettings.js +0 -6
  204. package/lib/module/classes/HMSPublishSettings.js.map +1 -1
  205. package/lib/module/classes/HMSRTCStats.js.map +1 -1
  206. package/lib/module/classes/HMSRTCStatsReport.js.map +1 -1
  207. package/lib/module/classes/HMSRTMPConfig.js.map +1 -1
  208. package/lib/module/classes/HMSRemoteAudioStats.js.map +1 -1
  209. package/lib/module/classes/HMSRemoteAudioTrack.js.map +1 -1
  210. package/lib/module/classes/HMSRemotePeer.js +0 -1
  211. package/lib/module/classes/HMSRemotePeer.js.map +1 -1
  212. package/lib/module/classes/HMSRemoteVideoStats.js.map +1 -1
  213. package/lib/module/classes/HMSRemoteVideoTrack.js.map +1 -1
  214. package/lib/module/classes/HMSRole.js +0 -6
  215. package/lib/module/classes/HMSRole.js.map +1 -1
  216. package/lib/module/classes/HMSRoleChangeRequest.js +3 -1
  217. package/lib/module/classes/HMSRoleChangeRequest.js.map +1 -1
  218. package/lib/module/classes/HMSRoom.js +79 -22
  219. package/lib/module/classes/HMSRoom.js.map +1 -1
  220. package/lib/module/classes/HMSRoomCache.js +115 -0
  221. package/lib/module/classes/HMSRoomCache.js.map +1 -0
  222. package/lib/module/classes/HMSRoomUpdate.js +3 -3
  223. package/lib/module/classes/HMSRoomUpdate.js.map +1 -1
  224. package/lib/module/classes/HMSRtmpStreamingState.js.map +1 -1
  225. package/lib/module/classes/HMSRtmpVideoResolution.js.map +1 -1
  226. package/lib/module/classes/HMSSDK.js +934 -159
  227. package/lib/module/classes/HMSSDK.js.map +1 -1
  228. package/lib/module/classes/HMSScreenBroadcastAudioReceiverNode.js.map +1 -1
  229. package/lib/module/classes/HMSServerRecordingState.js.map +1 -1
  230. package/lib/module/classes/HMSSimulcastLayerSettings.js.map +1 -1
  231. package/lib/module/classes/HMSSimulcastSettings.js.map +1 -1
  232. package/lib/module/classes/HMSSpeaker.js.map +1 -1
  233. package/lib/module/classes/HMSSubscribeSettings.js +0 -2
  234. package/lib/module/classes/HMSSubscribeSettings.js.map +1 -1
  235. package/lib/module/classes/HMSTrack.js.map +1 -1
  236. package/lib/module/classes/HMSTrackSettings.js.map +1 -1
  237. package/lib/module/classes/HMSTrackSettingsInitState.js +3 -3
  238. package/lib/module/classes/HMSTrackSettingsInitState.js.map +1 -1
  239. package/lib/module/classes/HMSTrackSource.js +3 -3
  240. package/lib/module/classes/HMSTrackSource.js.map +1 -1
  241. package/lib/module/classes/HMSTrackType.js +3 -3
  242. package/lib/module/classes/HMSTrackType.js.map +1 -1
  243. package/lib/module/classes/HMSTrackUpdate.js +3 -3
  244. package/lib/module/classes/HMSTrackUpdate.js.map +1 -1
  245. package/lib/module/classes/HMSUpdateListenerActions.js +4 -4
  246. package/lib/module/classes/HMSUpdateListenerActions.js.map +1 -1
  247. package/lib/module/classes/HMSVideoCodec.js +3 -3
  248. package/lib/module/classes/HMSVideoCodec.js.map +1 -1
  249. package/lib/module/classes/HMSVideoResolution.js.map +1 -1
  250. package/lib/module/classes/HMSVideoSettings.js.map +1 -1
  251. package/lib/module/classes/HMSVideoTrack.js.map +1 -1
  252. package/lib/module/classes/HMSVideoTrackSettings.js.map +1 -1
  253. package/lib/module/classes/HMSVideoViewMode.js +3 -3
  254. package/lib/module/classes/HMSVideoViewMode.js.map +1 -1
  255. package/lib/module/classes/HmsView.js +2 -1
  256. package/lib/module/classes/HmsView.js.map +1 -1
  257. package/lib/module/index.js.map +1 -1
  258. package/lib/typescript/classes/HMSBrowserRecordingState.d.ts +4 -4
  259. package/lib/typescript/classes/HMSChangeTrackStateRequest.d.ts +2 -2
  260. package/lib/typescript/classes/HMSConstants.d.ts +3 -0
  261. package/lib/typescript/classes/HMSEncoder.d.ts +10 -6
  262. package/lib/typescript/classes/HMSHLSStreamingState.d.ts +2 -2
  263. package/lib/typescript/classes/HMSLocalPeer.d.ts +0 -14
  264. package/lib/typescript/classes/HMSLocalVideoTrack.d.ts +0 -2
  265. package/lib/typescript/classes/HMSLogger.d.ts +1 -7
  266. package/lib/typescript/classes/HMSMessageRecipient.d.ts +2 -2
  267. package/lib/typescript/classes/HMSNativeEventEmitter.d.ts +13 -0
  268. package/lib/typescript/classes/HMSPeer.d.ts +12 -18
  269. package/lib/typescript/classes/HMSPeerUpdate.d.ts +1 -0
  270. package/lib/typescript/classes/HMSPeersCache.d.ts +17 -0
  271. package/lib/typescript/classes/HMSPublishSettings.d.ts +8 -15
  272. package/lib/typescript/classes/HMSRemotePeer.d.ts +0 -14
  273. package/lib/typescript/classes/HMSRole.d.ts +0 -6
  274. package/lib/typescript/classes/HMSRoleChangeRequest.d.ts +2 -2
  275. package/lib/typescript/classes/HMSRoom.d.ts +11 -22
  276. package/lib/typescript/classes/HMSRoomCache.d.ts +16 -0
  277. package/lib/typescript/classes/HMSRtmpStreamingState.d.ts +4 -4
  278. package/lib/typescript/classes/HMSSDK.d.ts +3 -13
  279. package/lib/typescript/classes/HMSServerRecordingState.d.ts +2 -2
  280. package/lib/typescript/classes/HMSSubscribeSettings.d.ts +0 -2
  281. package/lib/typescript/classes/HMSUpdateListenerActions.d.ts +1 -1
  282. package/lib/typescript/index.d.ts +1 -0
  283. package/package.json +5 -4
  284. package/react-native-hms.podspec +1 -1
  285. package/sdk-versions.json +3 -2
  286. package/src/classes/HMSAudioNode.ts +3 -1
  287. package/src/classes/HMSBrowserRecordingState.ts +4 -4
  288. package/src/classes/HMSChangeTrackStateRequest.ts +2 -2
  289. package/src/classes/HMSConstants.ts +3 -0
  290. package/src/classes/HMSEncoder.ts +162 -120
  291. package/src/classes/HMSHLSStreamingState.ts +2 -2
  292. package/src/classes/HMSLocalPeer.ts +0 -15
  293. package/src/classes/HMSLocalVideoTrack.ts +0 -2
  294. package/src/classes/HMSLogger.ts +20 -19
  295. package/src/classes/HMSMessageRecipient.ts +3 -3
  296. package/src/classes/HMSNativeEventEmitter.ts +109 -0
  297. package/src/classes/HMSPeer.ts +135 -32
  298. package/src/classes/HMSPeerUpdate.ts +9 -0
  299. package/src/classes/HMSPeersCache.ts +252 -0
  300. package/src/classes/HMSPublishSettings.ts +8 -18
  301. package/src/classes/HMSRemotePeer.ts +0 -16
  302. package/src/classes/HMSRole.ts +0 -9
  303. package/src/classes/HMSRoleChangeRequest.ts +5 -3
  304. package/src/classes/HMSRoom.ts +141 -37
  305. package/src/classes/HMSRoomCache.ts +157 -0
  306. package/src/classes/HMSRtmpStreamingState.ts +4 -4
  307. package/src/classes/HMSSDK.tsx +685 -292
  308. package/src/classes/HMSServerRecordingState.ts +2 -2
  309. package/src/classes/HMSSubscribeSettings.ts +1 -7
  310. package/src/classes/HMSUpdateListenerActions.ts +1 -1
  311. package/src/classes/HmsView.tsx +2 -1
  312. package/src/index.ts +1 -0
@@ -3,11 +3,8 @@ package com.reactnativehmssdk
3
3
  import android.app.Activity
4
4
  import android.app.Application
5
5
  import android.app.PendingIntent
6
- import android.app.PictureInPictureParams
7
- import android.app.RemoteAction
8
6
  import android.content.Intent
9
7
  import android.content.pm.PackageManager
10
- import android.graphics.drawable.Icon
11
8
  import android.os.Build
12
9
  import android.os.Bundle
13
10
  import android.util.Rational
@@ -450,6 +447,41 @@ class HMSManager(reactContext: ReactApplicationContext) :
450
447
  hms?.getSessionMetaData(callback)
451
448
  }
452
449
 
450
+ @ReactMethod(isBlockingSynchronousMethod = true)
451
+ fun getPeerProperty(data: ReadableMap): WritableMap? {
452
+ val hms = HMSHelper.getHms(data, hmsCollection) ?: return null
453
+
454
+ return hms.getPeerProperty(data)
455
+ }
456
+
457
+ @ReactMethod(isBlockingSynchronousMethod = true)
458
+ fun getRoomProperty(data: ReadableMap): WritableMap? {
459
+ val hms = HMSHelper.getHms(data, hmsCollection) ?: return null
460
+
461
+ return hms.getRoomProperty(data)
462
+ }
463
+
464
+ @ReactMethod
465
+ fun enableEvent(data: ReadableMap, promise: Promise?) {
466
+ val hms = HMSHelper.getHms(data, hmsCollection)
467
+
468
+ hms?.enableEvent(data, promise)
469
+ }
470
+
471
+ @ReactMethod
472
+ fun disableEvent(data: ReadableMap, promise: Promise?) {
473
+ val hms = HMSHelper.getHms(data, hmsCollection)
474
+
475
+ hms?.disableEvent(data, promise)
476
+ }
477
+
478
+ @ReactMethod()
479
+ fun restrictData(data: ReadableMap, promise: Promise?) {
480
+ val hms = HMSHelper.getHms(data, hmsCollection)
481
+
482
+ hms?.restrictData(data, promise)
483
+ }
484
+
453
485
  // region Person-In-Person Mode Action handing
454
486
  private val pipReceiver by lazy {
455
487
  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
@@ -471,10 +503,13 @@ class HMSManager(reactContext: ReactApplicationContext) :
471
503
  }
472
504
  }
473
505
 
474
- private var pipRemoteActionsList: MutableList<RemoteAction> = mutableListOf()
506
+ private var pipRemoteActionsList: MutableList<Any> = mutableListOf()
475
507
 
476
508
  @RequiresApi(Build.VERSION_CODES.O)
477
509
  private fun toggleLocalAudio() {
510
+ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
511
+ return
512
+ }
478
513
  val hmssdk = getHmsInstance()[PipActionReceiver.sdkIdForPIP!!]?.hmsSDK
479
514
 
480
515
  val localAudioTrack = hmssdk?.getLocalPeer()?.audioTrack
@@ -487,6 +522,9 @@ class HMSManager(reactContext: ReactApplicationContext) :
487
522
 
488
523
  @RequiresApi(Build.VERSION_CODES.O)
489
524
  private fun toggleLocalVideo() {
525
+ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
526
+ return
527
+ }
490
528
  val hmssdk = getHmsInstance()[PipActionReceiver.sdkIdForPIP!!]?.hmsSDK
491
529
 
492
530
  val localVideoTrack = hmssdk?.getLocalPeer()?.videoTrack
@@ -499,6 +537,9 @@ class HMSManager(reactContext: ReactApplicationContext) :
499
537
 
500
538
  @RequiresApi(Build.VERSION_CODES.O)
501
539
  private fun endMeeting() {
540
+ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
541
+ return
542
+ }
502
543
  val hms = getHmsInstance()[PipActionReceiver.sdkIdForPIP!!]
503
544
 
504
545
  hms?.leave(callback = null, fromPIP = true)
@@ -506,6 +547,10 @@ class HMSManager(reactContext: ReactApplicationContext) :
506
547
 
507
548
  @RequiresApi(Build.VERSION_CODES.O)
508
549
  private fun updatePIPRemoteActions(code: Int) {
550
+ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
551
+ return
552
+ }
553
+
509
554
  val activity = currentActivity
510
555
 
511
556
  if (activity !== null) {
@@ -513,10 +558,10 @@ class HMSManager(reactContext: ReactApplicationContext) :
513
558
 
514
559
  when (code) {
515
560
  PipActionReceiver.PIPActions.localAudio.requestCode -> {
516
- val audioActionIdx = pipRemoteActionsList.indexOfFirst { it.title == PipActionReceiver.PIPActions.localAudio.title }
561
+ val audioActionIdx = pipRemoteActionsList.indexOfFirst { it is android.app.RemoteAction && it.title == PipActionReceiver.PIPActions.localAudio.title }
517
562
  if (audioActionIdx >= 0) {
518
- pipRemoteActionsList[audioActionIdx] = RemoteAction(
519
- Icon.createWithResource(
563
+ pipRemoteActionsList[audioActionIdx] = android.app.RemoteAction(
564
+ android.graphics.drawable.Icon.createWithResource(
520
565
  reactApplicationContext,
521
566
  if (hmssdk?.getLocalPeer()?.audioTrack?.isMute === true) R.drawable.ic_mic_off_24 else R.drawable.ic_mic_24
522
567
  ),
@@ -532,12 +577,14 @@ class HMSManager(reactContext: ReactApplicationContext) :
532
577
  }
533
578
  }
534
579
  PipActionReceiver.PIPActions.localVideo.requestCode -> {
535
- val videoActionIdx = pipRemoteActionsList.indexOfFirst { it.title == PipActionReceiver.PIPActions.localVideo.title }
580
+ val videoActionIdx = pipRemoteActionsList.indexOfFirst { it is android.app.RemoteAction && it.title == PipActionReceiver.PIPActions.localVideo.title }
536
581
  if (videoActionIdx >= 0) {
537
- pipRemoteActionsList[videoActionIdx] = RemoteAction(
538
- Icon.createWithResource(
582
+ val isVideoMute = hmssdk?.getLocalPeer()?.videoTrack?.isMute
583
+ val updatedIcon = if (isVideoMute === true) R.drawable.ic_camera_toggle_off else R.drawable.ic_camera_toggle_on
584
+ pipRemoteActionsList[videoActionIdx] = android.app.RemoteAction(
585
+ android.graphics.drawable.Icon.createWithResource(
539
586
  reactApplicationContext,
540
- if (hmssdk?.getLocalPeer()?.videoTrack?.isMute === true) R.drawable.ic_camera_toggle_off else R.drawable.ic_camera_toggle_on
587
+ updatedIcon
541
588
  ),
542
589
  PipActionReceiver.PIPActions.localVideo.title,
543
590
  PipActionReceiver.PIPActions.localVideo.description,
@@ -552,8 +599,8 @@ class HMSManager(reactContext: ReactApplicationContext) :
552
599
  }
553
600
  }
554
601
 
555
- val pipParams = PictureInPictureParams.Builder().let {
556
- it.setActions(pipRemoteActionsList)
602
+ val pipParams = android.app.PictureInPictureParams.Builder().let {
603
+ it.setActions(pipRemoteActionsList.filterIsInstance<android.app.RemoteAction>())
557
604
  it.build()
558
605
  }
559
606
 
@@ -603,82 +650,15 @@ class HMSManager(reactContext: ReactApplicationContext) :
603
650
  }
604
651
  }
605
652
 
653
+ // Builds and returns PictureInPictureParams as per given config
654
+ // `Any` type is used here to prevent crashes on "SDK < API level 26"
606
655
  @RequiresApi(Build.VERSION_CODES.O)
607
- private fun getPIPRemoteActions(endAction: Boolean = false, audioAction: Boolean = false, videoAction: Boolean = false): MutableList<RemoteAction> {
608
- val hmssdk = getHmsInstance()[PipActionReceiver.sdkIdForPIP!!]?.hmsSDK
609
-
610
- pipRemoteActionsList.clear()
611
-
612
- val localPeer = hmssdk?.getLocalPeer()
613
- val allowedPublishing = localPeer?.hmsRole?.publishParams?.allowed
614
-
615
- if (audioAction && allowedPublishing?.contains("audio") === true) {
616
- pipRemoteActionsList.add(
617
- RemoteAction(
618
- Icon.createWithResource(
619
- reactApplicationContext,
620
- if (localPeer?.audioTrack?.isMute === true) R.drawable.ic_mic_off_24 else R.drawable.ic_mic_24
621
- ),
622
- PipActionReceiver.PIPActions.localAudio.title,
623
- PipActionReceiver.PIPActions.localAudio.description,
624
- PendingIntent.getBroadcast(
625
- reactApplicationContext,
626
- PipActionReceiver.PIPActions.localAudio.requestCode,
627
- Intent(PipActionReceiver.PIP_INTENT_ACTION).putExtra(PipActionReceiver.PIPActions.localAudio.title, PipActionReceiver.PIPActions.localAudio.requestCode),
628
- PendingIntent.FLAG_IMMUTABLE
629
- )
630
- )
631
- )
632
- }
633
-
634
- if (endAction) {
635
- pipRemoteActionsList.add(
636
- RemoteAction(
637
- Icon.createWithResource(reactApplicationContext, R.drawable.ic_call_end_24),
638
- PipActionReceiver.PIPActions.endMeet.title,
639
- PipActionReceiver.PIPActions.endMeet.description,
640
- PendingIntent.getBroadcast(
641
- reactApplicationContext,
642
- PipActionReceiver.PIPActions.endMeet.requestCode,
643
- Intent(PipActionReceiver.PIP_INTENT_ACTION).putExtra(
644
- PipActionReceiver.PIPActions.endMeet.title,
645
- PipActionReceiver.PIPActions.endMeet.requestCode
646
- ),
647
- PendingIntent.FLAG_IMMUTABLE
648
- )
649
- )
650
- )
651
- }
652
-
653
- if (videoAction && allowedPublishing?.contains("video") === true) {
654
- pipRemoteActionsList.add(
655
- RemoteAction(
656
- Icon.createWithResource(
657
- reactApplicationContext,
658
- if (localPeer?.videoTrack?.isMute === true) R.drawable.ic_camera_toggle_off else R.drawable.ic_camera_toggle_on
659
- ),
660
- PipActionReceiver.PIPActions.localVideo.title,
661
- PipActionReceiver.PIPActions.localVideo.description,
662
- PendingIntent.getBroadcast(
663
- reactApplicationContext,
664
- PipActionReceiver.PIPActions.localVideo.requestCode,
665
- Intent(PipActionReceiver.PIP_INTENT_ACTION).putExtra(
666
- PipActionReceiver.PIPActions.localVideo.title,
667
- PipActionReceiver.PIPActions.localVideo.requestCode
668
- ),
669
- PendingIntent.FLAG_IMMUTABLE
670
- )
671
- )
672
- )
656
+ private fun buildPipParams(config: PipParamConfig): Any? {
657
+ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
658
+ return null
673
659
  }
674
660
 
675
- return pipRemoteActionsList
676
- }
677
-
678
- // Builds and returns PictureInPictureParams as per given config
679
- @RequiresApi(Build.VERSION_CODES.O)
680
- private fun buildPipParams(config: PipParamConfig): PictureInPictureParams {
681
- val pipParams = PictureInPictureParams.Builder().let {
661
+ val pipParams = android.app.PictureInPictureParams.Builder().let {
682
662
  if (config.aspectRatio !== null) {
683
663
  it.setAspectRatio(
684
664
  Rational(
@@ -693,13 +673,76 @@ class HMSManager(reactContext: ReactApplicationContext) :
693
673
  // it.setAutoEnterEnabled(config.autoEnterEnabled)
694
674
  // }
695
675
 
696
- it.setActions(
697
- getPIPRemoteActions(
698
- endAction = config.showEndButton,
699
- audioAction = config.showAudioButton,
700
- videoAction = config.showVideoButton
676
+ // region Setting RemoteActions on PictureInPictureParams
677
+ val hmssdk = getHmsInstance()[PipActionReceiver.sdkIdForPIP!!]?.hmsSDK
678
+
679
+ pipRemoteActionsList.clear()
680
+
681
+ val localPeer = hmssdk?.getLocalPeer()
682
+ val allowedPublishing = localPeer?.hmsRole?.publishParams?.allowed
683
+
684
+ if (config.showAudioButton && allowedPublishing?.contains("audio") === true) {
685
+ pipRemoteActionsList.add(
686
+ android.app.RemoteAction(
687
+ android.graphics.drawable.Icon.createWithResource(
688
+ reactApplicationContext,
689
+ if (localPeer?.audioTrack?.isMute === true) R.drawable.ic_mic_off_24 else R.drawable.ic_mic_24
690
+ ),
691
+ PipActionReceiver.PIPActions.localAudio.title,
692
+ PipActionReceiver.PIPActions.localAudio.description,
693
+ PendingIntent.getBroadcast(
694
+ reactApplicationContext,
695
+ PipActionReceiver.PIPActions.localAudio.requestCode,
696
+ Intent(PipActionReceiver.PIP_INTENT_ACTION).putExtra(PipActionReceiver.PIPActions.localAudio.title, PipActionReceiver.PIPActions.localAudio.requestCode),
697
+ PendingIntent.FLAG_IMMUTABLE
698
+ )
699
+ )
700
+ )
701
+ }
702
+
703
+ if (config.showEndButton) {
704
+ pipRemoteActionsList.add(
705
+ android.app.RemoteAction(
706
+ android.graphics.drawable.Icon.createWithResource(reactApplicationContext, R.drawable.ic_call_end_24),
707
+ PipActionReceiver.PIPActions.endMeet.title,
708
+ PipActionReceiver.PIPActions.endMeet.description,
709
+ PendingIntent.getBroadcast(
710
+ reactApplicationContext,
711
+ PipActionReceiver.PIPActions.endMeet.requestCode,
712
+ Intent(PipActionReceiver.PIP_INTENT_ACTION).putExtra(
713
+ PipActionReceiver.PIPActions.endMeet.title,
714
+ PipActionReceiver.PIPActions.endMeet.requestCode
715
+ ),
716
+ PendingIntent.FLAG_IMMUTABLE
717
+ )
718
+ )
701
719
  )
702
- )
720
+ }
721
+
722
+ if (config.showVideoButton && allowedPublishing?.contains("video") === true) {
723
+ pipRemoteActionsList.add(
724
+ android.app.RemoteAction(
725
+ android.graphics.drawable.Icon.createWithResource(
726
+ reactApplicationContext,
727
+ if (localPeer?.videoTrack?.isMute === true) R.drawable.ic_camera_toggle_off else R.drawable.ic_camera_toggle_on
728
+ ),
729
+ PipActionReceiver.PIPActions.localVideo.title,
730
+ PipActionReceiver.PIPActions.localVideo.description,
731
+ PendingIntent.getBroadcast(
732
+ reactApplicationContext,
733
+ PipActionReceiver.PIPActions.localVideo.requestCode,
734
+ Intent(PipActionReceiver.PIP_INTENT_ACTION).putExtra(
735
+ PipActionReceiver.PIPActions.localVideo.title,
736
+ PipActionReceiver.PIPActions.localVideo.requestCode
737
+ ),
738
+ PendingIntent.FLAG_IMMUTABLE
739
+ )
740
+ )
741
+ )
742
+ }
743
+
744
+ it.setActions(pipRemoteActionsList.filterIsInstance<android.app.RemoteAction>())
745
+ // endregion
703
746
 
704
747
  it.build()
705
748
  }
@@ -708,7 +751,11 @@ class HMSManager(reactContext: ReactApplicationContext) :
708
751
  }
709
752
 
710
753
  @RequiresApi(Build.VERSION_CODES.O)
711
- private fun readableMapToPipParamConfig(data: ReadableMap?): PipParamConfig {
754
+ private fun readableMapToPipParamConfig(data: ReadableMap?): PipParamConfig? {
755
+ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
756
+ return null
757
+ }
758
+
712
759
  var aspectRatio: Pair<Int, Int> = Pair(16, 9)
713
760
  var showEndButton = false
714
761
  var showAudioButton = false
@@ -772,22 +819,23 @@ class HMSManager(reactContext: ReactApplicationContext) :
772
819
 
773
820
  @RequiresApi(Build.VERSION_CODES.O)
774
821
  private fun setPictureInPictureParams(data: ReadableMap): Boolean {
822
+ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
823
+ return false
824
+ }
775
825
  try {
776
826
  if (!isPipModeSupported()) {
777
827
  throw Throwable(message = "PIP Mode is not supported!")
778
828
  }
779
829
 
780
- val activity = currentActivity
781
-
782
- if (activity !== null) {
783
- val pipParamConfig = readableMapToPipParamConfig(data)
784
- val pipParams = buildPipParams(pipParamConfig)
830
+ val activity = currentActivity ?: return false
831
+ val pipParamConfig = readableMapToPipParamConfig(data) ?: return false
832
+ val pipParams = buildPipParams(pipParamConfig) ?: return false
785
833
 
786
- activity.setPictureInPictureParams(pipParams)
787
- return true
834
+ if (pipParams !is android.app.PictureInPictureParams) {
835
+ return false
788
836
  }
789
-
790
- return false
837
+ activity.setPictureInPictureParams(pipParams)
838
+ return true
791
839
  } catch (e: Exception) {
792
840
  throw e
793
841
  }
@@ -795,31 +843,35 @@ class HMSManager(reactContext: ReactApplicationContext) :
795
843
 
796
844
  @RequiresApi(Build.VERSION_CODES.O)
797
845
  private fun isPipModeSupported(): Boolean {
846
+ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
847
+ return false
848
+ }
798
849
  return reactApplicationContext.packageManager.hasSystemFeature(PackageManager.FEATURE_PICTURE_IN_PICTURE)
799
850
  }
800
851
 
801
852
  @RequiresApi(Build.VERSION_CODES.O)
802
853
  private fun enablePipMode(data: ReadableMap): Boolean {
854
+ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
855
+ return false
856
+ }
803
857
  try {
804
858
  if (!isPipModeSupported()) {
805
859
  throw Throwable(message = "PIP Mode is not supported!")
806
860
  }
807
861
 
808
- val activity = currentActivity
862
+ val activity = currentActivity ?: return false
863
+ val pipParamConfig = readableMapToPipParamConfig(data) ?: return false
864
+ val pipParams = buildPipParams(pipParamConfig) ?: return false
809
865
 
810
- if (activity !== null) {
811
- val pipParamConfig = readableMapToPipParamConfig(data)
812
- val pipParams = buildPipParams(pipParamConfig)
813
-
814
- pipReceiver?.register(activity)
815
- val entered = activity.enterPictureInPictureMode(pipParams)
816
- if (entered === false) {
817
- pipReceiver?.unregister(activity)
818
- }
819
- return entered
866
+ if (pipParams !is android.app.PictureInPictureParams) {
867
+ return false
820
868
  }
821
-
822
- return false
869
+ pipReceiver?.register(activity)
870
+ val entered = activity.enterPictureInPictureMode(pipParams)
871
+ if (entered === false) {
872
+ pipReceiver?.unregister(activity)
873
+ }
874
+ return entered
823
875
  } catch (e: Exception) {
824
876
  throw e
825
877
  }