@100mslive/react-native-hms 1.6.2 → 1.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (308) hide show
  1. package/README.md +30 -39
  2. package/android/.gradle/6.7.1/executionHistory/executionHistory.lock +0 -0
  3. package/android/.gradle/6.7.1/fileChanges/last-build.bin +0 -0
  4. package/android/.gradle/6.7.1/fileHashes/fileHashes.lock +0 -0
  5. package/android/.gradle/6.9/executionHistory/executionHistory.bin +0 -0
  6. package/android/.gradle/6.9/executionHistory/executionHistory.lock +0 -0
  7. package/android/.gradle/6.9/fileHashes/fileHashes.bin +0 -0
  8. package/android/.gradle/6.9/fileHashes/fileHashes.lock +0 -0
  9. package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
  10. package/android/.gradle/buildOutputCleanup/cache.properties +2 -2
  11. package/android/.gradle/checksums/checksums.lock +0 -0
  12. package/android/.gradle/checksums/md5-checksums.bin +0 -0
  13. package/android/.gradle/checksums/sha1-checksums.bin +0 -0
  14. package/android/build.gradle +24 -9
  15. package/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  16. package/android/gradle/wrapper/gradle-wrapper.properties +1 -1
  17. package/android/gradlew +103 -104
  18. package/android/gradlew.bat +3 -18
  19. package/android/src/main/java/com/reactnativehmssdk/HMSDecoder.kt +40 -17
  20. package/android/src/main/java/com/reactnativehmssdk/HMSHLSPlayer.kt +248 -0
  21. package/android/src/main/java/com/reactnativehmssdk/HMSHLSPlayerManager.kt +101 -0
  22. package/android/src/main/java/com/reactnativehmssdk/HMSHelper.kt +12 -6
  23. package/android/src/main/java/com/reactnativehmssdk/HMSManager.kt +7 -14
  24. package/android/src/main/java/com/reactnativehmssdk/HMSRNSDK.kt +118 -113
  25. package/android/src/main/java/com/reactnativehmssdk/HmssdkPackage.kt +1 -1
  26. package/android/src/main/res/layout/player_view.xml +9 -0
  27. package/ios/HMSDecoder.swift +8 -7
  28. package/ios/HMSHLSPlayerManager.m +22 -0
  29. package/ios/HMSHLSPlayerManager.swift +368 -0
  30. package/ios/HMSHelper.swift +6 -2
  31. package/ios/HMSManager.m +5 -2
  32. package/ios/HMSManager.swift +30 -16
  33. package/ios/HMSRNSDK.swift +84 -105
  34. package/lib/commonjs/classes/HMSAudioTrack.js.map +1 -1
  35. package/lib/commonjs/classes/HMSBrowserRecordingState.js +2 -0
  36. package/lib/commonjs/classes/HMSBrowserRecordingState.js.map +1 -1
  37. package/lib/commonjs/classes/HMSCameraControl.js +3 -5
  38. package/lib/commonjs/classes/HMSCameraControl.js.map +1 -1
  39. package/lib/commonjs/classes/HMSEncoder.js +44 -38
  40. package/lib/commonjs/classes/HMSEncoder.js.map +1 -1
  41. package/lib/commonjs/classes/HMSEventEmitter.js +10 -0
  42. package/lib/commonjs/classes/HMSEventEmitter.js.map +1 -0
  43. package/lib/commonjs/classes/HMSLocalAudioTrack.js.map +1 -1
  44. package/lib/commonjs/classes/HMSLocalPeer.js.map +1 -1
  45. package/lib/commonjs/classes/HMSLocalVideoTrack.js.map +1 -1
  46. package/lib/commonjs/classes/HMSManagerModule.js +18 -0
  47. package/lib/commonjs/classes/HMSManagerModule.js.map +1 -0
  48. package/lib/commonjs/classes/HMSNativeEventEmitter.js.map +1 -1
  49. package/lib/commonjs/classes/HMSNativeEventListener.js +13 -0
  50. package/lib/commonjs/classes/HMSNativeEventListener.js.map +1 -0
  51. package/lib/commonjs/classes/HMSPeer.js +55 -20
  52. package/lib/commonjs/classes/HMSPeer.js.map +1 -1
  53. package/lib/commonjs/classes/HMSPeerUpdate.js +1 -1
  54. package/lib/commonjs/classes/HMSPeerUpdate.js.map +1 -1
  55. package/lib/commonjs/classes/HMSPeersCache.js +33 -43
  56. package/lib/commonjs/classes/HMSPeersCache.js.map +1 -1
  57. package/lib/commonjs/classes/HMSRTMPConfig.js.map +1 -1
  58. package/lib/commonjs/classes/HMSRemoteAudioTrack.js.map +1 -1
  59. package/lib/commonjs/classes/HMSRemotePeer.js.map +1 -1
  60. package/lib/commonjs/classes/HMSRemoteVideoTrack.js.map +1 -1
  61. package/lib/commonjs/classes/HMSRoom.js.map +1 -1
  62. package/lib/commonjs/classes/HMSRoomCache.js +10 -5
  63. package/lib/commonjs/classes/HMSRoomCache.js.map +1 -1
  64. package/lib/commonjs/classes/HMSSDK.js +108 -113
  65. package/lib/commonjs/classes/HMSSDK.js.map +1 -1
  66. package/lib/commonjs/classes/HMSSessionStore.js +6 -7
  67. package/lib/commonjs/classes/HMSSessionStore.js.map +1 -1
  68. package/lib/commonjs/classes/HMSTrack.js.map +1 -1
  69. package/lib/commonjs/classes/HMSVideoTrack.js.map +1 -1
  70. package/lib/commonjs/classes/HmsView.js +4 -1
  71. package/lib/commonjs/classes/HmsView.js.map +1 -1
  72. package/lib/commonjs/components/HMSHLSPlayer/HMSHLSPlayer.js +147 -0
  73. package/lib/commonjs/components/HMSHLSPlayer/HMSHLSPlayer.js.map +1 -0
  74. package/lib/commonjs/components/HMSHLSPlayer/RCTHMSHLSPlayer.js +12 -0
  75. package/lib/commonjs/components/HMSHLSPlayer/RCTHMSHLSPlayer.js.map +1 -0
  76. package/lib/commonjs/components/HMSHLSPlayer/hooks.js +71 -0
  77. package/lib/commonjs/components/HMSHLSPlayer/hooks.js.map +1 -0
  78. package/lib/commonjs/components/HMSHLSPlayer/index.js +63 -0
  79. package/lib/commonjs/components/HMSHLSPlayer/index.js.map +1 -0
  80. package/lib/commonjs/hooks/useHMSPeerUpdates.js +77 -0
  81. package/lib/commonjs/hooks/useHMSPeerUpdates.js.map +1 -0
  82. package/lib/commonjs/index.js +63 -1
  83. package/lib/commonjs/index.js.map +1 -1
  84. package/lib/commonjs/stores/hls-player-playback-slice.js +23 -0
  85. package/lib/commonjs/stores/hls-player-playback-slice.js.map +1 -0
  86. package/lib/commonjs/stores/hls-player-stats-store.js +36 -0
  87. package/lib/commonjs/stores/hls-player-stats-store.js.map +1 -0
  88. package/lib/commonjs/stores/hms-store.js +16 -0
  89. package/lib/commonjs/stores/hms-store.js.map +1 -0
  90. package/lib/commonjs/stores/types.js +6 -0
  91. package/lib/commonjs/stores/types.js.map +1 -0
  92. package/lib/commonjs/types.js +36 -0
  93. package/lib/commonjs/types.js.map +1 -0
  94. package/lib/module/classes/HMSAudioTrack.js.map +1 -1
  95. package/lib/module/classes/HMSBrowserRecordingState.js +2 -0
  96. package/lib/module/classes/HMSBrowserRecordingState.js.map +1 -1
  97. package/lib/module/classes/HMSCameraControl.js +1 -4
  98. package/lib/module/classes/HMSCameraControl.js.map +1 -1
  99. package/lib/module/classes/HMSEncoder.js +42 -37
  100. package/lib/module/classes/HMSEncoder.js.map +1 -1
  101. package/lib/module/classes/HMSEventEmitter.js +3 -0
  102. package/lib/module/classes/HMSEventEmitter.js.map +1 -0
  103. package/lib/module/classes/HMSLocalAudioTrack.js.map +1 -1
  104. package/lib/module/classes/HMSLocalPeer.js.map +1 -1
  105. package/lib/module/classes/HMSLocalVideoTrack.js.map +1 -1
  106. package/lib/module/classes/HMSManagerModule.js +11 -0
  107. package/lib/module/classes/HMSManagerModule.js.map +1 -0
  108. package/lib/module/classes/HMSNativeEventEmitter.js.map +1 -1
  109. package/lib/module/classes/HMSNativeEventListener.js +5 -0
  110. package/lib/module/classes/HMSNativeEventListener.js.map +1 -0
  111. package/lib/module/classes/HMSPeer.js +55 -20
  112. package/lib/module/classes/HMSPeer.js.map +1 -1
  113. package/lib/module/classes/HMSPeerUpdate.js +1 -1
  114. package/lib/module/classes/HMSPeerUpdate.js.map +1 -1
  115. package/lib/module/classes/HMSPeersCache.js +31 -42
  116. package/lib/module/classes/HMSPeersCache.js.map +1 -1
  117. package/lib/module/classes/HMSRTMPConfig.js.map +1 -1
  118. package/lib/module/classes/HMSRemoteAudioTrack.js.map +1 -1
  119. package/lib/module/classes/HMSRemotePeer.js.map +1 -1
  120. package/lib/module/classes/HMSRemoteVideoTrack.js.map +1 -1
  121. package/lib/module/classes/HMSRoom.js.map +1 -1
  122. package/lib/module/classes/HMSRoomCache.js +8 -4
  123. package/lib/module/classes/HMSRoomCache.js.map +1 -1
  124. package/lib/module/classes/HMSSDK.js +57 -62
  125. package/lib/module/classes/HMSSDK.js.map +1 -1
  126. package/lib/module/classes/HMSSessionStore.js +2 -4
  127. package/lib/module/classes/HMSSessionStore.js.map +1 -1
  128. package/lib/module/classes/HMSTrack.js.map +1 -1
  129. package/lib/module/classes/HMSVideoTrack.js.map +1 -1
  130. package/lib/module/classes/HmsView.js +4 -1
  131. package/lib/module/classes/HmsView.js.map +1 -1
  132. package/lib/module/components/HMSHLSPlayer/HMSHLSPlayer.js +138 -0
  133. package/lib/module/components/HMSHLSPlayer/HMSHLSPlayer.js.map +1 -0
  134. package/lib/module/components/HMSHLSPlayer/RCTHMSHLSPlayer.js +4 -0
  135. package/lib/module/components/HMSHLSPlayer/RCTHMSHLSPlayer.js.map +1 -0
  136. package/lib/module/components/HMSHLSPlayer/hooks.js +56 -0
  137. package/lib/module/components/HMSHLSPlayer/hooks.js.map +1 -0
  138. package/lib/module/components/HMSHLSPlayer/index.js +3 -0
  139. package/lib/module/components/HMSHLSPlayer/index.js.map +1 -0
  140. package/lib/module/hooks/useHMSPeerUpdates.js +67 -0
  141. package/lib/module/hooks/useHMSPeerUpdates.js.map +1 -0
  142. package/lib/module/index.js +13 -0
  143. package/lib/module/index.js.map +1 -1
  144. package/lib/module/stores/hls-player-playback-slice.js +16 -0
  145. package/lib/module/stores/hls-player-playback-slice.js.map +1 -0
  146. package/lib/module/stores/hls-player-stats-store.js +29 -0
  147. package/lib/module/stores/hls-player-stats-store.js.map +1 -0
  148. package/lib/module/stores/hms-store.js +9 -0
  149. package/lib/module/stores/hms-store.js.map +1 -0
  150. package/lib/module/stores/types.js +2 -0
  151. package/lib/module/stores/types.js.map +1 -0
  152. package/lib/module/types.js +32 -0
  153. package/lib/module/types.js.map +1 -0
  154. package/lib/typescript/classes/HMSAudioTrack.d.ts +2 -1
  155. package/lib/typescript/classes/HMSBrowserRecordingState.d.ts +2 -0
  156. package/lib/typescript/classes/HMSEncoder.d.ts +1 -0
  157. package/lib/typescript/classes/HMSEventEmitter.d.ts +2 -0
  158. package/lib/typescript/classes/HMSLocalAudioTrack.d.ts +2 -1
  159. package/lib/typescript/classes/HMSLocalPeer.d.ts +3 -3
  160. package/lib/typescript/classes/HMSLocalVideoTrack.d.ts +2 -1
  161. package/lib/typescript/classes/HMSManagerModule.d.ts +3 -0
  162. package/lib/typescript/classes/HMSNativeEventListener.d.ts +4 -0
  163. package/lib/typescript/classes/HMSPeer.d.ts +10 -5
  164. package/lib/typescript/classes/HMSPeersCache.d.ts +17 -2
  165. package/lib/typescript/classes/HMSRTMPConfig.d.ts +2 -2
  166. package/lib/typescript/classes/HMSRemoteAudioTrack.d.ts +2 -1
  167. package/lib/typescript/classes/HMSRemotePeer.d.ts +3 -3
  168. package/lib/typescript/classes/HMSRemoteVideoTrack.d.ts +2 -1
  169. package/lib/typescript/classes/HMSRoom.d.ts +1 -1
  170. package/lib/typescript/classes/HMSSDK.d.ts +5 -15
  171. package/lib/typescript/classes/HMSTrack.d.ts +3 -2
  172. package/lib/typescript/classes/HMSVideoTrack.d.ts +2 -1
  173. package/lib/typescript/classes/HmsView.d.ts +1 -1
  174. package/lib/typescript/components/HMSHLSPlayer/HMSHLSPlayer.d.ts +21 -0
  175. package/lib/typescript/components/HMSHLSPlayer/RCTHMSHLSPlayer.d.ts +19 -0
  176. package/lib/typescript/components/HMSHLSPlayer/hooks.d.ts +17 -0
  177. package/lib/typescript/components/HMSHLSPlayer/index.d.ts +2 -0
  178. package/lib/typescript/hooks/useHMSPeerUpdates.d.ts +7 -0
  179. package/lib/typescript/index.d.ts +5 -0
  180. package/lib/typescript/stores/hls-player-playback-slice.d.ts +5 -0
  181. package/lib/typescript/stores/hls-player-stats-store.d.ts +9 -0
  182. package/lib/typescript/stores/hms-store.d.ts +9 -0
  183. package/lib/typescript/stores/types.d.ts +25 -0
  184. package/lib/typescript/types.d.ts +63 -0
  185. package/package.json +4 -1
  186. package/react-native-hms.podspec +1 -0
  187. package/sdk-versions.json +3 -2
  188. package/src/classes/HMSAudioTrack.ts +2 -1
  189. package/src/classes/HMSBrowserRecordingState.ts +3 -0
  190. package/src/classes/HMSCameraControl.ts +1 -2
  191. package/src/classes/HMSEncoder.ts +18 -8
  192. package/src/classes/HMSEventEmitter.ts +3 -0
  193. package/src/classes/HMSLocalAudioTrack.ts +2 -1
  194. package/src/classes/HMSLocalPeer.ts +3 -3
  195. package/src/classes/HMSLocalVideoTrack.ts +2 -1
  196. package/src/classes/HMSManagerModule.ts +18 -0
  197. package/src/classes/HMSNativeEventEmitter.ts +2 -1
  198. package/src/classes/HMSNativeEventListener.ts +8 -0
  199. package/src/classes/HMSPeer.ts +96 -48
  200. package/src/classes/HMSPeerUpdate.ts +4 -4
  201. package/src/classes/HMSPeersCache.ts +55 -43
  202. package/src/classes/HMSRTMPConfig.ts +2 -2
  203. package/src/classes/HMSRemoteAudioTrack.ts +2 -1
  204. package/src/classes/HMSRemotePeer.ts +3 -3
  205. package/src/classes/HMSRemoteVideoTrack.ts +2 -1
  206. package/src/classes/HMSRoom.ts +1 -1
  207. package/src/classes/HMSRoomCache.ts +11 -3
  208. package/src/classes/HMSSDK.tsx +74 -73
  209. package/src/classes/HMSSessionStore.ts +6 -8
  210. package/src/classes/HMSTrack.ts +3 -2
  211. package/src/classes/HMSVideoTrack.ts +2 -1
  212. package/src/classes/HmsView.tsx +8 -2
  213. package/src/components/HMSHLSPlayer/HMSHLSPlayer.tsx +261 -0
  214. package/src/components/HMSHLSPlayer/RCTHMSHLSPlayer.ts +37 -0
  215. package/src/components/HMSHLSPlayer/hooks.ts +101 -0
  216. package/src/components/HMSHLSPlayer/index.ts +9 -0
  217. package/src/hooks/useHMSPeerUpdates.ts +85 -0
  218. package/src/index.ts +14 -0
  219. package/src/stores/hls-player-playback-slice.ts +25 -0
  220. package/src/stores/hls-player-stats-store.ts +37 -0
  221. package/src/stores/hms-store.ts +11 -0
  222. package/src/stores/types.ts +49 -0
  223. package/src/types.ts +119 -0
  224. package/android/.gradle/buildOutputCleanup/outputFiles.bin +0 -0
  225. package/android/.idea/compiler.xml +0 -6
  226. package/android/.idea/gradle.xml +0 -18
  227. package/android/.idea/jarRepositories.xml +0 -50
  228. package/android/.idea/libraries/Gradle__androidx_activity_activity_1_2_4_aar.xml +0 -16
  229. package/android/.idea/libraries/Gradle__androidx_annotation_annotation_1_3_0.xml +0 -11
  230. package/android/.idea/libraries/Gradle__androidx_annotation_annotation_experimental_1_1_0_aar.xml +0 -13
  231. package/android/.idea/libraries/Gradle__androidx_appcompat_appcompat_1_4_1_aar.xml +0 -16
  232. package/android/.idea/libraries/Gradle__androidx_appcompat_appcompat_resources_1_4_1_aar.xml +0 -13
  233. package/android/.idea/libraries/Gradle__androidx_arch_core_core_common_2_1_0.xml +0 -11
  234. package/android/.idea/libraries/Gradle__androidx_arch_core_core_runtime_2_1_0_aar.xml +0 -13
  235. package/android/.idea/libraries/Gradle__androidx_autofill_autofill_1_1_0_aar.xml +0 -16
  236. package/android/.idea/libraries/Gradle__androidx_collection_collection_1_1_0.xml +0 -11
  237. package/android/.idea/libraries/Gradle__androidx_constraintlayout_constraintlayout_2_1_3_aar.xml +0 -13
  238. package/android/.idea/libraries/Gradle__androidx_core_core_1_7_0_aar.xml +0 -16
  239. package/android/.idea/libraries/Gradle__androidx_cursoradapter_cursoradapter_1_0_0_aar.xml +0 -13
  240. package/android/.idea/libraries/Gradle__androidx_customview_customview_1_0_0_aar.xml +0 -13
  241. package/android/.idea/libraries/Gradle__androidx_drawerlayout_drawerlayout_1_0_0_aar.xml +0 -16
  242. package/android/.idea/libraries/Gradle__androidx_fragment_fragment_1_3_6_aar.xml +0 -16
  243. package/android/.idea/libraries/Gradle__androidx_interpolator_interpolator_1_0_0_aar.xml +0 -13
  244. package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_common_2_4_0.xml +0 -11
  245. package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_livedata_2_0_0_aar.xml +0 -13
  246. package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_livedata_core_2_3_1_aar.xml +0 -13
  247. package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_runtime_2_4_0_aar.xml +0 -13
  248. package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_viewmodel_2_3_1_aar.xml +0 -13
  249. package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_viewmodel_savedstate_2_3_1_aar.xml +0 -13
  250. package/android/.idea/libraries/Gradle__androidx_loader_loader_1_0_0_aar.xml +0 -13
  251. package/android/.idea/libraries/Gradle__androidx_savedstate_savedstate_1_1_0_aar.xml +0 -13
  252. package/android/.idea/libraries/Gradle__androidx_swiperefreshlayout_swiperefreshlayout_1_0_0_aar.xml +0 -16
  253. package/android/.idea/libraries/Gradle__androidx_tracing_tracing_1_1_0_aar.xml +0 -13
  254. package/android/.idea/libraries/Gradle__androidx_vectordrawable_vectordrawable_1_1_0_aar.xml +0 -13
  255. package/android/.idea/libraries/Gradle__androidx_vectordrawable_vectordrawable_animated_1_1_0_aar.xml +0 -13
  256. package/android/.idea/libraries/Gradle__androidx_versionedparcelable_versionedparcelable_1_1_1_aar.xml +0 -13
  257. package/android/.idea/libraries/Gradle__androidx_viewpager_viewpager_1_0_0_aar.xml +0 -13
  258. package/android/.idea/libraries/Gradle__com_facebook_fbjni_fbjni_0_3_0_aar.xml +0 -14
  259. package/android/.idea/libraries/Gradle__com_facebook_fresco_drawee_2_5_0_aar.xml +0 -15
  260. package/android/.idea/libraries/Gradle__com_facebook_fresco_fbcore_2_5_0_aar.xml +0 -18
  261. package/android/.idea/libraries/Gradle__com_facebook_fresco_fresco_2_5_0_aar.xml +0 -18
  262. package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_2_5_0_aar.xml +0 -18
  263. package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_base_2_5_0_aar.xml +0 -18
  264. package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_native_2_5_0_aar.xml +0 -15
  265. package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_okhttp3_2_5_0_aar.xml +0 -15
  266. package/android/.idea/libraries/Gradle__com_facebook_fresco_memory_type_ashmem_2_5_0_aar.xml +0 -15
  267. package/android/.idea/libraries/Gradle__com_facebook_fresco_memory_type_java_2_5_0_aar.xml +0 -15
  268. package/android/.idea/libraries/Gradle__com_facebook_fresco_memory_type_native_2_5_0_aar.xml +0 -15
  269. package/android/.idea/libraries/Gradle__com_facebook_fresco_nativeimagefilters_2_5_0_aar.xml +0 -15
  270. package/android/.idea/libraries/Gradle__com_facebook_fresco_nativeimagetranscoder_2_5_0_aar.xml +0 -15
  271. package/android/.idea/libraries/Gradle__com_facebook_fresco_ui_common_2_5_0_aar.xml +0 -15
  272. package/android/.idea/libraries/Gradle__com_facebook_infer_annotation_infer_annotation_0_18_0.xml +0 -13
  273. package/android/.idea/libraries/Gradle__com_facebook_react_react_native_0_71_0_rc_0_debug_aar.xml +0 -14
  274. package/android/.idea/libraries/Gradle__com_facebook_soloader_annotation_0_10_4.xml +0 -13
  275. package/android/.idea/libraries/Gradle__com_facebook_soloader_nativeloader_0_10_4.xml +0 -13
  276. package/android/.idea/libraries/Gradle__com_facebook_soloader_soloader_0_10_4_aar.xml +0 -14
  277. package/android/.idea/libraries/Gradle__com_facebook_yoga_proguard_annotations_1_19_0.xml +0 -13
  278. package/android/.idea/libraries/Gradle__com_github_100mslive_android_sdk_lib_2_5_1_aar.xml +0 -10
  279. package/android/.idea/libraries/Gradle__com_github_100mslive_webrtc_m104_hms_1_3_aar.xml +0 -10
  280. package/android/.idea/libraries/Gradle__com_google_code_findbugs_jsr305_3_0_2.xml +0 -13
  281. package/android/.idea/libraries/Gradle__com_squareup_okhttp3_okhttp_4_9_2.xml +0 -13
  282. package/android/.idea/libraries/Gradle__com_squareup_okhttp3_okhttp_urlconnection_4_9_2.xml +0 -13
  283. package/android/.idea/libraries/Gradle__com_squareup_okio_okio_2_9_0.xml +0 -13
  284. package/android/.idea/libraries/Gradle__javax_inject_javax_inject_1.xml +0 -13
  285. package/android/.idea/libraries/Gradle__org_jetbrains_annotations_13_0.xml +0 -13
  286. package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_annotations_jvm_1_3_72.xml +0 -13
  287. package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_1_6_10.xml +0 -13
  288. package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_common_1_6_10.xml +0 -13
  289. package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_jdk7_1_6_10.xml +0 -13
  290. package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_jdk8_1_6_10.xml +0 -13
  291. package/android/.idea/libraries/Gradle__org_jetbrains_kotlinx_kotlinx_coroutines_android_1_6_0.xml +0 -13
  292. package/android/.idea/libraries/Gradle__org_jetbrains_kotlinx_kotlinx_coroutines_core_jvm_1_6_0.xml +0 -13
  293. package/android/.idea/misc.xml +0 -9
  294. package/android/.idea/modules/android.androidTest.iml +0 -203
  295. package/android/.idea/modules/android.iml +0 -40
  296. package/android/.idea/modules/android.main.iml +0 -199
  297. package/android/.idea/modules/android.unitTest.iml +0 -197
  298. package/android/.idea/modules.xml +0 -11
  299. package/android/.idea/sonarlint/issuestore/3/c/3c46088b6add3088181589d8ed726652742b6221 +0 -5
  300. package/android/.idea/sonarlint/issuestore/index.pb +0 -7
  301. package/android/.idea/vcs.xml +0 -6
  302. package/android/local.properties +0 -8
  303. package/ios/Hmssdk.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -7
  304. package/ios/Hmssdk.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
  305. package/ios/Hmssdk.xcodeproj/project.xcworkspace/xcuserdata/yogesh.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  306. package/ios/Hmssdk.xcodeproj/xcuserdata/yogesh.xcuserdatad/xcschemes/xcschememanagement.plist +0 -14
  307. /package/android/{.idea/sonarlint/issuestore/a/8/a8c9f5ddd88723818e51ae3cf8693d02355a8691 → .gradle/6.7.1/gc.properties} +0 -0
  308. /package/android/{.idea/sonarlint/issuestore/f/0/f07866736216be0ee2aba49e392191aeae700a35 → .gradle/configuration-cache/gc.properties} +0 -0
@@ -31,7 +31,9 @@ object HMSDecoder {
31
31
 
32
32
  when (hmsRoomUpdateType) {
33
33
  HMSRoomUpdate.ROOM_PEER_COUNT_UPDATED -> {
34
- room.putInt("peerCount", hmsRoom.peerCount)
34
+ // When ROOM_PEER_COUNT_UPDATED update type is received then `peerCount` should be a valid value
35
+ // using `0` as default
36
+ room.putInt("peerCount", hmsRoom.peerCount ?: 0)
35
37
  }
36
38
  HMSRoomUpdate.HLS_RECORDING_STATE_UPDATED -> {
37
39
  hmsRoom.hlsRecordingState?.let {
@@ -67,6 +69,15 @@ object HMSDecoder {
67
69
  )
68
70
  }
69
71
  }
72
+ HMSRoomUpdate.ROOM_MUTED -> {
73
+ print("ROOM_MUTED received")
74
+ }
75
+ HMSRoomUpdate.ROOM_UNMUTED -> {
76
+ print("ROOM_UNMUTED received")
77
+ }
78
+ else -> {
79
+ print("Unknown Room Update Type received")
80
+ }
70
81
  }
71
82
  }
72
83
  return room
@@ -120,7 +131,13 @@ object HMSDecoder {
120
131
 
121
132
  room.putArray("peers", this.getAllPeers(hmsRoom.peerList))
122
133
 
123
- room.putInt("peerCount", hmsRoom.peerCount)
134
+ hmsRoom.peerCount.let {
135
+ if (it == null) {
136
+ room.putNull("peerCount")
137
+ } else {
138
+ room.putInt("peerCount", it)
139
+ }
140
+ }
124
141
  }
125
142
  return room
126
143
  }
@@ -130,23 +147,24 @@ object HMSDecoder {
130
147
  if (hmsPeer != null) {
131
148
  peer.putString(peerUpdateType.ordinal.toString(), hmsPeer.peerID)
132
149
 
133
- if (peerUpdateType !== null) {
134
- when (peerUpdateType) {
135
- HMSPeerUpdate.NAME_CHANGED -> {
136
- peer.putString("name", hmsPeer.name)
137
- }
138
- HMSPeerUpdate.METADATA_CHANGED -> {
139
- peer.putString("metadata", hmsPeer.metadata)
140
- }
141
- HMSPeerUpdate.ROLE_CHANGED -> {
142
- peer.putMap("role", this.getHmsRole(hmsPeer.hmsRole))
143
- }
144
- HMSPeerUpdate.NETWORK_QUALITY_UPDATED -> {
145
- hmsPeer.networkQuality?.let {
146
- peer.putMap("networkQuality", this.getHmsNetworkQuality(it))
147
- }
150
+ when (peerUpdateType) {
151
+ HMSPeerUpdate.NAME_CHANGED -> {
152
+ peer.putString("name", hmsPeer.name)
153
+ }
154
+ HMSPeerUpdate.METADATA_CHANGED -> {
155
+ peer.putString("metadata", hmsPeer.metadata)
156
+ }
157
+ HMSPeerUpdate.ROLE_CHANGED -> {
158
+ peer.putMap("role", this.getHmsRole(hmsPeer.hmsRole))
159
+ }
160
+ HMSPeerUpdate.NETWORK_QUALITY_UPDATED -> {
161
+ hmsPeer.networkQuality?.let {
162
+ peer.putMap("networkQuality", this.getHmsNetworkQuality(it))
148
163
  }
149
164
  }
165
+ else -> {
166
+ print("Unknown Peer Update Type received")
167
+ }
150
168
  }
151
169
  }
152
170
  return peer
@@ -173,6 +191,9 @@ object HMSDecoder {
173
191
  peer.putMap("networkQuality", this.getHmsNetworkQuality(it))
174
192
  }
175
193
  }
194
+ else -> {
195
+ print("Unknown Peer Update Type received")
196
+ }
176
197
  }
177
198
  }
178
199
  }
@@ -582,6 +603,8 @@ object HMSDecoder {
582
603
  fun getHMSBrowserRecordingState(data: HMSBrowserRecordingState?): ReadableMap {
583
604
  val input = Arguments.createMap()
584
605
  if (data !== null) {
606
+ input.putBoolean("initialising", false)
607
+
585
608
  input.putBoolean("running", data.running)
586
609
 
587
610
  data.startedAt?.let {
@@ -0,0 +1,248 @@
1
+ package com.reactnativehmssdk
2
+
3
+ import android.annotation.SuppressLint
4
+ import android.content.Context
5
+ import android.view.LayoutInflater
6
+ import android.widget.FrameLayout
7
+ import androidx.media3.ui.PlayerView
8
+ import com.facebook.react.bridge.Arguments
9
+ import com.facebook.react.bridge.ReactContext
10
+ import com.facebook.react.bridge.WritableMap
11
+ import com.facebook.react.uimanager.events.RCTEventEmitter
12
+ import live.hms.hls_player.*
13
+ import live.hms.stats.PlayerStatsListener
14
+ import live.hms.stats.model.PlayerStatsModel
15
+ import live.hms.video.error.HMSException
16
+ import live.hms.video.sdk.HMSSDK
17
+ import java.util.concurrent.TimeUnit
18
+
19
+ @SuppressLint("ViewConstructor")
20
+ class HMSHLSPlayer(context: ReactContext) : FrameLayout(context) {
21
+ private var playerView: PlayerView? = null // Exoplayer View
22
+ private var hmsHlsPlayer: HmsHlsPlayer? = null // 100ms HLS Player
23
+ private var hmssdkInstance: HMSSDK? = null
24
+ private var statsMonitorAttached = false
25
+ private val hmsHlsPlaybackEventsObject = object : HmsHlsPlaybackEvents {
26
+ override fun onCue(cue: HmsHlsCue) {
27
+ super.onCue(cue)
28
+
29
+ val data = Arguments.createMap()
30
+ cue.endDate?.let { data.putString("endDate", it.time.toString()) }
31
+ cue.id?.let { data.putString("id", it) }
32
+ cue.payloadval?.let { data.putString("payloadval", it) }
33
+ data.putString("startDate", cue.startDate.time.toString())
34
+
35
+ sendHLSPlaybackEventToJS(HMSHLSPlayerConstants.ON_PLAYBACK_CUE_EVENT, data)
36
+ }
37
+
38
+ override fun onPlaybackFailure(error: HmsHlsException) {
39
+ super.onPlaybackFailure(error)
40
+
41
+ val data = Arguments.createMap()
42
+
43
+ // error
44
+ val errorData = Arguments.createMap()
45
+ errorData.putInt("errorCode", error.error.errorCode)
46
+ errorData.putString("errorCodeName", error.error.errorCodeName)
47
+ error.error.message?.let {
48
+ errorData.putString("message", it)
49
+ }
50
+
51
+ data.putMap("error", errorData)
52
+
53
+ sendHLSPlaybackEventToJS(HMSHLSPlayerConstants.ON_PLAYBACK_FAILURE_EVENT, data)
54
+ }
55
+
56
+ override fun onPlaybackStateChanged(state: HmsHlsPlaybackState) {
57
+ super.onPlaybackStateChanged(state)
58
+
59
+ val data = Arguments.createMap()
60
+ data.putString("state", state.name)
61
+ sendHLSPlaybackEventToJS(HMSHLSPlayerConstants.ON_PLAYBACK_STATE_CHANGE_EVENT, data)
62
+ }
63
+ }
64
+ private val hmsHlsPlayerStatsListenerObject = object : PlayerStatsListener {
65
+ override fun onError(error: HMSException) {
66
+ val data = Arguments.createMap()
67
+
68
+ data.putString("action", error.action)
69
+ data.putInt("code", error.code)
70
+ data.putString("description", error.description)
71
+ data.putBoolean("isTerminal", error.isTerminal)
72
+ data.putString("message", error.message)
73
+ data.putString("name", error.name)
74
+
75
+ sendHLSStatsEventToJS(HMSHLSPlayerConstants.ON_STATS_EVENT_ERROR, data)
76
+ }
77
+
78
+ override fun onEventUpdate(playerStatsModel: PlayerStatsModel) {
79
+ val data = Arguments.createMap()
80
+
81
+ // bandwidth
82
+ data.putInt("bandWidthEstimate", playerStatsModel.bandwidth.bandWidthEstimate.toInt())
83
+ data.putInt("totalBytesLoaded", playerStatsModel.bandwidth.totalBytesLoaded.toInt())
84
+
85
+ // bufferedDuration
86
+ data.putInt("bufferedDuration", playerStatsModel.bufferedDuration.toInt())
87
+
88
+ // distanceFromLive
89
+ data.putInt("distanceFromLive", playerStatsModel.distanceFromLive.toInt())
90
+
91
+ // frameInfo
92
+ data.putInt("droppedFrameCount", playerStatsModel.frameInfo.droppedFrameCount)
93
+
94
+ // videoInfo
95
+ data.putInt("averageBitrate", playerStatsModel.videoInfo.averageBitrate)
96
+ data.putInt("videoHeight", playerStatsModel.videoInfo.videoHeight)
97
+ data.putInt("videoWidth", playerStatsModel.videoInfo.videoWidth)
98
+
99
+ sendHLSStatsEventToJS(HMSHLSPlayerConstants.ON_STATS_EVENT_UPDATE, data)
100
+ }
101
+ }
102
+
103
+ init {
104
+ val inflater = getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
105
+
106
+ // Inflating player_view xml
107
+ val view = inflater.inflate(R.layout.player_view, this)
108
+
109
+ // getting Exoplayer View from above xml
110
+ val localPlayerView = view.findViewById<PlayerView>(R.id.hls_view)
111
+ playerView = localPlayerView
112
+
113
+ val hmssdkCollection = context.getNativeModule(HMSManager::class.java)?.getHmsInstance()
114
+ hmssdkInstance = hmssdkCollection?.get("12345")?.hmsSDK
115
+
116
+ // creating 100ms HLS Player
117
+ val localHmsHlsPlayer = HmsHlsPlayer(context, hmssdkInstance)
118
+ hmsHlsPlayer = localHmsHlsPlayer
119
+
120
+ // Attaching HLS Player Playback State Events listener
121
+ localHmsHlsPlayer.addPlayerEventListener(hmsHlsPlaybackEventsObject)
122
+
123
+ // setting 100ms HLS Player on Exoplayer
124
+ localPlayerView.player = localHmsHlsPlayer.getNativePlayer()
125
+ }
126
+
127
+ fun cleanup() {
128
+ hmsHlsPlayer?.stop()
129
+ hmsHlsPlayer?.addPlayerEventListener(null)
130
+ hmsHlsPlayer?.setStatsMonitor(null)
131
+ }
132
+
133
+ fun play(url: String?) {
134
+ if (url !== null && url.isNotEmpty()) {
135
+ hmsHlsPlayer?.play(url)
136
+ return
137
+ }
138
+
139
+ val hlsStreamingState = this.hmssdkInstance?.getRoom()?.hlsStreamingState
140
+
141
+ val defaultURL: String? = hlsStreamingState?.let {
142
+ if (it.running) {
143
+ it.variants?.get(0)?.hlsStreamUrl
144
+ } else {
145
+ null
146
+ }
147
+ }
148
+
149
+ if (defaultURL !== null) {
150
+ hmsHlsPlayer?.play(defaultURL)
151
+ }
152
+ }
153
+
154
+ fun stop() {
155
+ hmsHlsPlayer?.stop()
156
+ }
157
+
158
+ fun pause() {
159
+ hmsHlsPlayer?.pause()
160
+ }
161
+
162
+ fun resume() {
163
+ hmsHlsPlayer?.resume()
164
+ }
165
+
166
+ fun seekForward(seconds: Double) {
167
+ hmsHlsPlayer?.seekForward(seconds.toLong(), TimeUnit.SECONDS)
168
+ }
169
+
170
+ fun seekBackward(seconds: Double) {
171
+ hmsHlsPlayer?.seekBackward(seconds.toLong(), TimeUnit.SECONDS)
172
+ }
173
+
174
+ fun seekToLivePosition() {
175
+ hmsHlsPlayer?.seekToLivePosition()
176
+ }
177
+
178
+ fun setVolume(level: Int) {
179
+ hmsHlsPlayer?.volume = level
180
+ }
181
+
182
+ fun enableStats(enable: Boolean) {
183
+ if (enable) {
184
+ attachStatsMonitor()
185
+ } else {
186
+ removeStatsMonitor()
187
+ }
188
+ }
189
+
190
+ fun enableControls(show: Boolean) {
191
+ playerView?.let {
192
+ if (show) {
193
+ it.useController = true
194
+ it.showController()
195
+ } else {
196
+ it.hideController()
197
+ it.useController = false
198
+ }
199
+ }
200
+ }
201
+
202
+ private fun attachStatsMonitor() {
203
+ if (statsMonitorAttached) return
204
+
205
+ hmsHlsPlayer?.let {
206
+ it.setStatsMonitor(hmsHlsPlayerStatsListenerObject)
207
+ statsMonitorAttached = true
208
+ }
209
+ }
210
+
211
+ private fun removeStatsMonitor() {
212
+ if (!statsMonitorAttached) return
213
+
214
+ hmsHlsPlayer?.setStatsMonitor(null)
215
+ statsMonitorAttached = false
216
+ }
217
+
218
+ private fun sendHLSPlaybackEventToJS(eventName: String, data: WritableMap) {
219
+ val event: WritableMap = Arguments.createMap()
220
+ event.putString("event", eventName)
221
+ event.putMap("data", data)
222
+
223
+ val reactContext = context as ReactContext
224
+ reactContext.getJSModule(RCTEventEmitter::class.java).receiveEvent(id, HMSHLSPlayerConstants.HMS_HLS_PLAYBACK_EVENT, event)
225
+ }
226
+
227
+ private fun sendHLSStatsEventToJS(eventName: String, data: WritableMap) {
228
+ val event: WritableMap = Arguments.createMap()
229
+ event.putString("event", eventName)
230
+ event.putMap("data", data)
231
+
232
+ val reactContext = context as ReactContext
233
+ reactContext.getJSModule(RCTEventEmitter::class.java).receiveEvent(id, HMSHLSPlayerConstants.HMS_HLS_STATS_EVENT, event)
234
+ }
235
+ }
236
+
237
+ object HMSHLSPlayerConstants {
238
+ // HLS Playback Events
239
+ const val HMS_HLS_PLAYBACK_EVENT = "hmsHlsPlaybackEvent"
240
+ const val ON_PLAYBACK_CUE_EVENT = "ON_PLAYBACK_CUE_EVENT"
241
+ const val ON_PLAYBACK_FAILURE_EVENT = "ON_PLAYBACK_FAILURE_EVENT"
242
+ const val ON_PLAYBACK_STATE_CHANGE_EVENT = "ON_PLAYBACK_STATE_CHANGE_EVENT"
243
+
244
+ // HLS Playback Stats Events
245
+ const val HMS_HLS_STATS_EVENT = "hmsHlsStatsEvent"
246
+ const val ON_STATS_EVENT_UPDATE = "ON_STATS_EVENT_UPDATE"
247
+ const val ON_STATS_EVENT_ERROR = "ON_STATS_EVENT_ERROR"
248
+ }
@@ -0,0 +1,101 @@
1
+ package com.reactnativehmssdk
2
+
3
+ import com.facebook.react.bridge.ReadableArray
4
+ import com.facebook.react.common.MapBuilder
5
+ import com.facebook.react.uimanager.SimpleViewManager
6
+ import com.facebook.react.uimanager.ThemedReactContext
7
+ import com.facebook.react.uimanager.annotations.ReactProp
8
+
9
+ class HMSHLSPlayerManager : SimpleViewManager<HMSHLSPlayer>() {
10
+ private var reactContext: ThemedReactContext? = null
11
+
12
+ override fun getName(): String {
13
+ return REACT_CLASS
14
+ }
15
+
16
+ override fun createViewInstance(reactContext: ThemedReactContext): HMSHLSPlayer {
17
+ this.reactContext = reactContext
18
+ return HMSHLSPlayer(reactContext)
19
+ }
20
+
21
+ override fun onDropViewInstance(view: HMSHLSPlayer) {
22
+ super.onDropViewInstance(view)
23
+ view.cleanup()
24
+ }
25
+
26
+ override fun getExportedCustomDirectEventTypeConstants(): MutableMap<String, Any>? {
27
+ super.getExportedCustomDirectEventTypeConstants()
28
+
29
+ return MapBuilder.of(
30
+ HMSHLSPlayerConstants.HMS_HLS_PLAYBACK_EVENT,
31
+ MapBuilder.of("registrationName", "onHmsHlsPlaybackEvent"),
32
+ HMSHLSPlayerConstants.HMS_HLS_STATS_EVENT,
33
+ MapBuilder.of("registrationName", "onHmsHlsStatsEvent"),
34
+ )
35
+ }
36
+
37
+ override fun receiveCommand(root: HMSHLSPlayer, commandId: Int, args: ReadableArray?) {
38
+ super.receiveCommand(root, commandId, args)
39
+
40
+ when (commandId) {
41
+ 10 -> root.play(args?.getString(0))
42
+ 20 -> root.stop()
43
+ 30 -> root.pause()
44
+ 40 -> root.resume()
45
+ 50 -> root.seekToLivePosition()
46
+ 60 -> {
47
+ args.let {
48
+ if (it != null) {
49
+ root.seekForward(it.getDouble(0))
50
+ }
51
+ }
52
+ }
53
+ 70 -> {
54
+ args.let {
55
+ if (it != null) {
56
+ root.seekBackward(it.getDouble(0))
57
+ }
58
+ }
59
+ }
60
+ 80 -> {
61
+ args.let {
62
+ if (it != null) {
63
+ root.setVolume(it.getInt(0))
64
+ }
65
+ }
66
+ }
67
+ }
68
+ }
69
+
70
+ override fun getCommandsMap(): MutableMap<String, Int>? {
71
+ return MapBuilder.builder<String, Int>()
72
+ .put("play", 10)
73
+ .put("stop", 20)
74
+ .put("pause", 30)
75
+ .put("resume", 40)
76
+ .put("seekToLivePosition", 50)
77
+ .put("seekForward", 60)
78
+ .put("seekBackward", 70)
79
+ .put("setVolume", 80)
80
+ .build()
81
+ }
82
+
83
+ @ReactProp(name = "url")
84
+ fun setStreamURL(view: HMSHLSPlayer, data: String?) {
85
+ view.play(data)
86
+ }
87
+
88
+ @ReactProp(name = "enableStats", defaultBoolean = false)
89
+ fun setEnableStats(view: HMSHLSPlayer, data: Boolean) {
90
+ view.enableStats(data)
91
+ }
92
+
93
+ @ReactProp(name = "enableControls", defaultBoolean = false)
94
+ fun setEnableControls(view: HMSHLSPlayer, data: Boolean) {
95
+ view.enableControls(data)
96
+ }
97
+
98
+ companion object {
99
+ const val REACT_CLASS = "HMSHLSPlayer"
100
+ }
101
+ }
@@ -169,7 +169,8 @@ object HMSHelper {
169
169
  ) {
170
170
  val version = data.getString("version") as String
171
171
  val sdkVersion = data.getString("sdkVersion") as String
172
- return FrameworkInfo(AgentType.REACT_NATIVE, sdkVersion, version)
172
+ val isPrebuilt = data.getBoolean("isPrebuilt")
173
+ return FrameworkInfo(AgentType.REACT_NATIVE, sdkVersion, version, isPrebuilt)
173
174
  }
174
175
  return null
175
176
  }
@@ -255,6 +256,8 @@ object HMSHelper {
255
256
  ) {
256
257
  val useHardwareEchoCancellation = data.getBoolean("useHardwareEchoCancellation")
257
258
  builder.setUseHardwareAcousticEchoCanceler(useHardwareEchoCancellation)
259
+ } else {
260
+ builder.setUseHardwareAcousticEchoCanceler(false)
258
261
  }
259
262
 
260
263
  if (areAllRequiredKeysAvailable(data, arrayOf(Pair("initialState", "String")))) {
@@ -425,15 +428,18 @@ object HMSHelper {
425
428
 
426
429
  fun getRtmpConfig(data: ReadableMap): HMSRecordingConfig? {
427
430
  val record = data.getBoolean("record")
428
- var meetingURL = ""
431
+ var meetingURL: String? = null
429
432
  var rtmpURLs = listOf<String>()
430
433
  var resolution: HMSRtmpVideoResolution? = null
431
434
  if (areAllRequiredKeysAvailable(data, arrayOf(Pair("meetingURL", "String")))) {
432
435
  val meetingURLValid = data.getString("meetingURL") as String
433
- if (URLUtil.isValidUrl(meetingURLValid)) {
434
- meetingURL = meetingURLValid
435
- } else {
436
- return null
436
+
437
+ if (meetingURLValid.isNotEmpty()) {
438
+ if (URLUtil.isValidUrl(meetingURLValid)) {
439
+ meetingURL = meetingURLValid
440
+ } else {
441
+ return null
442
+ }
437
443
  }
438
444
  }
439
445
 
@@ -419,20 +419,6 @@ class HMSManager(reactContext: ReactApplicationContext) :
419
419
  hms?.setAudioDeviceChangeListener()
420
420
  }
421
421
 
422
- @ReactMethod
423
- fun setSessionMetaData(data: ReadableMap, callback: Promise?) {
424
- val hms = HMSHelper.getHms(data, hmsCollection)
425
-
426
- hms?.setSessionMetaData(data, callback)
427
- }
428
-
429
- @ReactMethod
430
- fun getSessionMetaData(data: ReadableMap, callback: Promise?) {
431
- val hms = HMSHelper.getHms(data, hmsCollection)
432
-
433
- hms?.getSessionMetaData(callback)
434
- }
435
-
436
422
  @ReactMethod(isBlockingSynchronousMethod = true)
437
423
  fun getPeerProperty(data: ReadableMap): WritableMap? {
438
424
  val hms = HMSHelper.getHms(data, hmsCollection) ?: return null
@@ -940,6 +926,13 @@ class HMSManager(reactContext: ReactApplicationContext) :
940
926
  hms?.removeKeyChangeListener(data, promise)
941
927
  }
942
928
 
929
+ @ReactMethod
930
+ fun getRoomLayout(data: ReadableMap, promise: Promise?) {
931
+ val hms = HMSHelper.getHms(data, hmsCollection)
932
+
933
+ hms?.getRoomLayout(data, promise)
934
+ }
935
+
943
936
  fun emitEvent(event: String, data: WritableMap) {
944
937
  reactApplicationContext
945
938
  .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java)