@100mslive/react-native-hms 1.2.0 → 1.4.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 (279) hide show
  1. package/README.md +61 -7
  2. package/android/src/main/java/com/reactnativehmssdk/HMSDecoder.kt +121 -53
  3. package/android/src/main/java/com/reactnativehmssdk/HMSManager.kt +21 -0
  4. package/android/src/main/java/com/reactnativehmssdk/HMSRNSDK.kt +177 -31
  5. package/ios/HMSDecoder.swift +113 -50
  6. package/ios/HMSManager.m +5 -0
  7. package/ios/HMSManager.swift +22 -1
  8. package/ios/HMSRNSDK.swift +157 -26
  9. package/ios/HMSView.swift +1 -1
  10. package/lib/commonjs/classes/HMSAudioCodec.js +4 -4
  11. package/lib/commonjs/classes/HMSAudioCodec.js.map +1 -1
  12. package/lib/commonjs/classes/HMSAudioDevice.js +4 -4
  13. package/lib/commonjs/classes/HMSAudioDevice.js.map +1 -1
  14. package/lib/commonjs/classes/HMSAudioFilePlayerNode.js.map +1 -1
  15. package/lib/commonjs/classes/HMSAudioMixerSource.js.map +1 -1
  16. package/lib/commonjs/classes/HMSAudioMixingMode.js +4 -4
  17. package/lib/commonjs/classes/HMSAudioMixingMode.js.map +1 -1
  18. package/lib/commonjs/classes/HMSAudioMode.js +4 -4
  19. package/lib/commonjs/classes/HMSAudioMode.js.map +1 -1
  20. package/lib/commonjs/classes/HMSAudioNode.js +2 -1
  21. package/lib/commonjs/classes/HMSAudioNode.js.map +1 -1
  22. package/lib/commonjs/classes/HMSAudioSettings.js.map +1 -1
  23. package/lib/commonjs/classes/HMSAudioTrack.js.map +1 -1
  24. package/lib/commonjs/classes/HMSAudioTrackSettings.js +1 -1
  25. package/lib/commonjs/classes/HMSAudioTrackSettings.js.map +1 -1
  26. package/lib/commonjs/classes/HMSBrowserRecordingState.js.map +1 -1
  27. package/lib/commonjs/classes/HMSCameraFacing.js +4 -4
  28. package/lib/commonjs/classes/HMSCameraFacing.js.map +1 -1
  29. package/lib/commonjs/classes/HMSChangeTrackStateRequest.js.map +1 -1
  30. package/lib/commonjs/classes/HMSConfig.js.map +1 -1
  31. package/lib/commonjs/classes/HMSConstants.js +11 -0
  32. package/lib/commonjs/classes/HMSConstants.js.map +1 -0
  33. package/lib/commonjs/classes/HMSEncoder.js +21 -43
  34. package/lib/commonjs/classes/HMSEncoder.js.map +1 -1
  35. package/lib/commonjs/classes/HMSException.js +3 -4
  36. package/lib/commonjs/classes/HMSException.js.map +1 -1
  37. package/lib/commonjs/classes/HMSHLSConfig.js.map +1 -1
  38. package/lib/commonjs/classes/HMSHLSMeetingURLVariant.js.map +1 -1
  39. package/lib/commonjs/classes/HMSHLSRecordingConfig.js.map +1 -1
  40. package/lib/commonjs/classes/HMSHLSRecordingState.js.map +1 -1
  41. package/lib/commonjs/classes/HMSHLSStreamingState.js.map +1 -1
  42. package/lib/commonjs/classes/HMSHLSVariant.js.map +1 -1
  43. package/lib/commonjs/classes/HMSHelper.js.map +1 -1
  44. package/lib/commonjs/classes/HMSLocalAudioStats.js.map +1 -1
  45. package/lib/commonjs/classes/HMSLocalAudioTrack.js.map +1 -1
  46. package/lib/commonjs/classes/HMSLocalPeer.js +0 -1
  47. package/lib/commonjs/classes/HMSLocalPeer.js.map +1 -1
  48. package/lib/commonjs/classes/HMSLocalVideoStats.js.map +1 -1
  49. package/lib/commonjs/classes/HMSLocalVideoTrack.js +5 -6
  50. package/lib/commonjs/classes/HMSLocalVideoTrack.js.map +1 -1
  51. package/lib/commonjs/classes/HMSLogAlarmManager.js +4 -4
  52. package/lib/commonjs/classes/HMSLogAlarmManager.js.map +1 -1
  53. package/lib/commonjs/classes/HMSLogLevel.js +4 -4
  54. package/lib/commonjs/classes/HMSLogLevel.js.map +1 -1
  55. package/lib/commonjs/classes/HMSLogSettings.js.map +1 -1
  56. package/lib/commonjs/classes/HMSLogger.js +17 -25
  57. package/lib/commonjs/classes/HMSLogger.js.map +1 -1
  58. package/lib/commonjs/classes/HMSMessage.js +1 -2
  59. package/lib/commonjs/classes/HMSMessage.js.map +1 -1
  60. package/lib/commonjs/classes/HMSMessageRecipient.js.map +1 -1
  61. package/lib/commonjs/classes/HMSMessageRecipientType.js +4 -4
  62. package/lib/commonjs/classes/HMSMessageRecipientType.js.map +1 -1
  63. package/lib/commonjs/classes/HMSMessageType.js +4 -4
  64. package/lib/commonjs/classes/HMSMessageType.js.map +1 -1
  65. package/lib/commonjs/classes/HMSMicNode.js.map +1 -1
  66. package/lib/commonjs/classes/HMSNativeEventEmitter.js +0 -5
  67. package/lib/commonjs/classes/HMSNativeEventEmitter.js.map +1 -1
  68. package/lib/commonjs/classes/HMSNetworkQuality.js.map +1 -1
  69. package/lib/commonjs/classes/HMSPIPListenerActions.js +4 -4
  70. package/lib/commonjs/classes/HMSPIPListenerActions.js.map +1 -1
  71. package/lib/commonjs/classes/HMSPeer.js +68 -22
  72. package/lib/commonjs/classes/HMSPeer.js.map +1 -1
  73. package/lib/commonjs/classes/HMSPeerUpdate.js +7 -5
  74. package/lib/commonjs/classes/HMSPeerUpdate.js.map +1 -1
  75. package/lib/commonjs/classes/HMSPeersCache.js +229 -0
  76. package/lib/commonjs/classes/HMSPeersCache.js.map +1 -0
  77. package/lib/commonjs/classes/HMSPermissions.js.map +1 -1
  78. package/lib/commonjs/classes/HMSPublishSettings.js.map +1 -1
  79. package/lib/commonjs/classes/HMSRTCStats.js.map +1 -1
  80. package/lib/commonjs/classes/HMSRTCStatsReport.js.map +1 -1
  81. package/lib/commonjs/classes/HMSRTMPConfig.js.map +1 -1
  82. package/lib/commonjs/classes/HMSRemoteAudioStats.js.map +1 -1
  83. package/lib/commonjs/classes/HMSRemoteAudioTrack.js.map +1 -1
  84. package/lib/commonjs/classes/HMSRemotePeer.js +0 -1
  85. package/lib/commonjs/classes/HMSRemotePeer.js.map +1 -1
  86. package/lib/commonjs/classes/HMSRemoteVideoStats.js.map +1 -1
  87. package/lib/commonjs/classes/HMSRemoteVideoTrack.js +0 -1
  88. package/lib/commonjs/classes/HMSRemoteVideoTrack.js.map +1 -1
  89. package/lib/commonjs/classes/HMSRole.js.map +1 -1
  90. package/lib/commonjs/classes/HMSRoleChangeRequest.js.map +1 -1
  91. package/lib/commonjs/classes/HMSRoom.js +79 -22
  92. package/lib/commonjs/classes/HMSRoom.js.map +1 -1
  93. package/lib/commonjs/classes/HMSRoomCache.js +128 -0
  94. package/lib/commonjs/classes/HMSRoomCache.js.map +1 -0
  95. package/lib/commonjs/classes/HMSRoomUpdate.js +4 -4
  96. package/lib/commonjs/classes/HMSRoomUpdate.js.map +1 -1
  97. package/lib/commonjs/classes/HMSRtmpStreamingState.js.map +1 -1
  98. package/lib/commonjs/classes/HMSRtmpVideoResolution.js.map +1 -1
  99. package/lib/commonjs/classes/HMSSDK.js +501 -33
  100. package/lib/commonjs/classes/HMSSDK.js.map +1 -1
  101. package/lib/commonjs/classes/HMSScreenBroadcastAudioReceiverNode.js.map +1 -1
  102. package/lib/commonjs/classes/HMSServerRecordingState.js.map +1 -1
  103. package/lib/commonjs/classes/HMSSimulcastLayerSettings.js.map +1 -1
  104. package/lib/commonjs/classes/HMSSimulcastSettings.js.map +1 -1
  105. package/lib/commonjs/classes/HMSSpeaker.js.map +1 -1
  106. package/lib/commonjs/classes/HMSSubscribeSettings.js.map +1 -1
  107. package/lib/commonjs/classes/HMSTrack.js.map +1 -1
  108. package/lib/commonjs/classes/HMSTrackSettings.js.map +1 -1
  109. package/lib/commonjs/classes/HMSTrackSettingsInitState.js +4 -4
  110. package/lib/commonjs/classes/HMSTrackSettingsInitState.js.map +1 -1
  111. package/lib/commonjs/classes/HMSTrackSource.js +4 -4
  112. package/lib/commonjs/classes/HMSTrackSource.js.map +1 -1
  113. package/lib/commonjs/classes/HMSTrackType.js +4 -4
  114. package/lib/commonjs/classes/HMSTrackType.js.map +1 -1
  115. package/lib/commonjs/classes/HMSTrackUpdate.js +4 -4
  116. package/lib/commonjs/classes/HMSTrackUpdate.js.map +1 -1
  117. package/lib/commonjs/classes/HMSUpdateListenerActions.js +5 -5
  118. package/lib/commonjs/classes/HMSUpdateListenerActions.js.map +1 -1
  119. package/lib/commonjs/classes/HMSVideoCodec.js +4 -4
  120. package/lib/commonjs/classes/HMSVideoCodec.js.map +1 -1
  121. package/lib/commonjs/classes/HMSVideoResolution.js.map +1 -1
  122. package/lib/commonjs/classes/HMSVideoSettings.js.map +1 -1
  123. package/lib/commonjs/classes/HMSVideoTrack.js.map +1 -1
  124. package/lib/commonjs/classes/HMSVideoTrackSettings.js +1 -1
  125. package/lib/commonjs/classes/HMSVideoTrackSettings.js.map +1 -1
  126. package/lib/commonjs/classes/HMSVideoViewMode.js +4 -4
  127. package/lib/commonjs/classes/HMSVideoViewMode.js.map +1 -1
  128. package/lib/commonjs/classes/HmsView.js +2 -1
  129. package/lib/commonjs/classes/HmsView.js.map +1 -1
  130. package/lib/commonjs/index.js.map +1 -1
  131. package/lib/module/classes/HMSAudioCodec.js +3 -3
  132. package/lib/module/classes/HMSAudioCodec.js.map +1 -1
  133. package/lib/module/classes/HMSAudioDevice.js +3 -3
  134. package/lib/module/classes/HMSAudioDevice.js.map +1 -1
  135. package/lib/module/classes/HMSAudioFilePlayerNode.js.map +1 -1
  136. package/lib/module/classes/HMSAudioMixerSource.js.map +1 -1
  137. package/lib/module/classes/HMSAudioMixingMode.js +3 -3
  138. package/lib/module/classes/HMSAudioMixingMode.js.map +1 -1
  139. package/lib/module/classes/HMSAudioMode.js +3 -3
  140. package/lib/module/classes/HMSAudioMode.js.map +1 -1
  141. package/lib/module/classes/HMSAudioNode.js +2 -1
  142. package/lib/module/classes/HMSAudioNode.js.map +1 -1
  143. package/lib/module/classes/HMSAudioSettings.js.map +1 -1
  144. package/lib/module/classes/HMSAudioTrack.js.map +1 -1
  145. package/lib/module/classes/HMSAudioTrackSettings.js +1 -1
  146. package/lib/module/classes/HMSAudioTrackSettings.js.map +1 -1
  147. package/lib/module/classes/HMSBrowserRecordingState.js.map +1 -1
  148. package/lib/module/classes/HMSCameraFacing.js +3 -3
  149. package/lib/module/classes/HMSCameraFacing.js.map +1 -1
  150. package/lib/module/classes/HMSChangeTrackStateRequest.js.map +1 -1
  151. package/lib/module/classes/HMSConfig.js.map +1 -1
  152. package/lib/module/classes/HMSConstants.js +4 -0
  153. package/lib/module/classes/HMSConstants.js.map +1 -0
  154. package/lib/module/classes/HMSEncoder.js +21 -43
  155. package/lib/module/classes/HMSEncoder.js.map +1 -1
  156. package/lib/module/classes/HMSException.js +3 -4
  157. package/lib/module/classes/HMSException.js.map +1 -1
  158. package/lib/module/classes/HMSHLSConfig.js.map +1 -1
  159. package/lib/module/classes/HMSHLSMeetingURLVariant.js.map +1 -1
  160. package/lib/module/classes/HMSHLSRecordingConfig.js.map +1 -1
  161. package/lib/module/classes/HMSHLSRecordingState.js.map +1 -1
  162. package/lib/module/classes/HMSHLSStreamingState.js.map +1 -1
  163. package/lib/module/classes/HMSHLSVariant.js.map +1 -1
  164. package/lib/module/classes/HMSHelper.js.map +1 -1
  165. package/lib/module/classes/HMSLocalAudioStats.js.map +1 -1
  166. package/lib/module/classes/HMSLocalAudioTrack.js.map +1 -1
  167. package/lib/module/classes/HMSLocalPeer.js +0 -1
  168. package/lib/module/classes/HMSLocalPeer.js.map +1 -1
  169. package/lib/module/classes/HMSLocalVideoStats.js.map +1 -1
  170. package/lib/module/classes/HMSLocalVideoTrack.js +5 -6
  171. package/lib/module/classes/HMSLocalVideoTrack.js.map +1 -1
  172. package/lib/module/classes/HMSLogAlarmManager.js +3 -3
  173. package/lib/module/classes/HMSLogAlarmManager.js.map +1 -1
  174. package/lib/module/classes/HMSLogLevel.js +3 -3
  175. package/lib/module/classes/HMSLogLevel.js.map +1 -1
  176. package/lib/module/classes/HMSLogSettings.js.map +1 -1
  177. package/lib/module/classes/HMSLogger.js +17 -25
  178. package/lib/module/classes/HMSLogger.js.map +1 -1
  179. package/lib/module/classes/HMSMessage.js +1 -2
  180. package/lib/module/classes/HMSMessage.js.map +1 -1
  181. package/lib/module/classes/HMSMessageRecipient.js.map +1 -1
  182. package/lib/module/classes/HMSMessageRecipientType.js +3 -3
  183. package/lib/module/classes/HMSMessageRecipientType.js.map +1 -1
  184. package/lib/module/classes/HMSMessageType.js +3 -3
  185. package/lib/module/classes/HMSMessageType.js.map +1 -1
  186. package/lib/module/classes/HMSMicNode.js.map +1 -1
  187. package/lib/module/classes/HMSNativeEventEmitter.js +1 -6
  188. package/lib/module/classes/HMSNativeEventEmitter.js.map +1 -1
  189. package/lib/module/classes/HMSNetworkQuality.js.map +1 -1
  190. package/lib/module/classes/HMSPIPListenerActions.js +3 -3
  191. package/lib/module/classes/HMSPIPListenerActions.js.map +1 -1
  192. package/lib/module/classes/HMSPeer.js +68 -22
  193. package/lib/module/classes/HMSPeer.js.map +1 -1
  194. package/lib/module/classes/HMSPeerUpdate.js +4 -3
  195. package/lib/module/classes/HMSPeerUpdate.js.map +1 -1
  196. package/lib/module/classes/HMSPeersCache.js +216 -0
  197. package/lib/module/classes/HMSPeersCache.js.map +1 -0
  198. package/lib/module/classes/HMSPermissions.js.map +1 -1
  199. package/lib/module/classes/HMSPublishSettings.js.map +1 -1
  200. package/lib/module/classes/HMSRTCStats.js.map +1 -1
  201. package/lib/module/classes/HMSRTCStatsReport.js.map +1 -1
  202. package/lib/module/classes/HMSRTMPConfig.js.map +1 -1
  203. package/lib/module/classes/HMSRemoteAudioStats.js.map +1 -1
  204. package/lib/module/classes/HMSRemoteAudioTrack.js.map +1 -1
  205. package/lib/module/classes/HMSRemotePeer.js +0 -1
  206. package/lib/module/classes/HMSRemotePeer.js.map +1 -1
  207. package/lib/module/classes/HMSRemoteVideoStats.js.map +1 -1
  208. package/lib/module/classes/HMSRemoteVideoTrack.js +0 -1
  209. package/lib/module/classes/HMSRemoteVideoTrack.js.map +1 -1
  210. package/lib/module/classes/HMSRole.js.map +1 -1
  211. package/lib/module/classes/HMSRoleChangeRequest.js.map +1 -1
  212. package/lib/module/classes/HMSRoom.js +79 -22
  213. package/lib/module/classes/HMSRoom.js.map +1 -1
  214. package/lib/module/classes/HMSRoomCache.js +115 -0
  215. package/lib/module/classes/HMSRoomCache.js.map +1 -0
  216. package/lib/module/classes/HMSRoomUpdate.js +3 -3
  217. package/lib/module/classes/HMSRoomUpdate.js.map +1 -1
  218. package/lib/module/classes/HMSRtmpStreamingState.js.map +1 -1
  219. package/lib/module/classes/HMSRtmpVideoResolution.js.map +1 -1
  220. package/lib/module/classes/HMSSDK.js +501 -33
  221. package/lib/module/classes/HMSSDK.js.map +1 -1
  222. package/lib/module/classes/HMSScreenBroadcastAudioReceiverNode.js.map +1 -1
  223. package/lib/module/classes/HMSServerRecordingState.js.map +1 -1
  224. package/lib/module/classes/HMSSimulcastLayerSettings.js.map +1 -1
  225. package/lib/module/classes/HMSSimulcastSettings.js.map +1 -1
  226. package/lib/module/classes/HMSSpeaker.js.map +1 -1
  227. package/lib/module/classes/HMSSubscribeSettings.js.map +1 -1
  228. package/lib/module/classes/HMSTrack.js.map +1 -1
  229. package/lib/module/classes/HMSTrackSettings.js.map +1 -1
  230. package/lib/module/classes/HMSTrackSettingsInitState.js +3 -3
  231. package/lib/module/classes/HMSTrackSettingsInitState.js.map +1 -1
  232. package/lib/module/classes/HMSTrackSource.js +3 -3
  233. package/lib/module/classes/HMSTrackSource.js.map +1 -1
  234. package/lib/module/classes/HMSTrackType.js +3 -3
  235. package/lib/module/classes/HMSTrackType.js.map +1 -1
  236. package/lib/module/classes/HMSTrackUpdate.js +3 -3
  237. package/lib/module/classes/HMSTrackUpdate.js.map +1 -1
  238. package/lib/module/classes/HMSUpdateListenerActions.js +4 -4
  239. package/lib/module/classes/HMSUpdateListenerActions.js.map +1 -1
  240. package/lib/module/classes/HMSVideoCodec.js +3 -3
  241. package/lib/module/classes/HMSVideoCodec.js.map +1 -1
  242. package/lib/module/classes/HMSVideoResolution.js.map +1 -1
  243. package/lib/module/classes/HMSVideoSettings.js.map +1 -1
  244. package/lib/module/classes/HMSVideoTrack.js.map +1 -1
  245. package/lib/module/classes/HMSVideoTrackSettings.js +1 -1
  246. package/lib/module/classes/HMSVideoTrackSettings.js.map +1 -1
  247. package/lib/module/classes/HMSVideoViewMode.js +3 -3
  248. package/lib/module/classes/HMSVideoViewMode.js.map +1 -1
  249. package/lib/module/classes/HmsView.js +2 -1
  250. package/lib/module/classes/HmsView.js.map +1 -1
  251. package/lib/typescript/classes/HMSConstants.d.ts +3 -0
  252. package/lib/typescript/classes/HMSEncoder.d.ts +7 -6
  253. package/lib/typescript/classes/HMSLocalPeer.d.ts +0 -14
  254. package/lib/typescript/classes/HMSLogger.d.ts +1 -7
  255. package/lib/typescript/classes/HMSPeer.d.ts +12 -18
  256. package/lib/typescript/classes/HMSPeerUpdate.d.ts +1 -0
  257. package/lib/typescript/classes/HMSPeersCache.d.ts +17 -0
  258. package/lib/typescript/classes/HMSRemotePeer.d.ts +0 -14
  259. package/lib/typescript/classes/HMSRoom.d.ts +11 -22
  260. package/lib/typescript/classes/HMSRoomCache.d.ts +16 -0
  261. package/lib/typescript/classes/HMSSDK.d.ts +20 -12
  262. package/lib/typescript/classes/HMSUpdateListenerActions.d.ts +1 -1
  263. package/package.json +2 -2
  264. package/sdk-versions.json +3 -3
  265. package/src/classes/HMSAudioNode.ts +3 -1
  266. package/src/classes/HMSConstants.ts +3 -0
  267. package/src/classes/HMSEncoder.ts +24 -69
  268. package/src/classes/HMSLocalPeer.ts +0 -15
  269. package/src/classes/HMSLogger.ts +20 -19
  270. package/src/classes/HMSNativeEventEmitter.ts +35 -12
  271. package/src/classes/HMSPeer.ts +133 -34
  272. package/src/classes/HMSPeerUpdate.ts +9 -0
  273. package/src/classes/HMSPeersCache.ts +252 -0
  274. package/src/classes/HMSRemotePeer.ts +0 -16
  275. package/src/classes/HMSRoom.ts +141 -37
  276. package/src/classes/HMSRoomCache.ts +157 -0
  277. package/src/classes/HMSSDK.tsx +102 -43
  278. package/src/classes/HMSUpdateListenerActions.ts +1 -1
  279. package/src/classes/HmsView.tsx +2 -1
@@ -0,0 +1,157 @@
1
+ import { NativeModules } from 'react-native';
2
+ import type { HMSRoom } from './HMSRoom';
3
+ import { HMSEncoder } from './HMSEncoder';
4
+ import { HMSRoomUpdate } from './HMSRoomUpdate';
5
+
6
+ const { HMSManager } = NativeModules;
7
+
8
+ export let hmsRoomCache: HMSRoomCache | undefined;
9
+
10
+ export const getHmsRoomCache = () => hmsRoomCache;
11
+
12
+ export const setHmsRoomCache = (_hmsRoomCache: HMSRoomCache) => {
13
+ hmsRoomCache = _hmsRoomCache;
14
+ };
15
+
16
+ export const clearHmsRoomCache = () => {
17
+ if (hmsRoomCache) {
18
+ hmsRoomCache.cleanup();
19
+ }
20
+ hmsRoomCache = undefined;
21
+ };
22
+
23
+ export type HMSRoomCacheProps = Partial<Omit<HMSRoom, 'id'>>;
24
+
25
+ export class HMSRoomCache {
26
+ private _data = new Map<
27
+ keyof HMSRoomCacheProps,
28
+ HMSRoomCacheProps[keyof HMSRoomCacheProps]
29
+ >();
30
+ private id: string;
31
+
32
+ constructor(id: string) {
33
+ this.id = id;
34
+ }
35
+
36
+ getProperty<T extends keyof Required<HMSRoomCacheProps>>(
37
+ property: T
38
+ ): Required<HMSRoomCacheProps>[T] {
39
+ const value: any = this._data.get(property);
40
+
41
+ if (value) {
42
+ return value;
43
+ }
44
+
45
+ const encodedValue = getHMSRoomPropertyFromNative(this.id, property);
46
+
47
+ this._data.set(property, encodedValue);
48
+
49
+ return encodedValue;
50
+ }
51
+
52
+ updateRoomCache(
53
+ data: Record<keyof HMSRoomCacheProps, any>,
54
+ updateType?: HMSRoomUpdate
55
+ ) {
56
+ switch (updateType) {
57
+ case HMSRoomUpdate.ROOM_MUTED:
58
+ case HMSRoomUpdate.ROOM_UNMUTED: {
59
+ break;
60
+ }
61
+ case HMSRoomUpdate.SERVER_RECORDING_STATE_UPDATED: {
62
+ this._data.set(
63
+ 'serverRecordingState',
64
+ HMSEncoder.encodeServerRecordingState(data.serverRecordingState)
65
+ );
66
+ break;
67
+ }
68
+ case HMSRoomUpdate.RTMP_STREAMING_STATE_UPDATED: {
69
+ this._data.set(
70
+ 'rtmpHMSRtmpStreamingState',
71
+ HMSEncoder.encodeRTMPStreamingState(data.rtmpHMSRtmpStreamingState)
72
+ );
73
+ break;
74
+ }
75
+ case HMSRoomUpdate.BROWSER_RECORDING_STATE_UPDATED: {
76
+ this._data.set(
77
+ 'browserRecordingState',
78
+ HMSEncoder.encodeBrowserRecordingState(data.browserRecordingState)
79
+ );
80
+ break;
81
+ }
82
+ case HMSRoomUpdate.HLS_STREAMING_STATE_UPDATED: {
83
+ this._data.set(
84
+ 'hlsStreamingState',
85
+ HMSEncoder.encodeHLSStreamingState(data.hlsStreamingState)
86
+ );
87
+ break;
88
+ }
89
+ case HMSRoomUpdate.HLS_RECORDING_STATE_UPDATED: {
90
+ this._data.set(
91
+ 'hlsRecordingState',
92
+ HMSEncoder.encodeHLSRecordingState(data.hlsRecordingState)
93
+ );
94
+ break;
95
+ }
96
+ default: {
97
+ for (const key in data) {
98
+ const property = key as keyof HMSRoomCacheProps;
99
+
100
+ if (Object.prototype.hasOwnProperty.call(data, property)) {
101
+ const value = encodeHMSRoomProperty(this.id, property, data);
102
+ this._data.set(property, value);
103
+ }
104
+ }
105
+ break;
106
+ }
107
+ }
108
+ }
109
+
110
+ cleanup() {
111
+ this._data.clear();
112
+ }
113
+ }
114
+
115
+ export function getHMSRoomPropertyFromNative<T extends keyof HMSRoomCacheProps>(
116
+ id: string,
117
+ property: T
118
+ ): Required<HMSRoomCacheProps>[T] {
119
+ const data: any = HMSManager.getRoomProperty({
120
+ id,
121
+ property,
122
+ });
123
+
124
+ if (!data) return data;
125
+
126
+ const value = encodeHMSRoomProperty(id, property, data);
127
+
128
+ return value;
129
+ }
130
+
131
+ function encodeHMSRoomProperty<T extends keyof HMSRoomCacheProps>(
132
+ id: string,
133
+ property: T,
134
+ data: Record<string, any>
135
+ ): Required<HMSRoomCacheProps>[T] {
136
+ let value;
137
+
138
+ if (property === 'peers') {
139
+ value = HMSEncoder.encodeHmsPeers(data.peers);
140
+ } else if (property === 'browserRecordingState') {
141
+ value = HMSEncoder.encodeBrowserRecordingState(data.browserRecordingState);
142
+ } else if (property === 'rtmpHMSRtmpStreamingState') {
143
+ value = HMSEncoder.encodeRTMPStreamingState(data.rtmpHMSRtmpStreamingState);
144
+ } else if (property === 'serverRecordingState') {
145
+ value = HMSEncoder.encodeServerRecordingState(data.serverRecordingState);
146
+ } else if (property === 'hlsStreamingState') {
147
+ value = HMSEncoder.encodeHLSStreamingState(data.hlsStreamingState);
148
+ } else if (property === 'hlsRecordingState') {
149
+ value = HMSEncoder.encodeHLSRecordingState(data.hlsRecordingState);
150
+ } else if (property === 'localPeer') {
151
+ value = HMSEncoder.encodeHmsLocalPeer(data.localPeer, id);
152
+ } else {
153
+ value = data[property];
154
+ }
155
+
156
+ return value;
157
+ }
@@ -1,10 +1,5 @@
1
1
  import React from 'react';
2
- import {
3
- AppState,
4
- NativeModules,
5
- Platform,
6
- ViewStyle,
7
- } from 'react-native';
2
+ import { AppState, NativeModules, Platform, ViewStyle } from 'react-native';
8
3
  import { HMSEncoder } from './HMSEncoder';
9
4
  import { HMSHelper } from './HMSHelper';
10
5
  import { HMSLocalAudioStats } from './HMSLocalAudioStats';
@@ -34,7 +29,23 @@ import type { HMSAudioMixingMode } from './HMSAudioMixingMode';
34
29
  import type { HMSLogSettings } from './HMSLogSettings';
35
30
  import { HMSMessageType } from './HMSMessageType';
36
31
  import { HMSPIPListenerActions } from './HMSPIPListenerActions';
37
- import { type HMSEventSubscription, HMSNativeEventEmitter } from './HMSNativeEventEmitter';
32
+ import {
33
+ type HMSEventSubscription,
34
+ HMSNativeEventEmitter,
35
+ } from './HMSNativeEventEmitter';
36
+ import {
37
+ clearHmsPeersCache,
38
+ getHmsPeersCache,
39
+ HMSPeersCache,
40
+ setHmsPeersCache,
41
+ } from './HMSPeersCache';
42
+ import {
43
+ clearHmsRoomCache,
44
+ getHmsRoomCache,
45
+ HMSRoomCache,
46
+ setHmsRoomCache,
47
+ } from './HMSRoomCache';
48
+ import { HMSPeerUpdateOrdinals } from './HMSPeerUpdate';
38
49
 
39
50
  interface HmsViewProps {
40
51
  trackId: string;
@@ -68,7 +79,6 @@ export class HMSSDK {
68
79
  id: string;
69
80
  private muteStatus: boolean | undefined;
70
81
  private appStateSubscription?: any;
71
-
72
82
  private onPreviewDelegate?: any;
73
83
  private onJoinDelegate?: any;
74
84
  private onRoomDelegate?: any;
@@ -140,24 +150,6 @@ export class HMSSDK {
140
150
  return HmsSdk;
141
151
  }
142
152
 
143
- /**
144
- * - Returns the instance of logger which can be used to manipulate log levels.
145
- * @returns @instance HMSLogger
146
- * @memberof HMSSDK
147
- */
148
- static getLogger() {
149
- return getLogger();
150
- }
151
-
152
- /**
153
- * - Updates the logger for this instance of HMSSDK
154
- * @param {HMSLogger} hmsLogger
155
- * @memberof HMSSDK
156
- */
157
- setLogger = (hmsLogger?: HMSLogger) => {
158
- setLogger(this.id, hmsLogger);
159
- };
160
-
161
153
  /**
162
154
  * - Calls removeListeners that in turn breaks all connections with native listeners.
163
155
  *
@@ -165,10 +157,39 @@ export class HMSSDK {
165
157
  */
166
158
  destroy = async () => {
167
159
  logger?.verbose('#Function destroy', { id: this.id });
160
+ clearHmsPeersCache();
161
+ clearHmsRoomCache();
168
162
  this.removeAllListeners();
169
163
  return await HMSManager.destroy({ id: this.id });
170
164
  };
171
165
 
166
+ /**
167
+ * - getAuthTokenByRoomCode function is used to get the Auth Token by Room Code
168
+ *
169
+ * checkout {@link https://www.100ms.live/docs/concepts/v2/concepts/rooms/room-codes/room-codes} for more info
170
+ *
171
+ * @memberof HMSSDK
172
+ */
173
+ getAuthTokenByRoomCode = async (
174
+ roomCode: string,
175
+ userId?: string,
176
+ endpoint?: string
177
+ ): Promise<string> => {
178
+ logger?.verbose('#Function getAuthTokenByRoomCode', {
179
+ id: this.id,
180
+ roomCode,
181
+ userId,
182
+ endpoint,
183
+ });
184
+
185
+ return HMSManager.getAuthTokenByRoomCode({
186
+ id: this.id,
187
+ roomCode,
188
+ userId,
189
+ endpoint,
190
+ });
191
+ };
192
+
172
193
  /**
173
194
  * takes an instance of [HMSConfig]{@link HMSConfig} and joins the room.
174
195
  * after joining the room user will start receiving the events and updates of the room.
@@ -181,6 +202,8 @@ export class HMSSDK {
181
202
  join = async (config: HMSConfig) => {
182
203
  logger?.verbose('#Function join', { config, id: this.id });
183
204
  this.addAppStateListener();
205
+ setHmsPeersCache(new HMSPeersCache(this.id));
206
+ setHmsRoomCache(new HMSRoomCache(this.id));
184
207
  await HMSManager.join({ ...config, id: this.id });
185
208
  };
186
209
 
@@ -251,6 +274,8 @@ export class HMSSDK {
251
274
  roomLeaveCleanup = () => {
252
275
  this.muteStatus = undefined;
253
276
  this?.appStateSubscription?.remove();
277
+ clearHmsPeersCache();
278
+ clearHmsRoomCache();
254
279
  HMSEncoder.clearData(); // Clearing cached data in encoder
255
280
  };
256
281
 
@@ -680,6 +705,8 @@ export class HMSSDK {
680
705
  });
681
706
  const hmsRoom = await HMSManager.getRoom({ id: this.id });
682
707
 
708
+ getHmsRoomCache()?.updateRoomCache(hmsRoom);
709
+
683
710
  const encodedHmsRoom = HMSEncoder.encodeHmsRoom(hmsRoom, this.id);
684
711
  return encodedHmsRoom;
685
712
  };
@@ -1881,6 +1908,8 @@ export class HMSSDK {
1881
1908
  const room: HMSRoom = HMSEncoder.encodeHmsRoom(data.room, this.id);
1882
1909
  const type = data.type;
1883
1910
 
1911
+ getHmsRoomCache()?.updateRoomCache(data.room, data.type);
1912
+
1884
1913
  if (this.onRoomDelegate) {
1885
1914
  logger?.verbose('#Listener ON_ROOM_LISTENER_CALL', {
1886
1915
  room,
@@ -1890,12 +1919,24 @@ export class HMSSDK {
1890
1919
  }
1891
1920
  };
1892
1921
 
1893
- onPeerListener = (data: any) => {
1894
- if (data.id !== this.id) {
1895
- return;
1922
+ onPeerListener = (peerData: any) => {
1923
+ const data: { peer: any; type: any } = {
1924
+ peer: peerData,
1925
+ type: null,
1926
+ };
1927
+
1928
+ for (const ordinal of HMSPeerUpdateOrdinals.keys()) {
1929
+ if (ordinal in peerData) {
1930
+ data.peer.peerID = peerData[ordinal];
1931
+ data.type = ordinal;
1932
+ break;
1933
+ }
1896
1934
  }
1897
- const peer: HMSPeer = HMSEncoder.encodeHmsPeer(data.peer, this.id);
1898
- const type = data.type;
1935
+
1936
+ const peer: HMSPeer = HMSEncoder.encodeHmsPeer(data.peer);
1937
+ const type = HMSEncoder.encodeHmsPeerUpdate(data.type) || data.type;
1938
+
1939
+ getHmsPeersCache()?.updatePeerCache(data.peer.peerID, data.peer, type);
1899
1940
 
1900
1941
  if (this.onPeerDelegate) {
1901
1942
  logger?.verbose('#Listener ON_PEER_LISTENER_CALL', {
@@ -1911,9 +1952,11 @@ export class HMSSDK {
1911
1952
  return;
1912
1953
  }
1913
1954
  const track: HMSTrack = HMSEncoder.encodeHmsTrack(data.track, this.id);
1914
- const peer: HMSPeer = HMSEncoder.encodeHmsPeer(data.peer, this.id);
1955
+ const peer: HMSPeer = HMSEncoder.encodeHmsPeer(data.peer);
1915
1956
  const type = data.type;
1916
1957
 
1958
+ getHmsPeersCache()?.updatePeerCache(data.peer.peerID, { track }, data.type);
1959
+
1917
1960
  if (
1918
1961
  this.muteStatus &&
1919
1962
  data?.type === 'TRACK_ADDED' &&
@@ -1940,7 +1983,7 @@ export class HMSSDK {
1940
1983
  if (data.id !== this.id) {
1941
1984
  return;
1942
1985
  }
1943
- const message = HMSEncoder.encodeHMSMessage(data, this.id);
1986
+ const message = HMSEncoder.encodeHMSMessage(data);
1944
1987
  if (this.onMessageDelegate) {
1945
1988
  logger?.verbose('#Listener ON_MESSAGE_LISTENER_CALL', message);
1946
1989
  this.onMessageDelegate(message);
@@ -1975,10 +2018,8 @@ export class HMSSDK {
1975
2018
  return;
1976
2019
  }
1977
2020
  if (this.onRoleChangeRequestDelegate) {
1978
- const encodedRoleChangeRequest = HMSEncoder.encodeHmsRoleChangeRequest(
1979
- data,
1980
- this.id
1981
- );
2021
+ const encodedRoleChangeRequest =
2022
+ HMSEncoder.encodeHmsRoleChangeRequest(data);
1982
2023
  logger?.verbose(
1983
2024
  '#Listener ON_ROLE_CHANGE_LISTENER_CALL',
1984
2025
  encodedRoleChangeRequest
@@ -1993,7 +2034,7 @@ export class HMSSDK {
1993
2034
  }
1994
2035
  if (this.onChangeTrackStateRequestDelegate) {
1995
2036
  const encodedRoleChangeRequest =
1996
- HMSEncoder.encodeHmsChangeTrackStateRequest(data, this.id);
2037
+ HMSEncoder.encodeHmsChangeTrackStateRequest(data);
1997
2038
  logger?.verbose(
1998
2039
  '#Listener ON_CHANGE_TRACK_STATE_REQUEST_LISTENER_CALL',
1999
2040
  encodedRoleChangeRequest
@@ -2011,7 +2052,7 @@ export class HMSSDK {
2011
2052
  if (this.onRemovedFromRoomDelegate) {
2012
2053
  let requestedBy = null;
2013
2054
  if (data.requestedBy) {
2014
- requestedBy = HMSEncoder.encodeHmsPeer(data.requestedBy, this.id);
2055
+ requestedBy = HMSEncoder.encodeHmsPeer(data.requestedBy);
2015
2056
  }
2016
2057
  const reason = data.reason;
2017
2058
  const roomEnded = data.roomEnded;
@@ -2065,7 +2106,7 @@ export class HMSSDK {
2065
2106
  }
2066
2107
 
2067
2108
  let localAudioStats = new HMSLocalAudioStats(data.localAudioStats);
2068
- let peer = HMSEncoder.encodeHmsPeer(data.peer, this.id);
2109
+ let peer = HMSEncoder.encodeHmsPeer(data.peer);
2069
2110
  let track = HMSEncoder.encodeHmsLocalAudioTrack(data.track, this.id);
2070
2111
 
2071
2112
  if (this.onLocalAudioStatsDelegate) {
@@ -2085,7 +2126,7 @@ export class HMSSDK {
2085
2126
  }
2086
2127
 
2087
2128
  let localVideoStats = new HMSLocalVideoStats(data.localVideoStats);
2088
- let peer = HMSEncoder.encodeHmsPeer(data.peer, this.id);
2129
+ let peer = HMSEncoder.encodeHmsPeer(data.peer);
2089
2130
  let track = HMSEncoder.encodeHmsLocalVideoTrack(data.track, this.id);
2090
2131
 
2091
2132
  if (this.onLocalVideoStatsDelegate) {
@@ -2105,7 +2146,7 @@ export class HMSSDK {
2105
2146
  }
2106
2147
 
2107
2148
  let remoteAudioStats = new HMSRemoteAudioStats(data.remoteAudioStats);
2108
- let peer = HMSEncoder.encodeHmsPeer(data.peer, this.id);
2149
+ let peer = HMSEncoder.encodeHmsPeer(data.peer);
2109
2150
  let track = HMSEncoder.encodeHmsRemoteAudioTrack(data.track, this.id);
2110
2151
 
2111
2152
  if (this.onRemoteAudioStatsDelegate) {
@@ -2130,7 +2171,7 @@ export class HMSSDK {
2130
2171
  }
2131
2172
 
2132
2173
  let remoteVideoStats = new HMSRemoteVideoStats(data.remoteVideoStats);
2133
- let peer = HMSEncoder.encodeHmsPeer(data.peer, this.id);
2174
+ let peer = HMSEncoder.encodeHmsPeer(data.peer);
2134
2175
  let track = HMSEncoder.encodeHmsRemoteVideoTrack(data.track, this.id);
2135
2176
 
2136
2177
  if (this.onRemoteVideoStatsDelegate) {
@@ -2197,4 +2238,22 @@ export class HMSSDK {
2197
2238
  id: this.id,
2198
2239
  });
2199
2240
  }
2241
+
2242
+ /**
2243
+ * - Returns the instance of logger which can be used to manipulate log levels.
2244
+ * @returns @instance HMSLogger
2245
+ * @memberof HMSSDK
2246
+ */
2247
+ static getLogger() {
2248
+ return getLogger();
2249
+ }
2250
+
2251
+ /**
2252
+ * - Updates the logger for this instance of HMSSDK
2253
+ * @param {HMSLogger} hmsLogger
2254
+ * @memberof HMSSDK
2255
+ */
2256
+ setLogger = (hmsLogger?: HMSLogger) => {
2257
+ setLogger(this.id, hmsLogger);
2258
+ };
2200
2259
  }
@@ -2,7 +2,7 @@ export enum HMSUpdateListenerActions {
2
2
  ON_PREVIEW = 'ON_PREVIEW',
3
3
  ON_JOIN = 'ON_JOIN',
4
4
  ON_ROOM_UPDATE = 'ON_ROOM_UPDATE',
5
- ON_PEER_UPDATE = 'ON_PEER_UPDATE',
5
+ ON_PEER_UPDATE = '3',
6
6
  ON_TRACK_UPDATE = 'ON_TRACK_UPDATE',
7
7
  ON_ERROR = 'ON_ERROR',
8
8
  ON_MESSAGE = 'ON_MESSAGE',
@@ -6,6 +6,7 @@ import {
6
6
  UIManager,
7
7
  ViewStyle,
8
8
  } from 'react-native';
9
+ import { HMSConstants } from './HMSConstants';
9
10
  import { HMSVideoViewMode } from './HMSVideoViewMode';
10
11
 
11
12
  interface HmsViewProps {
@@ -39,7 +40,7 @@ export const HmsViewComponent = React.forwardRef<any, HmsComponentProps>(
39
40
  const {
40
41
  trackId,
41
42
  style = temporaryStyles.customStyle,
42
- id = '12345',
43
+ id = HMSConstants.DEFAULT_SDK_ID,
43
44
  mirror = false,
44
45
  setZOrderMediaOverlay = false,
45
46
  scaleType = HMSVideoViewMode.ASPECT_FILL,