@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
@@ -3,47 +3,146 @@ import type { HMSNetworkQuality } from './HMSNetworkQuality';
3
3
  import type { HMSRole } from './HMSRole';
4
4
  import type { HMSTrack } from './HMSTrack';
5
5
  import type { HMSVideoTrack } from './HMSVideoTrack';
6
+ import { getHmsPeersCache, getPeerPropertyFromNative } from './HMSPeersCache';
7
+ import { HMSConstants } from './HMSConstants';
6
8
 
7
9
  export class HMSPeer {
8
10
  peerID: string;
9
- name: string;
10
- isLocal?: boolean;
11
- customerUserID?: string;
12
-
13
- /*
11
+ /**
14
12
  * @deprecated customerDescription has been deprecated in favor of metadata
15
13
  */
16
14
  customerDescription?: string;
17
- metadata?: string;
18
- role?: HMSRole;
19
- networkQuality?: HMSNetworkQuality;
20
- audioTrack?: HMSAudioTrack;
21
- videoTrack?: HMSVideoTrack;
22
- auxiliaryTracks?: HMSTrack[];
23
-
24
- constructor(params: {
25
- peerID: string;
26
- name: string;
27
- isLocal?: boolean;
28
- customerUserID?: string;
29
- customerDescription?: string;
30
- metadata?: string;
31
- role?: HMSRole;
32
- networkQuality?: HMSNetworkQuality;
33
- audioTrack?: HMSAudioTrack;
34
- videoTrack?: HMSVideoTrack;
35
- auxiliaryTracks?: HMSTrack[];
36
- }) {
15
+
16
+ constructor(params: { peerID: string; customerDescription?: string }) {
37
17
  this.peerID = params.peerID;
38
- this.name = params.name;
39
- this.isLocal = params.isLocal;
40
- this.customerUserID = params.customerUserID;
41
18
  this.customerDescription = params.customerDescription;
42
- this.audioTrack = params.audioTrack;
43
- this.videoTrack = params.videoTrack;
44
- this.auxiliaryTracks = params.auxiliaryTracks;
45
- this.role = params.role;
46
- this.networkQuality = params.networkQuality;
47
- this.metadata = params.metadata;
19
+ }
20
+
21
+ get name(): string {
22
+ const hmsPeersCache = getHmsPeersCache();
23
+
24
+ if (hmsPeersCache) {
25
+ return hmsPeersCache.getProperty(this.peerID, 'name') || '';
26
+ }
27
+
28
+ return (
29
+ getPeerPropertyFromNative(
30
+ HMSConstants.DEFAULT_SDK_ID,
31
+ this.peerID,
32
+ 'name'
33
+ ) || ''
34
+ );
35
+ }
36
+
37
+ get isLocal(): boolean | undefined {
38
+ const hmsPeersCache = getHmsPeersCache();
39
+
40
+ if (hmsPeersCache) {
41
+ return hmsPeersCache.getProperty(this.peerID, 'isLocal');
42
+ }
43
+
44
+ return getPeerPropertyFromNative(
45
+ HMSConstants.DEFAULT_SDK_ID,
46
+ this.peerID,
47
+ 'isLocal'
48
+ );
49
+ }
50
+
51
+ get networkQuality(): HMSNetworkQuality | undefined {
52
+ const hmsPeersCache = getHmsPeersCache();
53
+
54
+ if (hmsPeersCache) {
55
+ return hmsPeersCache.getProperty(this.peerID, 'networkQuality');
56
+ }
57
+
58
+ return getPeerPropertyFromNative(
59
+ HMSConstants.DEFAULT_SDK_ID,
60
+ this.peerID,
61
+ 'networkQuality'
62
+ );
63
+ }
64
+
65
+ get customerUserID(): string | undefined {
66
+ const hmsPeersCache = getHmsPeersCache();
67
+
68
+ if (hmsPeersCache) {
69
+ return hmsPeersCache.getProperty(this.peerID, 'customerUserID');
70
+ }
71
+
72
+ return getPeerPropertyFromNative(
73
+ HMSConstants.DEFAULT_SDK_ID,
74
+ this.peerID,
75
+ 'customerUserID'
76
+ );
77
+ }
78
+
79
+ get metadata(): string | undefined {
80
+ const hmsPeersCache = getHmsPeersCache();
81
+
82
+ if (hmsPeersCache) {
83
+ return hmsPeersCache.getProperty(this.peerID, 'metadata');
84
+ }
85
+
86
+ return getPeerPropertyFromNative(
87
+ HMSConstants.DEFAULT_SDK_ID,
88
+ this.peerID,
89
+ 'metadata'
90
+ );
91
+ }
92
+
93
+ get role(): HMSRole | undefined {
94
+ const hmsPeersCache = getHmsPeersCache();
95
+
96
+ if (hmsPeersCache) {
97
+ return hmsPeersCache.getProperty(this.peerID, 'role');
98
+ }
99
+
100
+ return getPeerPropertyFromNative(
101
+ HMSConstants.DEFAULT_SDK_ID,
102
+ this.peerID,
103
+ 'role'
104
+ );
105
+ }
106
+
107
+ get audioTrack(): HMSAudioTrack | undefined {
108
+ const hmsPeersCache = getHmsPeersCache();
109
+
110
+ if (hmsPeersCache) {
111
+ return hmsPeersCache.getProperty(this.peerID, 'audioTrack');
112
+ }
113
+
114
+ return getPeerPropertyFromNative(
115
+ HMSConstants.DEFAULT_SDK_ID,
116
+ this.peerID,
117
+ 'audioTrack'
118
+ );
119
+ }
120
+
121
+ get videoTrack(): HMSVideoTrack | undefined {
122
+ const hmsPeersCache = getHmsPeersCache();
123
+
124
+ if (hmsPeersCache) {
125
+ return hmsPeersCache.getProperty(this.peerID, 'videoTrack');
126
+ }
127
+
128
+ return getPeerPropertyFromNative(
129
+ HMSConstants.DEFAULT_SDK_ID,
130
+ this.peerID,
131
+ 'videoTrack'
132
+ );
133
+ }
134
+
135
+ get auxiliaryTracks(): HMSTrack[] | undefined {
136
+ const hmsPeersCache = getHmsPeersCache();
137
+
138
+ if (hmsPeersCache) {
139
+ return hmsPeersCache.getProperty(this.peerID, 'auxiliaryTracks');
140
+ }
141
+
142
+ return getPeerPropertyFromNative(
143
+ HMSConstants.DEFAULT_SDK_ID,
144
+ this.peerID,
145
+ 'auxiliaryTracks'
146
+ );
48
147
  }
49
148
  }
@@ -6,3 +6,12 @@ export enum HMSPeerUpdate {
6
6
  NAME_CHANGED = 'NAME_CHANGED',
7
7
  NETWORK_QUALITY_UPDATED = 'NETWORK_QUALITY_UPDATED',
8
8
  }
9
+
10
+ export const HMSPeerUpdateOrdinals = new Map([
11
+ ['0', HMSPeerUpdate.PEER_JOINED],
12
+ ['1', HMSPeerUpdate.PEER_LEFT],
13
+ ['9', HMSPeerUpdate.ROLE_CHANGED],
14
+ ['10', HMSPeerUpdate.NAME_CHANGED],
15
+ ['11', HMSPeerUpdate.METADATA_CHANGED],
16
+ ['12', HMSPeerUpdate.NETWORK_QUALITY_UPDATED],
17
+ ]);
@@ -0,0 +1,252 @@
1
+ import { NativeModules } from 'react-native';
2
+ import type { HMSPeer } from './HMSPeer';
3
+ import { HMSEncoder } from './HMSEncoder';
4
+ import { HMSPeerUpdate } from './HMSPeerUpdate';
5
+ import { HMSTrackUpdate } from './HMSTrackUpdate';
6
+ import type { HMSTrack } from './HMSTrack';
7
+ import { HMSTrackType } from './HMSTrackType';
8
+ import { HMSTrackSource } from './HMSTrackSource';
9
+
10
+ const { HMSManager } = NativeModules;
11
+
12
+ export let hmsPeersCache: HMSPeersCache | undefined;
13
+
14
+ export const getHmsPeersCache = () => {
15
+ return hmsPeersCache;
16
+ };
17
+
18
+ export const setHmsPeersCache = (_hmsPeersCache: HMSPeersCache) => {
19
+ hmsPeersCache = _hmsPeersCache;
20
+ };
21
+
22
+ export const clearHmsPeersCache = () => {
23
+ if (hmsPeersCache) {
24
+ hmsPeersCache.cleanup();
25
+ }
26
+ hmsPeersCache = undefined;
27
+ };
28
+
29
+ export type HMSPeerCacheProps = Partial<
30
+ Omit<HMSPeer, 'peerID' | 'customerDescription'>
31
+ >;
32
+
33
+ export class HMSPeersCache {
34
+ private _data = new Map<string, HMSPeerCacheProps>();
35
+ private id: string;
36
+
37
+ constructor(id: string) {
38
+ this.id = id;
39
+ }
40
+
41
+ getProperty<T extends keyof HMSPeerCacheProps>(
42
+ peerId: string,
43
+ property: T
44
+ ): HMSPeerCacheProps[T] | undefined {
45
+ const peerObj = this._data.get(peerId);
46
+
47
+ if (peerObj && property in peerObj) {
48
+ return peerObj[property];
49
+ }
50
+
51
+ const encodedValue = getPeerPropertyFromNative(this.id, peerId, property);
52
+
53
+ if (!peerObj) {
54
+ this._data.set(peerId, { [property]: encodedValue });
55
+ } else {
56
+ peerObj[property] = encodedValue;
57
+ }
58
+
59
+ return encodedValue;
60
+ }
61
+
62
+ updatePeerCache(
63
+ peerId: string,
64
+ data: Partial<Record<keyof HMSPeerCacheProps | 'track', any>>,
65
+ updateType?: HMSPeerUpdate | HMSTrackUpdate
66
+ ) {
67
+ const peerObj = this._data.get(peerId);
68
+
69
+ if (updateType === HMSPeerUpdate.PEER_LEFT) {
70
+ this._data.delete(peerId);
71
+ return;
72
+ }
73
+
74
+ let updatedObj = { ...peerObj };
75
+
76
+ switch (updateType) {
77
+ case HMSTrackUpdate.TRACK_ADDED: {
78
+ const track = data.track as HMSTrack;
79
+
80
+ if (track.source === HMSTrackSource.REGULAR) {
81
+ if (track.type === HMSTrackType.VIDEO) {
82
+ updatedObj.videoTrack = { ...track, isDegraded: false };
83
+ } else if (track.type === HMSTrackType.AUDIO) {
84
+ updatedObj.audioTrack = track;
85
+ }
86
+ } else {
87
+ if (Array.isArray(updatedObj.auxiliaryTracks)) {
88
+ updatedObj.auxiliaryTracks.push(track);
89
+ } else {
90
+ updatedObj.auxiliaryTracks = [track];
91
+ }
92
+ }
93
+ break;
94
+ }
95
+ case HMSTrackUpdate.TRACK_REMOVED: {
96
+ const track = data.track as HMSTrack;
97
+
98
+ if (track.source === HMSTrackSource.REGULAR) {
99
+ if (track.type === HMSTrackType.VIDEO) {
100
+ updatedObj.videoTrack = undefined;
101
+ } else if (track.type === HMSTrackType.AUDIO) {
102
+ updatedObj.audioTrack = undefined;
103
+ }
104
+ } else if (Array.isArray(updatedObj.auxiliaryTracks)) {
105
+ updatedObj = {
106
+ ...updatedObj,
107
+ auxiliaryTracks: updatedObj.auxiliaryTracks.filter(
108
+ (auxiliaryTrack) => auxiliaryTrack.trackId !== track.trackId
109
+ ),
110
+ };
111
+ }
112
+ break;
113
+ }
114
+ case HMSTrackUpdate.TRACK_MUTED:
115
+ case HMSTrackUpdate.TRACK_UNMUTED: {
116
+ const track = data.track as HMSTrack;
117
+
118
+ if (track.source === HMSTrackSource.REGULAR) {
119
+ if (track.type === HMSTrackType.VIDEO) {
120
+ updatedObj.videoTrack = {
121
+ ...track,
122
+ isDegraded: updatedObj.videoTrack?.isDegraded || false,
123
+ };
124
+ } else if (track.type === HMSTrackType.AUDIO) {
125
+ updatedObj.audioTrack = track;
126
+ }
127
+ } else {
128
+ if (Array.isArray(updatedObj.auxiliaryTracks)) {
129
+ updatedObj = {
130
+ ...updatedObj,
131
+ auxiliaryTracks: updatedObj.auxiliaryTracks.map(
132
+ (auxiliaryTrack) =>
133
+ auxiliaryTrack.trackId === track.trackId
134
+ ? track
135
+ : auxiliaryTrack
136
+ ),
137
+ };
138
+ } else {
139
+ updatedObj.auxiliaryTracks = [track];
140
+ }
141
+ }
142
+ break;
143
+ }
144
+ case HMSTrackUpdate.TRACK_DEGRADED:
145
+ case HMSTrackUpdate.TRACK_RESTORED: {
146
+ const track = data.track as HMSTrack;
147
+
148
+ if (track.source === HMSTrackSource.REGULAR) {
149
+ if (track.type === HMSTrackType.VIDEO) {
150
+ updatedObj.videoTrack = {
151
+ ...track,
152
+ isDegraded: updateType === HMSTrackUpdate.TRACK_DEGRADED,
153
+ };
154
+ } else if (track.type === HMSTrackType.AUDIO) {
155
+ updatedObj.audioTrack = track;
156
+ }
157
+ } else {
158
+ if (Array.isArray(updatedObj.auxiliaryTracks)) {
159
+ updatedObj = {
160
+ ...updatedObj,
161
+ auxiliaryTracks: updatedObj.auxiliaryTracks.map(
162
+ (auxiliaryTrack) => {
163
+ if (auxiliaryTrack.trackId === track.trackId) {
164
+ return {
165
+ ...auxiliaryTrack,
166
+ isDegraded: updateType === HMSTrackUpdate.TRACK_DEGRADED,
167
+ };
168
+ }
169
+
170
+ return auxiliaryTrack;
171
+ }
172
+ ),
173
+ };
174
+ } else {
175
+ updatedObj.auxiliaryTracks = [track];
176
+ }
177
+ }
178
+ break;
179
+ }
180
+ case HMSPeerUpdate.ROLE_CHANGED: {
181
+ updatedObj.role = HMSEncoder.encodeHmsRole(data.role);
182
+ break;
183
+ }
184
+ case HMSPeerUpdate.NETWORK_QUALITY_UPDATED: {
185
+ updatedObj.networkQuality = HMSEncoder.encodeHMSNetworkQuality(
186
+ data.networkQuality
187
+ );
188
+ break;
189
+ }
190
+ case HMSPeerUpdate.METADATA_CHANGED:
191
+ case HMSPeerUpdate.NAME_CHANGED:
192
+ case HMSPeerUpdate.PEER_JOINED:
193
+ case HMSPeerUpdate.ROLE_CHANGED: {
194
+ updatedObj = { ...updatedObj, ...data };
195
+ break;
196
+ }
197
+ default: {
198
+ updatedObj = { ...updatedObj, ...data };
199
+ break;
200
+ }
201
+ }
202
+
203
+ if (Object.keys(updatedObj).length > 0) {
204
+ this._data.set(peerId, updatedObj);
205
+ }
206
+ }
207
+
208
+ cleanup() {
209
+ this._data.clear();
210
+ }
211
+ }
212
+
213
+ export function getPeerPropertyFromNative<T extends keyof HMSPeerCacheProps>(
214
+ id: string,
215
+ peerId: string,
216
+ property: T
217
+ ): HMSPeerCacheProps[T] {
218
+ const data: any = HMSManager.getPeerProperty({
219
+ id,
220
+ peerId,
221
+ property,
222
+ });
223
+
224
+ let value;
225
+
226
+ if (property === 'role') {
227
+ value = data ? HMSEncoder.encodeHmsRole(data.role) : undefined;
228
+ } else if (property === 'networkQuality') {
229
+ value = data
230
+ ? HMSEncoder.encodeHMSNetworkQuality(data.networkQuality)
231
+ : undefined;
232
+ } else if (property === 'audioTrack') {
233
+ value = data
234
+ ? HMSEncoder.encodeHmsAudioTrack(data.audioTrack, id)
235
+ : undefined;
236
+ } else if (property === 'videoTrack') {
237
+ value = data
238
+ ? HMSEncoder.encodeHmsVideoTrack(data.videoTrack, id)
239
+ : undefined;
240
+ } else if (property === 'auxiliaryTracks') {
241
+ value =
242
+ data && Array.isArray(data.auxiliaryTracks)
243
+ ? HMSEncoder.encodeHmsAuxiliaryTracks(data.auxiliaryTracks, id)
244
+ : undefined;
245
+ } else if (property === 'name') {
246
+ value = data?.[property] || '';
247
+ } else {
248
+ value = data ? data[property] : undefined;
249
+ }
250
+
251
+ return value;
252
+ }
@@ -1,11 +1,6 @@
1
- import type { HMSAudioTrack } from './HMSAudioTrack';
2
- import type { HMSNetworkQuality } from './HMSNetworkQuality';
3
1
  import { HMSPeer } from './HMSPeer';
4
2
  import { HMSRemoteAudioTrack } from './HMSRemoteAudioTrack';
5
3
  import { HMSRemoteVideoTrack } from './HMSRemoteVideoTrack';
6
- import type { HMSRole } from './HMSRole';
7
- import type { HMSTrack } from './HMSTrack';
8
- import type { HMSVideoTrack } from './HMSVideoTrack';
9
4
 
10
5
  export class HMSRemotePeer extends HMSPeer {
11
6
  private remoteAudio?: HMSRemoteAudioTrack;
@@ -21,16 +16,7 @@ export class HMSRemotePeer extends HMSPeer {
21
16
 
22
17
  constructor(params: {
23
18
  peerID: string;
24
- name: string;
25
- isLocal?: boolean;
26
- customerUserID?: string;
27
19
  customerDescription?: string;
28
- metadata?: string;
29
- audioTrack?: HMSAudioTrack;
30
- videoTrack?: HMSVideoTrack;
31
- role?: HMSRole;
32
- networkQuality?: HMSNetworkQuality;
33
- auxiliaryTracks?: HMSTrack[];
34
20
  remoteAudioTrackData?: {
35
21
  trackId: string;
36
22
  source?: number | string;
@@ -50,8 +36,6 @@ export class HMSRemotePeer extends HMSPeer {
50
36
  };
51
37
  }) {
52
38
  super(params);
53
- this.isLocal = false;
54
-
55
39
  if (params.remoteAudioTrackData) {
56
40
  this.remoteAudio = new HMSRemoteAudioTrack(params.remoteAudioTrackData);
57
41
  }
@@ -5,46 +5,150 @@ import type { HMSBrowserRecordingState } from './HMSBrowserRecordingState';
5
5
  import type { HMSHLSStreamingState } from './HMSHLSStreamingState';
6
6
  import type { HMSHLSRecordingState } from './HMSHLSRecordingState';
7
7
  import type { HMSLocalPeer } from './HMSLocalPeer';
8
+ import { getHmsRoomCache, getHMSRoomPropertyFromNative } from './HMSRoomCache';
9
+ import { HMSConstants } from './HMSConstants';
8
10
 
9
11
  export class HMSRoom {
10
12
  id: string;
11
- sessionId: string;
12
- name: string;
13
- metaData?: string;
14
- peers: HMSPeer[];
15
- browserRecordingState: HMSBrowserRecordingState;
16
- rtmpHMSRtmpStreamingState: HMSRtmpStreamingState;
17
- serverRecordingState: HMSServerRecordingState;
18
- hlsStreamingState: HMSHLSStreamingState;
19
- hlsRecordingState?: HMSHLSRecordingState;
20
- peerCount: number;
21
- localPeer: HMSLocalPeer;
22
-
23
- constructor(params: {
24
- id: string;
25
- sessionId: string;
26
- name: string;
27
- metaData?: string;
28
- peers: HMSPeer[];
29
- browserRecordingState: HMSBrowserRecordingState;
30
- rtmpHMSRtmpStreamingState: HMSRtmpStreamingState;
31
- serverRecordingState: HMSServerRecordingState;
32
- hlsStreamingState: HMSHLSStreamingState;
33
- hlsRecordingState?: HMSHLSRecordingState;
34
- peerCount: number;
35
- localPeer: HMSLocalPeer;
36
- }) {
13
+
14
+ constructor(params: { id: string }) {
37
15
  this.id = params.id;
38
- this.sessionId = params.sessionId;
39
- this.name = params.name;
40
- this.metaData = params.metaData;
41
- this.peers = params.peers;
42
- this.browserRecordingState = params.browserRecordingState;
43
- this.rtmpHMSRtmpStreamingState = params.rtmpHMSRtmpStreamingState;
44
- this.serverRecordingState = params.serverRecordingState;
45
- this.hlsStreamingState = params.hlsStreamingState;
46
- this.hlsRecordingState = params.hlsRecordingState;
47
- this.peerCount = params.peerCount;
48
- this.localPeer = params.localPeer;
16
+ }
17
+
18
+ get sessionId(): string {
19
+ const hmsRoomCache = getHmsRoomCache();
20
+
21
+ if (hmsRoomCache) {
22
+ return hmsRoomCache.getProperty('sessionId');
23
+ }
24
+
25
+ return getHMSRoomPropertyFromNative(
26
+ HMSConstants.DEFAULT_SDK_ID,
27
+ 'sessionId'
28
+ );
29
+ }
30
+
31
+ get name(): string {
32
+ const hmsRoomCache = getHmsRoomCache();
33
+
34
+ if (hmsRoomCache) {
35
+ return hmsRoomCache.getProperty('name');
36
+ }
37
+
38
+ return getHMSRoomPropertyFromNative(HMSConstants.DEFAULT_SDK_ID, 'name');
39
+ }
40
+
41
+ get metaData(): string | undefined {
42
+ const hmsRoomCache = getHmsRoomCache();
43
+
44
+ if (hmsRoomCache) {
45
+ return hmsRoomCache.getProperty('metaData');
46
+ }
47
+
48
+ return getHMSRoomPropertyFromNative(
49
+ HMSConstants.DEFAULT_SDK_ID,
50
+ 'metaData'
51
+ );
52
+ }
53
+
54
+ get peers(): HMSPeer[] {
55
+ const hmsRoomCache = getHmsRoomCache();
56
+
57
+ if (hmsRoomCache) {
58
+ return hmsRoomCache.getProperty('peers');
59
+ }
60
+
61
+ return getHMSRoomPropertyFromNative(HMSConstants.DEFAULT_SDK_ID, 'peers');
62
+ }
63
+
64
+ get browserRecordingState(): HMSBrowserRecordingState {
65
+ const hmsRoomCache = getHmsRoomCache();
66
+
67
+ if (hmsRoomCache) {
68
+ return hmsRoomCache.getProperty('browserRecordingState');
69
+ }
70
+
71
+ return getHMSRoomPropertyFromNative(
72
+ HMSConstants.DEFAULT_SDK_ID,
73
+ 'browserRecordingState'
74
+ );
75
+ }
76
+
77
+ get rtmpHMSRtmpStreamingState(): HMSRtmpStreamingState {
78
+ const hmsRoomCache = getHmsRoomCache();
79
+
80
+ if (hmsRoomCache) {
81
+ return hmsRoomCache.getProperty('rtmpHMSRtmpStreamingState');
82
+ }
83
+
84
+ return getHMSRoomPropertyFromNative(
85
+ HMSConstants.DEFAULT_SDK_ID,
86
+ 'rtmpHMSRtmpStreamingState'
87
+ );
88
+ }
89
+
90
+ get serverRecordingState(): HMSServerRecordingState {
91
+ const hmsRoomCache = getHmsRoomCache();
92
+
93
+ if (hmsRoomCache) {
94
+ return hmsRoomCache.getProperty('serverRecordingState');
95
+ }
96
+
97
+ return getHMSRoomPropertyFromNative(
98
+ HMSConstants.DEFAULT_SDK_ID,
99
+ 'serverRecordingState'
100
+ );
101
+ }
102
+
103
+ get hlsStreamingState(): HMSHLSStreamingState {
104
+ const hmsRoomCache = getHmsRoomCache();
105
+
106
+ if (hmsRoomCache) {
107
+ return hmsRoomCache.getProperty('hlsStreamingState');
108
+ }
109
+
110
+ return getHMSRoomPropertyFromNative(
111
+ HMSConstants.DEFAULT_SDK_ID,
112
+ 'hlsStreamingState'
113
+ );
114
+ }
115
+
116
+ get hlsRecordingState(): HMSHLSRecordingState | undefined {
117
+ const hmsRoomCache = getHmsRoomCache();
118
+
119
+ if (hmsRoomCache) {
120
+ return hmsRoomCache.getProperty('hlsRecordingState');
121
+ }
122
+
123
+ return getHMSRoomPropertyFromNative(
124
+ HMSConstants.DEFAULT_SDK_ID,
125
+ 'hlsRecordingState'
126
+ );
127
+ }
128
+
129
+ get peerCount(): number {
130
+ const hmsRoomCache = getHmsRoomCache();
131
+
132
+ if (hmsRoomCache) {
133
+ return hmsRoomCache.getProperty('peerCount');
134
+ }
135
+
136
+ return getHMSRoomPropertyFromNative(
137
+ HMSConstants.DEFAULT_SDK_ID,
138
+ 'peerCount'
139
+ );
140
+ }
141
+
142
+ get localPeer(): HMSLocalPeer {
143
+ const hmsRoomCache = getHmsRoomCache();
144
+
145
+ if (hmsRoomCache) {
146
+ return hmsRoomCache.getProperty('localPeer');
147
+ }
148
+
149
+ return getHMSRoomPropertyFromNative(
150
+ HMSConstants.DEFAULT_SDK_ID,
151
+ 'localPeer'
152
+ );
49
153
  }
50
154
  }