@100mslive/react-native-hms 0.9.2 → 0.9.5

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 (205) hide show
  1. package/README.md +1 -2
  2. package/android/.gradle/6.9/fileHashes/fileHashes.bin +0 -0
  3. package/android/.gradle/6.9/fileHashes/fileHashes.lock +0 -0
  4. package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
  5. package/android/.gradle/buildOutputCleanup/outputFiles.bin +0 -0
  6. package/android/.gradle/checksums/checksums.lock +0 -0
  7. package/android/.gradle/checksums/md5-checksums.bin +0 -0
  8. package/android/.gradle/checksums/sha1-checksums.bin +0 -0
  9. package/android/build.gradle +1 -1
  10. package/android/src/main/java/com/reactnativehmssdk/HmsDecoder.kt +12 -0
  11. package/android/src/main/java/com/reactnativehmssdk/HmsHelper.kt +174 -2
  12. package/android/src/main/java/com/reactnativehmssdk/HmsSDK.kt +3 -73
  13. package/android/src/main/java/com/reactnativehmssdk/HmsScreenshareActivity.kt +9 -4
  14. package/android/src/main/java/com/reactnativehmssdk/HmsView.kt +18 -27
  15. package/android/src/main/java/com/reactnativehmssdk/HmssdkViewManager.kt +36 -2
  16. package/ios/HmsDecoder.swift +12 -2
  17. package/ios/HmsSDK.swift +9 -4
  18. package/ios/HmsView.swift +2 -14
  19. package/lib/commonjs/classes/HMSAudioCodec.js.map +1 -1
  20. package/lib/commonjs/classes/HMSAudioSettings.js.map +1 -1
  21. package/lib/commonjs/classes/HMSAudioTrack.js.map +1 -1
  22. package/lib/commonjs/classes/HMSAudioTrackSettings.js.map +1 -1
  23. package/lib/commonjs/classes/HMSBrowserRecordingState.js.map +1 -1
  24. package/lib/commonjs/classes/HMSCameraFacing.js.map +1 -1
  25. package/lib/commonjs/classes/HMSChangeTrackStateRequest.js.map +1 -1
  26. package/lib/commonjs/classes/HMSConfig.js +3 -0
  27. package/lib/commonjs/classes/HMSConfig.js.map +1 -1
  28. package/lib/commonjs/classes/HMSEncoder.js +31 -8
  29. package/lib/commonjs/classes/HMSEncoder.js.map +1 -1
  30. package/lib/commonjs/classes/HMSException.js.map +1 -1
  31. package/lib/commonjs/classes/HMSHLSConfig.js.map +1 -1
  32. package/lib/commonjs/classes/HMSHLSMeetingURLVariant.js.map +1 -1
  33. package/lib/commonjs/classes/HMSHLSRecordingConfig.js.map +1 -1
  34. package/lib/commonjs/classes/HMSHLSRecordingState.js.map +1 -1
  35. package/lib/commonjs/classes/HMSHLSStreamingState.js.map +1 -1
  36. package/lib/commonjs/classes/HMSHLSVariant.js.map +1 -1
  37. package/lib/commonjs/classes/HMSHelper.js.map +1 -1
  38. package/lib/commonjs/classes/HMSLocalAudioStats.js.map +1 -1
  39. package/lib/commonjs/classes/HMSLocalAudioTrack.js +3 -5
  40. package/lib/commonjs/classes/HMSLocalAudioTrack.js.map +1 -1
  41. package/lib/commonjs/classes/HMSLocalPeer.js.map +1 -1
  42. package/lib/commonjs/classes/HMSLocalVideoStats.js.map +1 -1
  43. package/lib/commonjs/classes/HMSLocalVideoTrack.js +3 -5
  44. package/lib/commonjs/classes/HMSLocalVideoTrack.js.map +1 -1
  45. package/lib/commonjs/classes/HMSLogLevel.js.map +1 -1
  46. package/lib/commonjs/classes/HMSLogger.js +19 -1
  47. package/lib/commonjs/classes/HMSLogger.js.map +1 -1
  48. package/lib/commonjs/classes/HMSMessage.js +1 -1
  49. package/lib/commonjs/classes/HMSMessage.js.map +1 -1
  50. package/lib/commonjs/classes/HMSMessageRecipient.js.map +1 -1
  51. package/lib/commonjs/classes/HMSMessageRecipientType.js.map +1 -1
  52. package/lib/commonjs/classes/HMSNetworkQuality.js +20 -0
  53. package/lib/commonjs/classes/HMSNetworkQuality.js.map +1 -0
  54. package/lib/commonjs/classes/HMSPeer.js +3 -0
  55. package/lib/commonjs/classes/HMSPeer.js.map +1 -1
  56. package/lib/commonjs/classes/HMSPeerUpdate.js +1 -0
  57. package/lib/commonjs/classes/HMSPeerUpdate.js.map +1 -1
  58. package/lib/commonjs/classes/HMSPermissions.js.map +1 -1
  59. package/lib/commonjs/classes/HMSPublishSettings.js.map +1 -1
  60. package/lib/commonjs/classes/HMSRTCStats.js.map +1 -1
  61. package/lib/commonjs/classes/HMSRTCStatsReport.js.map +1 -1
  62. package/lib/commonjs/classes/HMSRTMPConfig.js.map +1 -1
  63. package/lib/commonjs/classes/HMSRemoteAudioStats.js.map +1 -1
  64. package/lib/commonjs/classes/HMSRemoteAudioTrack.js +3 -5
  65. package/lib/commonjs/classes/HMSRemoteAudioTrack.js.map +1 -1
  66. package/lib/commonjs/classes/HMSRemotePeer.js.map +1 -1
  67. package/lib/commonjs/classes/HMSRemoteVideoStats.js.map +1 -1
  68. package/lib/commonjs/classes/HMSRemoteVideoTrack.js +3 -5
  69. package/lib/commonjs/classes/HMSRemoteVideoTrack.js.map +1 -1
  70. package/lib/commonjs/classes/HMSRole.js.map +1 -1
  71. package/lib/commonjs/classes/HMSRoleChangeRequest.js.map +1 -1
  72. package/lib/commonjs/classes/HMSRoom.js.map +1 -1
  73. package/lib/commonjs/classes/HMSRoomUpdate.js.map +1 -1
  74. package/lib/commonjs/classes/HMSRtmpStreamingState.js.map +1 -1
  75. package/lib/commonjs/classes/HMSSDK.js +79 -202
  76. package/lib/commonjs/classes/HMSSDK.js.map +1 -1
  77. package/lib/commonjs/classes/HMSServerRecordingState.js.map +1 -1
  78. package/lib/commonjs/classes/HMSSimulcastLayerSettings.js.map +1 -1
  79. package/lib/commonjs/classes/HMSSimulcastSettings.js.map +1 -1
  80. package/lib/commonjs/classes/HMSSpeaker.js.map +1 -1
  81. package/lib/commonjs/classes/HMSSpeakerUpdate.js.map +1 -1
  82. package/lib/commonjs/classes/HMSSubscribeSettings.js.map +1 -1
  83. package/lib/commonjs/classes/HMSTrack.js.map +1 -1
  84. package/lib/commonjs/classes/HMSTrackSettings.js.map +1 -1
  85. package/lib/commonjs/classes/HMSTrackType.js.map +1 -1
  86. package/lib/commonjs/classes/HMSTrackUpdate.js.map +1 -1
  87. package/lib/commonjs/classes/HMSUpdateListenerActions.js.map +1 -1
  88. package/lib/commonjs/classes/HMSVideoCodec.js.map +1 -1
  89. package/lib/commonjs/classes/HMSVideoResolution.js.map +1 -1
  90. package/lib/commonjs/classes/HMSVideoSettings.js.map +1 -1
  91. package/lib/commonjs/classes/HMSVideoTrack.js.map +1 -1
  92. package/lib/commonjs/classes/HMSVideoTrackSettings.js.map +1 -1
  93. package/lib/commonjs/classes/HMSVideoViewMode.js.map +1 -1
  94. package/lib/commonjs/classes/HmsView.js +69 -17
  95. package/lib/commonjs/classes/HmsView.js.map +1 -1
  96. package/lib/commonjs/index.js +14 -14
  97. package/lib/commonjs/index.js.map +1 -1
  98. package/lib/module/classes/HMSAudioCodec.js.map +1 -1
  99. package/lib/module/classes/HMSAudioSettings.js.map +1 -1
  100. package/lib/module/classes/HMSAudioTrack.js.map +1 -1
  101. package/lib/module/classes/HMSAudioTrackSettings.js.map +1 -1
  102. package/lib/module/classes/HMSBrowserRecordingState.js.map +1 -1
  103. package/lib/module/classes/HMSCameraFacing.js.map +1 -1
  104. package/lib/module/classes/HMSChangeTrackStateRequest.js.map +1 -1
  105. package/lib/module/classes/HMSConfig.js +3 -0
  106. package/lib/module/classes/HMSConfig.js.map +1 -1
  107. package/lib/module/classes/HMSEncoder.js +20 -2
  108. package/lib/module/classes/HMSEncoder.js.map +1 -1
  109. package/lib/module/classes/HMSException.js.map +1 -1
  110. package/lib/module/classes/HMSHLSConfig.js.map +1 -1
  111. package/lib/module/classes/HMSHLSMeetingURLVariant.js.map +1 -1
  112. package/lib/module/classes/HMSHLSRecordingConfig.js.map +1 -1
  113. package/lib/module/classes/HMSHLSRecordingState.js.map +1 -1
  114. package/lib/module/classes/HMSHLSStreamingState.js.map +1 -1
  115. package/lib/module/classes/HMSHLSVariant.js.map +1 -1
  116. package/lib/module/classes/HMSHelper.js.map +1 -1
  117. package/lib/module/classes/HMSLocalAudioStats.js.map +1 -1
  118. package/lib/module/classes/HMSLocalAudioTrack.js +3 -3
  119. package/lib/module/classes/HMSLocalAudioTrack.js.map +1 -1
  120. package/lib/module/classes/HMSLocalPeer.js.map +1 -1
  121. package/lib/module/classes/HMSLocalVideoStats.js.map +1 -1
  122. package/lib/module/classes/HMSLocalVideoTrack.js +3 -3
  123. package/lib/module/classes/HMSLocalVideoTrack.js.map +1 -1
  124. package/lib/module/classes/HMSLogLevel.js.map +1 -1
  125. package/lib/module/classes/HMSLogger.js +10 -0
  126. package/lib/module/classes/HMSLogger.js.map +1 -1
  127. package/lib/module/classes/HMSMessage.js +1 -1
  128. package/lib/module/classes/HMSMessage.js.map +1 -1
  129. package/lib/module/classes/HMSMessageRecipient.js.map +1 -1
  130. package/lib/module/classes/HMSMessageRecipientType.js.map +1 -1
  131. package/lib/module/classes/HMSNetworkQuality.js +11 -0
  132. package/lib/module/classes/HMSNetworkQuality.js.map +1 -0
  133. package/lib/module/classes/HMSPeer.js +3 -0
  134. package/lib/module/classes/HMSPeer.js.map +1 -1
  135. package/lib/module/classes/HMSPeerUpdate.js +1 -0
  136. package/lib/module/classes/HMSPeerUpdate.js.map +1 -1
  137. package/lib/module/classes/HMSPermissions.js.map +1 -1
  138. package/lib/module/classes/HMSPublishSettings.js.map +1 -1
  139. package/lib/module/classes/HMSRTCStats.js.map +1 -1
  140. package/lib/module/classes/HMSRTCStatsReport.js.map +1 -1
  141. package/lib/module/classes/HMSRTMPConfig.js.map +1 -1
  142. package/lib/module/classes/HMSRemoteAudioStats.js.map +1 -1
  143. package/lib/module/classes/HMSRemoteAudioTrack.js +3 -3
  144. package/lib/module/classes/HMSRemoteAudioTrack.js.map +1 -1
  145. package/lib/module/classes/HMSRemotePeer.js.map +1 -1
  146. package/lib/module/classes/HMSRemoteVideoStats.js.map +1 -1
  147. package/lib/module/classes/HMSRemoteVideoTrack.js +3 -3
  148. package/lib/module/classes/HMSRemoteVideoTrack.js.map +1 -1
  149. package/lib/module/classes/HMSRole.js.map +1 -1
  150. package/lib/module/classes/HMSRoleChangeRequest.js.map +1 -1
  151. package/lib/module/classes/HMSRoom.js.map +1 -1
  152. package/lib/module/classes/HMSRoomUpdate.js.map +1 -1
  153. package/lib/module/classes/HMSRtmpStreamingState.js.map +1 -1
  154. package/lib/module/classes/HMSSDK.js +79 -202
  155. package/lib/module/classes/HMSSDK.js.map +1 -1
  156. package/lib/module/classes/HMSServerRecordingState.js.map +1 -1
  157. package/lib/module/classes/HMSSimulcastLayerSettings.js.map +1 -1
  158. package/lib/module/classes/HMSSimulcastSettings.js.map +1 -1
  159. package/lib/module/classes/HMSSpeaker.js.map +1 -1
  160. package/lib/module/classes/HMSSpeakerUpdate.js.map +1 -1
  161. package/lib/module/classes/HMSSubscribeSettings.js.map +1 -1
  162. package/lib/module/classes/HMSTrack.js.map +1 -1
  163. package/lib/module/classes/HMSTrackSettings.js.map +1 -1
  164. package/lib/module/classes/HMSTrackType.js.map +1 -1
  165. package/lib/module/classes/HMSTrackUpdate.js.map +1 -1
  166. package/lib/module/classes/HMSUpdateListenerActions.js.map +1 -1
  167. package/lib/module/classes/HMSVideoCodec.js.map +1 -1
  168. package/lib/module/classes/HMSVideoResolution.js.map +1 -1
  169. package/lib/module/classes/HMSVideoSettings.js.map +1 -1
  170. package/lib/module/classes/HMSVideoTrack.js.map +1 -1
  171. package/lib/module/classes/HMSVideoTrackSettings.js.map +1 -1
  172. package/lib/module/classes/HMSVideoViewMode.js.map +1 -1
  173. package/lib/module/classes/HmsView.js +67 -17
  174. package/lib/module/classes/HmsView.js.map +1 -1
  175. package/lib/module/index.js +1 -1
  176. package/lib/module/index.js.map +1 -1
  177. package/lib/typescript/classes/HMSConfig.d.ts +2 -0
  178. package/lib/typescript/classes/HMSEncoder.d.ts +7 -1
  179. package/lib/typescript/classes/HMSLocalPeer.d.ts +2 -0
  180. package/lib/typescript/classes/HMSLogger.d.ts +3 -0
  181. package/lib/typescript/classes/HMSNetworkQuality.d.ts +6 -0
  182. package/lib/typescript/classes/HMSPeer.d.ts +3 -0
  183. package/lib/typescript/classes/HMSPeerUpdate.d.ts +2 -1
  184. package/lib/typescript/classes/HMSRemotePeer.d.ts +2 -0
  185. package/lib/typescript/classes/HMSSDK.d.ts +7 -9
  186. package/lib/typescript/classes/HmsView.d.ts +7 -7
  187. package/lib/typescript/index.d.ts +1 -1
  188. package/package.json +2 -2
  189. package/react-native-hms.podspec +1 -1
  190. package/src/classes/HMSConfig.ts +3 -0
  191. package/src/classes/HMSEncoder.ts +20 -10
  192. package/src/classes/HMSLocalAudioTrack.ts +3 -3
  193. package/src/classes/HMSLocalPeer.ts +2 -0
  194. package/src/classes/HMSLocalVideoTrack.ts +3 -3
  195. package/src/classes/HMSLogger.ts +11 -0
  196. package/src/classes/HMSMessage.ts +1 -1
  197. package/src/classes/HMSNetworkQuality.ts +7 -0
  198. package/src/classes/HMSPeer.ts +4 -2
  199. package/src/classes/HMSPeerUpdate.ts +1 -0
  200. package/src/classes/HMSRemoteAudioTrack.ts +3 -3
  201. package/src/classes/HMSRemotePeer.ts +2 -0
  202. package/src/classes/HMSRemoteVideoTrack.ts +3 -3
  203. package/src/classes/HMSSDK.tsx +22 -30
  204. package/src/classes/HmsView.tsx +102 -44
  205. package/src/index.ts +1 -1
@@ -1,5 +1,5 @@
1
1
  import { NativeModules } from 'react-native';
2
- import { HMSSDK } from './HMSSDK';
2
+ import { getLogger } from './HMSLogger';
3
3
  import type { HMSTrackType } from './HMSTrackType';
4
4
  import { HMSAudioTrack } from './HMSAudioTrack';
5
5
 
@@ -18,7 +18,7 @@ export class HMSRemoteAudioTrack extends HMSAudioTrack {
18
18
  * @memberof HMSRemoteAudioTrack
19
19
  */
20
20
  setPlaybackAllowed(playbackAllowed: boolean) {
21
- const logger = HMSSDK.getLogger();
21
+ const logger = getLogger();
22
22
  logger?.verbose('#Function setPlaybackAllowed', {
23
23
  trackId: this.trackId,
24
24
  id: this.id,
@@ -35,7 +35,7 @@ export class HMSRemoteAudioTrack extends HMSAudioTrack {
35
35
 
36
36
  isPlaybackAllowed = async () => {
37
37
  try {
38
- const logger = HMSSDK.getLogger();
38
+ const logger = getLogger();
39
39
  logger?.verbose('#Function isPlaybackAllowed', {
40
40
  trackId: this.trackId,
41
41
  id: this.id,
@@ -1,4 +1,5 @@
1
1
  import type { HMSAudioTrack } from './HMSAudioTrack';
2
+ import type { HMSNetworkQuality } from './HMSNetworkQuality';
2
3
  import { HMSPeer } from './HMSPeer';
3
4
  import { HMSRemoteAudioTrack } from './HMSRemoteAudioTrack';
4
5
  import { HMSRemoteVideoTrack } from './HMSRemoteVideoTrack';
@@ -28,6 +29,7 @@ export class HMSRemotePeer extends HMSPeer {
28
29
  audioTrack?: HMSAudioTrack;
29
30
  videoTrack?: HMSVideoTrack;
30
31
  role?: HMSRole;
32
+ networkQuality?: HMSNetworkQuality;
31
33
  auxiliaryTracks?: HMSTrack[];
32
34
  remoteAudioTrackData?: {
33
35
  trackId: string;
@@ -1,5 +1,5 @@
1
1
  import { NativeModules } from 'react-native';
2
- import { HMSSDK } from './HMSSDK';
2
+ import { getLogger } from './HMSLogger';
3
3
  import { HMSVideoTrack } from './HMSVideoTrack';
4
4
  import type { HMSTrackType } from './HMSTrackType';
5
5
 
@@ -20,7 +20,7 @@ export class HMSRemoteVideoTrack extends HMSVideoTrack {
20
20
  * @memberof HMSRemoteVideoTrack
21
21
  */
22
22
  setPlaybackAllowed(playbackAllowed: boolean) {
23
- const logger = HMSSDK.getLogger();
23
+ const logger = getLogger();
24
24
  logger?.verbose('#Function setPlaybackAllowed', {
25
25
  trackId: this.trackId,
26
26
  id: this.id,
@@ -37,7 +37,7 @@ export class HMSRemoteVideoTrack extends HMSVideoTrack {
37
37
 
38
38
  isPlaybackAllowed = async () => {
39
39
  try {
40
- const logger = HMSSDK.getLogger();
40
+ const logger = getLogger();
41
41
  logger?.verbose('#Function isPlaybackAllowed', {
42
42
  trackId: this.trackId,
43
43
  id: this.id,
@@ -7,35 +7,35 @@ import {
7
7
  AppState,
8
8
  } from 'react-native';
9
9
  import { HMSUpdateListenerActions } from './HMSUpdateListenerActions';
10
+ import { HMSEncoder } from './HMSEncoder';
11
+ import { HMSMessage } from './HMSMessage';
12
+ import { HMSHelper } from './HMSHelper';
13
+ import { HmsViewComponent } from './HmsView';
14
+ import { HMSLocalAudioStats } from './HMSLocalAudioStats';
15
+ import { HMSLocalVideoStats } from './HMSLocalVideoStats';
16
+ import { HMSRemoteVideoStats } from './HMSRemoteVideoStats';
17
+ import { HMSRemoteAudioStats } from './HMSRemoteAudioStats';
18
+ import { logger, getLogger, setLogger } from './HMSLogger';
10
19
  import type { HMSConfig } from './HMSConfig';
11
20
  import type { HMSLocalPeer } from './HMSLocalPeer';
12
21
  import type { HMSRemotePeer } from './HMSRemotePeer';
13
22
  import type { HMSRoom } from './HMSRoom';
14
23
  import type { HMSRole } from './HMSRole';
15
- import { HMSEncoder } from './HMSEncoder';
16
- import { HMSMessage } from './HMSMessage';
17
- import { HMSHelper } from './HMSHelper';
18
24
  import type { HMSTrack } from './HMSTrack';
19
25
  import type { HMSTrackType } from './HMSTrackType';
20
26
  import type { HMSLogger } from './HMSLogger';
21
27
  import type { HMSPeer } from './HMSPeer';
22
- import { HmsView as HMSViewComponent } from './HmsView';
23
- import { HMSVideoViewMode } from './HMSVideoViewMode';
28
+ import type { HMSVideoViewMode } from './HMSVideoViewMode';
24
29
  import type { HMSTrackSettings } from './HMSTrackSettings';
25
30
  import type { HMSRTMPConfig } from './HMSRTMPConfig';
26
31
  import type { HMSHLSConfig } from './HMSHLSConfig';
27
- import { HMSLocalAudioStats } from './HMSLocalAudioStats';
28
- import { HMSLocalVideoStats } from './HMSLocalVideoStats';
29
- import { HMSRemoteVideoStats } from './HMSRemoteVideoStats';
30
- import { HMSRemoteAudioStats } from './HMSRemoteAudioStats';
31
32
 
32
- interface HmsComponentProps {
33
+ interface HmsViewProps {
33
34
  trackId: string;
34
- sink: boolean;
35
- style: ViewStyle;
35
+ style?: ViewStyle;
36
36
  mirror?: boolean;
37
- scaleType: HMSVideoViewMode;
38
- id?: string | null;
37
+ scaleType?: HMSVideoViewMode;
38
+ setZOrderMediaOverlay?: boolean;
39
39
  }
40
40
 
41
41
  const {
@@ -49,8 +49,6 @@ const HmsEventEmitter = new NativeEventEmitter(HmsManager);
49
49
 
50
50
  let HmsSdk: HMSSDK | undefined;
51
51
 
52
- let logger: HMSLogger | undefined;
53
-
54
52
  export class HMSSDK {
55
53
  room?: HMSRoom;
56
54
  localPeer?: HMSLocalPeer;
@@ -105,7 +103,7 @@ export class HMSSDK {
105
103
  * @memberof HMSSDK
106
104
  */
107
105
  static getLogger() {
108
- return logger;
106
+ return getLogger();
109
107
  }
110
108
 
111
109
  /**
@@ -114,8 +112,7 @@ export class HMSSDK {
114
112
  * @memberof HMSSDK
115
113
  */
116
114
  setLogger = (hmsLogger: HMSLogger) => {
117
- logger = hmsLogger;
118
- hmsLogger.verbose('#Function setLogger', { id: this.id });
115
+ setLogger(hmsLogger, this.id);
119
116
  };
120
117
 
121
118
  /**
@@ -380,7 +377,6 @@ export class HMSSDK {
380
377
  /**
381
378
  * - HmsView is react component that takes one track and starts showing that track on a tile.
382
379
  * - The appearance of tile is completely customizable with style prop.
383
- * - setting sink true or false for a video tile will add or remove sink for a video.
384
380
  * - scale type can determine how the incoming video will fit in the canvas check {@link HMSVideoViewMode} for more information.
385
381
  *
386
382
  * checkout {@link https://www.100ms.live/docs/react-native/v2/features/render-video} for more info
@@ -388,24 +384,20 @@ export class HMSSDK {
388
384
  * @param {HmsComponentProps}
389
385
  * @memberof HMSSDK
390
386
  */
391
- HmsView = ({
392
- sink,
393
- trackId,
394
- style,
395
- mirror,
396
- scaleType = HMSVideoViewMode.ASPECT_FIT,
397
- }: HmsComponentProps) => {
387
+ HmsView = React.forwardRef<any, HmsViewProps>((props, ref) => {
388
+ const { trackId, style, mirror, scaleType, setZOrderMediaOverlay } = props;
398
389
  return (
399
- <HMSViewComponent
400
- sink={sink}
390
+ <HmsViewComponent
391
+ ref={ref}
401
392
  trackId={trackId}
402
393
  style={style}
394
+ setZOrderMediaOverlay={setZOrderMediaOverlay}
403
395
  mirror={mirror}
404
396
  scaleType={scaleType}
405
397
  id={this.id}
406
398
  />
407
399
  );
408
- };
400
+ });
409
401
 
410
402
  /**
411
403
  * Calls leave function of native sdk and session of current user is invalidated.
@@ -1,66 +1,124 @@
1
- import React, { useState, useEffect } from 'react';
2
- import { requireNativeComponent, StyleSheet, ViewStyle } from 'react-native';
3
- import { HMSVideoViewMode } from '../classes/HMSVideoViewMode';
1
+ import React, { useState, useEffect, useImperativeHandle, useRef } from 'react';
2
+ import {
3
+ findNodeHandle,
4
+ requireNativeComponent,
5
+ StyleSheet,
6
+ UIManager,
7
+ ViewStyle,
8
+ } from 'react-native';
9
+ import { HMSVideoViewMode } from './HMSVideoViewMode';
4
10
 
5
11
  interface HmsViewProps {
6
12
  data: {
7
13
  trackId: string;
8
- sink: boolean;
9
- id?: string | null;
10
- mirror?: boolean;
14
+ id: string;
15
+ mirror: boolean;
11
16
  };
17
+ setZOrderMediaOverlay: boolean;
12
18
  scaleType: HMSVideoViewMode;
13
19
  style: ViewStyle;
14
20
  onChange: Function;
21
+ onDataReturned: Function;
15
22
  }
16
23
 
17
- const HmsViewComponent = requireNativeComponent<HmsViewProps>('HmsView');
24
+ const HmsView = requireNativeComponent<HmsViewProps>('HmsView');
25
+ let _nextRequestId = 1;
26
+ let _requestMap = new Map();
18
27
 
19
28
  interface HmsComponentProps {
20
29
  trackId: string;
21
- sink: boolean;
22
- style: ViewStyle;
30
+ style?: ViewStyle;
23
31
  mirror?: boolean;
24
- scaleType: HMSVideoViewMode;
25
- id?: string | null;
32
+ scaleType?: HMSVideoViewMode;
33
+ setZOrderMediaOverlay?: boolean;
34
+ id: string;
26
35
  }
27
36
 
28
- export const HmsView = ({
29
- sink,
30
- trackId,
31
- style,
32
- id,
33
- mirror,
34
- scaleType = HMSVideoViewMode.ASPECT_FILL,
35
- }: HmsComponentProps) => {
36
- const [tempVal, setTempVal] = useState(0);
37
- const data = {
38
- trackId,
39
- sink,
40
- id: id || null,
41
- mirror: mirror || false,
42
- };
37
+ export const HmsViewComponent = React.forwardRef<any, HmsComponentProps>(
38
+ (props, ref) => {
39
+ const {
40
+ trackId,
41
+ style = temporaryStyles.customStyle,
42
+ id = '12345',
43
+ mirror = false,
44
+ setZOrderMediaOverlay = false,
45
+ scaleType = HMSVideoViewMode.ASPECT_FILL,
46
+ } = props;
43
47
 
44
- const onChange = (values: any) => {
45
- console.log(values, 'values');
46
- setTimeout(() => {
47
- setTempVal(1);
48
- }, 2000);
49
- };
48
+ const hmsViewRef: any = useRef();
49
+ const [tempVal, setTempVal] = useState(0);
50
+ const data = {
51
+ trackId,
52
+ id,
53
+ mirror,
54
+ };
55
+
56
+ const onChange = (values: any) => {
57
+ console.log(values, 'values');
58
+ setTimeout(() => {
59
+ setTempVal(1);
60
+ }, 2000);
61
+ };
62
+
63
+ const _onDataReturned = (event: {
64
+ nativeEvent: { requestId: any; result: any; error: any };
65
+ }) => {
66
+ // We grab the relevant data out of our event.
67
+ let { requestId, result, error } = event.nativeEvent;
68
+ // Then we get the promise we saved earlier for the given request ID.
69
+ let promise = _requestMap.get(requestId);
70
+ if (result) {
71
+ // If it was successful, we resolve the promise.
72
+ promise.resolve(result);
73
+ } else {
74
+ // Otherwise, we reject it.
75
+ promise.reject(error);
76
+ }
77
+ // Finally, we clean up our request map.
78
+ _requestMap.delete(requestId);
79
+ };
80
+
81
+ const capture = async () => {
82
+ let requestId = _nextRequestId++;
83
+ let requestMap = _requestMap;
84
+
85
+ // We create a promise here that will be resolved once `_onRequestDone` is
86
+ // called.
87
+ let promise = new Promise(function (resolve, reject) {
88
+ requestMap.set(requestId, { resolve, reject });
89
+ });
90
+ const viewManagerConfig = UIManager.getViewManagerConfig('HmsView');
91
+ UIManager.dispatchViewManagerCommand(
92
+ findNodeHandle(hmsViewRef.current),
93
+ viewManagerConfig.Commands.capture,
94
+ [requestId]
95
+ );
96
+ return promise;
97
+ };
98
+
99
+ useImperativeHandle(ref, () => {
100
+ return {
101
+ capture,
102
+ };
103
+ });
50
104
 
51
- useEffect(() => {
52
- setTempVal(0);
53
- }, [tempVal]);
105
+ useEffect(() => {
106
+ setTempVal(0);
107
+ }, [tempVal]);
54
108
 
55
- return (
56
- <HmsViewComponent
57
- onChange={onChange}
58
- data={data}
59
- style={tempVal === 0 ? style : temporaryStyles.customStyle}
60
- scaleType={scaleType}
61
- />
62
- );
63
- };
109
+ return (
110
+ <HmsView
111
+ ref={hmsViewRef}
112
+ onChange={onChange}
113
+ data={data}
114
+ style={tempVal === 0 ? style : temporaryStyles.customStyle}
115
+ scaleType={scaleType}
116
+ setZOrderMediaOverlay={setZOrderMediaOverlay}
117
+ onDataReturned={_onDataReturned}
118
+ />
119
+ );
120
+ }
121
+ );
64
122
 
65
123
  const temporaryStyles = StyleSheet.create({
66
124
  customStyle: {
package/src/index.ts CHANGED
@@ -1,7 +1,6 @@
1
1
  export * from './classes/HMSConfig';
2
2
  export * from './classes/HMSUpdateListenerActions';
3
3
  export * from './classes/HMSMessage';
4
- export * from './classes/HmsView';
5
4
  export * from './classes/HMSVideoTrackSettings';
6
5
  export * from './classes/HMSVideoTrack';
7
6
  export * from './classes/HMSVideoSettings';
@@ -61,6 +60,7 @@ export * from './classes/HMSHLSRecordingConfig';
61
60
  export * from './classes/HMSHLSRecordingState';
62
61
  export * from './classes/HMSMessageRecipient';
63
62
  export * from './classes/HMSMessageRecipientType';
63
+ export * from './classes/HMSNetworkQuality';
64
64
 
65
65
  import { HMSSDK as HmsManager } from './classes/HMSSDK';
66
66
  export default HmsManager;