@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
@@ -0,0 +1,261 @@
1
+ import React, { useImperativeHandle, useRef } from 'react';
2
+ import { View, StyleSheet, UIManager, findNodeHandle } from 'react-native';
3
+ import type { StyleProp, ViewStyle } from 'react-native';
4
+
5
+ import {
6
+ setHMSHLSPlayerCue,
7
+ setHMSHLSPlayerPlaybackError,
8
+ setHMSHLSPlayerPlaybackState,
9
+ setHMSHLSPlayerStats,
10
+ setHMSHLSPlayerStatsError,
11
+ } from './hooks';
12
+ import {
13
+ RCTHMSHLSPlayer,
14
+ RCTHMSHLSPlayerViewManagerConfig,
15
+ } from './RCTHMSHLSPlayer';
16
+ import type {
17
+ HmsHlsPlaybackEventHandler,
18
+ HmsHlsStatsEventHandler,
19
+ RCTHMSHLSPlayerRef,
20
+ } from './RCTHMSHLSPlayer';
21
+ import {
22
+ HMSHLSPlayerPlaybackEventTypes,
23
+ HMSHLSPlayerStatsEventTypes,
24
+ } from '../../types';
25
+ import type { HMSHLSPlayerPlaybackCueEventData } from '../../types';
26
+ import { HMSEncoder } from '../../classes/HMSEncoder';
27
+ import type { HMSHLSPlayerPlaybackCue } from '../../stores/types';
28
+
29
+ export interface HMSHLSPlayerProps {
30
+ url?: string;
31
+ style?: StyleProp<ViewStyle>;
32
+ containerStyle?: StyleProp<ViewStyle>;
33
+ aspectRatio?: number;
34
+ enableStats?: boolean;
35
+ enableControls?: boolean;
36
+ }
37
+
38
+ export interface HMSHLSPlayerRefProperties {
39
+ play: (url?: string) => void;
40
+ stop: () => void;
41
+ pause: () => void;
42
+ resume: () => void;
43
+ seekForward: (seconds: number) => void;
44
+ seekBackward: (seconds: number) => void;
45
+ seekToLivePosition: () => void;
46
+ setVolume: (level: number) => void;
47
+ }
48
+
49
+ const _HMSHLSPlayer: React.ForwardRefRenderFunction<
50
+ HMSHLSPlayerRefProperties,
51
+ HMSHLSPlayerProps
52
+ > = (
53
+ {
54
+ url = '',
55
+ style,
56
+ containerStyle,
57
+ aspectRatio = 9 / 16,
58
+ enableStats,
59
+ enableControls = false,
60
+ },
61
+ ref
62
+ ) => {
63
+ const hmsHlsPlayerRef = useRef<RCTHMSHLSPlayerRef | null>(null);
64
+
65
+ useImperativeHandle(
66
+ ref,
67
+ () => ({
68
+ play: (url?: string) => {
69
+ if (
70
+ hmsHlsPlayerRef.current &&
71
+ RCTHMSHLSPlayerViewManagerConfig.Commands.play
72
+ ) {
73
+ UIManager.dispatchViewManagerCommand(
74
+ findNodeHandle(hmsHlsPlayerRef.current),
75
+ RCTHMSHLSPlayerViewManagerConfig.Commands.play,
76
+ url ? [url] : ['']
77
+ );
78
+ }
79
+ },
80
+ stop: () => {
81
+ if (
82
+ hmsHlsPlayerRef.current &&
83
+ RCTHMSHLSPlayerViewManagerConfig.Commands.stop
84
+ ) {
85
+ UIManager.dispatchViewManagerCommand(
86
+ findNodeHandle(hmsHlsPlayerRef.current),
87
+ RCTHMSHLSPlayerViewManagerConfig.Commands.stop,
88
+ undefined
89
+ );
90
+ }
91
+ },
92
+ pause: () => {
93
+ if (
94
+ hmsHlsPlayerRef.current &&
95
+ RCTHMSHLSPlayerViewManagerConfig.Commands.pause
96
+ ) {
97
+ UIManager.dispatchViewManagerCommand(
98
+ findNodeHandle(hmsHlsPlayerRef.current),
99
+ RCTHMSHLSPlayerViewManagerConfig.Commands.pause,
100
+ undefined
101
+ );
102
+ }
103
+ },
104
+ resume: () => {
105
+ if (
106
+ hmsHlsPlayerRef.current &&
107
+ RCTHMSHLSPlayerViewManagerConfig.Commands.resume
108
+ ) {
109
+ UIManager.dispatchViewManagerCommand(
110
+ findNodeHandle(hmsHlsPlayerRef.current),
111
+ RCTHMSHLSPlayerViewManagerConfig.Commands.resume,
112
+ undefined
113
+ );
114
+ }
115
+ },
116
+ seekForward: (seconds: number) => {
117
+ if (typeof seconds !== 'number') {
118
+ throw new Error(
119
+ seconds
120
+ ? 'seconds must be a `number` type'
121
+ : 'seconds was not provided'
122
+ );
123
+ }
124
+
125
+ if (
126
+ hmsHlsPlayerRef.current &&
127
+ RCTHMSHLSPlayerViewManagerConfig.Commands.seekForward
128
+ ) {
129
+ UIManager.dispatchViewManagerCommand(
130
+ findNodeHandle(hmsHlsPlayerRef.current),
131
+ RCTHMSHLSPlayerViewManagerConfig.Commands.seekForward,
132
+ [seconds]
133
+ );
134
+ }
135
+ },
136
+ seekBackward: (seconds: number) => {
137
+ if (typeof seconds !== 'number') {
138
+ throw new Error(
139
+ seconds
140
+ ? 'seconds must be a `number` type'
141
+ : 'seconds was not provided'
142
+ );
143
+ }
144
+
145
+ if (
146
+ hmsHlsPlayerRef.current &&
147
+ RCTHMSHLSPlayerViewManagerConfig.Commands.seekBackward
148
+ ) {
149
+ UIManager.dispatchViewManagerCommand(
150
+ findNodeHandle(hmsHlsPlayerRef.current),
151
+ RCTHMSHLSPlayerViewManagerConfig.Commands.seekBackward,
152
+ [seconds]
153
+ );
154
+ }
155
+ },
156
+ seekToLivePosition: () => {
157
+ if (
158
+ hmsHlsPlayerRef.current &&
159
+ RCTHMSHLSPlayerViewManagerConfig.Commands.seekToLivePosition
160
+ ) {
161
+ UIManager.dispatchViewManagerCommand(
162
+ findNodeHandle(hmsHlsPlayerRef.current),
163
+ RCTHMSHLSPlayerViewManagerConfig.Commands.seekToLivePosition,
164
+ undefined
165
+ );
166
+ }
167
+ },
168
+ setVolume: (level: number) => {
169
+ if (typeof level !== 'number') {
170
+ throw new Error(
171
+ level ? 'level must be a `number` type' : 'level was not provided'
172
+ );
173
+ }
174
+
175
+ if (
176
+ hmsHlsPlayerRef.current &&
177
+ RCTHMSHLSPlayerViewManagerConfig.Commands.setVolume
178
+ ) {
179
+ UIManager.dispatchViewManagerCommand(
180
+ findNodeHandle(hmsHlsPlayerRef.current),
181
+ RCTHMSHLSPlayerViewManagerConfig.Commands.setVolume,
182
+ [level]
183
+ );
184
+ }
185
+ },
186
+ }),
187
+ []
188
+ );
189
+
190
+ // Handle HLS Playback events
191
+ const handleHLSPlaybackEvent: HmsHlsPlaybackEventHandler = ({
192
+ nativeEvent,
193
+ }) => {
194
+ const { event, data } = nativeEvent;
195
+
196
+ if (event === HMSHLSPlayerPlaybackEventTypes.ON_PLAYBACK_CUE_EVENT) {
197
+ const transformedData = HMSEncoder.transformHMSHLSCueEventData<
198
+ HMSHLSPlayerPlaybackCueEventData,
199
+ HMSHLSPlayerPlaybackCue
200
+ >(data);
201
+ setHMSHLSPlayerCue(transformedData);
202
+ } else if (
203
+ event === HMSHLSPlayerPlaybackEventTypes.ON_PLAYBACK_FAILURE_EVENT
204
+ ) {
205
+ setHMSHLSPlayerPlaybackError(data.error);
206
+ } else {
207
+ setHMSHLSPlayerPlaybackState(data.state);
208
+ }
209
+ };
210
+
211
+ // Handle HLS Stats events
212
+ const handleHLSStatsEvent: HmsHlsStatsEventHandler = ({ nativeEvent }) => {
213
+ const { event, data } = nativeEvent;
214
+
215
+ if (event === HMSHLSPlayerStatsEventTypes.ON_STATS_EVENT_ERROR) {
216
+ setHMSHLSPlayerStatsError(data);
217
+ } else {
218
+ setHMSHLSPlayerStats(data);
219
+ }
220
+ };
221
+
222
+ return (
223
+ <View style={[styles.container, containerStyle]}>
224
+ <View style={[styles.playerWrapper, style]}>
225
+ <RCTHMSHLSPlayer
226
+ ref={hmsHlsPlayerRef}
227
+ url={url}
228
+ style={[styles.player, { aspectRatio }]}
229
+ enableStats={enableStats}
230
+ enableControls={enableControls}
231
+ onHmsHlsPlaybackEvent={handleHLSPlaybackEvent}
232
+ onHmsHlsStatsEvent={handleHLSStatsEvent}
233
+ />
234
+ </View>
235
+ </View>
236
+ );
237
+ };
238
+
239
+ export const HMSHLSPlayer = React.forwardRef<
240
+ HMSHLSPlayerRefProperties,
241
+ HMSHLSPlayerProps
242
+ >(_HMSHLSPlayer);
243
+
244
+ const styles = StyleSheet.create({
245
+ container: {
246
+ flex: 1,
247
+ alignItems: 'center',
248
+ justifyContent: 'center',
249
+ },
250
+ playerWrapper: {
251
+ backgroundColor: '#000000',
252
+ alignItems: 'center',
253
+ justifyContent: 'center',
254
+ },
255
+ player: {
256
+ width: '100%',
257
+ maxHeight: '100%',
258
+ maxWidth: '100%',
259
+ aspectRatio: 9 / 16,
260
+ },
261
+ });
@@ -0,0 +1,37 @@
1
+ import { requireNativeComponent, UIManager } from 'react-native';
2
+ import type {
3
+ StyleProp,
4
+ NativeSyntheticEvent,
5
+ ViewStyle,
6
+ NativeMethods,
7
+ } from 'react-native';
8
+ import type {
9
+ HMSHLSPlayerPlaybackEvent,
10
+ HMSHLSPlayerStatsEvent,
11
+ } from '../../types';
12
+
13
+ export type HmsHlsPlaybackEventHandler = (
14
+ event: NativeSyntheticEvent<HMSHLSPlayerPlaybackEvent>
15
+ ) => void;
16
+
17
+ export type HmsHlsStatsEventHandler = (
18
+ event: NativeSyntheticEvent<HMSHLSPlayerStatsEvent>
19
+ ) => void;
20
+
21
+ export type RCTHMSHLSPlayerProps = {
22
+ url?: string;
23
+ style?: StyleProp<ViewStyle>;
24
+ enableStats?: boolean;
25
+ enableControls?: boolean;
26
+ onHmsHlsPlaybackEvent?: HmsHlsPlaybackEventHandler;
27
+ onHmsHlsStatsEvent?: HmsHlsStatsEventHandler;
28
+ };
29
+
30
+ export const RCTHMSHLSPlayer =
31
+ requireNativeComponent<RCTHMSHLSPlayerProps>('HMSHLSPlayer');
32
+
33
+ export type RCTHMSHLSPlayerRef = React.Component<RCTHMSHLSPlayerProps> &
34
+ Readonly<NativeMethods>;
35
+
36
+ export const RCTHMSHLSPlayerViewManagerConfig =
37
+ UIManager.getViewManagerConfig('HMSHLSPlayer');
@@ -0,0 +1,101 @@
1
+ import { useEffect } from 'react';
2
+ import type { DependencyList } from 'react';
3
+ import { shallow } from 'zustand/shallow';
4
+
5
+ import { useHMSHLSPlayerStatsStore } from '../../stores/hls-player-stats-store';
6
+ import { useHMSStore } from '../../stores/hms-store';
7
+ import type { HMSHLSPlayerStatsUpdateEventData } from '../../types';
8
+ import type {
9
+ HMSHLSPlayerCue,
10
+ HMSHLSPlayerPlaybackError,
11
+ HMSHLSPlayerStatsError,
12
+ } from '../../stores/types';
13
+
14
+ // use latest state (with component rerender)
15
+
16
+ export const useHMSHLSPlayerPlaybackState = () => {
17
+ return useHMSStore((state) => state.playbackState);
18
+ };
19
+
20
+ export const useHMSHLSPlayerStats = () => {
21
+ return useHMSHLSPlayerStatsStore(
22
+ (state) => ({
23
+ stats: state.stats,
24
+ error: state.error,
25
+ }),
26
+ shallow
27
+ );
28
+ };
29
+
30
+ export const useHMSHLSPlayerStat = <
31
+ T extends keyof HMSHLSPlayerStatsUpdateEventData,
32
+ >(
33
+ stat: T
34
+ ) => {
35
+ return useHMSHLSPlayerStatsStore((state) => state.stats[stat]);
36
+ };
37
+
38
+ // // The distance of current playback position from the live edge of HLS stream
39
+ // export const useIsHLSStreamLive = (liveOffsetMillis: number = 1000) => {
40
+ // return useHMSHLSPlayerStatsStore((state) => state.stats.distanceFromLive < liveOffsetMillis);
41
+ // }
42
+
43
+ // get latest state (without component rerender)
44
+
45
+ export const useHMSHLSPlayerStatsError = (
46
+ callback: (error: NonNullable<HMSHLSPlayerStatsError>) => void,
47
+ deps: DependencyList
48
+ ) => {
49
+ useEffect(() => {
50
+ return useHMSHLSPlayerStatsStore.subscribe(
51
+ (state) => state.error,
52
+ (data) => {
53
+ if (data) callback(data);
54
+ }
55
+ );
56
+ }, deps);
57
+ };
58
+
59
+ export const useHMSHLSPlayerPlaybackError = (
60
+ callback: (error: NonNullable<HMSHLSPlayerPlaybackError>) => void,
61
+ deps: DependencyList
62
+ ) => {
63
+ useEffect(() => {
64
+ return useHMSStore.subscribe(
65
+ (state) => state.error,
66
+ (data) => {
67
+ if (data) callback(data);
68
+ }
69
+ );
70
+ }, deps);
71
+ };
72
+
73
+ export const useHMSHLSPlayerCue = (
74
+ callback: (error: NonNullable<HMSHLSPlayerCue>) => void,
75
+ deps: DependencyList
76
+ ) => {
77
+ useEffect(() => {
78
+ return useHMSStore.subscribe(
79
+ (state) => state.cue,
80
+ (data) => {
81
+ if (data) callback(data);
82
+ }
83
+ );
84
+ }, deps);
85
+ };
86
+
87
+ // state setters
88
+
89
+ export const setHMSHLSPlayerPlaybackState =
90
+ useHMSStore.getState().setPlaybackState;
91
+
92
+ export const setHMSHLSPlayerCue = useHMSStore.getState().setCue;
93
+
94
+ export const setHMSHLSPlayerPlaybackError =
95
+ useHMSStore.getState().setPlaybackError;
96
+
97
+ export const setHMSHLSPlayerStats =
98
+ useHMSHLSPlayerStatsStore.getState().changeStats;
99
+
100
+ export const setHMSHLSPlayerStatsError =
101
+ useHMSHLSPlayerStatsStore.getState().setError;
@@ -0,0 +1,9 @@
1
+ export * from './HMSHLSPlayer';
2
+ export {
3
+ useHMSHLSPlayerPlaybackState,
4
+ useHMSHLSPlayerCue,
5
+ useHMSHLSPlayerPlaybackError,
6
+ useHMSHLSPlayerStats,
7
+ useHMSHLSPlayerStat,
8
+ useHMSHLSPlayerStatsError,
9
+ } from './hooks';
@@ -0,0 +1,85 @@
1
+ import * as React from 'react';
2
+
3
+ import { HMSConstants } from '../classes/HMSConstants';
4
+ import { HMSEncoder } from '../classes/HMSEncoder';
5
+ import { HMSEventEmitter } from '../classes/HMSEventEmitter';
6
+ import { getLogger } from '../classes/HMSLogger';
7
+ import HMSNativeEventListener from '../classes/HMSNativeEventListener';
8
+ import type { HMSNativeEventSubscription } from '../classes/HMSNativeEventListener';
9
+ import type { HMSPeer } from '../classes/HMSPeer';
10
+ import { HMSPeerUpdate, HMSPeerUpdateOrdinals } from '../classes/HMSPeerUpdate';
11
+ import { getHmsPeersCache } from '../classes/HMSPeersCache';
12
+ import { HMSUpdateListenerActions } from '../classes/HMSUpdateListenerActions';
13
+
14
+ const eventType = HMSUpdateListenerActions.ON_PEER_UPDATE;
15
+
16
+ // TODO: How to handle events which have already been received?
17
+ // TODO(DOUBT): add HMSInstance as dependency because of actions enabling/disabling events on HMSInstance?
18
+ export const useHMSPeerUpdates = (
19
+ effect: (data: { peer: HMSPeer; type: HMSPeerUpdate }) => void,
20
+ deps: React.DependencyList | undefined = []
21
+ ) => {
22
+ React.useEffect(() => {
23
+ if (HMSEventEmitter.listenerCount(eventType) <= 0) {
24
+ addPeerUpdateSubscription();
25
+ }
26
+
27
+ const subscription = HMSEventEmitter.addListener(eventType, effect, null);
28
+
29
+ return () => {
30
+ subscription.remove();
31
+
32
+ if (HMSEventEmitter.listenerCount(eventType) <= 0) {
33
+ removePeerUpdateSubscription();
34
+ }
35
+ };
36
+ }, deps);
37
+ };
38
+
39
+ let peerUpdateSubscription: HMSNativeEventSubscription | null = null;
40
+
41
+ function addPeerUpdateSubscription() {
42
+ if (peerUpdateSubscription !== null) {
43
+ return;
44
+ }
45
+
46
+ peerUpdateSubscription = HMSNativeEventListener.addListener(
47
+ HMSConstants.DEFAULT_SDK_ID,
48
+ HMSUpdateListenerActions.ON_PEER_UPDATE,
49
+ (peerData: any) => {
50
+ const data: { peer: any; type: any } = {
51
+ peer: peerData,
52
+ type: null,
53
+ };
54
+
55
+ for (const ordinal of HMSPeerUpdateOrdinals.keys()) {
56
+ if (ordinal in peerData) {
57
+ data.peer.peerID = peerData[ordinal];
58
+ data.type = ordinal;
59
+ break;
60
+ }
61
+ }
62
+
63
+ const peer: HMSPeer = HMSEncoder.encodeHmsPeer(data.peer);
64
+ const type = HMSEncoder.encodeHmsPeerUpdate(data.type) || data.type;
65
+
66
+ getHmsPeersCache()?.updatePeerCache(data.peer.peerID, data.peer, type);
67
+
68
+ getLogger()?.verbose('#Listener ON_PEER_LISTENER_CALL', {
69
+ peer,
70
+ type,
71
+ });
72
+
73
+ HMSEventEmitter.emit(eventType, { peer, type });
74
+ }
75
+ );
76
+ }
77
+
78
+ function removePeerUpdateSubscription() {
79
+ if (peerUpdateSubscription === null) {
80
+ return;
81
+ }
82
+
83
+ peerUpdateSubscription.remove();
84
+ peerUpdateSubscription = null;
85
+ }
package/src/index.ts CHANGED
@@ -88,4 +88,18 @@ export type {
88
88
  export type { HmsViewComponent as HMSView } from './classes/HmsView';
89
89
 
90
90
  import { HMSSDK as HmsManager } from './classes/HMSSDK';
91
+
92
+ // 100ms React Native Native Module
93
+ export { default as HMSManagerModule } from './classes/HMSManagerModule';
94
+
95
+ // 100ms Components
96
+ export * from './components/HMSHLSPlayer';
97
+
98
+ // 100ms Hooks
99
+ export * from './hooks/useHMSPeerUpdates';
100
+
101
+ // 100ms types
102
+ export * from './types';
103
+ export * from './stores/types';
104
+
91
105
  export default HmsManager;
@@ -0,0 +1,25 @@
1
+ import type { StateCreator } from 'zustand';
2
+ import { HMSHLSPlayerPlaybackState } from '../types';
3
+ import type {
4
+ HMSHLSPlayerPlaybackCue,
5
+ HMSHLSPlayerPlaybackError,
6
+ HMSHLSPlayerPlaybackSlice,
7
+ HMSStore,
8
+ } from './types';
9
+
10
+ export const createHMSHLSPlayerPlaybackSlice: StateCreator<
11
+ HMSStore,
12
+ [],
13
+ [],
14
+ HMSHLSPlayerPlaybackSlice
15
+ > = (set) => ({
16
+ cue: undefined,
17
+ setCue: (cue: HMSHLSPlayerPlaybackCue) => set({ cue }),
18
+
19
+ playbackState: HMSHLSPlayerPlaybackState.UNKNOWN,
20
+ setPlaybackState: (playbackState: HMSHLSPlayerPlaybackState) =>
21
+ set({ playbackState }),
22
+
23
+ error: undefined,
24
+ setPlaybackError: (error: HMSHLSPlayerPlaybackError) => set({ error }),
25
+ });
@@ -0,0 +1,37 @@
1
+ import { create } from 'zustand';
2
+ import { subscribeWithSelector } from 'zustand/middleware';
3
+ import type {
4
+ HMSHLSPlayerStats,
5
+ HMSHLSPlayerStatsError,
6
+ HMSHLSPlayerStatsStore,
7
+ } from './types';
8
+
9
+ export const useHMSHLSPlayerStatsStore = create<HMSHLSPlayerStatsStore>()(
10
+ subscribeWithSelector((set) => ({
11
+ // Handle Stats
12
+ stats: {
13
+ // bandwidth
14
+ bandWidthEstimate: 0,
15
+ totalBytesLoaded: 0,
16
+
17
+ // bufferedDuration
18
+ bufferedDuration: 0,
19
+
20
+ // distanceFromLive
21
+ distanceFromLive: 0,
22
+
23
+ // frameInfo
24
+ droppedFrameCount: 0,
25
+
26
+ // videoInfo
27
+ averageBitrate: 0,
28
+ videoHeight: 0,
29
+ videoWidth: 0,
30
+ },
31
+ changeStats: (stats: HMSHLSPlayerStats) => set({ stats }),
32
+
33
+ // Handle Stats Error
34
+ error: undefined,
35
+ setError: (error: HMSHLSPlayerStatsError) => set({ error }),
36
+ }))
37
+ );
@@ -0,0 +1,11 @@
1
+ import { create } from 'zustand';
2
+ import { subscribeWithSelector } from 'zustand/middleware';
3
+
4
+ import { createHMSHLSPlayerPlaybackSlice } from './hls-player-playback-slice';
5
+ import type { HMSStore } from './types';
6
+
7
+ export const useHMSStore = create<HMSStore>()(
8
+ subscribeWithSelector((...a) => ({
9
+ ...createHMSHLSPlayerPlaybackSlice(...a),
10
+ }))
11
+ );
@@ -0,0 +1,49 @@
1
+ // Stores
2
+
3
+ import type {
4
+ HMSHLSPlayerPlaybackState,
5
+ HMSHLSPlayerPlaybackCueEventData,
6
+ HMSHLSPlayerPlaybackFailureEventData,
7
+ HMSHLSPlayerStatsErrorEventData,
8
+ HMSHLSPlayerStatsUpdateEventData,
9
+ } from '../types';
10
+
11
+ export type HMSStore = HMSHLSPlayerPlaybackSlice;
12
+ export type HMSHLSPlayerStatsStore = HMSHLSPlayerStatsSlice;
13
+
14
+ // HLS Player Playback Slice
15
+
16
+ export interface HMSHLSPlayerPlaybackCue
17
+ extends Omit<HMSHLSPlayerPlaybackCueEventData, 'endDate' | 'startDate'> {
18
+ endDate?: Date;
19
+ startDate: Date;
20
+ }
21
+
22
+ export type HMSHLSPlayerCue = HMSHLSPlayerPlaybackCue | undefined;
23
+
24
+ export type HMSHLSPlayerPlaybackError =
25
+ | HMSHLSPlayerPlaybackFailureEventData['error']
26
+ | undefined;
27
+
28
+ export interface HMSHLSPlayerPlaybackSlice {
29
+ cue: HMSHLSPlayerCue;
30
+ playbackState: HMSHLSPlayerPlaybackState;
31
+ error: HMSHLSPlayerPlaybackError;
32
+ setCue(cue: HMSHLSPlayerPlaybackCue): void;
33
+ setPlaybackState(playbackState: HMSHLSPlayerPlaybackState): void;
34
+ setPlaybackError(error: HMSHLSPlayerPlaybackError): void;
35
+ }
36
+
37
+ // HLS Player Stats Slice
38
+
39
+ export type HMSHLSPlayerStats = HMSHLSPlayerStatsUpdateEventData;
40
+ export type HMSHLSPlayerStatsError =
41
+ | HMSHLSPlayerStatsErrorEventData
42
+ | undefined;
43
+
44
+ export interface HMSHLSPlayerStatsSlice {
45
+ stats: HMSHLSPlayerStats;
46
+ error: HMSHLSPlayerStatsError | undefined;
47
+ changeStats(stats: HMSHLSPlayerStats): void;
48
+ setError(error: HMSHLSPlayerStatsError): void;
49
+ }