@100mslive/react-native-hms 1.10.7 → 1.10.9
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.
- package/README.md +6 -5
- package/android/src/main/java/com/reactnativehmssdk/HMSManager.kt +47 -8
- package/android/src/main/java/com/reactnativehmssdk/HMSRNSDK.kt +34 -3
- package/android/src/main/java/com/reactnativehmssdk/PipActionReceiver.kt +3 -1
- package/ios/HMSConstants.swift +1 -0
- package/ios/HMSManager.m +39 -0
- package/ios/HMSManager.swift +116 -1
- package/ios/HMSRNSDK.swift +276 -2
- package/ios/PIPMode/HMSPipModel.swift +18 -0
- package/ios/PIPMode/HMSPipView.swift +36 -0
- package/ios/PIPMode/HMSSampleBufferSwiftUIView.swift +45 -0
- package/lib/commonjs/classes/HMSAudioDevice.js +9 -0
- package/lib/commonjs/classes/HMSAudioDevice.js.map +1 -1
- package/lib/commonjs/classes/HMSAudioMixingMode.js +11 -0
- package/lib/commonjs/classes/HMSAudioMixingMode.js.map +1 -1
- package/lib/commonjs/classes/HMSAudioTrack.js +9 -0
- package/lib/commonjs/classes/HMSAudioTrack.js.map +1 -1
- package/lib/commonjs/classes/HMSCameraFacing.js +9 -0
- package/lib/commonjs/classes/HMSCameraFacing.js.map +1 -1
- package/lib/commonjs/classes/HMSConfig.js +27 -0
- package/lib/commonjs/classes/HMSConfig.js.map +1 -1
- package/lib/commonjs/classes/HMSException.js +18 -0
- package/lib/commonjs/classes/HMSException.js.map +1 -1
- package/lib/commonjs/classes/HMSHLSTimedMetadata.js.map +1 -1
- package/lib/commonjs/classes/HMSIOSAudioMode.js +15 -0
- package/lib/commonjs/classes/HMSIOSAudioMode.js.map +1 -1
- package/lib/commonjs/classes/HMSLogAlarmManager.js +12 -0
- package/lib/commonjs/classes/HMSLogAlarmManager.js.map +1 -1
- package/lib/commonjs/classes/HMSLogLevel.js +12 -0
- package/lib/commonjs/classes/HMSLogLevel.js.map +1 -1
- package/lib/commonjs/classes/HMSLogSettings.js +14 -0
- package/lib/commonjs/classes/HMSLogSettings.js.map +1 -1
- package/lib/commonjs/classes/HMSNetworkQuality.js +11 -0
- package/lib/commonjs/classes/HMSNetworkQuality.js.map +1 -1
- package/lib/commonjs/classes/HMSNoiseCancellationPlugin.js +40 -10
- package/lib/commonjs/classes/HMSNoiseCancellationPlugin.js.map +1 -1
- package/lib/commonjs/classes/HMSPIPConfig.js +4 -0
- package/lib/commonjs/classes/HMSPIPConfig.js.map +1 -1
- package/lib/commonjs/classes/HMSPIPListenerActions.js +9 -0
- package/lib/commonjs/classes/HMSPIPListenerActions.js.map +1 -1
- package/lib/commonjs/classes/HMSPeer.js +148 -0
- package/lib/commonjs/classes/HMSPeer.js.map +1 -1
- package/lib/commonjs/classes/HMSPeerType.js +12 -1
- package/lib/commonjs/classes/HMSPeerType.js.map +1 -1
- package/lib/commonjs/classes/HMSRTMPConfig.js +14 -0
- package/lib/commonjs/classes/HMSRTMPConfig.js.map +1 -1
- package/lib/commonjs/classes/HMSRole.js +17 -0
- package/lib/commonjs/classes/HMSRole.js.map +1 -1
- package/lib/commonjs/classes/HMSRtmpVideoResolution.js +13 -0
- package/lib/commonjs/classes/HMSRtmpVideoResolution.js.map +1 -1
- package/lib/commonjs/classes/HMSSDK.js +1153 -233
- package/lib/commonjs/classes/HMSSDK.js.map +1 -1
- package/lib/commonjs/classes/HMSSessionStore.js +14 -15
- package/lib/commonjs/classes/HMSSessionStore.js.map +1 -1
- package/lib/commonjs/classes/HMSTrack.js +13 -0
- package/lib/commonjs/classes/HMSTrack.js.map +1 -1
- package/lib/commonjs/classes/HMSTrackSettings.js +10 -0
- package/lib/commonjs/classes/HMSTrackSettings.js.map +1 -1
- package/lib/commonjs/classes/HMSTrackSettingsInitState.js +9 -0
- package/lib/commonjs/classes/HMSTrackSettingsInitState.js.map +1 -1
- package/lib/commonjs/classes/HMSTrackSource.js +10 -0
- package/lib/commonjs/classes/HMSTrackSource.js.map +1 -1
- package/lib/commonjs/classes/HMSTrackType.js +7 -0
- package/lib/commonjs/classes/HMSTrackType.js.map +1 -1
- package/lib/commonjs/classes/HMSUpdateListenerActions.js +42 -3
- package/lib/commonjs/classes/HMSUpdateListenerActions.js.map +1 -1
- package/lib/commonjs/classes/HMSVideoTrack.js +17 -0
- package/lib/commonjs/classes/HMSVideoTrack.js.map +1 -1
- package/lib/commonjs/classes/HMSVideoTrackSettings.js +12 -2
- package/lib/commonjs/classes/HMSVideoTrackSettings.js.map +1 -1
- package/lib/commonjs/classes/HmsView.js +42 -0
- package/lib/commonjs/classes/HmsView.js.map +1 -1
- package/lib/module/classes/HMSAudioDevice.js +9 -0
- package/lib/module/classes/HMSAudioDevice.js.map +1 -1
- package/lib/module/classes/HMSAudioMixingMode.js +11 -0
- package/lib/module/classes/HMSAudioMixingMode.js.map +1 -1
- package/lib/module/classes/HMSAudioTrack.js +9 -0
- package/lib/module/classes/HMSAudioTrack.js.map +1 -1
- package/lib/module/classes/HMSCameraFacing.js +9 -0
- package/lib/module/classes/HMSCameraFacing.js.map +1 -1
- package/lib/module/classes/HMSConfig.js +27 -0
- package/lib/module/classes/HMSConfig.js.map +1 -1
- package/lib/module/classes/HMSException.js +18 -0
- package/lib/module/classes/HMSException.js.map +1 -1
- package/lib/module/classes/HMSHLSTimedMetadata.js.map +1 -1
- package/lib/module/classes/HMSIOSAudioMode.js +15 -0
- package/lib/module/classes/HMSIOSAudioMode.js.map +1 -1
- package/lib/module/classes/HMSLogAlarmManager.js +12 -0
- package/lib/module/classes/HMSLogAlarmManager.js.map +1 -1
- package/lib/module/classes/HMSLogLevel.js +12 -0
- package/lib/module/classes/HMSLogLevel.js.map +1 -1
- package/lib/module/classes/HMSLogSettings.js +14 -0
- package/lib/module/classes/HMSLogSettings.js.map +1 -1
- package/lib/module/classes/HMSNetworkQuality.js +11 -0
- package/lib/module/classes/HMSNetworkQuality.js.map +1 -1
- package/lib/module/classes/HMSNoiseCancellationPlugin.js +40 -10
- package/lib/module/classes/HMSNoiseCancellationPlugin.js.map +1 -1
- package/lib/module/classes/HMSPIPConfig.js +1 -1
- package/lib/module/classes/HMSPIPConfig.js.map +1 -1
- package/lib/module/classes/HMSPIPListenerActions.js +9 -0
- package/lib/module/classes/HMSPIPListenerActions.js.map +1 -1
- package/lib/module/classes/HMSPeer.js +149 -0
- package/lib/module/classes/HMSPeer.js.map +1 -1
- package/lib/module/classes/HMSPeerType.js +12 -1
- package/lib/module/classes/HMSPeerType.js.map +1 -1
- package/lib/module/classes/HMSRTMPConfig.js +14 -0
- package/lib/module/classes/HMSRTMPConfig.js.map +1 -1
- package/lib/module/classes/HMSRole.js +17 -0
- package/lib/module/classes/HMSRole.js.map +1 -1
- package/lib/module/classes/HMSRtmpVideoResolution.js +13 -0
- package/lib/module/classes/HMSRtmpVideoResolution.js.map +1 -1
- package/lib/module/classes/HMSSDK.js +1153 -233
- package/lib/module/classes/HMSSDK.js.map +1 -1
- package/lib/module/classes/HMSSessionStore.js +14 -15
- package/lib/module/classes/HMSSessionStore.js.map +1 -1
- package/lib/module/classes/HMSTrack.js +13 -0
- package/lib/module/classes/HMSTrack.js.map +1 -1
- package/lib/module/classes/HMSTrackSettings.js +10 -0
- package/lib/module/classes/HMSTrackSettings.js.map +1 -1
- package/lib/module/classes/HMSTrackSettingsInitState.js +9 -0
- package/lib/module/classes/HMSTrackSettingsInitState.js.map +1 -1
- package/lib/module/classes/HMSTrackSource.js +10 -0
- package/lib/module/classes/HMSTrackSource.js.map +1 -1
- package/lib/module/classes/HMSTrackType.js +7 -0
- package/lib/module/classes/HMSTrackType.js.map +1 -1
- package/lib/module/classes/HMSUpdateListenerActions.js +42 -3
- package/lib/module/classes/HMSUpdateListenerActions.js.map +1 -1
- package/lib/module/classes/HMSVideoTrack.js +17 -0
- package/lib/module/classes/HMSVideoTrack.js.map +1 -1
- package/lib/module/classes/HMSVideoTrackSettings.js +12 -2
- package/lib/module/classes/HMSVideoTrackSettings.js.map +1 -1
- package/lib/module/classes/HmsView.js +43 -0
- package/lib/module/classes/HmsView.js.map +1 -1
- package/lib/typescript/classes/HMSAudioDevice.d.ts +14 -0
- package/lib/typescript/classes/HMSAudioMixingMode.d.ts +11 -0
- package/lib/typescript/classes/HMSAudioTrack.d.ts +9 -0
- package/lib/typescript/classes/HMSCameraFacing.d.ts +11 -0
- package/lib/typescript/classes/HMSConfig.d.ts +27 -0
- package/lib/typescript/classes/HMSException.d.ts +18 -0
- package/lib/typescript/classes/HMSHLSTimedMetadata.d.ts +12 -0
- package/lib/typescript/classes/HMSIOSAudioMode.d.ts +15 -0
- package/lib/typescript/classes/HMSLogAlarmManager.d.ts +12 -0
- package/lib/typescript/classes/HMSLogLevel.d.ts +12 -0
- package/lib/typescript/classes/HMSLogSettings.d.ts +14 -0
- package/lib/typescript/classes/HMSNetworkQuality.d.ts +11 -0
- package/lib/typescript/classes/HMSNoiseCancellationPlugin.d.ts +36 -6
- package/lib/typescript/classes/HMSPIPConfig.d.ts +40 -0
- package/lib/typescript/classes/HMSPIPListenerActions.d.ts +17 -0
- package/lib/typescript/classes/HMSPeer.d.ts +137 -0
- package/lib/typescript/classes/HMSPeerType.d.ts +11 -0
- package/lib/typescript/classes/HMSRTMPConfig.d.ts +14 -0
- package/lib/typescript/classes/HMSRole.d.ts +17 -0
- package/lib/typescript/classes/HMSRtmpVideoResolution.d.ts +13 -0
- package/lib/typescript/classes/HMSSDK.d.ts +1083 -235
- package/lib/typescript/classes/HMSSessionStore.d.ts +14 -15
- package/lib/typescript/classes/HMSTrack.d.ts +13 -0
- package/lib/typescript/classes/HMSTrackSettings.d.ts +10 -0
- package/lib/typescript/classes/HMSTrackSettingsInitState.d.ts +11 -0
- package/lib/typescript/classes/HMSTrackSource.d.ts +10 -0
- package/lib/typescript/classes/HMSTrackType.d.ts +7 -0
- package/lib/typescript/classes/HMSUpdateListenerActions.d.ts +290 -4
- package/lib/typescript/classes/HMSVideoTrack.d.ts +17 -0
- package/lib/typescript/classes/HMSVideoTrackSettings.d.ts +12 -2
- package/lib/typescript/classes/HmsView.d.ts +16 -0
- package/package.json +1 -1
- package/sdk-versions.json +2 -2
- package/src/classes/HMSAudioDevice.ts +18 -0
- package/src/classes/HMSAudioMixingMode.ts +11 -0
- package/src/classes/HMSAudioTrack.ts +9 -0
- package/src/classes/HMSCameraFacing.ts +11 -0
- package/src/classes/HMSConfig.ts +27 -0
- package/src/classes/HMSException.ts +18 -0
- package/src/classes/HMSHLSTimedMetadata.ts +12 -0
- package/src/classes/HMSIOSAudioMode.ts +15 -0
- package/src/classes/HMSLogAlarmManager.ts +12 -0
- package/src/classes/HMSLogLevel.ts +12 -0
- package/src/classes/HMSLogSettings.ts +14 -0
- package/src/classes/HMSNetworkQuality.ts +11 -0
- package/src/classes/HMSNoiseCancellationPlugin.ts +41 -10
- package/src/classes/HMSPIPConfig.ts +47 -0
- package/src/classes/HMSPIPListenerActions.ts +18 -0
- package/src/classes/HMSPeer.ts +137 -0
- package/src/classes/HMSPeerType.ts +13 -2
- package/src/classes/HMSRTMPConfig.ts +14 -0
- package/src/classes/HMSRole.ts +17 -0
- package/src/classes/HMSRtmpVideoResolution.ts +13 -0
- package/src/classes/HMSSDK.tsx +1211 -269
- package/src/classes/HMSSessionStore.ts +14 -15
- package/src/classes/HMSTrack.ts +13 -0
- package/src/classes/HMSTrackSettings.ts +10 -0
- package/src/classes/HMSTrackSettingsInitState.ts +11 -0
- package/src/classes/HMSTrackSource.ts +10 -0
- package/src/classes/HMSTrackType.ts +7 -0
- package/src/classes/HMSUpdateListenerActions.ts +312 -3
- package/src/classes/HMSVideoTrack.ts +17 -0
- package/src/classes/HMSVideoTrackSettings.ts +12 -2
- package/src/classes/HmsView.tsx +39 -0
package/src/classes/HMSSDK.tsx
CHANGED
|
@@ -18,7 +18,6 @@ import type { HMSRole } from './HMSRole';
|
|
|
18
18
|
import type { HMSTrack } from './HMSTrack';
|
|
19
19
|
import type { HMSLogger } from './HMSLogger';
|
|
20
20
|
import type { HMSPeer } from './HMSPeer';
|
|
21
|
-
import type { HMSVideoViewMode } from './HMSVideoViewMode';
|
|
22
21
|
import type { HMSTrackSettings } from './HMSTrackSettings';
|
|
23
22
|
import type { HMSRTMPConfig } from './HMSRTMPConfig';
|
|
24
23
|
import type { HMSHLSConfig } from './HMSHLSConfig';
|
|
@@ -48,6 +47,9 @@ import { HMSPeerListIterator } from './HMSPeerListIterator';
|
|
|
48
47
|
import type { HMSPIPConfig } from './HMSPIPConfig';
|
|
49
48
|
import { HMSInteractivityCenter } from './HMSInteractivityCenter';
|
|
50
49
|
import type { HMSHLSTimedMetadata } from './HMSHLSTimedMetadata';
|
|
50
|
+
import type { HMSVideoTrack } from './HMSVideoTrack';
|
|
51
|
+
import type { HMSRemoteVideoTrack } from './HMSRemoteVideoTrack';
|
|
52
|
+
import type { HMSRemoteAudioTrack } from './HMSRemoteAudioTrack';
|
|
51
53
|
|
|
52
54
|
type HmsViewProps = Omit<HmsComponentProps, 'id'>;
|
|
53
55
|
|
|
@@ -55,6 +57,18 @@ const ReactNativeVersion = require('react-native/Libraries/Core/ReactNativeVersi
|
|
|
55
57
|
|
|
56
58
|
let HmsSdk: HMSSDK | undefined;
|
|
57
59
|
|
|
60
|
+
/**
|
|
61
|
+
* Represents the main SDK class for the 100ms (HMS) video conferencing service in a React Native application.
|
|
62
|
+
* This class provides methods to manage the video conferencing lifecycle including joining a room, leaving a room,
|
|
63
|
+
* managing streams, and handling events.
|
|
64
|
+
*
|
|
65
|
+
* @export
|
|
66
|
+
* @class HMSSDK
|
|
67
|
+
* @example
|
|
68
|
+
* const hmsInstance = await HMSSDK.build();
|
|
69
|
+
* await hmsInstance.join({ authToken: 'your_auth_token', username: 'John Appleseed' });
|
|
70
|
+
* @see https://www.100ms.live/docs/react-native/v2/quickstart/quickstart
|
|
71
|
+
*/
|
|
58
72
|
export class HMSSDK {
|
|
59
73
|
id: string;
|
|
60
74
|
private _interactivityCenter: HMSInteractivityCenter | null = null;
|
|
@@ -62,6 +76,7 @@ export class HMSSDK {
|
|
|
62
76
|
private appStateSubscription?: any;
|
|
63
77
|
private onPreviewDelegate?: any;
|
|
64
78
|
private onJoinDelegate?: any;
|
|
79
|
+
private onPermissionsRequestedDelegate?: any;
|
|
65
80
|
private onRoomDelegate?: any;
|
|
66
81
|
private onTranscriptsDelegate?: any;
|
|
67
82
|
private onPeerDelegate?: any;
|
|
@@ -97,24 +112,45 @@ export class HMSSDK {
|
|
|
97
112
|
}
|
|
98
113
|
|
|
99
114
|
/**
|
|
100
|
-
*
|
|
101
|
-
* - This function must be called to get an instance of HMSSDK class and only then user can interact with its methods.
|
|
115
|
+
* Asynchronously builds and returns an instance of the HMSSDK class.
|
|
102
116
|
*
|
|
103
|
-
*
|
|
117
|
+
* This method initializes the HMSSDK with optional configuration parameters and returns the initialized instance.
|
|
118
|
+
* It is responsible for setting up the SDK with specific settings for track management, app groups, extensions for iOS screen sharing,
|
|
119
|
+
* logging configurations, etc.
|
|
104
120
|
*
|
|
121
|
+
*
|
|
122
|
+
* @param {Object} params - Optional configuration parameters for initializing the HMSSDK.
|
|
123
|
+
* @param {trackSettings} params.trackSettings is an optional value only required to enable features like iOS Screen/Audio Share, Android Software Echo Cancellation, etc
|
|
124
|
+
* @param {appGroup} params.appGroup is an optional value only required for implementing Screen & Audio Share on iOS. They are not required for Android. DO NOT USE if your app does not implements Screen or Audio Share on iOS.
|
|
125
|
+
* @param {preferredExtension} params.preferredExtension is an optional value only required for implementing Screen & Audio Share on iOS. They are not required for Android. DO NOT USE if your app does not implements Screen or Audio Share on iOS.
|
|
126
|
+
* @param {boolean} params.haltPreviewJoinForPermissionsRequestOnAndroid - Optional flag to halt the preview/join process until permissions are explicitly granted by the user. Android only. This is particularly useful when you might want to request permissions before proceeding with the preview or join operation.
|
|
127
|
+
* @param {HMSLogSettings} params.logSettings - Optional settings for logging.
|
|
128
|
+
*
|
|
129
|
+
* @returns {Promise<HMSSDK>} A promise that resolves to an instance of HMSSDK.
|
|
130
|
+
* @throws {Error} If the HMSSDK instance cannot be created.
|
|
131
|
+
*
|
|
132
|
+
* @example
|
|
133
|
+
* // Regular usage:
|
|
105
134
|
* const hmsInstance = await HMSSDK.build();
|
|
106
135
|
*
|
|
107
|
-
*
|
|
108
|
-
*
|
|
109
|
-
*
|
|
110
|
-
*
|
|
136
|
+
* @example
|
|
137
|
+
* // Advanced Usage:
|
|
138
|
+
* const hmsInstance = await HMSSDK.build({
|
|
139
|
+
* trackSettings: {...},
|
|
140
|
+
* appGroup: 'group.example',
|
|
141
|
+
* preferredExtension: 'com.example.extension',
|
|
142
|
+
* logSettings: {...},
|
|
143
|
+
* });
|
|
111
144
|
*
|
|
145
|
+
* @see https://www.100ms.live/docs/react-native/v2/how-to-guides/install-the-sdk/hmssdk
|
|
112
146
|
* @static
|
|
113
|
-
* @
|
|
147
|
+
* @async
|
|
148
|
+
* @function build
|
|
114
149
|
* @memberof HMSSDK
|
|
115
150
|
*/
|
|
116
151
|
static async build(params?: {
|
|
117
152
|
trackSettings?: HMSTrackSettings;
|
|
153
|
+
haltPreviewJoinForPermissionsRequestOnAndroid?: boolean;
|
|
118
154
|
appGroup?: String;
|
|
119
155
|
preferredExtension?: String;
|
|
120
156
|
logSettings?: HMSLogSettings;
|
|
@@ -124,6 +160,8 @@ export class HMSSDK {
|
|
|
124
160
|
const { major, minor, patch } = ReactNativeVersion.version;
|
|
125
161
|
let id = await HMSManager.build({
|
|
126
162
|
trackSettings: params?.trackSettings,
|
|
163
|
+
haltPreviewJoinForPermissionsRequest:
|
|
164
|
+
params?.haltPreviewJoinForPermissionsRequestOnAndroid, // required for Android Permissions, not required for iOS
|
|
127
165
|
appGroup: params?.appGroup, // required for iOS Screenshare, not required for Android
|
|
128
166
|
preferredExtension: params?.preferredExtension, // required for iOS Screenshare, not required for Android
|
|
129
167
|
frameworkInfo: {
|
|
@@ -138,7 +176,20 @@ export class HMSSDK {
|
|
|
138
176
|
}
|
|
139
177
|
|
|
140
178
|
/**
|
|
141
|
-
*
|
|
179
|
+
* Asynchronously destroys the HMSSDK instance.
|
|
180
|
+
*
|
|
181
|
+
* - This method performs a series of cleanup actions before destroying the HMSSDK instance.
|
|
182
|
+
* - It logs the destruction process, clears both the HMS peers and room caches, removes all event listeners to prevent memory leaks, and finally calls the native
|
|
183
|
+
* `destroy` method on the `HMSManager` with the instance's ID.
|
|
184
|
+
* - This is typically used to ensure that all resources are properly released when the HMSSDK instance is no longer needed, such as when a user leaves a room or the application is shutting down.
|
|
185
|
+
*
|
|
186
|
+
* @returns {Promise<void>} A promise that resolves when the destruction process has completed.
|
|
187
|
+
* @throws {Error} If the HMSSDK instance cannot be destroyed.
|
|
188
|
+
*
|
|
189
|
+
* @example
|
|
190
|
+
* await hmsInstance.destroy();
|
|
191
|
+
*
|
|
192
|
+
* @see https://www.100ms.live/docs/react-native/v2/how-to-guides/install-the-sdk/hmssdk
|
|
142
193
|
*
|
|
143
194
|
* @memberof HMSSDK
|
|
144
195
|
*/
|
|
@@ -151,10 +202,23 @@ export class HMSSDK {
|
|
|
151
202
|
};
|
|
152
203
|
|
|
153
204
|
/**
|
|
154
|
-
*
|
|
155
|
-
*
|
|
156
|
-
*
|
|
157
|
-
*
|
|
205
|
+
* Asynchronously retrieves an authentication token using the room code, user ID, and endpoint.
|
|
206
|
+
*
|
|
207
|
+
* This method is responsible for fetching an authentication token that is required to join a room in the HMS ecosystem.
|
|
208
|
+
* It makes a call to the HMSManager's `getAuthTokenByRoomCode` method, passing in the necessary parameters.
|
|
209
|
+
* The function logs the attempt and returns the token as a string.
|
|
210
|
+
*
|
|
211
|
+
* @param {string} roomCode - The unique code of the room for which the token is being requested.
|
|
212
|
+
* @param {string} [userId] - Optional. The user ID of the participant requesting the token. This can be used for identifying the user in the backend.
|
|
213
|
+
* @param {string} [endpoint] - Optional. The endpoint URL to which the token request is sent. This can be used to specify a different authentication server if needed.
|
|
214
|
+
* @returns {Promise<string>} A promise that resolves to the authentication token as a string.
|
|
215
|
+
* @throws {Error} If the authentication token cannot be retrieved.
|
|
216
|
+
* @example
|
|
217
|
+
* const authToken = await hmsInstance.getAuthTokenByRoomCode('room-code');
|
|
218
|
+
*
|
|
219
|
+
* @see https://www.100ms.live/docs/react-native/v2/how-to-guides/listen-to-room-updates/get-methods#getauthtokenbyroomcode
|
|
220
|
+
* @async
|
|
221
|
+
* @function getAuthTokenByRoomCode
|
|
158
222
|
* @memberof HMSSDK
|
|
159
223
|
*/
|
|
160
224
|
getAuthTokenByRoomCode = async (
|
|
@@ -178,12 +242,23 @@ export class HMSSDK {
|
|
|
178
242
|
};
|
|
179
243
|
|
|
180
244
|
/**
|
|
181
|
-
*
|
|
182
|
-
*
|
|
245
|
+
* Asynchronously joins a room with the provided configuration
|
|
246
|
+
*
|
|
247
|
+
* This method is responsible for initiating the process of joining a room in the HMS ecosystem. It performs several key actions:
|
|
248
|
+
* - Logs the attempt to join with the provided configuration and instance ID.
|
|
249
|
+
* - Initializes the peers and room caches for the current session.
|
|
250
|
+
* - Calls the `join` method on the `HMSManager` with the provided configuration and the instance ID.
|
|
183
251
|
*
|
|
184
|
-
*
|
|
252
|
+
* @param {HMSConfig} config - The configuration object required to join a room. This includes credentials, room details, and user information.
|
|
253
|
+
* @returns {Promise<void>} A promise that resolves when the join operation has been successfully initiated.
|
|
254
|
+
* @throws {Error} If the join operation cannot be completed.
|
|
185
255
|
*
|
|
186
|
-
* @
|
|
256
|
+
* @example
|
|
257
|
+
* await hmsInstance.join(hmsConfig);
|
|
258
|
+
*
|
|
259
|
+
* @see https://www.100ms.live/docs/react-native/v2/how-to-guides/set-up-video-conferencing/join
|
|
260
|
+
* @async
|
|
261
|
+
* @function join
|
|
187
262
|
* @memberof HMSSDK
|
|
188
263
|
*/
|
|
189
264
|
join = async (config: HMSConfig) => {
|
|
@@ -194,27 +269,56 @@ export class HMSSDK {
|
|
|
194
269
|
};
|
|
195
270
|
|
|
196
271
|
/**
|
|
197
|
-
*
|
|
198
|
-
*
|
|
199
|
-
*
|
|
200
|
-
*
|
|
201
|
-
*
|
|
202
|
-
*
|
|
272
|
+
* Initiates a preview for the local peer.
|
|
273
|
+
*
|
|
274
|
+
* This function triggers the preview process for the local peer, allowing the application to display
|
|
275
|
+
* preview tracks (e.g., video or audio tracks) before joining a room. The response from the previewListener
|
|
276
|
+
* will contain the preview tracks for the local peer, which can be used to render a preview UI.
|
|
277
|
+
*
|
|
278
|
+
* @param {HMSConfig} config - The configuration object required for previewing, including credentials and user details.
|
|
279
|
+
* @example
|
|
280
|
+
* // Example usage of the preview function
|
|
281
|
+
* const previewConfig = {
|
|
282
|
+
* authToken: "your_auth_token",
|
|
283
|
+
* userName: "John Doe",
|
|
284
|
+
* roomCode: "your_room_code"
|
|
285
|
+
* };
|
|
286
|
+
* hmsInstance.preview(previewConfig);
|
|
287
|
+
*
|
|
288
|
+
* @see https://www.100ms.live/docs/react-native/v2/features/preview
|
|
289
|
+
*
|
|
290
|
+
* @async
|
|
291
|
+
* @function preview
|
|
203
292
|
* @memberof HMSSDK
|
|
204
293
|
*/
|
|
205
|
-
preview = (config: HMSConfig) => {
|
|
294
|
+
preview = async (config: HMSConfig) => {
|
|
206
295
|
logger?.verbose('#Function preview', { config, id: this.id });
|
|
207
|
-
HMSManager.preview({ ...config, id: this.id });
|
|
296
|
+
await HMSManager.preview({ ...config, id: this.id });
|
|
208
297
|
};
|
|
209
298
|
|
|
210
299
|
/**
|
|
211
|
-
*
|
|
212
|
-
*
|
|
213
|
-
*
|
|
214
|
-
*
|
|
215
|
-
*
|
|
300
|
+
* `HmsView` is a React component that renders a video track within a view.
|
|
301
|
+
*
|
|
302
|
+
* It utilizes the `HmsViewComponent` to display the media track specified by the `trackId`.
|
|
303
|
+
* This component is designed to be used with React's `forwardRef` to allow for ref forwarding,
|
|
304
|
+
* enabling direct interaction with the DOM element.
|
|
305
|
+
*
|
|
306
|
+
* Props:
|
|
307
|
+
* - `trackId`: The unique identifier for the track to be displayed.
|
|
308
|
+
* - `style`: Custom styles to apply to the view.
|
|
309
|
+
* - `mirror`: If true, the video will be mirrored; commonly used for local video tracks.
|
|
310
|
+
* - `scaleType`: Determines how the video fits within the bounds of the view (e.g., aspect fill, aspect fit).
|
|
311
|
+
* - `setZOrderMediaOverlay`: When true, the video view will be rendered above the regular view hierarchy.
|
|
312
|
+
* - `autoSimulcast`: Enables automatic simulcast layer switching based on network conditions (if supported).
|
|
313
|
+
*
|
|
314
|
+
* @param {Object} props - The properties passed to the HmsView component.
|
|
315
|
+
* @param {React.Ref} ref - A ref provided by `forwardRef` for accessing the underlying DOM element.
|
|
316
|
+
* @returns {React.Element} A `HmsViewComponent` element configured with the provided props and ref.
|
|
317
|
+
* @memberof HMSSDK
|
|
318
|
+
* @example
|
|
319
|
+
* <HmsView trackId="track-id" style={{ width: 100, height: 100 }} mirror={true} scaleType="aspectFill" />
|
|
216
320
|
*
|
|
217
|
-
*
|
|
321
|
+
* @see https://www.100ms.live/docs/react-native/v2/how-to-guides/set-up-video-conferencing/render-video/overview
|
|
218
322
|
*
|
|
219
323
|
* @param {HmsViewProps}
|
|
220
324
|
* @memberof HMSSDK
|
|
@@ -250,10 +354,23 @@ export class HMSSDK {
|
|
|
250
354
|
};
|
|
251
355
|
|
|
252
356
|
/**
|
|
253
|
-
*
|
|
357
|
+
* Asynchronously leaves the current room and performs cleanup.
|
|
254
358
|
*
|
|
255
|
-
*
|
|
359
|
+
* This method triggers the leave process for the current user, effectively disconnecting them from the room they are in.
|
|
360
|
+
* It logs the leave action with the user's ID, calls the native `leave` method in `HMSManager` with the user's ID,
|
|
361
|
+
* and then performs additional cleanup through `roomLeaveCleanup`. This cleanup includes removing app state subscriptions
|
|
362
|
+
* and clearing cached data related to peers and the room.
|
|
256
363
|
*
|
|
364
|
+
* @returns {Promise<boolean>} A promise that resolves to `true` if the user has successfully left the room, or `false` otherwise.
|
|
365
|
+
* @throws {Error} If the user cannot leave the room.
|
|
366
|
+
* @memberof HMSSDK
|
|
367
|
+
* @example
|
|
368
|
+
* await hmsInstance.leave();
|
|
369
|
+
*
|
|
370
|
+
* @see https://www.100ms.live/docs/react-native/v2/features/leave
|
|
371
|
+
*
|
|
372
|
+
* @async
|
|
373
|
+
* @function leave
|
|
257
374
|
* @memberof HMSSDK
|
|
258
375
|
*/
|
|
259
376
|
leave = async () => {
|
|
@@ -268,13 +385,28 @@ export class HMSSDK {
|
|
|
268
385
|
};
|
|
269
386
|
|
|
270
387
|
/**
|
|
271
|
-
*
|
|
388
|
+
* Sends a broadcast message to all peers in the room.
|
|
389
|
+
*
|
|
390
|
+
* This asynchronous function sends a message to all peers in the room, which they can receive through the `onMessage` listener.
|
|
391
|
+
* It can be used to send chat messages or custom types of messages like emoji reactions or notifications.
|
|
392
|
+
*
|
|
393
|
+
* @param {string} message - The message to be sent to all peers.
|
|
394
|
+
* @param {string} [type='chat'] - The type of the message. Default is 'chat'. Custom types can be used for specific purposes.
|
|
395
|
+
* @returns {Promise<{messageId: string | undefined}>} A promise that resolves with the message ID of the sent message, or undefined if the message could not be sent.
|
|
396
|
+
*
|
|
397
|
+
* @example
|
|
398
|
+
* // Sending a chat message to all peers
|
|
399
|
+
* await hmsInstance.sendBroadcastMessage("Hello everyone!", "chat");
|
|
272
400
|
*
|
|
273
|
-
*
|
|
401
|
+
* @example
|
|
402
|
+
* // Sending a custom notification to all peers
|
|
403
|
+
* await hmsInstance.sendBroadcastMessage("Meeting starts in 5 minutes", "notification");
|
|
274
404
|
*
|
|
405
|
+
* @see https://www.100ms.live/docs/react-native/v2/how-to-guides/set-up-video-conferencing/chat
|
|
406
|
+
*
|
|
407
|
+
* @async
|
|
408
|
+
* @function sendBroadcastMessage
|
|
275
409
|
* @memberof HMSSDK
|
|
276
|
-
* @param message the message that is to be sent
|
|
277
|
-
* @param type the default type is set to CHAT. You can pass a custom type here for sending events like Emoji Reactions, Notifications, etc
|
|
278
410
|
*/
|
|
279
411
|
sendBroadcastMessage = async (message: string, type: string = 'chat') => {
|
|
280
412
|
logger?.verbose('#Function sendBroadcastMessage', {
|
|
@@ -293,11 +425,25 @@ export class HMSSDK {
|
|
|
293
425
|
};
|
|
294
426
|
|
|
295
427
|
/**
|
|
296
|
-
*
|
|
297
|
-
*
|
|
428
|
+
* Sends a message to a specific set of roles within the room.
|
|
429
|
+
*
|
|
430
|
+
* This method allows for targeted communication by sending a message to peers who have any of the specified roles.
|
|
431
|
+
* The message is received by the peers through the `onMessage` listener. This can be useful for sending announcements,
|
|
432
|
+
* instructions, or other types of messages to a subset of the room based on their roles.
|
|
433
|
+
*
|
|
434
|
+
* @param {string} message - The message to be sent.
|
|
435
|
+
* @param {HMSRole[]} roles - An array of roles to which the message will be sent. Peers with these roles will receive the message.
|
|
436
|
+
* @param {string} [type='chat'] - The type of the message. Defaults to 'chat'. Custom types can be used for specific messaging scenarios.
|
|
437
|
+
* @returns {Promise<{messageId: string | undefined}>} A promise that resolves with an object containing the `messageId` of the sent message. If the message could not be sent, `messageId` will be `undefined`.
|
|
438
|
+
*
|
|
439
|
+
* @example
|
|
440
|
+
* // Sending a message to all peers with the role of 'moderator'
|
|
441
|
+
* await hmsInstance.sendGroupMessage("Please start the meeting.", [moderator]);
|
|
298
442
|
*
|
|
299
|
-
*
|
|
443
|
+
* @see https://www.100ms.live/docs/react-native/v2/features/chat
|
|
300
444
|
*
|
|
445
|
+
* @async
|
|
446
|
+
* @function sendGroupMessage
|
|
301
447
|
* @memberof HMSSDK
|
|
302
448
|
*/
|
|
303
449
|
sendGroupMessage = async (
|
|
@@ -323,11 +469,27 @@ export class HMSSDK {
|
|
|
323
469
|
};
|
|
324
470
|
|
|
325
471
|
/**
|
|
326
|
-
*
|
|
327
|
-
* in onMessage Listener.
|
|
472
|
+
* Sends a direct message to a specific peer in the room.
|
|
328
473
|
*
|
|
329
|
-
*
|
|
474
|
+
* This method allows sending a private message to a single peer, ensuring that only the specified recipient can receive and view the message.
|
|
475
|
+
* The message is delivered to the recipient through the `onMessage` listener. This functionality is useful for implementing private chat features
|
|
476
|
+
* within a larger group chat context.
|
|
330
477
|
*
|
|
478
|
+
* @param {string} message - The message text to be sent.
|
|
479
|
+
* @param {HMSPeer} peer - The peer object representing the recipient of the message.
|
|
480
|
+
* @param {string} [type='chat'] - The type of the message being sent. Defaults to 'chat'. This can be customized to differentiate between various message types (e.g., 'private', 'system').
|
|
481
|
+
* @returns {Promise<{messageId: string | undefined}>} A promise that resolves with an object containing the `messageId` of the sent message. If the message could not be sent, `messageId` will be `undefined`.
|
|
482
|
+
* @throws {Error} Throws an error if the message could not be sent.
|
|
483
|
+
*
|
|
484
|
+
* @example
|
|
485
|
+
* // Sending a private chat message to a specific peer
|
|
486
|
+
* const peer = { peerID: 'peer123', ... };
|
|
487
|
+
* await hmsInstance.sendDirectMessage("Hello, this is a private message.", peer, "chat");
|
|
488
|
+
*
|
|
489
|
+
* @see https://www.100ms.live/docs/react-native/v2/features/chat
|
|
490
|
+
*
|
|
491
|
+
* @async
|
|
492
|
+
* @function sendDirectMessage
|
|
331
493
|
* @memberof HMSSDK
|
|
332
494
|
*/
|
|
333
495
|
sendDirectMessage = async (
|
|
@@ -353,15 +515,24 @@ export class HMSSDK {
|
|
|
353
515
|
};
|
|
354
516
|
|
|
355
517
|
/**
|
|
356
|
-
*
|
|
357
|
-
*
|
|
358
|
-
*
|
|
359
|
-
*
|
|
360
|
-
*
|
|
361
|
-
*
|
|
362
|
-
*
|
|
363
|
-
*
|
|
364
|
-
* @
|
|
518
|
+
* Asynchronously changes the metadata for the local peer.
|
|
519
|
+
*
|
|
520
|
+
* This method updates the metadata field of the local peer in the room. The metadata is a versatile field that can be used
|
|
521
|
+
* to store various information such as the peer's current status (e.g., raising hand, be right back, etc.). It is recommended
|
|
522
|
+
* to use a JSON object in string format to store multiple data points within the metadata. This allows for a structured and
|
|
523
|
+
* easily parseable format for metadata management.
|
|
524
|
+
*
|
|
525
|
+
* @param {string} metadata - The new metadata in string format. It is advised to use a JSON string for structured data.
|
|
526
|
+
* @returns {Promise<void>} A promise that resolves when the metadata has been successfully changed.
|
|
527
|
+
* @throws {Error} Throws an error if the metadata change operation fails.
|
|
528
|
+
* @see https://www.100ms.live/docs/react-native/v2/how-to-guides/interact-with-room/peer/change-metadata
|
|
529
|
+
* @example
|
|
530
|
+
* // Changing metadata to indicate the peer is raising their hand
|
|
531
|
+
* const newMetadata = JSON.stringify({ status: 'raiseHand' });
|
|
532
|
+
* await hmsInstance.changeMetadata(newMetadata);
|
|
533
|
+
*
|
|
534
|
+
* @async
|
|
535
|
+
* @function changeMetadata
|
|
365
536
|
* @memberof HMSSDK
|
|
366
537
|
*/
|
|
367
538
|
changeMetadata = async (metadata: string) => {
|
|
@@ -370,12 +541,28 @@ export class HMSSDK {
|
|
|
370
541
|
};
|
|
371
542
|
|
|
372
543
|
/**
|
|
373
|
-
*
|
|
374
|
-
*
|
|
375
|
-
*
|
|
376
|
-
*
|
|
377
|
-
*
|
|
378
|
-
*
|
|
544
|
+
* Initiates RTMP streaming or recording based on the provided configuration.
|
|
545
|
+
*
|
|
546
|
+
* This method starts RTMP streaming or recording by taking a configuration object of type HMSRTMPConfig.
|
|
547
|
+
* The configuration specifies the URLs for streaming and whether recording should be enabled. The response to this
|
|
548
|
+
* operation can be observed in the `onRoomUpdate` event, specifically when the `RTMP_STREAMING_STATE_UPDATED` action is triggered.
|
|
549
|
+
*
|
|
550
|
+
* @param {HMSRTMPConfig} data - The configuration object for RTMP streaming or recording. It includes streaming URLs and recording settings.
|
|
551
|
+
* @returns {Promise<any>} A promise that resolves with the operation result when the streaming or recording starts successfully.
|
|
552
|
+
* @throws {Error} Throws an error if the operation fails or the configuration is invalid.
|
|
553
|
+
*
|
|
554
|
+
* @see https://www.100ms.live/docs/react-native/v2/how-to-guides/record-and-live-stream/recording
|
|
555
|
+
*
|
|
556
|
+
* @example
|
|
557
|
+
* const rtmpConfig = {
|
|
558
|
+
* meetingURL: "https://meet.example.com/myMeeting",
|
|
559
|
+
* rtmpURLs: ["rtmp://live.twitch.tv/app", "rtmp://a.rtmp.youtube.com/live2"],
|
|
560
|
+
* record: true,
|
|
561
|
+
* resolution: { width: 1280, height: 720 }
|
|
562
|
+
* };
|
|
563
|
+
* await hmsInstance.startRTMPOrRecording(rtmpConfig);
|
|
564
|
+
* @async
|
|
565
|
+
* @function startRTMPOrRecording
|
|
379
566
|
* @memberof HMSSDK
|
|
380
567
|
*/
|
|
381
568
|
startRTMPOrRecording = async (data: HMSRTMPConfig) => {
|
|
@@ -389,12 +576,19 @@ export class HMSSDK {
|
|
|
389
576
|
};
|
|
390
577
|
|
|
391
578
|
/**
|
|
392
|
-
*
|
|
393
|
-
* - we get the response of this function in onRoomUpdate as RTMP_STREAMING_STATE_UPDATED.
|
|
579
|
+
* Stops all ongoing RTMP streaming and recording.
|
|
394
580
|
*
|
|
395
|
-
*
|
|
581
|
+
* This function is responsible for halting any active RTMP streaming or recording sessions.
|
|
582
|
+
* It communicates with the native `HMSManager` module to execute the stop operation.
|
|
583
|
+
* The completion or status of this operation can be monitored through the `onRoomUpdate` event, specifically when the `RTMP_STREAMING_STATE_UPDATED` action is triggered, indicating that the streaming or recording has been successfully stopped.
|
|
396
584
|
*
|
|
585
|
+
* @async
|
|
586
|
+
* @function stopRtmpAndRecording
|
|
587
|
+
* @returns {Promise<any>} A promise that resolves when the RTMP streaming and recording have been successfully stopped.
|
|
588
|
+
* @see https://www.100ms.live/docs/react-native/v2/how-to-guides/record-and-live-stream/recording
|
|
397
589
|
* @memberof HMSSDK
|
|
590
|
+
* @example
|
|
591
|
+
* await hmsInstance.stopRtmpAndRecording();
|
|
398
592
|
*/
|
|
399
593
|
stopRtmpAndRecording = async () => {
|
|
400
594
|
logger?.verbose('#Function stopRtmpAndRecording', {});
|
|
@@ -403,13 +597,21 @@ export class HMSSDK {
|
|
|
403
597
|
};
|
|
404
598
|
|
|
405
599
|
/**
|
|
406
|
-
*
|
|
407
|
-
*
|
|
408
|
-
*
|
|
409
|
-
*
|
|
410
|
-
*
|
|
411
|
-
*
|
|
600
|
+
* Initiates HLS (HTTP Live Streaming) based on the provided configuration.
|
|
601
|
+
*
|
|
602
|
+
* This asynchronous function starts HLS streaming, allowing for live video content to be delivered over the internet in a scalable manner.
|
|
603
|
+
* The function takes an optional `HMSHLSConfig` object as a parameter, which includes settings such as the meeting URL, HLS variant parameters, and recording settings.
|
|
604
|
+
* The operation's response can be observed through the `onRoomUpdate` event, specifically when the `HLS_STREAMING_STATE_UPDATED` action is triggered, indicating the streaming state has been updated.
|
|
605
|
+
*
|
|
606
|
+
* @param {HMSHLSConfig} [data] - Optional configuration object for HLS streaming. Defines parameters such as meeting URL, HLS variants, and recording options.
|
|
607
|
+
* @returns {Promise<any>} A promise that resolves when the HLS streaming starts successfully. The promise resolves with the operation result.
|
|
608
|
+
* @throws {Error} Throws an error if the operation fails or if the provided configuration is invalid.
|
|
609
|
+
* @see https://www.100ms.live/docs/react-native/v2/how-to-guides/record-and-live-stream/hls
|
|
610
|
+
* @async
|
|
611
|
+
* @function startHLSStreaming
|
|
412
612
|
* @memberof HMSSDK
|
|
613
|
+
* @example
|
|
614
|
+
* await hmsInstance.startHLSStreaming();
|
|
413
615
|
*/
|
|
414
616
|
startHLSStreaming = async (data?: HMSHLSConfig) => {
|
|
415
617
|
logger?.verbose('#Function startHLSStreaming', {
|
|
@@ -420,12 +622,19 @@ export class HMSSDK {
|
|
|
420
622
|
};
|
|
421
623
|
|
|
422
624
|
/**
|
|
423
|
-
*
|
|
424
|
-
* - we get the response of this function in onRoomUpdate as HLS_STREAMING_STATE_UPDATED.
|
|
625
|
+
* Stops the ongoing HLS (HTTP Live Streaming) streams.
|
|
425
626
|
*
|
|
426
|
-
*
|
|
627
|
+
* This asynchronous function is responsible for stopping any active HLS streaming sessions.
|
|
628
|
+
* It communicates with the native `HMSManager` module to execute the stop operation.
|
|
629
|
+
* The completion or status of this operation can be observed through the `onRoomUpdate` event, specifically when the `HLS_STREAMING_STATE_UPDATED` action is triggered, indicating that the HLS streaming has been successfully stopped.
|
|
427
630
|
*
|
|
631
|
+
* @async
|
|
632
|
+
* @function stopHLSStreaming
|
|
633
|
+
* @returns {Promise<void>} A promise that resolves when the HLS streaming has been successfully stopped.
|
|
634
|
+
* @see https://www.100ms.live/docs/react-native/v2/how-to-guides/record-and-live-stream/hls for more details on HLS streaming.
|
|
428
635
|
* @memberof HMSSDK
|
|
636
|
+
* @example
|
|
637
|
+
* await hmsInstance.stopHLSStreaming();
|
|
429
638
|
*/
|
|
430
639
|
stopHLSStreaming = async () => {
|
|
431
640
|
logger?.verbose('#Function stopHLSStreaming', {});
|
|
@@ -433,9 +642,25 @@ export class HMSSDK {
|
|
|
433
642
|
};
|
|
434
643
|
|
|
435
644
|
/**
|
|
436
|
-
*
|
|
437
|
-
*
|
|
438
|
-
*
|
|
645
|
+
* Sends timed metadata for HLS (HTTP Live Streaming) playback.
|
|
646
|
+
*
|
|
647
|
+
* This asynchronous function is designed to send metadata that can be synchronized with the HLS video playback.
|
|
648
|
+
* The metadata is sent to all viewers of the HLS stream, allowing for a variety of use cases such as displaying
|
|
649
|
+
* song titles, ads, or other information at specific times during the stream.
|
|
650
|
+
* The metadata should be an array of HMSHLSTimedMetadata objects, each specifying the content and timing for the metadata display.
|
|
651
|
+
*
|
|
652
|
+
* @async
|
|
653
|
+
* @function sendHLSTimedMetadata
|
|
654
|
+
* @param {HMSHLSTimedMetadata[]} metadata - An array of metadata objects to be sent.
|
|
655
|
+
* @returns {Promise<boolean>} A promise that resolves to `true` if the metadata was successfully sent, or `false` otherwise.
|
|
656
|
+
* @example
|
|
657
|
+
* const metadata = [
|
|
658
|
+
* { time: 10, data: "Song: Example Song Title" },
|
|
659
|
+
* { time: 20, data: "Advertisement: Buy Now!" }
|
|
660
|
+
* ];
|
|
661
|
+
* await hmsInstance.sendHLSTimedMetadata(metadata);
|
|
662
|
+
*
|
|
663
|
+
* @see https://www.100ms.live/docs/react-native/v2/how-to-guides/record-and-live-stream/hls-player#how-to-use-hls-timed-metadata-with-100ms-hls-player
|
|
439
664
|
*/
|
|
440
665
|
sendHLSTimedMetadata = async (
|
|
441
666
|
metadata: HMSHLSTimedMetadata[]
|
|
@@ -446,19 +671,26 @@ export class HMSSDK {
|
|
|
446
671
|
};
|
|
447
672
|
|
|
448
673
|
/**
|
|
449
|
-
*
|
|
450
|
-
*
|
|
451
|
-
*
|
|
452
|
-
*
|
|
453
|
-
* role
|
|
454
|
-
*
|
|
455
|
-
*
|
|
456
|
-
*
|
|
457
|
-
*
|
|
458
|
-
*
|
|
459
|
-
*
|
|
460
|
-
*
|
|
461
|
-
*
|
|
674
|
+
* Deprecated. Changes the role of a specified peer within the room.
|
|
675
|
+
*
|
|
676
|
+
* This function is marked as deprecated and should not be used in new implementations. Use `changeRoleOfPeer` instead.
|
|
677
|
+
* It allows for the dynamic adjustment of a peer's permissions and capabilities within the room by changing their role.
|
|
678
|
+
* The role change can be enforced immediately or offered to the peer as a request, depending on the `force` parameter.
|
|
679
|
+
*
|
|
680
|
+
* @deprecated Since version 1.1.0. Use `changeRoleOfPeer` instead.
|
|
681
|
+
* @param {HMSPeer} peer - The peer whose role is to be changed.
|
|
682
|
+
* @param {HMSRole} role - The new role to be assigned to the peer.
|
|
683
|
+
* @param {boolean} [force=false] - If `true`, the role change is applied immediately without the peer's consent. If `false`, the peer receives a role change request.
|
|
684
|
+
* @returns {Promise<void>} A promise that resolves when the role change operation is complete.
|
|
685
|
+
* @throws {Error} Throws an error if the operation fails.
|
|
686
|
+
* @see https://www.100ms.live/docs/react-native/v2/how-to-guides/interact-with-room/peer/change-role
|
|
687
|
+
* @example
|
|
688
|
+
* // Change the role of a peer to 'viewer' forcefully
|
|
689
|
+
* const peer = { peerID: 'peer123', ... };
|
|
690
|
+
* const newRole = { name: 'viewer', ... };
|
|
691
|
+
* await hmsInstance.changeRole(peer, newRole, true);
|
|
692
|
+
* @async
|
|
693
|
+
* @function changeRole
|
|
462
694
|
* @memberof HMSSDK
|
|
463
695
|
*/
|
|
464
696
|
changeRole = async (peer: HMSPeer, role: HMSRole, force: boolean = false) => {
|
|
@@ -473,24 +705,36 @@ export class HMSSDK {
|
|
|
473
705
|
};
|
|
474
706
|
|
|
475
707
|
/**
|
|
476
|
-
*
|
|
477
|
-
*
|
|
478
|
-
*
|
|
479
|
-
* the role or
|
|
480
|
-
*
|
|
481
|
-
*
|
|
482
|
-
*
|
|
483
|
-
*
|
|
484
|
-
*
|
|
485
|
-
*
|
|
486
|
-
*
|
|
708
|
+
* Asynchronously changes the role of a specified peer within the room.
|
|
709
|
+
*
|
|
710
|
+
* This function is designed to dynamically adjust a peer's permissions and capabilities within the room by changing their role.
|
|
711
|
+
* It can enforce the role change immediately or offer it to the peer as a request, depending on the `force` parameter.
|
|
712
|
+
* If the role change is forced, it is applied immediately without the peer's consent. Otherwise, the peer receives a role change request,
|
|
713
|
+
* which can be accepted or declined. This functionality supports flexible room management and control over participant permissions.
|
|
714
|
+
*
|
|
715
|
+
* @async
|
|
716
|
+
* @function changeRoleOfPeer
|
|
717
|
+
* @param {HMSPeer} peer - The peer whose role is to be changed.
|
|
718
|
+
* @param {HMSRole} role - The new role to be assigned to the peer.
|
|
719
|
+
* @param {boolean} [force=false] - Determines whether the role change should be applied immediately (`true`) or sent as a request (`false`).
|
|
720
|
+
* @returns {Promise<void>} A promise that resolves to `true` if the role change operation is successful, or `false` otherwise.
|
|
721
|
+
* @throws {Error} Throws an error if the operation fails.
|
|
722
|
+
* @see https://www.100ms.live/docs/react-native/v2/features/change-role
|
|
723
|
+
* @example
|
|
724
|
+
* // Change the role of a peer to 'viewer' forcefully
|
|
725
|
+
* const peer = { peerID: 'peer123', ... };
|
|
726
|
+
* const newRole = { name: 'viewer', ... };
|
|
727
|
+
* await hmsInstance.changeRoleOfPeer(peer, newRole, true);
|
|
728
|
+
*
|
|
729
|
+
* @async
|
|
730
|
+
* @function changeRoleOfPeer
|
|
487
731
|
* @memberof HMSSDK
|
|
488
732
|
*/
|
|
489
733
|
changeRoleOfPeer = async (
|
|
490
734
|
peer: HMSPeer,
|
|
491
735
|
role: HMSRole,
|
|
492
736
|
force: boolean = false
|
|
493
|
-
) => {
|
|
737
|
+
): Promise<void> => {
|
|
494
738
|
const data = {
|
|
495
739
|
peerId: peer.peerID,
|
|
496
740
|
role: role.name,
|
|
@@ -502,19 +746,32 @@ export class HMSSDK {
|
|
|
502
746
|
};
|
|
503
747
|
|
|
504
748
|
/**
|
|
505
|
-
*
|
|
506
|
-
*
|
|
507
|
-
*
|
|
508
|
-
*
|
|
509
|
-
*
|
|
510
|
-
*
|
|
511
|
-
*
|
|
512
|
-
*
|
|
513
|
-
*
|
|
749
|
+
* Asynchronously changes the roles of multiple peers within the room.
|
|
750
|
+
*
|
|
751
|
+
* This function is designed to batch update the roles of peers based on their current roles. It is particularly useful
|
|
752
|
+
* in scenarios where a group of users need to be granted or restricted permissions en masse, such as promoting all viewers
|
|
753
|
+
* to participants or demoting all speakers to viewers. The function updates the roles of all peers that have any of the specified
|
|
754
|
+
* `ofRoles` to the new `toRole` without requiring individual consent, bypassing the `roleChangeRequest` listener on the peer's end.
|
|
755
|
+
*
|
|
756
|
+
* @async
|
|
757
|
+
* @function changeRoleOfPeersWithRoles
|
|
758
|
+
* @param {HMSRole[]} ofRoles - An array of roles to identify the peers whose roles are to be changed.
|
|
759
|
+
* @param {HMSRole} toRole - The new role to be assigned to the identified peers.
|
|
760
|
+
* @returns {Promise<void>} A promise that resolves when the role change operation is complete.
|
|
761
|
+
* @throws {Error} Throws an error if the operation fails.
|
|
762
|
+
* @see https://www.100ms.live/docs/react-native/v2/how-to-guides/interact-with-room/peer/change-role
|
|
763
|
+
* @example
|
|
764
|
+
* // Change the role of all peers with 'viewer' role to 'participant'
|
|
765
|
+
* const viewerRole = { name: 'viewer', ... };
|
|
766
|
+
* const participantRole = { name: 'participant', ... };
|
|
767
|
+
* await hmsInstance.changeRoleOfPeersWithRoles([viewerRole], participantRole);
|
|
514
768
|
*
|
|
515
769
|
* @memberof HMSSDK
|
|
516
770
|
*/
|
|
517
|
-
changeRoleOfPeersWithRoles = async (
|
|
771
|
+
changeRoleOfPeersWithRoles = async (
|
|
772
|
+
ofRoles: HMSRole[],
|
|
773
|
+
toRole: HMSRole
|
|
774
|
+
): Promise<void> => {
|
|
518
775
|
const data = {
|
|
519
776
|
ofRoles: ofRoles.map((ofRole) => ofRole.name).filter(Boolean),
|
|
520
777
|
toRole: toRole.name,
|
|
@@ -525,15 +782,35 @@ export class HMSSDK {
|
|
|
525
782
|
};
|
|
526
783
|
|
|
527
784
|
/**
|
|
528
|
-
*
|
|
529
|
-
*
|
|
785
|
+
* Asynchronously changes the mute state of a specified track.
|
|
786
|
+
*
|
|
787
|
+
* This function is designed to control the mute state of any track (audio or video) within the room.
|
|
788
|
+
* When invoked, it sends a request to the HMSManager to change the mute state of the specified track.
|
|
789
|
+
* The targeted peer, whose track is being manipulated, will receive a callback on the `onChangeTrackStateRequestListener`,
|
|
790
|
+
* allowing for custom handling or UI updates based on the mute state change.
|
|
791
|
+
*
|
|
792
|
+
* @async
|
|
793
|
+
* @function changeTrackState
|
|
794
|
+
* @param {HMSTrack} track - The track object whose mute state is to be changed.
|
|
795
|
+
* @param {boolean} mute - The desired mute state of the track. `true` to mute the track, `false` to unmute.
|
|
796
|
+
* @returns {Promise<void>} A promise that resolves when the operation to change the track's mute state is complete.
|
|
797
|
+
* @throws {Error} Throws an error if the operation fails or the track cannot be found.
|
|
798
|
+
* @see https://www.100ms.live/docs/react-native/v2/how-to-guides/interact-with-room/track/remote-mute
|
|
799
|
+
* @async
|
|
800
|
+
* @function changeTrackState
|
|
801
|
+
* @memberof HMSSDK
|
|
530
802
|
*
|
|
531
|
-
*
|
|
803
|
+
* @example
|
|
804
|
+
* // Mute a specific track
|
|
805
|
+
* const trackToMute = { trackId: 'track123', ... };
|
|
806
|
+
* await hmsInstance.changeTrackState(trackToMute, true);
|
|
532
807
|
*
|
|
533
|
-
* @
|
|
534
|
-
*
|
|
808
|
+
* @example
|
|
809
|
+
* // Unmute a specific track
|
|
810
|
+
* const trackToUnmute = { trackId: 'track456', ... };
|
|
811
|
+
* await hmsInstance.changeTrackState(trackToUnmute, false);
|
|
535
812
|
*/
|
|
536
|
-
changeTrackState = async (track: HMSTrack, mute: boolean) => {
|
|
813
|
+
changeTrackState = async (track: HMSTrack, mute: boolean): Promise<void> => {
|
|
537
814
|
logger?.verbose('#Function changeTrackState', {
|
|
538
815
|
track,
|
|
539
816
|
mute,
|
|
@@ -549,19 +826,37 @@ export class HMSSDK {
|
|
|
549
826
|
};
|
|
550
827
|
|
|
551
828
|
/**
|
|
552
|
-
*
|
|
553
|
-
*
|
|
554
|
-
*
|
|
555
|
-
*
|
|
556
|
-
*
|
|
829
|
+
* Asynchronously changes the mute state of tracks for peers with specified roles.
|
|
830
|
+
*
|
|
831
|
+
* This method extends the functionality of `changeTrackState` by allowing the mute state of all tracks (audio, video, etc.)
|
|
832
|
+
* belonging to peers with certain roles to be changed in a single operation. It is particularly useful for managing the audio
|
|
833
|
+
* and video state of groups of users, such as muting all participants except the speaker in a conference call.
|
|
834
|
+
*
|
|
835
|
+
* The peers whose track states are being changed will receive a callback on `onChangeTrackStateRequestListener`, allowing for
|
|
836
|
+
* custom handling or UI updates based on the mute state change.
|
|
837
|
+
*
|
|
838
|
+
* @async
|
|
839
|
+
* @function changeTrackStateForRoles
|
|
840
|
+
* @param {boolean} mute - The desired mute state of the tracks. `true` to mute, `false` to unmute.
|
|
841
|
+
* @param {HMSTrackType} [type] - Optional. The type of the tracks to be muted/unmuted (e.g., audio, video).
|
|
842
|
+
* @param {string} [source] - Optional. The source of the track (e.g., camera, screen).
|
|
843
|
+
* @param {Array<HMSRole>} [roles] - The roles of the peers whose tracks are to be muted/unmuted. If not specified, affects all roles.
|
|
844
|
+
* @returns {Promise<void>} A promise that resolves when the operation to change the track's mute state is complete.
|
|
845
|
+
* @throws {Error} Throws an error if the operation fails.
|
|
846
|
+
* @see https://www.100ms.live/docs/react-native/v2/how-to-guides/interact-with-room/track/change-track-state-roles
|
|
557
847
|
* @memberof HMSSDK
|
|
848
|
+
*
|
|
849
|
+
* @example
|
|
850
|
+
* // Mute all audio tracks for peers with the role of 'viewer'
|
|
851
|
+
* const viewerRole = { name: 'viewer', ... };
|
|
852
|
+
* await hmsInstance.changeTrackStateForRoles(true, 'audio', undefined, [viewerRole]);
|
|
558
853
|
*/
|
|
559
854
|
changeTrackStateForRoles = async (
|
|
560
855
|
mute: boolean,
|
|
561
856
|
type?: HMSTrackType,
|
|
562
857
|
source?: string,
|
|
563
858
|
roles?: Array<HMSRole>
|
|
564
|
-
) => {
|
|
859
|
+
): Promise<void> => {
|
|
565
860
|
let roleNames = null;
|
|
566
861
|
if (roles) {
|
|
567
862
|
roleNames = HMSHelper.getRoleNames(roles);
|
|
@@ -585,14 +880,30 @@ export class HMSSDK {
|
|
|
585
880
|
};
|
|
586
881
|
|
|
587
882
|
/**
|
|
588
|
-
*
|
|
589
|
-
* - the user who's removed from this action will get a callback in {@link onRemovedFromRoomListener}.
|
|
883
|
+
* Asynchronously removes a peer from the room.
|
|
590
884
|
*
|
|
591
|
-
*
|
|
885
|
+
* This method forcefully disconnects a specified peer from the room.
|
|
886
|
+
* Upon successful removal, the removed peer will receive a callback through the `onRemovedFromRoomListener`, indicating
|
|
887
|
+
* they have been removed from the room.
|
|
888
|
+
* This can be used for managing room participants, such as removing disruptive users or managing room capacity.
|
|
592
889
|
*
|
|
890
|
+
* @param {HMSPeer} peer - The peer object representing the participant to be removed.
|
|
891
|
+
* @param {string} reason - A string detailing the reason for the removal. This reason is communicated
|
|
892
|
+
* to the removed peer, providing context for the action.
|
|
893
|
+
* @returns {Promise<void>} A promise that resolves when the peer has been successfully removed.
|
|
894
|
+
* If the operation fails, the promise will reject with an error.
|
|
895
|
+
*
|
|
896
|
+
* @example
|
|
897
|
+
* // Assuming `peer` is an instance of HMSPeer representing the participant to remove
|
|
898
|
+
* await hmsInstance.removePeer(peer, "Violation of room rules");
|
|
899
|
+
*
|
|
900
|
+
* @see https://www.100ms.live/docs/react-native/v2/how-to-guides/interact-with-room/peer/remove-peer
|
|
901
|
+
*
|
|
902
|
+
* @async
|
|
903
|
+
* @function removePeer
|
|
593
904
|
* @memberof HMSSDK
|
|
594
905
|
*/
|
|
595
|
-
removePeer = async (peer: HMSPeer, reason: string) => {
|
|
906
|
+
removePeer = async (peer: HMSPeer, reason: string): Promise<void> => {
|
|
596
907
|
logger?.verbose('#Function removePeer', {
|
|
597
908
|
peerId: peer.peerID,
|
|
598
909
|
reason,
|
|
@@ -608,15 +919,28 @@ export class HMSSDK {
|
|
|
608
919
|
};
|
|
609
920
|
|
|
610
921
|
/**
|
|
611
|
-
*
|
|
612
|
-
*
|
|
613
|
-
*
|
|
922
|
+
* Asynchronously ends the current room session for all participants.
|
|
923
|
+
*
|
|
924
|
+
* This method is used to programmatically end the current room session, effectively disconnecting all participants.
|
|
925
|
+
* It can also optionally lock the room to prevent new participants from joining. This is particularly useful for
|
|
926
|
+
* managing the end of scheduled events or meetings, ensuring that all participants are removed at the same time.
|
|
927
|
+
* Upon successful execution, all participants will receive a notification through the `onRemovedFromRoomListener`
|
|
928
|
+
* indicating that they have been removed from the room.
|
|
614
929
|
*
|
|
615
|
-
*
|
|
930
|
+
* @param {string} reason - A descriptive reason for ending the room session. This reason is communicated to all participants.
|
|
931
|
+
* @param {boolean} [lock=false] - Optional. Specifies whether the room should be locked after ending the session. Default is `false`.
|
|
932
|
+
* @returns {Promise<void>} A promise that resolves when the room has been successfully ended and, optionally, locked.
|
|
616
933
|
*
|
|
934
|
+
* @example
|
|
935
|
+
* // End the room and lock it to prevent rejoining
|
|
936
|
+
* await hmsInstance.endRoom("Meeting concluded", true);
|
|
937
|
+
*
|
|
938
|
+
* @see https://www.100ms.live/docs/react-native/v2/how-to-guides/interact-with-room/room/end-room
|
|
939
|
+
* @async
|
|
940
|
+
* @function endRoom
|
|
617
941
|
* @memberof HMSSDK
|
|
618
942
|
*/
|
|
619
|
-
endRoom = async (reason: string, lock: boolean = false) => {
|
|
943
|
+
endRoom = async (reason: string, lock: boolean = false): Promise<void> => {
|
|
620
944
|
logger?.verbose('#Function endRoom', { lock, reason, id: this.id });
|
|
621
945
|
const data = {
|
|
622
946
|
lock,
|
|
@@ -628,13 +952,25 @@ export class HMSSDK {
|
|
|
628
952
|
};
|
|
629
953
|
|
|
630
954
|
/**
|
|
631
|
-
*
|
|
955
|
+
* Asynchronously changes the name of the local peer.
|
|
956
|
+
*
|
|
957
|
+
* This function updates the name of the local peer in the room. It is useful for scenarios where a user's display name needs to be updated during a session, such as when a user decides to change their nickname or when correcting a typo in the user's name. The updated name is reflected across all participants in the room.
|
|
632
958
|
*
|
|
633
|
-
*
|
|
959
|
+
* Once the name change is successful, all the peers receive HMSUpdateListenerActions.ON_PEER_UPDATE event with HMSPeerUpdate.NAME_CHANGED as update type. When this event is received, the UI for that peer should be updated.
|
|
634
960
|
*
|
|
961
|
+
* @param {string} name - The new name to be set for the local peer.
|
|
962
|
+
* @returns {Promise<void>} A promise that resolves when the name change operation has been successfully completed.
|
|
963
|
+
* @throws {Error} Throws an error if the name change operation fails.
|
|
964
|
+
* @see https://www.100ms.live/docs/react-native/v2/how-to-guides/interact-with-room/peer/change-name for more information on changing the peer's name.
|
|
965
|
+
* @async
|
|
966
|
+
* @function changeName
|
|
635
967
|
* @memberof HMSSDK
|
|
968
|
+
*
|
|
969
|
+
* @example
|
|
970
|
+
* // Change the name of the local peer to 'Alice'
|
|
971
|
+
* await hmsInstance.changeName("Alice");
|
|
636
972
|
*/
|
|
637
|
-
changeName = async (name: string) => {
|
|
973
|
+
changeName = async (name: string): Promise<void> => {
|
|
638
974
|
logger?.verbose('#Function changeName', { name, id: this.id });
|
|
639
975
|
const data = {
|
|
640
976
|
name,
|
|
@@ -645,13 +981,22 @@ export class HMSSDK {
|
|
|
645
981
|
};
|
|
646
982
|
|
|
647
983
|
/**
|
|
648
|
-
*
|
|
984
|
+
* Asynchronously previews the audio and video tracks for a specific role before applying the role change.
|
|
985
|
+
*
|
|
986
|
+
* This method allows users to preview the expected audio and video tracks that will be visible to other peers in the room
|
|
987
|
+
* after changing their role. It is useful for scenarios where a user wants to understand the impact of a role change on their
|
|
988
|
+
* media tracks before making the change. This can help in ensuring that the right media settings are applied for the new role.
|
|
649
989
|
*
|
|
650
|
-
*
|
|
990
|
+
* @param {string} role - The role for which the preview is requested. The role should be defined within the room's role configurations.
|
|
991
|
+
* @returns {Promise<any>} A promise that resolves with the preview tracks information. The resolved object contains details about the audio and video tracks that would be available to the user if the role were changed to the specified role.
|
|
651
992
|
*
|
|
652
|
-
*
|
|
993
|
+
* @example
|
|
994
|
+
* // Preview the tracks for the 'speaker' role
|
|
995
|
+
* const previewTracks = await hmsInstance.previewForRole('speaker');
|
|
996
|
+
* console.log(previewTracks);
|
|
653
997
|
*
|
|
654
|
-
* @
|
|
998
|
+
* @async
|
|
999
|
+
* @function previewForRole
|
|
655
1000
|
* @memberof HMSSDK
|
|
656
1001
|
*/
|
|
657
1002
|
previewForRole = async (role: string) => {
|
|
@@ -673,19 +1018,28 @@ export class HMSSDK {
|
|
|
673
1018
|
};
|
|
674
1019
|
|
|
675
1020
|
/**
|
|
676
|
-
*
|
|
1021
|
+
* Asynchronously cancels the preview for a role change.
|
|
677
1022
|
*
|
|
678
|
-
*
|
|
679
|
-
*
|
|
680
|
-
*
|
|
1023
|
+
* This method is intended to be used after a `previewForRole` invocation. It cancels the ongoing preview operation,
|
|
1024
|
+
* effectively clearing any tracks that were created in anticipation of a role change. This is useful in scenarios where
|
|
1025
|
+
* a role change preview was initiated but needs to be aborted before the actual role change occurs, allowing for clean
|
|
1026
|
+
* state management and resource cleanup.
|
|
681
1027
|
*
|
|
1028
|
+
* @async
|
|
1029
|
+
* @function cancelPreview
|
|
682
1030
|
* @memberof HMSSDK
|
|
1031
|
+
* @returns {Promise<{data: string}>} A promise that resolves with an object containing a data string.
|
|
1032
|
+
*
|
|
1033
|
+
* @example
|
|
1034
|
+
* // Cancel a previously initiated role change preview
|
|
1035
|
+
* await hmsInstance.cancelPreview();
|
|
1036
|
+
*
|
|
683
1037
|
*/
|
|
684
|
-
cancelPreview = async () => {
|
|
1038
|
+
cancelPreview = async (): Promise<{ success: boolean }> => {
|
|
685
1039
|
logger?.verbose('#Function cancelPreview', {
|
|
686
1040
|
id: this.id,
|
|
687
1041
|
});
|
|
688
|
-
const data
|
|
1042
|
+
const data = await HMSManager.cancelPreview({
|
|
689
1043
|
id: this.id,
|
|
690
1044
|
});
|
|
691
1045
|
|
|
@@ -693,48 +1047,99 @@ export class HMSSDK {
|
|
|
693
1047
|
};
|
|
694
1048
|
|
|
695
1049
|
/**
|
|
696
|
-
*
|
|
1050
|
+
* Asynchronously accepts a role change request for the local peer.
|
|
1051
|
+
*
|
|
1052
|
+
* This method is used when a role change request has been made to the local peer, typically by an admin or moderator of the room.
|
|
1053
|
+
* Invoking this method signals acceptance of the new role, and the role change is applied to the local peer. This can affect the peer's
|
|
1054
|
+
* permissions and capabilities within the room, such as the ability to send video, audio, or chat messages.
|
|
697
1055
|
*
|
|
698
|
-
*
|
|
1056
|
+
* The successful execution of this method triggers an update across the room, notifying other peers of the role change.
|
|
1057
|
+
* It is important to handle this method's response to ensure the local UI reflects the new role's permissions and capabilities.
|
|
699
1058
|
*
|
|
1059
|
+
* @async
|
|
1060
|
+
* @function acceptRoleChange
|
|
700
1061
|
* @memberof HMSSDK
|
|
1062
|
+
* @returns {Promise<void>} A promise that resolves when the role change has been successfully accepted and applied.
|
|
1063
|
+
* @throws {Error} Throws an error if the role change acceptance operation fails.
|
|
1064
|
+
* @example
|
|
1065
|
+
* // Accept a role change request to become a 'moderator'
|
|
1066
|
+
* await hmsInstance.acceptRoleChange();
|
|
1067
|
+
*
|
|
1068
|
+
* @see https://www.100ms.live/docs/react-native/v2/how-to-guides/interact-with-room/peer/change-role
|
|
701
1069
|
*/
|
|
702
|
-
acceptRoleChange = async () => {
|
|
1070
|
+
acceptRoleChange = async (): Promise<void> => {
|
|
703
1071
|
logger?.verbose('#Function acceptRoleChange', { id: this.id });
|
|
704
1072
|
return await HMSManager.acceptRoleChange({ id: this.id });
|
|
705
1073
|
};
|
|
706
1074
|
|
|
707
1075
|
/**
|
|
708
|
-
*
|
|
709
|
-
* HMSRemoteAudioTrack. It sets mute status for all peers in the room only for the local peer.
|
|
1076
|
+
* Sets the mute status for all remote audio tracks in the room for the local peer.
|
|
710
1077
|
*
|
|
711
|
-
*
|
|
1078
|
+
* This method allows the local user to mute or unmute the playback of all remote audio tracks in the room.
|
|
1079
|
+
* It affects only the local peer's audio playback and does not impact other peers. This can be useful in scenarios
|
|
1080
|
+
* where a user needs to quickly mute all incoming audio without affecting the audio state for other participants in the room.
|
|
712
1081
|
*
|
|
1082
|
+
* @param {boolean} mute - A boolean value indicating whether to mute (`true`) or unmute (`false`) all remote audio tracks for the local peer.
|
|
1083
|
+
* @returns {Promise<boolean>} A promise that resolves with a boolean value indicating the success of the operation.
|
|
1084
|
+
* @throws {Error} Throws an error if the operation fails.
|
|
1085
|
+
* @async
|
|
1086
|
+
* @function setPlaybackForAllAudio
|
|
713
1087
|
* @memberof HMSSDK
|
|
1088
|
+
* @example
|
|
1089
|
+
* // Mute all remote audio tracks for the local peer
|
|
1090
|
+
* hmsInstance.setPlaybackForAllAudio(true);
|
|
1091
|
+
*
|
|
1092
|
+
* @example
|
|
1093
|
+
* // Unmute all remote audio tracks for the local peer
|
|
1094
|
+
* hmsInstance.setPlaybackForAllAudio(false);
|
|
1095
|
+
*
|
|
1096
|
+
* @see https://www.100ms.live/docs/react-native/v2/how-to-guides/interact-with-room/track/playback-allowed
|
|
714
1097
|
*/
|
|
715
|
-
setPlaybackForAllAudio = (mute: boolean) => {
|
|
1098
|
+
setPlaybackForAllAudio = async (mute: boolean): Promise<boolean> => {
|
|
716
1099
|
logger?.verbose('#Function setPlaybackForAllAudio', { mute, id: this.id });
|
|
717
|
-
HMSManager.setPlaybackForAllAudio({ mute, id: this.id });
|
|
1100
|
+
return await HMSManager.setPlaybackForAllAudio({ mute, id: this.id });
|
|
718
1101
|
};
|
|
719
1102
|
|
|
720
1103
|
/**
|
|
721
|
-
*
|
|
1104
|
+
* Mutes the audio for all peers in the room.
|
|
1105
|
+
*
|
|
1106
|
+
* This asynchronous function communicates with the native `HMSManager` module to mute the audio tracks of all remote peers in the room.
|
|
1107
|
+
* It is particularly useful in scenarios where a moderator needs to quickly mute all participants to prevent background noise or interruptions during a session.
|
|
722
1108
|
*
|
|
1109
|
+
* @async
|
|
1110
|
+
* @function remoteMuteAllAudio
|
|
723
1111
|
* @memberof HMSSDK
|
|
1112
|
+
* @returns {Promise<{success: boolean}>} A promise that resolves with a boolean value indicating the success of the operation.
|
|
1113
|
+
* @throws {Error} Throws an error if the operation fails.
|
|
1114
|
+
* @example
|
|
1115
|
+
* // Mute all remote audio tracks in the room
|
|
1116
|
+
* await hmsInstance.remoteMuteAllAudio();
|
|
1117
|
+
*
|
|
1118
|
+
* @see https://www.100ms.live/docs/react-native/v2/how-to-guides/interact-with-room/track/remote-mute
|
|
724
1119
|
*/
|
|
725
|
-
remoteMuteAllAudio = async () => {
|
|
1120
|
+
remoteMuteAllAudio = async (): Promise<{ success: boolean }> => {
|
|
726
1121
|
logger?.verbose('#Function remoteMuteAllAudio', { id: this.id });
|
|
727
1122
|
return await HMSManager.remoteMuteAllAudio({ id: this.id });
|
|
728
1123
|
};
|
|
729
1124
|
|
|
730
1125
|
/**
|
|
731
|
-
*
|
|
732
|
-
* current room object which is of type {@link HMSRoom}
|
|
1126
|
+
* Retrieves the current room's details.
|
|
733
1127
|
*
|
|
734
|
-
*
|
|
1128
|
+
* This method acts as a wrapper around the native `getRoom` function, providing an easy way to obtain the current room's state and details,
|
|
1129
|
+
* including participants, tracks, and other relevant information. The room object is fetched from the native module and then processed
|
|
1130
|
+
* to match the expected format in the React Native layer. This method is useful for getting the room's state at any point in time, such as
|
|
1131
|
+
* when needing to display current room information or for debugging purposes.
|
|
735
1132
|
*
|
|
1133
|
+
* @async
|
|
1134
|
+
* @function getRoom
|
|
736
1135
|
* @memberof HMSSDK
|
|
737
|
-
* @
|
|
1136
|
+
* @returns {Promise<HMSRoom>} A promise that resolves to the current room object.
|
|
1137
|
+
* @example
|
|
1138
|
+
* // Fetch the current room details
|
|
1139
|
+
* const roomDetails = await hmsInstance.getRoom();
|
|
1140
|
+
* console.log(roomDetails);
|
|
1141
|
+
*
|
|
1142
|
+
* @see https://www.100ms.live/docs/react-native/v2/how-to-guides/listen-to-room-updates/get-methods
|
|
738
1143
|
*/
|
|
739
1144
|
getRoom = async (): Promise<HMSRoom> => {
|
|
740
1145
|
logger?.verbose('#Function getRoom', {
|
|
@@ -749,11 +1154,23 @@ export class HMSSDK {
|
|
|
749
1154
|
};
|
|
750
1155
|
|
|
751
1156
|
/**
|
|
752
|
-
*
|
|
753
|
-
*
|
|
1157
|
+
* Retrieves the current local peer's details.
|
|
1158
|
+
*
|
|
1159
|
+
* This asynchronous method wraps around the native `getLocalPeer` function, providing a straightforward way to obtain the current local peer's details,
|
|
1160
|
+
* including their ID, name, role, and any tracks they may be publishing. The local peer object is fetched from the native module and then processed
|
|
1161
|
+
* to match the expected format in the React Native layer. This method is particularly useful for operations that require information about the local user,
|
|
1162
|
+
* such as updating UI elements to reflect the current user's status or for debugging purposes.
|
|
754
1163
|
*
|
|
1164
|
+
* @async
|
|
1165
|
+
* @function getLocalPeer
|
|
755
1166
|
* @memberof HMSSDK
|
|
756
|
-
* @
|
|
1167
|
+
* @returns {Promise<HMSLocalPeer>} A promise that resolves to the current local peer object.
|
|
1168
|
+
* @example
|
|
1169
|
+
* // Fetch the current local peer's details
|
|
1170
|
+
* const localPeerDetails = await hmsInstance.getLocalPeer();
|
|
1171
|
+
* console.log(localPeerDetails);
|
|
1172
|
+
*
|
|
1173
|
+
* @see https://www.100ms.live/docs/react-native/v2/how-to-guides/listen-to-room-updates/get-methods
|
|
757
1174
|
*/
|
|
758
1175
|
getLocalPeer = async (): Promise<HMSLocalPeer> => {
|
|
759
1176
|
logger?.verbose('#Function getLocalPeer', {
|
|
@@ -766,11 +1183,22 @@ export class HMSSDK {
|
|
|
766
1183
|
};
|
|
767
1184
|
|
|
768
1185
|
/**
|
|
769
|
-
*
|
|
770
|
-
*
|
|
1186
|
+
* Retrieves an array of remote peers currently in the room.
|
|
1187
|
+
*
|
|
1188
|
+
* This asynchronous method serves as a wrapper around the native `getRemotePeers` function, facilitating the retrieval of remote peers' details.
|
|
1189
|
+
* It fetches an array of `HMSRemotePeer` objects, each representing a remote participant in the room. The method processes the fetched data
|
|
1190
|
+
* to conform to the expected format in the React Native layer, making it suitable for UI rendering or further processing.
|
|
771
1191
|
*
|
|
1192
|
+
* @async
|
|
1193
|
+
* @function getRemotePeers
|
|
772
1194
|
* @memberof HMSSDK
|
|
773
|
-
* @
|
|
1195
|
+
* @returns {Promise<HMSRemotePeer[]>} A promise that resolves with an array of `HMSRemotePeer` objects, representing the remote peers in the room.
|
|
1196
|
+
* @example
|
|
1197
|
+
* // Fetch the list of remote peers in the room
|
|
1198
|
+
* const remotePeers = await hmsInstance.getRemotePeers();
|
|
1199
|
+
* console.log(remotePeers);
|
|
1200
|
+
*
|
|
1201
|
+
* @see https://www.100ms.live/docs/react-native/v2/how-to-guides/listen-to-room-updates/get-methods
|
|
774
1202
|
*/
|
|
775
1203
|
getRemotePeers = async (): Promise<HMSRemotePeer[]> => {
|
|
776
1204
|
logger?.verbose('#Function getRemotePeers', {
|
|
@@ -786,11 +1214,22 @@ export class HMSSDK {
|
|
|
786
1214
|
};
|
|
787
1215
|
|
|
788
1216
|
/**
|
|
789
|
-
*
|
|
790
|
-
*
|
|
1217
|
+
* Retrieves a list of all roles currently available in the room.
|
|
1218
|
+
*
|
|
1219
|
+
* This asynchronous method calls the native `getRoles` function to fetch an array of `HMSRole` objects, representing the roles defined for the room.
|
|
1220
|
+
* Each `HMSRole` object includes details such as the role name, permissions, and other role-specific settings. The roles are then processed
|
|
1221
|
+
* to match the expected format in the React Native layer. This method is useful for operations that require a comprehensive list of roles,
|
|
1222
|
+
* such as displaying role options in a UI dropdown for role assignment or for role-based access control checks.
|
|
791
1223
|
*
|
|
1224
|
+
* @async
|
|
1225
|
+
* @function getRoles
|
|
792
1226
|
* @memberof HMSSDK
|
|
793
|
-
* @
|
|
1227
|
+
* @returns {Promise<HMSRole[]>} A promise that resolves with an array of `HMSRole` objects, representing the available roles in the room.
|
|
1228
|
+
*
|
|
1229
|
+
* @example
|
|
1230
|
+
* // Fetch the list of available roles in the room
|
|
1231
|
+
* const roles = await hmsInstance.getRoles();
|
|
1232
|
+
* console.log(roles);
|
|
794
1233
|
*/
|
|
795
1234
|
getRoles = async (): Promise<HMSRole[]> => {
|
|
796
1235
|
logger?.verbose('#Function getRoles', {
|
|
@@ -803,19 +1242,33 @@ export class HMSSDK {
|
|
|
803
1242
|
};
|
|
804
1243
|
|
|
805
1244
|
/**
|
|
806
|
-
*
|
|
1245
|
+
* Sets the volume for a specific track of any peer in the room.
|
|
1246
|
+
*
|
|
1247
|
+
* This function allows the adjustment of the playback volume for any given audio track of a peer within the room.
|
|
1248
|
+
* It is particularly useful for controlling the audio levels of individual participants in a conference call or meeting.
|
|
1249
|
+
* The volume level is specified as a number. Volume level can vary from 0(min) to 10(max). The default value for volume is 1.0.
|
|
807
1250
|
*
|
|
808
|
-
*
|
|
1251
|
+
* @param {HMSTrack} track - The track object whose volume is to be set. This object must include a valid `trackId`.
|
|
1252
|
+
* @param {number} volume - The volume level to set for the specified track.
|
|
1253
|
+
* @returns {Promise<void>} A promise that resolves when the operation to set the track's volume is complete.
|
|
1254
|
+
* @throws {Error} Throws an error if the operation fails or the track cannot be found.
|
|
809
1255
|
*
|
|
1256
|
+
* @see https://www.100ms.live/docs/react-native/v2/how-to-guides/interact-with-room/track/set-volume
|
|
1257
|
+
*
|
|
1258
|
+
* @async
|
|
810
1259
|
* @memberof HMSSDK
|
|
1260
|
+
*
|
|
1261
|
+
* @example
|
|
1262
|
+
* // Assuming `track` is an instance of HMSTrack representing the participant's audio track
|
|
1263
|
+
* hmsInstance.setVolume(track, 10);
|
|
811
1264
|
*/
|
|
812
|
-
setVolume = (track: HMSTrack, volume: number) => {
|
|
1265
|
+
setVolume = async (track: HMSTrack, volume: number): Promise<void> => {
|
|
813
1266
|
logger?.verbose('#Function setVolume', {
|
|
814
1267
|
track,
|
|
815
1268
|
volume,
|
|
816
1269
|
id: this.id,
|
|
817
1270
|
});
|
|
818
|
-
HMSManager.setVolume({
|
|
1271
|
+
return await HMSManager.setVolume({
|
|
819
1272
|
id: this.id,
|
|
820
1273
|
trackId: track.trackId,
|
|
821
1274
|
volume,
|
|
@@ -823,11 +1276,23 @@ export class HMSSDK {
|
|
|
823
1276
|
};
|
|
824
1277
|
|
|
825
1278
|
/**
|
|
826
|
-
*
|
|
1279
|
+
* Initiates screen sharing in the room.
|
|
827
1280
|
*
|
|
828
|
-
*
|
|
1281
|
+
* This asynchronous function triggers the screen sharing feature, allowing the local peer to share their screen with other participants in the room.
|
|
1282
|
+
* Upon successful execution, other participants in the room will be able to see the shared screen as part of the video conference.
|
|
829
1283
|
*
|
|
1284
|
+
* Note: Proper permissions must be granted by the user for screen sharing to work. Ensure to handle permission requests appropriately in your application.
|
|
1285
|
+
*
|
|
1286
|
+
* @async
|
|
1287
|
+
* @function startScreenshare
|
|
830
1288
|
* @memberof HMSSDK
|
|
1289
|
+
* @returns {Promise<void>} A promise that resolves when the screen sharing has successfully started.
|
|
1290
|
+
* @throws {Error} Throws an error if the operation fails or screen sharing cannot be initiated.
|
|
1291
|
+
*
|
|
1292
|
+
* @see https://www.100ms.live/docs/react-native/v2/how-to-guides/set-up-video-conferencing/screenshare
|
|
1293
|
+
* @example
|
|
1294
|
+
* // Start screen sharing
|
|
1295
|
+
* await hmsInstance.startScreenshare();
|
|
831
1296
|
*/
|
|
832
1297
|
startScreenshare = async () => {
|
|
833
1298
|
logger?.verbose('#Function startScreenshare', { id: this.id });
|
|
@@ -835,46 +1300,115 @@ export class HMSSDK {
|
|
|
835
1300
|
};
|
|
836
1301
|
|
|
837
1302
|
/**
|
|
838
|
-
*
|
|
1303
|
+
* Checks if the screen sharing is currently active in the room.
|
|
839
1304
|
*
|
|
840
|
-
*
|
|
1305
|
+
* This asynchronous method queries the native `HMSManager` module to determine if the screen is currently being shared by the local peer in the room.
|
|
1306
|
+
* It returns a promise that resolves to a boolean value, indicating the screen sharing status. `true` signifies that the screen sharing is active,
|
|
1307
|
+
* while `false` indicates that it is not. This method can be used to toggle UI elements or to decide whether to start or stop screen sharing based on the current state.
|
|
841
1308
|
*
|
|
1309
|
+
* @async
|
|
1310
|
+
* @function isScreenShared
|
|
842
1311
|
* @memberof HMSSDK
|
|
1312
|
+
* @returns {Promise<boolean>} A promise that resolves to a boolean indicating whether the screen is currently shared.
|
|
1313
|
+
* @example
|
|
1314
|
+
* // Check if the screen is currently shared
|
|
1315
|
+
* const isShared = await hmsInstance.isScreenShared();
|
|
1316
|
+
* console.log(isShared ? "Screen is being shared" : "Screen is not being shared");
|
|
1317
|
+
*
|
|
1318
|
+
* @see https://www.100ms.live/docs/react-native/v2/how-to-guides/set-up-video-conferencing/screenshare
|
|
843
1319
|
*/
|
|
844
|
-
isScreenShared = async () => {
|
|
1320
|
+
isScreenShared = async (): Promise<boolean> => {
|
|
845
1321
|
logger?.verbose('#Function isScreenShared', { id: this.id });
|
|
846
1322
|
return await HMSManager.isScreenShared({ id: this.id });
|
|
847
1323
|
};
|
|
848
1324
|
|
|
849
1325
|
/**
|
|
850
|
-
*
|
|
1326
|
+
* Asynchronously stops the screen sharing session.
|
|
1327
|
+
*
|
|
1328
|
+
* This method communicates with the native `HMSManager` module to stop the ongoing screen sharing session initiated by the local peer.
|
|
1329
|
+
* Upon successful execution, the screen sharing session is terminated, and other participants
|
|
1330
|
+
* in the room will no longer be able to see the shared screen. This method can be used to programmatically control the end of a screen sharing session,
|
|
1331
|
+
* providing flexibility in managing the screen sharing feature within your application.
|
|
851
1332
|
*
|
|
852
|
-
*
|
|
1333
|
+
* Note: Ensure that the necessary permissions and conditions for screen sharing are managed appropriately in your application.
|
|
853
1334
|
*
|
|
1335
|
+
* @async
|
|
1336
|
+
* @function stopScreenshare
|
|
854
1337
|
* @memberof HMSSDK
|
|
1338
|
+
* @returns {Promise<void>} A promise that resolves when the screen sharing has successfully stopped.
|
|
1339
|
+
* @throws {Error} Throws an error if the operation fails or the screen sharing cannot be stopped.
|
|
1340
|
+
*
|
|
1341
|
+
* @see https://www.100ms.live/docs/react-native/v2/how-to-guides/set-up-video-conferencing/screenshare
|
|
1342
|
+
* @example
|
|
1343
|
+
* // Stop screen sharing
|
|
1344
|
+
* await hmsInstance.stopScreenshare();
|
|
855
1345
|
*/
|
|
856
1346
|
stopScreenshare = async () => {
|
|
857
1347
|
logger?.verbose('#Function stopScreenshare', { id: this.id });
|
|
858
1348
|
return await HMSManager.stopScreenshare({ id: this.id });
|
|
859
1349
|
};
|
|
860
1350
|
|
|
1351
|
+
/**
|
|
1352
|
+
* Enables network quality updates for the local peer.
|
|
1353
|
+
*
|
|
1354
|
+
* This method activates the network quality monitoring feature, which periodically assesses and reports the network quality of peers in a room.
|
|
1355
|
+
* The network quality updates are useful for providing feedback to the user about their current connection status, potentially prompting them to improve their network environment if necessary.
|
|
1356
|
+
* Upon enabling, network quality updates are emitted through the appropriate event listeners - `HMSPeerUpdate.NETWORK_QUALITY_UPDATED` allowing the application to react or display the network status dynamically.
|
|
1357
|
+
*
|
|
1358
|
+
* @function enableNetworkQualityUpdates
|
|
1359
|
+
* @memberof HMSSDK
|
|
1360
|
+
* @example
|
|
1361
|
+
* // Enable network quality updates
|
|
1362
|
+
* hmsInstance.enableNetworkQualityUpdates();
|
|
1363
|
+
*
|
|
1364
|
+
* @see https://www.100ms.live/docs/react-native/v2/how-to-guides/measure-network-quality-and-performance/network-quality
|
|
1365
|
+
*/
|
|
861
1366
|
enableNetworkQualityUpdates = () => {
|
|
862
1367
|
logger?.verbose('#Function enableNetworkQualityUpdates', { id: this.id });
|
|
863
1368
|
HMSManager.enableNetworkQualityUpdates({ id: this.id });
|
|
864
1369
|
};
|
|
865
1370
|
|
|
1371
|
+
/**
|
|
1372
|
+
* Disables network quality updates for the local peer.
|
|
1373
|
+
*
|
|
1374
|
+
* This method deactivates the network quality monitoring feature, which stops the periodic assessment and reporting of the network quality of peers in a room.
|
|
1375
|
+
* Disabling network quality updates can be useful in scenarios where network quality information is no longer needed, or to reduce the computational overhead associated with monitoring network quality.
|
|
1376
|
+
* Once disabled, network quality updates will no longer be emitted through the event listeners, allowing the application to cease reacting to or displaying network status information.
|
|
1377
|
+
*
|
|
1378
|
+
* @function disableNetworkQualityUpdates
|
|
1379
|
+
* @memberof HMSSDK
|
|
1380
|
+
* @example
|
|
1381
|
+
* // Disable network quality updates
|
|
1382
|
+
* hmsInstance.disableNetworkQualityUpdates();
|
|
1383
|
+
*
|
|
1384
|
+
* @see https://www.100ms.live/docs/react-native/v2/how-to-guides/measure-network-quality-and-performance/network-quality
|
|
1385
|
+
*/
|
|
866
1386
|
disableNetworkQualityUpdates = () => {
|
|
867
1387
|
logger?.verbose('#Function disableNetworkQualityUpdates', { id: this.id });
|
|
868
1388
|
HMSManager.disableNetworkQualityUpdates({ id: this.id });
|
|
869
1389
|
};
|
|
870
1390
|
|
|
871
1391
|
/**
|
|
872
|
-
*
|
|
1392
|
+
* Starts streaming device audio, available only on Android devices.
|
|
873
1393
|
*
|
|
874
|
-
*
|
|
1394
|
+
* This method allows the application to share device audio, such as music or system sounds, with other participants in a video conference.
|
|
1395
|
+
* It leverages the native HMSManager's `startAudioshare` method to initiate audio sharing. The function takes an `HMSAudioMixingMode` parameter,
|
|
1396
|
+
* which specifies the audio mixing mode to be used during the audio share session.
|
|
875
1397
|
*
|
|
876
|
-
*
|
|
877
|
-
*
|
|
1398
|
+
* Note: This feature is currently supported only on Android. Attempting to use this feature on iOS will result in a console log indicating
|
|
1399
|
+
* that the API is not available for iOS.
|
|
1400
|
+
*
|
|
1401
|
+
* @async
|
|
1402
|
+
* @function startAudioshare
|
|
1403
|
+
* @param {HMSAudioMixingMode} audioMixingMode - The audio mixing mode to be used for the audio share session.
|
|
1404
|
+
* @returns {Promise} A promise that resolves to a success if the audio share is started successfully
|
|
1405
|
+
* @throws {Error} Throws an error if the operation fails or the audio share cannot be started.
|
|
1406
|
+
*
|
|
1407
|
+
* @see https://www.100ms.live/docs/react-native/v2/how-to-guides/set-up-video-conferencing/local-audio-share
|
|
1408
|
+
*
|
|
1409
|
+
* @example
|
|
1410
|
+
* // Start audio sharing with the default mixing mode
|
|
1411
|
+
* await hmsInstance.startAudioshare(HMSAudioMixingMode.DEFAULT);
|
|
878
1412
|
*/
|
|
879
1413
|
startAudioshare = async (audioMixingMode: HMSAudioMixingMode) => {
|
|
880
1414
|
logger?.verbose('#Function startAudioshare', {
|
|
@@ -890,64 +1424,114 @@ export class HMSSDK {
|
|
|
890
1424
|
};
|
|
891
1425
|
|
|
892
1426
|
/**
|
|
893
|
-
*
|
|
1427
|
+
* Checks if audio sharing is currently active.
|
|
894
1428
|
*
|
|
895
|
-
*
|
|
1429
|
+
* This asynchronous method determines whether audio sharing is currently active, with support limited to Android devices.
|
|
1430
|
+
* On Android, it queries the native `HMSManager` module to check the audio sharing status and returns a promise that resolves to a boolean value.
|
|
896
1431
|
*
|
|
1432
|
+
* @async
|
|
1433
|
+
* @function isAudioShared
|
|
897
1434
|
* @memberof HMSSDK
|
|
1435
|
+
* @returns {Promise<boolean>} A promise that resolves to a boolean indicating whether audio sharing is currently active.
|
|
1436
|
+
* @example
|
|
1437
|
+
* // Check if audio is being shared on an Android device
|
|
1438
|
+
* const isSharing = await hmsInstance.isAudioShared();
|
|
1439
|
+
* console.log(isSharing); // true or false based on the sharing status, or a message for iOS
|
|
1440
|
+
*
|
|
1441
|
+
* @see https://www.100ms.live/docs/react-native/v2/how-to-guides/set-up-video-conferencing/local-audio-share
|
|
898
1442
|
*/
|
|
899
|
-
isAudioShared = async () => {
|
|
1443
|
+
isAudioShared = async (): Promise<boolean> => {
|
|
900
1444
|
logger?.verbose('#Function isAudioShared', { id: this.id });
|
|
901
1445
|
if (Platform.OS === 'android') {
|
|
902
1446
|
return await HMSManager.isAudioShared({ id: this.id });
|
|
903
1447
|
} else {
|
|
904
1448
|
console.log('API currently not available for iOS');
|
|
905
|
-
return
|
|
1449
|
+
return Promise.resolve(false);
|
|
906
1450
|
}
|
|
907
1451
|
};
|
|
908
1452
|
|
|
909
1453
|
/**
|
|
910
|
-
*
|
|
1454
|
+
* Stops the streaming of device audio, with functionality currently limited to Android devices.
|
|
911
1455
|
*
|
|
912
|
-
*
|
|
1456
|
+
* This asynchronous method communicates with the native `HMSManager` module to stop the audio sharing session that was previously started.
|
|
1457
|
+
* It is primarily used when the application needs to cease sharing device audio, such as music or system sounds, with other participants in a video conference.
|
|
1458
|
+
* On Android devices, it successfully terminates the audio share session. On iOS devices, since the feature is not supported, it logs a message indicating the unavailability of the API.
|
|
913
1459
|
*
|
|
1460
|
+
* @async
|
|
1461
|
+
* @function stopAudioshare
|
|
914
1462
|
* @memberof HMSSDK
|
|
1463
|
+
* @returns {Promise<boolean>} A promise that resolves to a boolean indicating the success of the operation.
|
|
1464
|
+
* @see https://www.100ms.live/docs/react-native/v2/how-to-guides/set-up-video-conferencing/local-audio-share
|
|
1465
|
+
*
|
|
1466
|
+
* @example
|
|
1467
|
+
* // Stop audio sharing
|
|
1468
|
+
* await hmsInstance.stopAudioshare();
|
|
915
1469
|
*/
|
|
916
|
-
stopAudioshare = async () => {
|
|
1470
|
+
stopAudioshare = async (): Promise<boolean> => {
|
|
917
1471
|
logger?.verbose('#Function stopAudioshare', { id: this.id });
|
|
918
1472
|
if (Platform.OS === 'android') {
|
|
919
1473
|
return await HMSManager.stopAudioshare({ id: this.id });
|
|
920
1474
|
} else {
|
|
921
1475
|
console.log('API currently not available for iOS');
|
|
922
|
-
return
|
|
1476
|
+
return Promise.resolve(false);
|
|
923
1477
|
}
|
|
924
1478
|
};
|
|
925
1479
|
|
|
926
1480
|
/**
|
|
927
|
-
*
|
|
1481
|
+
* Asynchronously retrieves the current audio mixing mode, with functionality currently limited to Android devices.
|
|
1482
|
+
*
|
|
1483
|
+
* This method queries the native `HMSManager` module to obtain the current audio mixing mode used in the audio share session.
|
|
1484
|
+
* The audio mixing mode determines how local and remote audio tracks are mixed together during an audio share session.
|
|
928
1485
|
*
|
|
1486
|
+
* Note: This feature is only supported on Android. Attempting to use this feature on iOS will result in a console log indicating
|
|
1487
|
+
* that the API is not available for iOS devices.
|
|
1488
|
+
*
|
|
1489
|
+
* @async
|
|
1490
|
+
* @function getAudioMixingMode
|
|
929
1491
|
* @memberof HMSSDK
|
|
930
|
-
* @
|
|
1492
|
+
* @returns {Promise<string>} A promise that resolves to a string indicating the current audio mixing mode.
|
|
1493
|
+
*
|
|
1494
|
+
* @throws {Error} Throws an error if the operation fails or the audio mixing mode cannot be retrieved.
|
|
1495
|
+
*
|
|
1496
|
+
* @see https://www.100ms.live/docs/react-native/v2/how-to-guides/set-up-video-conferencing/local-audio-share
|
|
1497
|
+
* @example
|
|
1498
|
+
* // Get the current audio mixing mode on an Android device
|
|
1499
|
+
* const mixingMode = await hmsInstance.getAudioMixingMode();
|
|
1500
|
+
* console.log(mixingMode); // Outputs the current audio mixing mode or a message for iOS
|
|
931
1501
|
*/
|
|
932
|
-
getAudioMixingMode = async () => {
|
|
1502
|
+
getAudioMixingMode = async (): Promise<string> => {
|
|
933
1503
|
logger?.verbose('#Function getAudioMixingMode', { id: this.id });
|
|
934
1504
|
if (Platform.OS === 'android') {
|
|
935
1505
|
return await HMSManager.getAudioMixingMode({ id: this.id });
|
|
936
1506
|
} else {
|
|
937
1507
|
console.log('API currently not available for iOS');
|
|
938
|
-
return 'API currently not available for iOS';
|
|
1508
|
+
return Promise.reject('API currently not available for iOS');
|
|
939
1509
|
}
|
|
940
1510
|
};
|
|
941
1511
|
|
|
942
1512
|
/**
|
|
943
|
-
*
|
|
1513
|
+
* Sets the audio mixing mode for the current session. Android only.
|
|
944
1514
|
*
|
|
945
|
-
*
|
|
1515
|
+
* This asynchronous function is used to change the mode of audio mixing during a session. It is currently
|
|
1516
|
+
* available only for Android. The function logs the action with the instance ID and the specified audio mixing mode,
|
|
1517
|
+
* then calls the native `setAudioMixingMode` method in `HMSManager` with the provided parameters.
|
|
1518
|
+
*
|
|
1519
|
+
* If the platform is not Android, it logs a message indicating that the API is not available for iOS.
|
|
1520
|
+
*
|
|
1521
|
+
* @param {HMSAudioMixingMode} audioMixingMode - The audio mixing mode to be set.
|
|
1522
|
+
* @returns {Promise<boolean>} A promise that resolves to a boolean indicating the success of the operation.
|
|
1523
|
+
* @throws {Error} Throws an error if the operation fails or the audio mixing mode cannot be set.
|
|
1524
|
+
*
|
|
1525
|
+
* @example
|
|
1526
|
+
* await hmsInstance.setAudioMixingMode(HMSAudioMixingMode.TALK_AND_MUSIC);
|
|
1527
|
+
*
|
|
1528
|
+
* @see https://www.100ms.live/docs/react-native/v2/how-to-guides/set-up-video-conferencing/local-audio-share
|
|
946
1529
|
*
|
|
947
|
-
* @param {HMSAudioMixingMode}
|
|
948
1530
|
* @memberof HMSSDK
|
|
949
1531
|
*/
|
|
950
|
-
setAudioMixingMode = async (
|
|
1532
|
+
setAudioMixingMode = async (
|
|
1533
|
+
audioMixingMode: HMSAudioMixingMode
|
|
1534
|
+
): Promise<boolean> => {
|
|
951
1535
|
logger?.verbose('#Function setAudioMixingMode', {
|
|
952
1536
|
id: this.id,
|
|
953
1537
|
audioMixingMode,
|
|
@@ -959,20 +1543,27 @@ export class HMSSDK {
|
|
|
959
1543
|
});
|
|
960
1544
|
} else {
|
|
961
1545
|
console.log('API currently not available for iOS');
|
|
962
|
-
return 'API currently not available for iOS';
|
|
1546
|
+
return Promise.reject('API currently not available for iOS');
|
|
963
1547
|
}
|
|
964
1548
|
};
|
|
965
1549
|
|
|
966
1550
|
/**
|
|
967
|
-
*
|
|
968
|
-
* type {@link HMSAudioDevice[]}, currently available only for android.
|
|
1551
|
+
* Retrieves a list of audio output devices. Android only.
|
|
969
1552
|
*
|
|
970
|
-
*
|
|
1553
|
+
* This method asynchronously fetches and returns an array of audio output devices available on the device.
|
|
1554
|
+
* It is designed to work specifically on Android platforms. For iOS, it will reject the promise with a message
|
|
1555
|
+
* indicating that the API is not available. This can be useful for applications that need to display or allow
|
|
1556
|
+
* the user to select from available audio output options, such as speakers, headphones, or Bluetooth devices.
|
|
1557
|
+
*
|
|
1558
|
+
* @see https://www.100ms.live/docs/react-native/v2/how-to-guides/configure-your-device/speaker/audio-output-routing
|
|
971
1559
|
*
|
|
972
1560
|
* @memberof HMSSDK
|
|
973
|
-
* @
|
|
1561
|
+
* @returns {Promise<HMSAudioDevice[]>} A promise that resolves to an array of `HMSAudioDevice` objects on Android. On iOS, the promise is rejected.
|
|
1562
|
+
* @example
|
|
1563
|
+
* // Get the list of audio output devices
|
|
1564
|
+
* const audioDevices = await hmsInstance.getAudioDevicesList();
|
|
974
1565
|
*/
|
|
975
|
-
getAudioDevicesList = async () => {
|
|
1566
|
+
getAudioDevicesList = async (): Promise<HMSAudioDevice[]> => {
|
|
976
1567
|
logger?.verbose('#Function getAudioDevicesList', {
|
|
977
1568
|
id: this.id,
|
|
978
1569
|
});
|
|
@@ -980,20 +1571,28 @@ export class HMSSDK {
|
|
|
980
1571
|
return await HMSManager.getAudioDevicesList({ id: this.id });
|
|
981
1572
|
} else {
|
|
982
1573
|
console.log('API currently not available for iOS');
|
|
983
|
-
return 'API currently not available for iOS';
|
|
1574
|
+
return Promise.reject('API currently not available for iOS');
|
|
984
1575
|
}
|
|
985
1576
|
};
|
|
986
1577
|
|
|
987
1578
|
/**
|
|
988
|
-
*
|
|
989
|
-
* type {@link HMSAudioDevice}, currently available only for android.
|
|
1579
|
+
* Retrieves the current audio output device type on Android devices.
|
|
990
1580
|
*
|
|
991
|
-
*
|
|
1581
|
+
* This method is a wrapper function that returns the type of the current audio output device.
|
|
1582
|
+
* The return type is a `HMSAudioDevice`, which is an enumeration representing different types of audio output devices.
|
|
1583
|
+
*
|
|
1584
|
+
* Note: This API is not available for iOS devices. If invoked on iOS, it logs a message indicating the unavailability and rejects the promise.
|
|
1585
|
+
*
|
|
1586
|
+
* @see https://www.100ms.live/docs/react-native/v2/how-to-guides/configure-your-device/speaker/audio-output-routing
|
|
992
1587
|
*
|
|
993
1588
|
* @memberof HMSSDK
|
|
994
|
-
* @
|
|
1589
|
+
* @returns {Promise<HMSAudioDevice>} A promise that resolves to the current audio output device type if the platform is Android. If the platform is iOS, the promise is rejected.
|
|
1590
|
+
*
|
|
1591
|
+
* @example
|
|
1592
|
+
* // Get the current audio output device type
|
|
1593
|
+
* const currentAudioOutputDevice = await hmsInstance.getAudioOutputRouteType();
|
|
995
1594
|
*/
|
|
996
|
-
getAudioOutputRouteType = async () => {
|
|
1595
|
+
getAudioOutputRouteType = async (): Promise<HMSAudioDevice> => {
|
|
997
1596
|
logger?.verbose('#Function getAudioOutputRouteType', {
|
|
998
1597
|
id: this.id,
|
|
999
1598
|
});
|
|
@@ -1001,19 +1600,26 @@ export class HMSSDK {
|
|
|
1001
1600
|
return await HMSManager.getAudioOutputRouteType({ id: this.id });
|
|
1002
1601
|
} else {
|
|
1003
1602
|
console.log('API currently not available for iOS');
|
|
1004
|
-
return 'API currently not available for iOS';
|
|
1603
|
+
return Promise.reject('API currently not available for iOS');
|
|
1005
1604
|
}
|
|
1006
1605
|
};
|
|
1007
1606
|
|
|
1008
1607
|
/**
|
|
1009
|
-
*
|
|
1608
|
+
* Switches the audio output device to a specified device.
|
|
1609
|
+
* This function is a wrapper around the native module's method to change the audio output route.
|
|
1610
|
+
* It allows for changing the audio output to a device other than the default one, such as a Bluetooth headset or speaker.
|
|
1010
1611
|
*
|
|
1011
|
-
*
|
|
1612
|
+
* @param {HMSAudioDevice} audioDevice - The audio device to switch the output to. This should be one of the devices available in `HMSAudioDevice`.
|
|
1613
|
+
*
|
|
1614
|
+
* @returns {Promise<void>} A promise that resolves when the audio output device is successfully switched. Rejected if the operation fails.
|
|
1615
|
+
*
|
|
1616
|
+
* @example
|
|
1617
|
+
* // To switch audio output to a Bluetooth device
|
|
1618
|
+
* hmsSDK.switchAudioOutput(HMSAudioDevice.Bluetooth);
|
|
1012
1619
|
*
|
|
1013
1620
|
* @memberof HMSSDK
|
|
1014
|
-
* @param audioDevice
|
|
1015
1621
|
*/
|
|
1016
|
-
switchAudioOutput = (audioDevice: HMSAudioDevice) => {
|
|
1622
|
+
switchAudioOutput = (audioDevice: HMSAudioDevice): Promise<void> => {
|
|
1017
1623
|
logger?.verbose('#Function switchAudioOutput', {
|
|
1018
1624
|
id: this.id,
|
|
1019
1625
|
audioDevice,
|
|
@@ -1038,7 +1644,7 @@ export class HMSSDK {
|
|
|
1038
1644
|
/**
|
|
1039
1645
|
* - This wrapper function used to change Audio Mode manually, currently available only for android.
|
|
1040
1646
|
*
|
|
1041
|
-
*
|
|
1647
|
+
* @see https://www.100ms.live/docs/react-native/v2/how-to-guides/configure-your-device/speaker/audio-mode-change
|
|
1042
1648
|
*
|
|
1043
1649
|
* @param {HMSAudioMode}
|
|
1044
1650
|
* @memberof HMSSDK
|
|
@@ -1057,12 +1663,16 @@ export class HMSSDK {
|
|
|
1057
1663
|
};
|
|
1058
1664
|
|
|
1059
1665
|
/**
|
|
1060
|
-
*
|
|
1666
|
+
* Adds a listener for changes in the audio output device.
|
|
1667
|
+
* This function is platform-specific and currently only implemented for Android devices.
|
|
1668
|
+
* When the audio output device changes (e.g., switching from the phone speaker to a Bluetooth headset), the specified callback function is triggered.
|
|
1669
|
+
* This can be useful for applications that need to react to changes in audio routing, such as updating the UI to reflect the current output device.
|
|
1061
1670
|
*
|
|
1062
|
-
*
|
|
1671
|
+
* Note: This API is not available on iOS as of the current implementation. Attempting to use it on iOS will result in a rejected promise with an appropriate error message.
|
|
1063
1672
|
*
|
|
1064
|
-
* @param {Function}
|
|
1673
|
+
* @param {Function} callback - The function to be called when the audio output device changes. This function does not receive any parameters.
|
|
1065
1674
|
* @memberof HMSSDK
|
|
1675
|
+
* @see https://www.100ms.live/docs/react-native/v2/how-to-guides/configure-your-device/speaker/audio-output-routing
|
|
1066
1676
|
*/
|
|
1067
1677
|
setAudioDeviceChangeListener = (callback: Function) => {
|
|
1068
1678
|
logger?.verbose('#Function setAudioDeviceChangeListener', {
|
|
@@ -1076,11 +1686,19 @@ export class HMSSDK {
|
|
|
1076
1686
|
return HMSManager.setAudioDeviceChangeListener({ id: this.id });
|
|
1077
1687
|
} else {
|
|
1078
1688
|
console.log('API currently not available for iOS');
|
|
1079
|
-
return 'API currently not available for iOS';
|
|
1689
|
+
return Promise.reject('API currently not available for iOS');
|
|
1080
1690
|
}
|
|
1081
1691
|
};
|
|
1082
1692
|
|
|
1083
|
-
|
|
1693
|
+
/**
|
|
1694
|
+
* Asynchronously retrieves a remote video track by its track ID.
|
|
1695
|
+
*
|
|
1696
|
+
* @param {string} trackId - The unique identifier for the remote video track to be retrieved.
|
|
1697
|
+
* @returns {Promise<HMSRemoteVideoTrack>} A promise that resolves to the encoded remote video track data.
|
|
1698
|
+
*/
|
|
1699
|
+
getRemoteVideoTrackFromTrackId = async (
|
|
1700
|
+
trackId: string
|
|
1701
|
+
): Promise<HMSRemoteVideoTrack> => {
|
|
1084
1702
|
logger?.verbose('#Function getRemoteVideoTrackFromTrackId', {
|
|
1085
1703
|
id: this.id,
|
|
1086
1704
|
trackId,
|
|
@@ -1094,20 +1712,37 @@ export class HMSSDK {
|
|
|
1094
1712
|
return HMSEncoder.encodeHmsRemoteVideoTrack(remoteVideoTrackData, this.id);
|
|
1095
1713
|
};
|
|
1096
1714
|
|
|
1097
|
-
|
|
1715
|
+
/**
|
|
1716
|
+
* Retrieves a remote audio track by its track ID.
|
|
1717
|
+
*
|
|
1718
|
+
* @param {string} trackId - The unique identifier for the remote audio track to be retrieved.
|
|
1719
|
+
* @returns {Promise<HMSRemoteAudioTrack>} A promise that resolves to the encoded remote audio track data.
|
|
1720
|
+
*/
|
|
1721
|
+
getRemoteAudioTrackFromTrackId = async (
|
|
1722
|
+
trackId: string
|
|
1723
|
+
): Promise<HMSRemoteAudioTrack> => {
|
|
1724
|
+
// Log the function call with the track ID for debugging purposes.
|
|
1098
1725
|
logger?.verbose('#Function getRemoteAudioTrackFromTrackId', {
|
|
1099
1726
|
id: this.id,
|
|
1100
1727
|
trackId,
|
|
1101
1728
|
});
|
|
1102
1729
|
|
|
1730
|
+
// Fetch the remote audio track data from the native HMSManager.
|
|
1103
1731
|
const remoteAudioTrackData =
|
|
1104
1732
|
await HMSManager.getRemoteAudioTrackFromTrackId({
|
|
1105
1733
|
id: this.id,
|
|
1106
1734
|
trackId,
|
|
1107
1735
|
});
|
|
1736
|
+
// Encode and return the remote audio track data.
|
|
1108
1737
|
return HMSEncoder.encodeHmsRemoteAudioTrack(remoteAudioTrackData, this.id);
|
|
1109
1738
|
};
|
|
1110
1739
|
|
|
1740
|
+
/**
|
|
1741
|
+
* Retrieves a peer object based on the provided peer ID.
|
|
1742
|
+
*
|
|
1743
|
+
* @param {string} peerId - The ID of the peer to retrieve.
|
|
1744
|
+
* @returns {HMSPeer | undefined} An encoded HMSPeer object if the peer is found otherwise `undefined`.
|
|
1745
|
+
*/
|
|
1111
1746
|
getPeerFromPeerId = (peerId: string) => {
|
|
1112
1747
|
logger?.verbose('#Function getPeerFromPeerId', {
|
|
1113
1748
|
id: this.id,
|
|
@@ -1223,12 +1858,40 @@ export class HMSSDK {
|
|
|
1223
1858
|
return HMSManager.setAlwaysScreenOn({ id: this.id, enabled });
|
|
1224
1859
|
};
|
|
1225
1860
|
|
|
1861
|
+
setPermissionsAcceptedOnAndroid = async () => {
|
|
1862
|
+
if (Platform.OS === 'ios') {
|
|
1863
|
+
Promise.reject(
|
|
1864
|
+
'setPermissionsAcceptedOnAndroid API not available for iOS'
|
|
1865
|
+
);
|
|
1866
|
+
return;
|
|
1867
|
+
}
|
|
1868
|
+
logger?.verbose('#Function setPermissionsAcceptedOnAndroid', {
|
|
1869
|
+
id: this.id,
|
|
1870
|
+
});
|
|
1871
|
+
return await HMSManager.setPermissionsAccepted({ id: this.id });
|
|
1872
|
+
};
|
|
1873
|
+
|
|
1226
1874
|
/**
|
|
1227
|
-
*
|
|
1875
|
+
* Registers an event listener for various HMS SDK events.
|
|
1228
1876
|
*
|
|
1229
|
-
*
|
|
1230
|
-
*
|
|
1877
|
+
* This method allows the registration of callbacks for different types of events that can occur within the HMS SDK.
|
|
1878
|
+
* These events include but are not limited to updates about the room, peers, tracks, and errors.
|
|
1879
|
+
* The method dynamically adds listeners based on the specified action and associates them with a callback function
|
|
1880
|
+
* to handle the event. It ensures that only one subscription exists per event type to avoid duplicate listeners.
|
|
1881
|
+
*
|
|
1882
|
+
* @param {HMSUpdateListenerActions | HMSPIPListenerActions} action - The specific action/event to listen for.
|
|
1883
|
+
* @param {Function} callback - The callback function to execute when the event occurs. The specifics of the callback parameters depend on the event type.
|
|
1231
1884
|
* @memberof HMSSDK
|
|
1885
|
+
*
|
|
1886
|
+
* @example
|
|
1887
|
+
* hmsInstance.addEventListener(HMSUpdateListenerActions.ON_JOIN, (event) => {
|
|
1888
|
+
* console.log('Joined the room:', event);
|
|
1889
|
+
* });
|
|
1890
|
+
*
|
|
1891
|
+
* @example
|
|
1892
|
+
* hmsInstance.addEventListener(HMSUpdateListenerActions.ON_PEER_UPDATE, (event) => {
|
|
1893
|
+
* console.log('Peer update:', event);
|
|
1894
|
+
* });
|
|
1232
1895
|
*/
|
|
1233
1896
|
addEventListener = (
|
|
1234
1897
|
action: HMSUpdateListenerActions | HMSPIPListenerActions,
|
|
@@ -1271,6 +1934,28 @@ export class HMSSDK {
|
|
|
1271
1934
|
this.onJoinDelegate = callback;
|
|
1272
1935
|
break;
|
|
1273
1936
|
}
|
|
1937
|
+
case HMSUpdateListenerActions.ON_PERMISSIONS_REQUESTED: {
|
|
1938
|
+
// Checking if we already have ON_PERMISSIONS_REQUESTED subscription
|
|
1939
|
+
if (
|
|
1940
|
+
!this.emitterSubscriptions[
|
|
1941
|
+
HMSUpdateListenerActions.ON_PERMISSIONS_REQUESTED
|
|
1942
|
+
]
|
|
1943
|
+
) {
|
|
1944
|
+
// Adding ON_PERMISSIONS_REQUESTED native listener
|
|
1945
|
+
const permissionsRequestedSubscription =
|
|
1946
|
+
HMSNativeEventListener.addListener(
|
|
1947
|
+
this.id,
|
|
1948
|
+
HMSUpdateListenerActions.ON_PERMISSIONS_REQUESTED,
|
|
1949
|
+
this.onPermissionsRequestedListener
|
|
1950
|
+
);
|
|
1951
|
+
this.emitterSubscriptions[
|
|
1952
|
+
HMSUpdateListenerActions.ON_PERMISSIONS_REQUESTED
|
|
1953
|
+
] = permissionsRequestedSubscription;
|
|
1954
|
+
}
|
|
1955
|
+
// Adding App Delegate listener
|
|
1956
|
+
this.onPermissionsRequestedDelegate = callback;
|
|
1957
|
+
break;
|
|
1958
|
+
}
|
|
1274
1959
|
case HMSUpdateListenerActions.ON_ROOM_UPDATE: {
|
|
1275
1960
|
// Checking if we already have ON_ROOM_UPDATE subscription
|
|
1276
1961
|
if (
|
|
@@ -1673,26 +2358,21 @@ export class HMSSDK {
|
|
|
1673
2358
|
break;
|
|
1674
2359
|
}
|
|
1675
2360
|
case HMSPIPListenerActions.ON_PIP_MODE_CHANGED: {
|
|
1676
|
-
if
|
|
1677
|
-
|
|
1678
|
-
|
|
1679
|
-
|
|
1680
|
-
|
|
1681
|
-
|
|
1682
|
-
|
|
1683
|
-
|
|
1684
|
-
|
|
1685
|
-
|
|
1686
|
-
|
|
1687
|
-
this.onPIPModeChangedListener
|
|
1688
|
-
);
|
|
1689
|
-
this.emitterSubscriptions[
|
|
1690
|
-
HMSPIPListenerActions.ON_PIP_MODE_CHANGED
|
|
1691
|
-
] = pipModeChangedSubscription;
|
|
1692
|
-
}
|
|
1693
|
-
// Adding PIP mode changed Delegate listener
|
|
1694
|
-
this.onPIPModeChangedDelegate = callback;
|
|
2361
|
+
// Checking if we already have ON_PIP_MODE_CHANGED subscription
|
|
2362
|
+
if (
|
|
2363
|
+
!this.emitterSubscriptions[HMSPIPListenerActions.ON_PIP_MODE_CHANGED]
|
|
2364
|
+
) {
|
|
2365
|
+
const pipModeChangedSubscription = HMSNativeEventListener.addListener(
|
|
2366
|
+
this.id,
|
|
2367
|
+
HMSPIPListenerActions.ON_PIP_MODE_CHANGED,
|
|
2368
|
+
this.onPIPModeChangedListener
|
|
2369
|
+
);
|
|
2370
|
+
this.emitterSubscriptions[HMSPIPListenerActions.ON_PIP_MODE_CHANGED] =
|
|
2371
|
+
pipModeChangedSubscription;
|
|
1695
2372
|
}
|
|
2373
|
+
// Adding PIP mode changed Delegate listener
|
|
2374
|
+
this.onPIPModeChangedDelegate = callback;
|
|
2375
|
+
|
|
1696
2376
|
break;
|
|
1697
2377
|
}
|
|
1698
2378
|
default:
|
|
@@ -1700,11 +2380,21 @@ export class HMSSDK {
|
|
|
1700
2380
|
};
|
|
1701
2381
|
|
|
1702
2382
|
/**
|
|
1703
|
-
*
|
|
2383
|
+
* Removes an event listener for a specified event action.
|
|
2384
|
+
*
|
|
2385
|
+
* This method allows for the deregistration of previously registered callbacks for specific event types within the HMS SDK.
|
|
2386
|
+
* By specifying the action and the callback, it ensures that the event listener associated with that action is removed,
|
|
2387
|
+
* preventing the callback from being executed when the event occurs in the future. This is useful for cleaning up resources
|
|
2388
|
+
* and avoiding potential memory leaks in applications that dynamically add and remove event listeners based on component lifecycle
|
|
2389
|
+
* or user interactions.
|
|
1704
2390
|
*
|
|
1705
|
-
* @param {
|
|
1706
|
-
* @param {
|
|
2391
|
+
* @param {HMSUpdateListenerActions | HMSPIPListenerActions} action - The specific action/event for which the listener is to be removed.
|
|
2392
|
+
* @param {Function} callback - The callback function that was originally registered for the event. This parameter is necessary to ensure
|
|
2393
|
+
* that only the specific callback associated with the action is removed.
|
|
1707
2394
|
* @memberof HMSSDK
|
|
2395
|
+
* @example
|
|
2396
|
+
* // Remove a listener for the ON_JOIN event
|
|
2397
|
+
* hmsInstance.removeEventListener(HMSUpdateListenerActions.ON_JOIN, onJoinCallback);
|
|
1708
2398
|
*/
|
|
1709
2399
|
removeEventListener = (
|
|
1710
2400
|
action: HMSUpdateListenerActions | HMSPIPListenerActions
|
|
@@ -1739,6 +2429,23 @@ export class HMSSDK {
|
|
|
1739
2429
|
this.onJoinDelegate = null;
|
|
1740
2430
|
break;
|
|
1741
2431
|
}
|
|
2432
|
+
case HMSUpdateListenerActions.ON_PERMISSIONS_REQUESTED: {
|
|
2433
|
+
const subscription =
|
|
2434
|
+
this.emitterSubscriptions[
|
|
2435
|
+
HMSUpdateListenerActions.ON_PERMISSIONS_REQUESTED
|
|
2436
|
+
];
|
|
2437
|
+
// Removing ON_PERMISSIONS_REQUESTED native listener
|
|
2438
|
+
if (subscription) {
|
|
2439
|
+
subscription.remove();
|
|
2440
|
+
|
|
2441
|
+
this.emitterSubscriptions[
|
|
2442
|
+
HMSUpdateListenerActions.ON_PERMISSIONS_REQUESTED
|
|
2443
|
+
] = undefined;
|
|
2444
|
+
}
|
|
2445
|
+
// Removing App Delegate listener
|
|
2446
|
+
this.onPermissionsRequestedDelegate = null;
|
|
2447
|
+
break;
|
|
2448
|
+
}
|
|
1742
2449
|
case HMSUpdateListenerActions.ON_ROOM_UPDATE: {
|
|
1743
2450
|
const subscription =
|
|
1744
2451
|
this.emitterSubscriptions[HMSUpdateListenerActions.ON_ROOM_UPDATE];
|
|
@@ -2105,21 +2812,6 @@ export class HMSSDK {
|
|
|
2105
2812
|
logger?.verbose('#Function REMOVE_ALL_LISTENER', { id: this.id });
|
|
2106
2813
|
};
|
|
2107
2814
|
|
|
2108
|
-
/**
|
|
2109
|
-
* - Below are all the listeners that are connected to native side.
|
|
2110
|
-
*
|
|
2111
|
-
* - All of the are connected when build function is called, we can connect them to the app by
|
|
2112
|
-
* calling {@link addEventListener} with corresponding event type.
|
|
2113
|
-
*
|
|
2114
|
-
* - Before passing the data to the eventListener of the app these listeners encode the data in
|
|
2115
|
-
* ts classes for a proper structuring of the data.
|
|
2116
|
-
*
|
|
2117
|
-
* - Even When event listeners of the app are disconnected using {@link removeEventListener} or
|
|
2118
|
-
* {@link removeAllListeners} or not even connected in first place, these functions still run to
|
|
2119
|
-
* maintain the current state of the instance of {@link HMSSDK}.
|
|
2120
|
-
*
|
|
2121
|
-
*/
|
|
2122
|
-
|
|
2123
2815
|
onPreviewListener = (data: any) => {
|
|
2124
2816
|
if (data.id !== this.id) {
|
|
2125
2817
|
return;
|
|
@@ -2154,6 +2846,19 @@ export class HMSSDK {
|
|
|
2154
2846
|
}
|
|
2155
2847
|
};
|
|
2156
2848
|
|
|
2849
|
+
onPermissionsRequestedListener = (data: {
|
|
2850
|
+
id: string;
|
|
2851
|
+
permissions: Array<string>;
|
|
2852
|
+
}) => {
|
|
2853
|
+
if (data.id !== this.id) {
|
|
2854
|
+
return;
|
|
2855
|
+
}
|
|
2856
|
+
if (this.onPermissionsRequestedDelegate) {
|
|
2857
|
+
logger?.verbose('#Listener ON_PERMISSIONS_REQUESTED_LISTENER_CALL', data);
|
|
2858
|
+
this.onPermissionsRequestedDelegate({ ...data });
|
|
2859
|
+
}
|
|
2860
|
+
};
|
|
2861
|
+
|
|
2157
2862
|
onRoomListener = (data: any) => {
|
|
2158
2863
|
if (data.id !== this.id) {
|
|
2159
2864
|
return;
|
|
@@ -2504,6 +3209,15 @@ export class HMSSDK {
|
|
|
2504
3209
|
}
|
|
2505
3210
|
};
|
|
2506
3211
|
|
|
3212
|
+
/**
|
|
3213
|
+
* Listener for the `SessionStoreAvailable` event.
|
|
3214
|
+
*
|
|
3215
|
+
* This listener is triggered when the session store becomes available in the SDK. It is an important event
|
|
3216
|
+
* for developers who need to access or manipulate the session store after it has been initialized and made available.
|
|
3217
|
+
*
|
|
3218
|
+
* @param {Object} data - The event data.
|
|
3219
|
+
* @param {HMSSessionStore} data.sessionStore - The session store object that has been made available.
|
|
3220
|
+
*/
|
|
2507
3221
|
onSessionStoreAvailableListener = (data: { id: string }) => {
|
|
2508
3222
|
if (data.id !== this.id) {
|
|
2509
3223
|
return;
|
|
@@ -2520,6 +3234,21 @@ export class HMSSDK {
|
|
|
2520
3234
|
}
|
|
2521
3235
|
};
|
|
2522
3236
|
|
|
3237
|
+
/**
|
|
3238
|
+
* Listener for the `PIPRoomLeave` event. Android only.
|
|
3239
|
+
*
|
|
3240
|
+
* This listener is triggered when a room is left from the Picture in Picture (PIP) mode, which is currently supported only on Android platforms.
|
|
3241
|
+
* It is an essential event for handling cleanup or UI updates when the user exits the room while in PIP mode.
|
|
3242
|
+
* @param {Object} data - The event data.
|
|
3243
|
+
* @memberof HMSSDK
|
|
3244
|
+
* @example
|
|
3245
|
+
* // Example of handling the `PIPRoomLeave` event
|
|
3246
|
+
* hms.onPIPRoomLeave((data) => {
|
|
3247
|
+
* // Handle PIP room leave event
|
|
3248
|
+
* });
|
|
3249
|
+
*
|
|
3250
|
+
* @see https://www.100ms.live/docs/react-native/v2/how-to-guides/set-up-video-conferencing/render-video/pip-mode
|
|
3251
|
+
*/
|
|
2523
3252
|
onPIPRoomLeaveListener = (data: { id: string }) => {
|
|
2524
3253
|
if (data.id !== this.id) {
|
|
2525
3254
|
return;
|
|
@@ -2535,7 +3264,29 @@ export class HMSSDK {
|
|
|
2535
3264
|
}
|
|
2536
3265
|
};
|
|
2537
3266
|
|
|
2538
|
-
|
|
3267
|
+
/**
|
|
3268
|
+
* Listener for the `PIPModeChanged` event.
|
|
3269
|
+
* This listener is triggered when the Picture in Picture (PIP) mode is toggled on or off.
|
|
3270
|
+
* It is an important event for handling UI updates or other actions when the user enters or exits PIP mode.
|
|
3271
|
+
* @param {Object} data - The event data.
|
|
3272
|
+
* @param {boolean} data.isInPictureInPictureMode - A boolean value indicating whether the user is currently in PIP mode.
|
|
3273
|
+
* @returns {void} - Returns nothing.
|
|
3274
|
+
* @memberof HMSSDK
|
|
3275
|
+
* @example
|
|
3276
|
+
* // Example of handling the `PIPModeChanged` event
|
|
3277
|
+
* hms.onPIPModeChanged((data) => {
|
|
3278
|
+
* if (data.isInPictureInPictureMode) {
|
|
3279
|
+
* // Handle PIP mode enabled
|
|
3280
|
+
* } else {
|
|
3281
|
+
* // Handle PIP mode disabled
|
|
3282
|
+
* }
|
|
3283
|
+
* });
|
|
3284
|
+
*
|
|
3285
|
+
* @see https://www.100ms.live/docs/react-native/v2/how-to-guides/set-up-video-conferencing/render-video/pip-mode
|
|
3286
|
+
*/
|
|
3287
|
+
onPIPModeChangedListener = (data: {
|
|
3288
|
+
isInPictureInPictureMode: boolean;
|
|
3289
|
+
}): void => {
|
|
2539
3290
|
if (this.onPIPModeChangedDelegate) {
|
|
2540
3291
|
logger?.verbose('#Listener onPIPModeChanged_CALL', data);
|
|
2541
3292
|
|
|
@@ -2543,24 +3294,185 @@ export class HMSSDK {
|
|
|
2543
3294
|
}
|
|
2544
3295
|
};
|
|
2545
3296
|
|
|
3297
|
+
/**
|
|
3298
|
+
* - This function is used to check if Picture in Picture mode is supported on the device
|
|
3299
|
+
* @returns {Promise<boolean>} - Returns a boolean value indicating whether Picture in Picture mode is supported on the device.
|
|
3300
|
+
* @memberof HMSSDK
|
|
3301
|
+
* @example
|
|
3302
|
+
* // Example of checking if Picture in Picture mode is supported
|
|
3303
|
+
* const isPipModeSupported = await hms.isPipModeSupported();
|
|
3304
|
+
* if (isPipModeSupported) {
|
|
3305
|
+
* // Picture in Picture mode is supported
|
|
3306
|
+
* } else {
|
|
3307
|
+
* // Picture in Picture mode is not supported
|
|
3308
|
+
* }
|
|
3309
|
+
* @example
|
|
3310
|
+
* // Example of checking if Picture in Picture mode is supported
|
|
3311
|
+
* hms.isPipModeSupported().then((isPipModeSupported) => {
|
|
3312
|
+
* if (isPipModeSupported) {
|
|
3313
|
+
* // Picture in Picture mode is supported
|
|
3314
|
+
* } else {
|
|
3315
|
+
* // Picture in Picture mode is not supported
|
|
3316
|
+
* }
|
|
3317
|
+
* });
|
|
3318
|
+
*
|
|
3319
|
+
* @see https://www.100ms.live/docs/react-native/v2/how-to-guides/set-up-video-conferencing/render-video/pip-mode
|
|
3320
|
+
*/
|
|
2546
3321
|
async isPipModeSupported(): Promise<undefined | boolean> {
|
|
2547
|
-
|
|
3322
|
+
const data = { id: this.id };
|
|
3323
|
+
logger?.verbose('#Function isPipModeSupported', data);
|
|
3324
|
+
return HMSManager.handlePipActions('isPipModeSupported', data);
|
|
2548
3325
|
}
|
|
2549
3326
|
|
|
2550
|
-
|
|
3327
|
+
/**
|
|
3328
|
+
* Asynchronously enters Picture in Picture (PIP) mode with optional configuration.
|
|
3329
|
+
*
|
|
3330
|
+
* This method attempts to enter PIP mode based on the provided configuration.
|
|
3331
|
+
* It returns a promise that resolves to a boolean indicating the success of the operation.
|
|
3332
|
+
* If PIP mode is not supported or fails to activate, the promise may resolve to `undefined` or `false`.
|
|
3333
|
+
*
|
|
3334
|
+
* @param {HMSPIPConfig} [data] - Optional configuration for entering PIP mode. This can include settings such as `autoEnterPipMode` and `aspectRatio`.
|
|
3335
|
+
* @returns {Promise<boolean>} - A promise that resolves to `true` if PIP mode was successfully entered, `false` if unsuccessful or PIP mode is not supported.
|
|
3336
|
+
* @throws {Error} - Throws an error if the operation fails.
|
|
3337
|
+
* @memberof HMSSDK
|
|
3338
|
+
* @example
|
|
3339
|
+
* // Example of entering Picture in Picture mode
|
|
3340
|
+
* hms.enterPipMode().then((success) => {
|
|
3341
|
+
* if (success) {
|
|
3342
|
+
* // Picture in Picture mode entered successfully
|
|
3343
|
+
* } else {
|
|
3344
|
+
* // Picture in Picture mode could not be entered
|
|
3345
|
+
* }
|
|
3346
|
+
* });
|
|
3347
|
+
* @example
|
|
3348
|
+
* // Example of entering Picture in Picture mode with configuration
|
|
3349
|
+
* const success = await hms.enterPipMode({ autoEnterPipMode: true, aspectRatio: [16,9] });
|
|
3350
|
+
* if (success) {
|
|
3351
|
+
* // Picture in Picture mode entered successfully
|
|
3352
|
+
* } else {
|
|
3353
|
+
* // Picture in Picture mode could not be entered
|
|
3354
|
+
* }
|
|
3355
|
+
*
|
|
3356
|
+
* @see https://www.100ms.live/docs/react-native/v2/how-to-guides/set-up-video-conferencing/render-video/pip-mode
|
|
3357
|
+
*/
|
|
3358
|
+
async enterPipMode(data?: HMSPIPConfig): Promise<boolean> {
|
|
3359
|
+
logger?.verbose('#Function enterPipMode', data);
|
|
2551
3360
|
return HMSManager.handlePipActions('enterPipMode', {
|
|
2552
3361
|
...data,
|
|
2553
3362
|
id: this.id,
|
|
2554
3363
|
});
|
|
2555
3364
|
}
|
|
2556
3365
|
|
|
2557
|
-
|
|
3366
|
+
/**
|
|
3367
|
+
* Asynchronously sets the parameters for Picture in Picture (PIP) mode.
|
|
3368
|
+
*
|
|
3369
|
+
* This method configures the PIP window according to the provided `HMSPIPConfig` settings. It can be used to adjust various aspects of the PIP mode, such as its size, aspect ratio, and more. The method returns a promise that resolves to a boolean indicating the success of the operation. If the PIP mode is not supported or the configuration fails, the promise may resolve to `undefined` or `false`.
|
|
3370
|
+
*
|
|
3371
|
+
* @param {HMSPIPConfig} [data] - Optional configuration for setting PIP mode parameters. This can include settings such as `aspectRatio`, `autoEnterPipMode`, etc.
|
|
3372
|
+
* @returns {Promise<boolean | undefined>} - A promise that resolves to `true` if the PIP parameters were successfully set, `false` if unsuccessful. `undefined` may be returned if PIP mode is not supported.
|
|
3373
|
+
* @throws {Error} - Throws an error if the operation fails.
|
|
3374
|
+
* @memberof HMSSDK
|
|
3375
|
+
* @example
|
|
3376
|
+
* // Example of setting Picture in Picture mode parameters
|
|
3377
|
+
* hms.setPipParams({ aspectRatio: [16, 9], autoEnterPipMode: true }).then((success) => {
|
|
3378
|
+
* if (success) {
|
|
3379
|
+
* // Picture in Picture mode parameters set successfully
|
|
3380
|
+
* } else {
|
|
3381
|
+
* // Picture in Picture mode parameters could not be set
|
|
3382
|
+
* }
|
|
3383
|
+
* });
|
|
3384
|
+
*
|
|
3385
|
+
* @see https://www.100ms.live/docs/react-native/v2/how-to-guides/set-up-video-conferencing/render-video/pip-mode
|
|
3386
|
+
*/
|
|
3387
|
+
async setPipParams(data?: HMSPIPConfig): Promise<boolean | undefined> {
|
|
2558
3388
|
return HMSManager.handlePipActions('setPictureInPictureParams', {
|
|
2559
3389
|
...data,
|
|
2560
3390
|
id: this.id,
|
|
2561
3391
|
});
|
|
2562
3392
|
}
|
|
2563
3393
|
|
|
3394
|
+
/**
|
|
3395
|
+
* Changes the video track used in Picture in Picture (PIP) mode on iOS devices.
|
|
3396
|
+
*
|
|
3397
|
+
* This function is specifically designed for iOS platforms to switch the video track displayed in PIP mode.
|
|
3398
|
+
* It takes a `HMSVideoTrack` object as an argument, which contains the track ID of the video track to be displayed in PIP mode.
|
|
3399
|
+
* This allows for dynamic changes to the video source in PIP mode, enhancing the flexibility of video presentation in applications that support PIP.
|
|
3400
|
+
*
|
|
3401
|
+
* @param {HMSVideoTrack} track - The video track to be used in PIP mode. Must contain a valid `trackId`.
|
|
3402
|
+
* @returns {Promise} - A promise that resolves when the video track has been successfully changed for PIP mode, or rejects with an error if the operation fails.
|
|
3403
|
+
* @throws {Error} - Throws an error if the operation fails.
|
|
3404
|
+
* @async
|
|
3405
|
+
* @function changeIOSPIPVideoTrack
|
|
3406
|
+
* @see https://www.100ms.live/docs/react-native/v2/how-to-guides/set-up-video-conferencing/render-video/pip-mode
|
|
3407
|
+
* @memberof HMSSDK
|
|
3408
|
+
* @example
|
|
3409
|
+
* // Example of changing the video track for PIP mode on iOS
|
|
3410
|
+
* hms.changeIOSPIPVideoTrack(videoTrack).then(() => {
|
|
3411
|
+
* console.log('Video track for PIP mode changed successfully');
|
|
3412
|
+
* }).catch(error => {
|
|
3413
|
+
* console.error('Failed to change video track for PIP mode', error);
|
|
3414
|
+
* });
|
|
3415
|
+
*
|
|
3416
|
+
*/
|
|
3417
|
+
async changeIOSPIPVideoTrack(track: HMSVideoTrack) {
|
|
3418
|
+
if (Platform.OS === 'ios') {
|
|
3419
|
+
const data = {
|
|
3420
|
+
id: this.id,
|
|
3421
|
+
trackId: track.trackId,
|
|
3422
|
+
};
|
|
3423
|
+
logger?.verbose('#Function changeIOSPIPVideoTrack', data);
|
|
3424
|
+
return await HMSManager.changeIOSPIPVideoTrack(data);
|
|
3425
|
+
} else {
|
|
3426
|
+
return Promise.resolve(false);
|
|
3427
|
+
}
|
|
3428
|
+
}
|
|
3429
|
+
|
|
3430
|
+
/**
|
|
3431
|
+
* - This function is used to automatically switch the video track of the active speaker to the Picture in Picture (PIP) mode window on iOS devices.
|
|
3432
|
+
* - When enabled, the video track of the active speaker will be displayed in the PIP mode window, providing a focused view of the current speaker during a meeting or conference.
|
|
3433
|
+
* @param {boolean} enable - A boolean value indicating whether to enable or disable the automatic switching of the active speaker video track in PIP mode.
|
|
3434
|
+
* @returns {Promise} - A promise that resolves when the operation is successful, or rejects with an error if the operation fails.
|
|
3435
|
+
* @throws {Error} - Throws an error if the operation fails.
|
|
3436
|
+
* @async
|
|
3437
|
+
* @function setActiveSpeakerInIOSPIP
|
|
3438
|
+
* @see https://www.100ms.live/docs/react-native/v2/how-to-guides/set-up-video-conferencing/render-video/pip-mode
|
|
3439
|
+
* @memberof HMSSDK
|
|
3440
|
+
* @example
|
|
3441
|
+
* // Example of enabling the automatic switching of the active speaker video track in PIP mode
|
|
3442
|
+
* hms.setActiveSpeakerInIOSPIP(true).then(() => {
|
|
3443
|
+
* console.log('Active speaker video track enabled in PIP mode');
|
|
3444
|
+
* }).catch(error => {
|
|
3445
|
+
* console.error('Failed to enable active speaker video track in PIP mode', error);
|
|
3446
|
+
* });
|
|
3447
|
+
*/
|
|
3448
|
+
async setActiveSpeakerInIOSPIP(enable: boolean): Promise<any> {
|
|
3449
|
+
if (Platform.OS === 'ios') {
|
|
3450
|
+
const data = {
|
|
3451
|
+
id: this.id,
|
|
3452
|
+
enable,
|
|
3453
|
+
};
|
|
3454
|
+
logger?.verbose('#Function setActiveSpeakerInIOSPIP', data);
|
|
3455
|
+
return await HMSManager.setActiveSpeakerInIOSPIP(data);
|
|
3456
|
+
} else {
|
|
3457
|
+
return Promise.resolve(false);
|
|
3458
|
+
}
|
|
3459
|
+
}
|
|
3460
|
+
|
|
3461
|
+
/**
|
|
3462
|
+
* Initiates real-time transcription services.
|
|
3463
|
+
*
|
|
3464
|
+
* This asynchronous function triggers the HMSManager to start real-time transcription services,
|
|
3465
|
+
* capturing and transcribing audio in real time.
|
|
3466
|
+
*
|
|
3467
|
+
* @async
|
|
3468
|
+
* @function startRealTimeTranscription
|
|
3469
|
+
* @memberof HMSSDK
|
|
3470
|
+
* @example
|
|
3471
|
+
* // Example of starting real-time transcription services
|
|
3472
|
+
* await hmsInstance.startRealTimeTranscription();
|
|
3473
|
+
*
|
|
3474
|
+
* @see https://www.100ms.live/docs/react-native/v2/how-to-guides/extend-capabilities/live-captions
|
|
3475
|
+
*/
|
|
2564
3476
|
async startRealTimeTranscription() {
|
|
2565
3477
|
const data = {
|
|
2566
3478
|
id: this.id,
|
|
@@ -2570,6 +3482,19 @@ export class HMSSDK {
|
|
|
2570
3482
|
return HMSManager.handleRealTimeTranscription(data);
|
|
2571
3483
|
}
|
|
2572
3484
|
|
|
3485
|
+
/**
|
|
3486
|
+
* Stops the real-time transcription services.
|
|
3487
|
+
*
|
|
3488
|
+
* This asynchronous function signals the HMSManager to terminate the ongoing real-time transcription services.
|
|
3489
|
+
*
|
|
3490
|
+
* @async
|
|
3491
|
+
* @function stopRealTimeTranscription
|
|
3492
|
+
* @memberof HMSSDK
|
|
3493
|
+
* @example
|
|
3494
|
+
* await hmsInstance.stopRealTimeTranscription();
|
|
3495
|
+
*
|
|
3496
|
+
* @see https://www.100ms.live/docs/react-native/v2/how-to-guides/extend-capabilities/live-captions
|
|
3497
|
+
*/
|
|
2573
3498
|
async stopRealTimeTranscription() {
|
|
2574
3499
|
const data = {
|
|
2575
3500
|
id: this.id,
|
|
@@ -2587,18 +3512,35 @@ export class HMSSDK {
|
|
|
2587
3512
|
}
|
|
2588
3513
|
|
|
2589
3514
|
/**
|
|
2590
|
-
*
|
|
2591
|
-
*
|
|
3515
|
+
* Retrieves the current logger instance used by the HMSSDK.
|
|
3516
|
+
*
|
|
3517
|
+
* This static method provides access to the logger instance, allowing for the manipulation of log levels and the retrieval of log information. It is useful for debugging purposes, enabling developers to monitor and adjust the verbosity of logs generated by the HMS SDK.
|
|
3518
|
+
*
|
|
3519
|
+
* @returns {HMSLogger} The current logger instance.
|
|
2592
3520
|
* @memberof HMSSDK
|
|
3521
|
+
* @example
|
|
3522
|
+
* const logger = HMSSDK.getLogger();
|
|
3523
|
+
* logger.setLevel('debug'); // Adjusting the log level to debug
|
|
2593
3524
|
*/
|
|
2594
3525
|
static getLogger() {
|
|
2595
3526
|
return getLogger();
|
|
2596
3527
|
}
|
|
2597
3528
|
|
|
2598
3529
|
/**
|
|
2599
|
-
*
|
|
2600
|
-
*
|
|
3530
|
+
* Updates the logger instance for this HMSSDK instance.
|
|
3531
|
+
*
|
|
3532
|
+
* This method allows for the dynamic updating of the logger instance used by the HMSSDK.
|
|
3533
|
+
* It can be used to change the logger settings or replace the logger entirely at runtime.
|
|
3534
|
+
* This is particularly useful for adjusting log levels or redirecting log output based on application state or user preferences.
|
|
3535
|
+
*
|
|
3536
|
+
* @param {HMSLogger} hmsLogger - The new logger instance to be used. If not provided, the logger will be reset to default.
|
|
2601
3537
|
* @memberof HMSSDK
|
|
3538
|
+
* @example
|
|
3539
|
+
* // Set a custom logger with a specific configuration
|
|
3540
|
+
* const customLogger = new HMSLogger();
|
|
3541
|
+
* customLogger.setLevel('verbose');
|
|
3542
|
+
* hmsInstance.setLogger(customLogger);
|
|
3543
|
+
*
|
|
2602
3544
|
*/
|
|
2603
3545
|
setLogger = (hmsLogger?: HMSLogger) => {
|
|
2604
3546
|
setLogger(this.id, hmsLogger);
|