@100mslive/react-native-hms 1.8.0 → 1.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/android/build.gradle +3 -3
- package/android/local.properties +8 -1
- package/android/src/main/java/com/reactnativehmssdk/HMSDecoder.kt +15 -5
- package/android/src/main/java/com/reactnativehmssdk/HMSHelper.kt +43 -5
- package/android/src/main/java/com/reactnativehmssdk/HMSManager.kt +120 -25
- package/android/src/main/java/com/reactnativehmssdk/HMSRNSDK.kt +220 -26
- package/ios/HMSConstants.swift +1 -0
- package/ios/HMSDecoder.swift +16 -5
- package/ios/HMSHelper.swift +33 -4
- package/ios/HMSManager.m +26 -0
- package/ios/HMSManager.swift +45 -1
- package/ios/HMSRNSDK.swift +158 -15
- package/ios/Hmssdk.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
- package/ios/Hmssdk.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
- package/ios/Hmssdk.xcodeproj/project.xcworkspace/xcuserdata/jatinnagar.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- package/ios/Hmssdk.xcodeproj/xcuserdata/jatinnagar.xcuserdatad/xcschemes/xcschememanagement.plist +14 -0
- package/lib/commonjs/classes/HMSAudioCodec.js +1 -2
- package/lib/commonjs/classes/HMSAudioCodec.js.map +1 -1
- package/lib/commonjs/classes/HMSAudioDevice.js +1 -2
- package/lib/commonjs/classes/HMSAudioDevice.js.map +1 -1
- package/lib/commonjs/classes/HMSAudioMixingMode.js +1 -2
- package/lib/commonjs/classes/HMSAudioMixingMode.js.map +1 -1
- package/lib/commonjs/classes/HMSAudioMode.js +1 -2
- package/lib/commonjs/classes/HMSAudioMode.js.map +1 -1
- package/lib/commonjs/classes/HMSCameraFacing.js +1 -2
- package/lib/commonjs/classes/HMSCameraFacing.js.map +1 -1
- package/lib/commonjs/classes/HMSConstants.js +1 -2
- package/lib/commonjs/classes/HMSConstants.js.map +1 -1
- package/lib/commonjs/classes/HMSEventEmitter.js +1 -2
- package/lib/commonjs/classes/HMSEventEmitter.js.map +1 -1
- package/lib/commonjs/classes/HMSIOSAudioMode.js +1 -2
- package/lib/commonjs/classes/HMSIOSAudioMode.js.map +1 -1
- package/lib/commonjs/classes/HMSLayer.js +1 -2
- package/lib/commonjs/classes/HMSLayer.js.map +1 -1
- package/lib/commonjs/classes/HMSLogAlarmManager.js +1 -2
- package/lib/commonjs/classes/HMSLogAlarmManager.js.map +1 -1
- package/lib/commonjs/classes/HMSLogLevel.js +1 -2
- package/lib/commonjs/classes/HMSLogLevel.js.map +1 -1
- package/lib/commonjs/classes/HMSLogger.js +1 -2
- package/lib/commonjs/classes/HMSLogger.js.map +1 -1
- package/lib/commonjs/classes/HMSManagerModule.js +1 -2
- package/lib/commonjs/classes/HMSManagerModule.js.map +1 -1
- package/lib/commonjs/classes/HMSMessageRecipientType.js +1 -2
- package/lib/commonjs/classes/HMSMessageRecipientType.js.map +1 -1
- package/lib/commonjs/classes/HMSNativeEventListener.js +1 -2
- package/lib/commonjs/classes/HMSNativeEventListener.js.map +1 -1
- package/lib/commonjs/classes/HMSPIPListenerActions.js +2 -2
- package/lib/commonjs/classes/HMSPIPListenerActions.js.map +1 -1
- package/lib/commonjs/classes/HMSPeer.js +15 -0
- package/lib/commonjs/classes/HMSPeer.js.map +1 -1
- package/lib/commonjs/classes/HMSPeerListIterator.js +64 -0
- package/lib/commonjs/classes/HMSPeerListIterator.js.map +1 -0
- package/lib/commonjs/classes/HMSPeerListIteratorOptions.js +2 -0
- package/lib/commonjs/classes/HMSPeerListIteratorOptions.js.map +1 -0
- package/lib/commonjs/classes/HMSPeerUpdate.js +3 -4
- package/lib/commonjs/classes/HMSPeerUpdate.js.map +1 -1
- package/lib/commonjs/classes/HMSPeersCache.js +8 -2
- package/lib/commonjs/classes/HMSPeersCache.js.map +1 -1
- package/lib/commonjs/classes/HMSQualityLimitationReason.js +1 -2
- package/lib/commonjs/classes/HMSQualityLimitationReason.js.map +1 -1
- package/lib/commonjs/classes/HMSRoomCache.js +1 -2
- package/lib/commonjs/classes/HMSRoomCache.js.map +1 -1
- package/lib/commonjs/classes/HMSRoomUpdate.js +1 -2
- package/lib/commonjs/classes/HMSRoomUpdate.js.map +1 -1
- package/lib/commonjs/classes/HMSSDK.js +152 -6
- package/lib/commonjs/classes/HMSSDK.js.map +1 -1
- package/lib/commonjs/classes/HMSTrackSettingsInitState.js +1 -2
- package/lib/commonjs/classes/HMSTrackSettingsInitState.js.map +1 -1
- package/lib/commonjs/classes/HMSTrackSource.js +1 -2
- package/lib/commonjs/classes/HMSTrackSource.js.map +1 -1
- package/lib/commonjs/classes/HMSTrackType.js +1 -2
- package/lib/commonjs/classes/HMSTrackType.js.map +1 -1
- package/lib/commonjs/classes/HMSTrackUpdate.js +1 -2
- package/lib/commonjs/classes/HMSTrackUpdate.js.map +1 -1
- package/lib/commonjs/classes/HMSUpdateListenerActions.js +2 -2
- package/lib/commonjs/classes/HMSUpdateListenerActions.js.map +1 -1
- package/lib/commonjs/classes/HMSVideoCodec.js +1 -2
- package/lib/commonjs/classes/HMSVideoCodec.js.map +1 -1
- package/lib/commonjs/classes/HMSVideoViewMode.js +1 -2
- package/lib/commonjs/classes/HMSVideoViewMode.js.map +1 -1
- package/lib/commonjs/classes/HmsView.js +3 -4
- package/lib/commonjs/classes/HmsView.js.map +1 -1
- package/lib/commonjs/components/HMSHLSPlayer/HMSHLSPlayer.js +3 -4
- package/lib/commonjs/components/HMSHLSPlayer/HMSHLSPlayer.js.map +1 -1
- package/lib/commonjs/components/HMSHLSPlayer/RCTHMSHLSPlayer.js +2 -4
- package/lib/commonjs/components/HMSHLSPlayer/RCTHMSHLSPlayer.js.map +1 -1
- package/lib/commonjs/components/HMSHLSPlayer/hooks.js +5 -10
- package/lib/commonjs/components/HMSHLSPlayer/hooks.js.map +1 -1
- package/lib/commonjs/hooks/useHMSPeerUpdates.js +2 -2
- package/lib/commonjs/hooks/useHMSPeerUpdates.js.map +1 -1
- package/lib/commonjs/index.js +1 -2
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/stores/hls-player-stats-store.js +1 -2
- package/lib/commonjs/stores/hls-player-stats-store.js.map +1 -1
- package/lib/commonjs/stores/hms-store.js +1 -2
- package/lib/commonjs/stores/hms-store.js.map +1 -1
- package/lib/commonjs/types.js +3 -6
- package/lib/commonjs/types.js.map +1 -1
- package/lib/module/classes/HMSPIPListenerActions.js +1 -0
- package/lib/module/classes/HMSPIPListenerActions.js.map +1 -1
- package/lib/module/classes/HMSPeer.js +15 -0
- package/lib/module/classes/HMSPeer.js.map +1 -1
- package/lib/module/classes/HMSPeerListIterator.js +58 -0
- package/lib/module/classes/HMSPeerListIterator.js.map +1 -0
- package/lib/module/classes/HMSPeerListIteratorOptions.js +2 -0
- package/lib/module/classes/HMSPeerListIteratorOptions.js.map +1 -0
- package/lib/module/classes/HMSPeerUpdate.js +2 -1
- package/lib/module/classes/HMSPeerUpdate.js.map +1 -1
- package/lib/module/classes/HMSPeersCache.js +7 -0
- package/lib/module/classes/HMSPeersCache.js.map +1 -1
- package/lib/module/classes/HMSSDK.js +153 -7
- package/lib/module/classes/HMSSDK.js.map +1 -1
- package/lib/module/classes/HMSUpdateListenerActions.js +1 -0
- package/lib/module/classes/HMSUpdateListenerActions.js.map +1 -1
- package/lib/typescript/classes/HMSPIPListenerActions.d.ts +1 -0
- package/lib/typescript/classes/HMSPeer.d.ts +3 -0
- package/lib/typescript/classes/HMSPeerListIterator.d.ts +9 -0
- package/lib/typescript/classes/HMSPeerListIteratorOptions.d.ts +24 -0
- package/lib/typescript/classes/HMSPeerUpdate.d.ts +2 -1
- package/lib/typescript/classes/HMSPeersCache.d.ts +1 -0
- package/lib/typescript/classes/HMSSDK.d.ts +46 -1
- package/lib/typescript/classes/HMSUpdateListenerActions.d.ts +2 -1
- package/package.json +1 -1
- package/sdk-versions.json +2 -2
- package/src/classes/HMSPIPListenerActions.ts +1 -0
- package/src/classes/HMSPeer.ts +25 -0
- package/src/classes/HMSPeerListIterator.ts +60 -0
- package/src/classes/HMSPeerListIteratorOptions.ts +26 -0
- package/src/classes/HMSPeerUpdate.ts +2 -0
- package/src/classes/HMSPeersCache.ts +7 -0
- package/src/classes/HMSSDK.tsx +187 -4
- package/src/classes/HMSUpdateListenerActions.ts +1 -0
- package/android/.gradle/6.7.1/executionHistory/executionHistory.bin +0 -0
- package/android/.gradle/6.7.1/executionHistory/executionHistory.lock +0 -0
- package/android/.gradle/6.7.1/fileChanges/last-build.bin +0 -0
- package/android/.gradle/6.7.1/fileHashes/fileHashes.bin +0 -0
- package/android/.gradle/6.7.1/fileHashes/fileHashes.lock +0 -0
- package/android/.gradle/6.7.1/gc.properties +0 -0
- package/android/.gradle/6.9/executionHistory/executionHistory.bin +0 -0
- package/android/.gradle/6.9/executionHistory/executionHistory.lock +0 -0
- package/android/.gradle/6.9/fileChanges/last-build.bin +0 -0
- package/android/.gradle/6.9/fileHashes/fileHashes.bin +0 -0
- package/android/.gradle/6.9/fileHashes/fileHashes.lock +0 -0
- package/android/.gradle/6.9/gc.properties +0 -0
- package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
- package/android/.gradle/buildOutputCleanup/cache.properties +0 -2
- package/android/.gradle/buildOutputCleanup/outputFiles.bin +0 -0
- package/android/.gradle/checksums/checksums.lock +0 -0
- package/android/.gradle/checksums/md5-checksums.bin +0 -0
- package/android/.gradle/checksums/sha1-checksums.bin +0 -0
- package/android/.gradle/configuration-cache/gc.properties +0 -0
- package/android/.gradle/vcs-1/gc.properties +0 -0
|
@@ -26,6 +26,7 @@ export let HMSUpdateListenerActions = /*#__PURE__*/function (HMSUpdateListenerAc
|
|
|
26
26
|
HMSUpdateListenerActions["ON_AUDIO_DEVICE_CHANGED"] = "ON_AUDIO_DEVICE_CHANGED";
|
|
27
27
|
HMSUpdateListenerActions["ON_SESSION_STORE_AVAILABLE"] = "ON_SESSION_STORE_AVAILABLE";
|
|
28
28
|
HMSUpdateListenerActions["ON_SESSION_STORE_CHANGED"] = "ON_SESSION_STORE_CHANGED";
|
|
29
|
+
HMSUpdateListenerActions["ON_PEER_LIST_UPDATED"] = "ON_PEER_LIST_UPDATED";
|
|
29
30
|
return HMSUpdateListenerActions;
|
|
30
31
|
}({});
|
|
31
32
|
//# sourceMappingURL=HMSUpdateListenerActions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["HMSUpdateListenerActions"],"sources":["HMSUpdateListenerActions.ts"],"sourcesContent":["/**\n * These are the available events emitted by the `HMSSDK`\n *\n * For more info about these events, checkout Event Listener docs\n * {@link https://www.100ms.live/docs/react-native/v2/how-to-guides/listen-to-room-updates/event-listeners}\n */\nexport enum HMSUpdateListenerActions {\n ON_PREVIEW = 'ON_PREVIEW',\n ON_JOIN = 'ON_JOIN',\n ON_ROOM_UPDATE = 'ON_ROOM_UPDATE',\n ON_PEER_UPDATE = '3',\n ON_TRACK_UPDATE = 'ON_TRACK_UPDATE',\n ON_ERROR = 'ON_ERROR',\n ON_MESSAGE = 'ON_MESSAGE',\n ON_SPEAKER = 'ON_SPEAKER',\n RECONNECTING = 'RECONNECTING',\n RECONNECTED = 'RECONNECTED',\n ON_ROLE_CHANGE_REQUEST = 'ON_ROLE_CHANGE_REQUEST',\n ON_CHANGE_TRACK_STATE_REQUEST = 'ON_CHANGE_TRACK_STATE_REQUEST',\n ON_REMOVED_FROM_ROOM = 'ON_REMOVED_FROM_ROOM',\n ON_RTC_STATS = 'ON_RTC_STATS',\n ON_LOCAL_AUDIO_STATS = 'ON_LOCAL_AUDIO_STATS',\n ON_LOCAL_VIDEO_STATS = 'ON_LOCAL_VIDEO_STATS',\n ON_REMOTE_AUDIO_STATS = 'ON_REMOTE_AUDIO_STATS',\n ON_REMOTE_VIDEO_STATS = 'ON_REMOTE_VIDEO_STATS',\n ON_AUDIO_DEVICE_CHANGED = 'ON_AUDIO_DEVICE_CHANGED',\n ON_SESSION_STORE_AVAILABLE = 'ON_SESSION_STORE_AVAILABLE',\n ON_SESSION_STORE_CHANGED = 'ON_SESSION_STORE_CHANGED',\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,WAAYA,wBAAwB,0BAAxBA,wBAAwB;EAAxBA,wBAAwB;EAAxBA,wBAAwB;EAAxBA,wBAAwB;EAAxBA,wBAAwB;EAAxBA,wBAAwB;EAAxBA,wBAAwB;EAAxBA,wBAAwB;EAAxBA,wBAAwB;EAAxBA,wBAAwB;EAAxBA,wBAAwB;EAAxBA,wBAAwB;EAAxBA,wBAAwB;EAAxBA,wBAAwB;EAAxBA,wBAAwB;EAAxBA,wBAAwB;EAAxBA,wBAAwB;EAAxBA,wBAAwB;EAAxBA,wBAAwB;EAAxBA,wBAAwB;EAAxBA,wBAAwB;EAAxBA,wBAAwB;EAAA,OAAxBA,wBAAwB;AAAA"}
|
|
1
|
+
{"version":3,"names":["HMSUpdateListenerActions"],"sources":["HMSUpdateListenerActions.ts"],"sourcesContent":["/**\n * These are the available events emitted by the `HMSSDK`\n *\n * For more info about these events, checkout Event Listener docs\n * {@link https://www.100ms.live/docs/react-native/v2/how-to-guides/listen-to-room-updates/event-listeners}\n */\nexport enum HMSUpdateListenerActions {\n ON_PREVIEW = 'ON_PREVIEW',\n ON_JOIN = 'ON_JOIN',\n ON_ROOM_UPDATE = 'ON_ROOM_UPDATE',\n ON_PEER_UPDATE = '3',\n ON_TRACK_UPDATE = 'ON_TRACK_UPDATE',\n ON_ERROR = 'ON_ERROR',\n ON_MESSAGE = 'ON_MESSAGE',\n ON_SPEAKER = 'ON_SPEAKER',\n RECONNECTING = 'RECONNECTING',\n RECONNECTED = 'RECONNECTED',\n ON_ROLE_CHANGE_REQUEST = 'ON_ROLE_CHANGE_REQUEST',\n ON_CHANGE_TRACK_STATE_REQUEST = 'ON_CHANGE_TRACK_STATE_REQUEST',\n ON_REMOVED_FROM_ROOM = 'ON_REMOVED_FROM_ROOM',\n ON_RTC_STATS = 'ON_RTC_STATS',\n ON_LOCAL_AUDIO_STATS = 'ON_LOCAL_AUDIO_STATS',\n ON_LOCAL_VIDEO_STATS = 'ON_LOCAL_VIDEO_STATS',\n ON_REMOTE_AUDIO_STATS = 'ON_REMOTE_AUDIO_STATS',\n ON_REMOTE_VIDEO_STATS = 'ON_REMOTE_VIDEO_STATS',\n ON_AUDIO_DEVICE_CHANGED = 'ON_AUDIO_DEVICE_CHANGED',\n ON_SESSION_STORE_AVAILABLE = 'ON_SESSION_STORE_AVAILABLE',\n ON_SESSION_STORE_CHANGED = 'ON_SESSION_STORE_CHANGED',\n ON_PEER_LIST_UPDATED = 'ON_PEER_LIST_UPDATED',\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,WAAYA,wBAAwB,0BAAxBA,wBAAwB;EAAxBA,wBAAwB;EAAxBA,wBAAwB;EAAxBA,wBAAwB;EAAxBA,wBAAwB;EAAxBA,wBAAwB;EAAxBA,wBAAwB;EAAxBA,wBAAwB;EAAxBA,wBAAwB;EAAxBA,wBAAwB;EAAxBA,wBAAwB;EAAxBA,wBAAwB;EAAxBA,wBAAwB;EAAxBA,wBAAwB;EAAxBA,wBAAwB;EAAxBA,wBAAwB;EAAxBA,wBAAwB;EAAxBA,wBAAwB;EAAxBA,wBAAwB;EAAxBA,wBAAwB;EAAxBA,wBAAwB;EAAxBA,wBAAwB;EAAxBA,wBAAwB;EAAA,OAAxBA,wBAAwB;AAAA"}
|
|
@@ -10,7 +10,9 @@ export declare class HMSPeer {
|
|
|
10
10
|
private _customerUserID;
|
|
11
11
|
private _metadata;
|
|
12
12
|
private _role;
|
|
13
|
+
private _isHandRaised;
|
|
13
14
|
private _updateIsLocal;
|
|
15
|
+
private _updateIsHandRaised;
|
|
14
16
|
private _updateCustomerUserID;
|
|
15
17
|
private _updateMetadata;
|
|
16
18
|
private _updateRole;
|
|
@@ -19,6 +21,7 @@ export declare class HMSPeer {
|
|
|
19
21
|
name: string;
|
|
20
22
|
});
|
|
21
23
|
get isLocal(): boolean | undefined;
|
|
24
|
+
get isHandRaised(): boolean;
|
|
22
25
|
get networkQuality(): HMSNetworkQuality | undefined;
|
|
23
26
|
get customerUserID(): string | undefined;
|
|
24
27
|
get metadata(): string | undefined;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { HMSPeer } from './HMSPeer';
|
|
2
|
+
export declare class HMSPeerListIterator {
|
|
3
|
+
private readonly uniqueId;
|
|
4
|
+
private _totalCount;
|
|
5
|
+
get totalCount(): number;
|
|
6
|
+
constructor(uniqueId: string, totalCount: number);
|
|
7
|
+
hasNext(): Promise<boolean>;
|
|
8
|
+
next(): Promise<HMSPeer[]>;
|
|
9
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* options for creating `HMSPeerListIterator` instance
|
|
3
|
+
*
|
|
4
|
+
* ```
|
|
5
|
+
* const peerListIterator = hmsInstance.getPeerListIterator({
|
|
6
|
+
* limit: 10,
|
|
7
|
+
* byRoleName: 'viewer-realtime',
|
|
8
|
+
* });
|
|
9
|
+
* ```
|
|
10
|
+
*/
|
|
11
|
+
export interface HMSPeerListIteratorOptions {
|
|
12
|
+
/**
|
|
13
|
+
* filter by role of the peers
|
|
14
|
+
*/
|
|
15
|
+
byRoleName?: string;
|
|
16
|
+
/**
|
|
17
|
+
* `peerID`s of the peers you want to fetch with iterator.
|
|
18
|
+
*/
|
|
19
|
+
byPeerIds?: string[];
|
|
20
|
+
/**
|
|
21
|
+
* number of peers fetched by the iterator in `next` method call. Default value is `10`
|
|
22
|
+
*/
|
|
23
|
+
limit?: number;
|
|
24
|
+
}
|
|
@@ -4,6 +4,7 @@ export declare enum HMSPeerUpdate {
|
|
|
4
4
|
METADATA_CHANGED = "METADATA_CHANGED",
|
|
5
5
|
ROLE_CHANGED = "ROLE_CHANGED",
|
|
6
6
|
NAME_CHANGED = "NAME_CHANGED",
|
|
7
|
-
NETWORK_QUALITY_UPDATED = "NETWORK_QUALITY_UPDATED"
|
|
7
|
+
NETWORK_QUALITY_UPDATED = "NETWORK_QUALITY_UPDATED",
|
|
8
|
+
HAND_RAISED_CHANGED = "HAND_RAISED_CHANGED"
|
|
8
9
|
}
|
|
9
10
|
export declare const HMSPeerUpdateOrdinals: Map<string, HMSPeerUpdate>;
|
|
@@ -20,6 +20,7 @@ export type HMSPeerCacheProps = {
|
|
|
20
20
|
audioTrack?: HMSAudioTrack | undefined;
|
|
21
21
|
videoTrack?: HMSVideoTrack | undefined;
|
|
22
22
|
auxiliaryTracks?: HMSTrack[] | undefined;
|
|
23
|
+
isHandRaised?: boolean | undefined;
|
|
23
24
|
};
|
|
24
25
|
export declare class HMSPeersCache {
|
|
25
26
|
private _data;
|
|
@@ -18,8 +18,11 @@ import type { HMSAudioMode } from './HMSAudioMode';
|
|
|
18
18
|
import type { HMSAudioMixingMode } from './HMSAudioMixingMode';
|
|
19
19
|
import type { HMSLogSettings } from './HMSLogSettings';
|
|
20
20
|
import { HMSPIPListenerActions } from './HMSPIPListenerActions';
|
|
21
|
+
import type { HMSPeerListIteratorOptions } from './HMSPeerListIteratorOptions';
|
|
22
|
+
import { HMSPeerListIterator } from './HMSPeerListIterator';
|
|
21
23
|
type HmsViewProps = Omit<HmsComponentProps, 'id'>;
|
|
22
24
|
interface PIPConfig {
|
|
25
|
+
autoEnterPipMode?: boolean;
|
|
23
26
|
aspectRatio?: [number, number];
|
|
24
27
|
endButton?: boolean;
|
|
25
28
|
audioButton?: boolean;
|
|
@@ -33,6 +36,7 @@ export declare class HMSSDK {
|
|
|
33
36
|
private onJoinDelegate?;
|
|
34
37
|
private onRoomDelegate?;
|
|
35
38
|
private onPeerDelegate?;
|
|
39
|
+
private onPeerListUpdatedDelegate?;
|
|
36
40
|
private onTrackDelegate?;
|
|
37
41
|
private onErrorDelegate?;
|
|
38
42
|
private onMessageDelegate?;
|
|
@@ -50,6 +54,7 @@ export declare class HMSSDK {
|
|
|
50
54
|
private onAudioDeviceChangedDelegate?;
|
|
51
55
|
private onSessionStoreAvailableDelegate?;
|
|
52
56
|
private onPIPRoomLeaveDelegate?;
|
|
57
|
+
private onPIPModeChangedDelegate?;
|
|
53
58
|
private emitterSubscriptions;
|
|
54
59
|
private constructor();
|
|
55
60
|
/**
|
|
@@ -525,6 +530,40 @@ export declare class HMSSDK {
|
|
|
525
530
|
getRemoteVideoTrackFromTrackId: (trackId: string) => Promise<import("./HMSRemoteVideoTrack").HMSRemoteVideoTrack>;
|
|
526
531
|
getRemoteAudioTrackFromTrackId: (trackId: string) => Promise<import("./HMSRemoteAudioTrack").HMSRemoteAudioTrack>;
|
|
527
532
|
getPeerFromPeerId: (peerId: string) => HMSPeer | undefined;
|
|
533
|
+
/**
|
|
534
|
+
* - This function is used to raise hand for the local peer
|
|
535
|
+
* @memberof HMSSDK
|
|
536
|
+
*/
|
|
537
|
+
raiseLocalPeerHand: () => Promise<any>;
|
|
538
|
+
/**
|
|
539
|
+
* - This function is used to lower hand for the local peer
|
|
540
|
+
* @memberof HMSSDK
|
|
541
|
+
*/
|
|
542
|
+
lowerLocalPeerHand: () => Promise<any>;
|
|
543
|
+
/**
|
|
544
|
+
* - This function is used to lower hand for the remote peer
|
|
545
|
+
* @param peer
|
|
546
|
+
*/
|
|
547
|
+
lowerRemotePeerHand: (peer: HMSPeer) => Promise<any>;
|
|
548
|
+
/**
|
|
549
|
+
* `getPeerListIterator` method returns an instance of `HMSPeerListIterator` class
|
|
550
|
+
*
|
|
551
|
+
* @param options options for configuring iterator
|
|
552
|
+
* @returns instance of HMSPeerListIterator class
|
|
553
|
+
*
|
|
554
|
+
* Example usage:
|
|
555
|
+
* ```
|
|
556
|
+
* const peerListIterator = hmsInstance.getPeerListIterator();
|
|
557
|
+
* ```
|
|
558
|
+
* OR
|
|
559
|
+
* ```
|
|
560
|
+
* const peerListIterator = hmsInstance.getPeerListIterator({
|
|
561
|
+
* limit: 10,
|
|
562
|
+
* byRoleName: 'viewer-realtime',
|
|
563
|
+
* });
|
|
564
|
+
* ```
|
|
565
|
+
*/
|
|
566
|
+
getPeerListIterator: (options?: HMSPeerListIteratorOptions) => HMSPeerListIterator;
|
|
528
567
|
/**
|
|
529
568
|
* - This is a prototype event listener that takes action and listens for updates related to that particular action
|
|
530
569
|
*
|
|
@@ -565,6 +604,9 @@ export declare class HMSSDK {
|
|
|
565
604
|
onJoinListener: (data: any) => void;
|
|
566
605
|
onRoomListener: (data: any) => void;
|
|
567
606
|
onPeerListener: (peerData: any) => void;
|
|
607
|
+
private sendPeerUpdate;
|
|
608
|
+
private sendPeerUpdateWhenPeerLeaves;
|
|
609
|
+
onPeerListUpdatedListener: (data: any) => void;
|
|
568
610
|
onTrackListener: (data: any) => void;
|
|
569
611
|
onMessageListener: (data: any) => void;
|
|
570
612
|
onSpeakerListener: (data: any) => void;
|
|
@@ -590,8 +632,11 @@ export declare class HMSSDK {
|
|
|
590
632
|
onPIPRoomLeaveListener: (data: {
|
|
591
633
|
id: string;
|
|
592
634
|
}) => void;
|
|
635
|
+
onPIPModeChangedListener: (data: {
|
|
636
|
+
isInPictureInPictureMode: boolean;
|
|
637
|
+
}) => void;
|
|
593
638
|
isPipModeSupported(): Promise<undefined | boolean>;
|
|
594
|
-
|
|
639
|
+
enterPipMode(data?: PIPConfig): Promise<undefined | boolean>;
|
|
595
640
|
setPipParams(data?: PIPConfig): Promise<undefined | boolean>;
|
|
596
641
|
/**
|
|
597
642
|
* - Returns the instance of logger which can be used to manipulate log levels.
|
|
@@ -25,5 +25,6 @@ export declare enum HMSUpdateListenerActions {
|
|
|
25
25
|
ON_REMOTE_VIDEO_STATS = "ON_REMOTE_VIDEO_STATS",
|
|
26
26
|
ON_AUDIO_DEVICE_CHANGED = "ON_AUDIO_DEVICE_CHANGED",
|
|
27
27
|
ON_SESSION_STORE_AVAILABLE = "ON_SESSION_STORE_AVAILABLE",
|
|
28
|
-
ON_SESSION_STORE_CHANGED = "ON_SESSION_STORE_CHANGED"
|
|
28
|
+
ON_SESSION_STORE_CHANGED = "ON_SESSION_STORE_CHANGED",
|
|
29
|
+
ON_PEER_LIST_UPDATED = "ON_PEER_LIST_UPDATED"
|
|
29
30
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@100mslive/react-native-hms",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.9.0",
|
|
4
4
|
"description": "Integrate Real Time Audio and Video conferencing, Interactive Live Streaming, and Chat in your apps with 100ms React Native SDK. With support for HLS and RTMP Live Streaming and Recording, Picture-in-Picture (PiP), one-to-one Video Call Modes, Audio Rooms, Video Player and much more, add immersive real-time communications to your apps.",
|
|
5
5
|
"main": "lib/commonjs/index",
|
|
6
6
|
"module": "lib/module/index",
|
package/sdk-versions.json
CHANGED
package/src/classes/HMSPeer.ts
CHANGED
|
@@ -13,6 +13,7 @@ export class HMSPeer {
|
|
|
13
13
|
private _customerUserID: string | undefined;
|
|
14
14
|
private _metadata: string | undefined;
|
|
15
15
|
private _role: HMSRole | undefined;
|
|
16
|
+
private _isHandRaised: boolean = false;
|
|
16
17
|
|
|
17
18
|
private _updateIsLocal(value: boolean) {
|
|
18
19
|
// If `_isLocal` is outdated, update it
|
|
@@ -21,6 +22,13 @@ export class HMSPeer {
|
|
|
21
22
|
}
|
|
22
23
|
}
|
|
23
24
|
|
|
25
|
+
private _updateIsHandRaised(value: boolean) {
|
|
26
|
+
// If `_isHandRaised` is outdated, update it
|
|
27
|
+
if (this._isHandRaised !== value) {
|
|
28
|
+
this._isHandRaised = value;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
24
32
|
private _updateCustomerUserID(value: string) {
|
|
25
33
|
// If `_customerUserID` is outdated, update it
|
|
26
34
|
if (this._customerUserID !== value) {
|
|
@@ -64,6 +72,23 @@ export class HMSPeer {
|
|
|
64
72
|
return value ?? this._isLocal;
|
|
65
73
|
}
|
|
66
74
|
|
|
75
|
+
get isHandRaised(): boolean {
|
|
76
|
+
const hmsPeersCache = getHmsPeersCache();
|
|
77
|
+
|
|
78
|
+
const value = hmsPeersCache
|
|
79
|
+
? hmsPeersCache.getProperty(this.peerID, 'isHandRaised')
|
|
80
|
+
: getPeerPropertyFromNative(
|
|
81
|
+
HMSConstants.DEFAULT_SDK_ID,
|
|
82
|
+
this.peerID,
|
|
83
|
+
'isHandRaised'
|
|
84
|
+
);
|
|
85
|
+
|
|
86
|
+
if (typeof value === 'boolean') {
|
|
87
|
+
this._updateIsHandRaised(value);
|
|
88
|
+
}
|
|
89
|
+
return value ?? this._isHandRaised;
|
|
90
|
+
}
|
|
91
|
+
|
|
67
92
|
get networkQuality(): HMSNetworkQuality | undefined {
|
|
68
93
|
const hmsPeersCache = getHmsPeersCache();
|
|
69
94
|
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
// import type { HMSException } from "./HMSException";
|
|
2
|
+
import type { HMSPeer } from './HMSPeer';
|
|
3
|
+
import HMSManagerModule from './HMSManagerModule';
|
|
4
|
+
import { HMSEncoder, logger } from '@100mslive/react-native-hms';
|
|
5
|
+
import { HMSConstants } from './HMSConstants';
|
|
6
|
+
import { getHmsPeersCache } from './HMSPeersCache';
|
|
7
|
+
|
|
8
|
+
export class HMSPeerListIterator {
|
|
9
|
+
private readonly uniqueId: string;
|
|
10
|
+
private _totalCount: number = 0;
|
|
11
|
+
|
|
12
|
+
get totalCount() {
|
|
13
|
+
return this._totalCount;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
constructor(uniqueId: string, totalCount: number) {
|
|
17
|
+
this.uniqueId = uniqueId;
|
|
18
|
+
this._totalCount = totalCount;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
async hasNext(): Promise<boolean> {
|
|
22
|
+
logger?.verbose('#Function HMSPeerListIterator#hasNext', this.uniqueId);
|
|
23
|
+
try {
|
|
24
|
+
return HMSManagerModule.peerListIteratorHasNext({
|
|
25
|
+
id: HMSConstants.DEFAULT_SDK_ID,
|
|
26
|
+
uniqueId: this.uniqueId,
|
|
27
|
+
});
|
|
28
|
+
} catch (e) {
|
|
29
|
+
logger?.error('#Error in #Function HMSPeerListIterator#hasNext ', e);
|
|
30
|
+
return Promise.reject(e);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
async next(): Promise<HMSPeer[]> {
|
|
35
|
+
logger?.verbose('#Function HMSPeerListIterator#next', this.uniqueId);
|
|
36
|
+
try {
|
|
37
|
+
const { totalCount, peers } = await HMSManagerModule.peerListIteratorNext({
|
|
38
|
+
id: HMSConstants.DEFAULT_SDK_ID,
|
|
39
|
+
uniqueId: this.uniqueId,
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
this._totalCount = totalCount;
|
|
43
|
+
|
|
44
|
+
if (Array.isArray(peers) && peers.length > 0) {
|
|
45
|
+
const hmsPeersCache = getHmsPeersCache();
|
|
46
|
+
|
|
47
|
+
if (hmsPeersCache) {
|
|
48
|
+
peers.forEach(peer => {
|
|
49
|
+
hmsPeersCache.updatePeerCache(peer.peerID, peer);
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
return HMSEncoder.encodeHmsPeers(peers);
|
|
55
|
+
} catch (e) {
|
|
56
|
+
logger?.error('#Error in #Function HMSPeerListIterator#next ', e);
|
|
57
|
+
return Promise.reject(e);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* options for creating `HMSPeerListIterator` instance
|
|
3
|
+
*
|
|
4
|
+
* ```
|
|
5
|
+
* const peerListIterator = hmsInstance.getPeerListIterator({
|
|
6
|
+
* limit: 10,
|
|
7
|
+
* byRoleName: 'viewer-realtime',
|
|
8
|
+
* });
|
|
9
|
+
* ```
|
|
10
|
+
*/
|
|
11
|
+
export interface HMSPeerListIteratorOptions {
|
|
12
|
+
/**
|
|
13
|
+
* filter by role of the peers
|
|
14
|
+
*/
|
|
15
|
+
byRoleName?: string;
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* `peerID`s of the peers you want to fetch with iterator.
|
|
19
|
+
*/
|
|
20
|
+
byPeerIds?: string[];
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* number of peers fetched by the iterator in `next` method call. Default value is `10`
|
|
24
|
+
*/
|
|
25
|
+
limit?: number;
|
|
26
|
+
}
|
|
@@ -5,6 +5,7 @@ export enum HMSPeerUpdate {
|
|
|
5
5
|
ROLE_CHANGED = 'ROLE_CHANGED',
|
|
6
6
|
NAME_CHANGED = 'NAME_CHANGED',
|
|
7
7
|
NETWORK_QUALITY_UPDATED = 'NETWORK_QUALITY_UPDATED',
|
|
8
|
+
HAND_RAISED_CHANGED = 'HAND_RAISED_CHANGED',
|
|
8
9
|
}
|
|
9
10
|
|
|
10
11
|
export const HMSPeerUpdateOrdinals = new Map([
|
|
@@ -14,4 +15,5 @@ export const HMSPeerUpdateOrdinals = new Map([
|
|
|
14
15
|
['5', HMSPeerUpdate.NAME_CHANGED],
|
|
15
16
|
['6', HMSPeerUpdate.METADATA_CHANGED],
|
|
16
17
|
['7', HMSPeerUpdate.NETWORK_QUALITY_UPDATED],
|
|
18
|
+
['8', HMSPeerUpdate.HAND_RAISED_CHANGED],
|
|
17
19
|
]);
|
|
@@ -39,6 +39,7 @@ export type HMSPeerCacheProps = {
|
|
|
39
39
|
audioTrack?: HMSAudioTrack | undefined;
|
|
40
40
|
videoTrack?: HMSVideoTrack | undefined;
|
|
41
41
|
auxiliaryTracks?: HMSTrack[] | undefined;
|
|
42
|
+
isHandRaised?: boolean | undefined;
|
|
42
43
|
};
|
|
43
44
|
|
|
44
45
|
export class HMSPeersCache {
|
|
@@ -206,6 +207,10 @@ export class HMSPeersCache {
|
|
|
206
207
|
updatedObj.name = data.name;
|
|
207
208
|
break;
|
|
208
209
|
}
|
|
210
|
+
case HMSPeerUpdate.HAND_RAISED_CHANGED: {
|
|
211
|
+
updatedObj.isHandRaised = data.isHandRaised;
|
|
212
|
+
break;
|
|
213
|
+
}
|
|
209
214
|
default: {
|
|
210
215
|
updatedObj = { ...updatedObj, ...data };
|
|
211
216
|
break;
|
|
@@ -256,6 +261,8 @@ export function getPeerPropertyFromNative<T extends keyof HMSPeerCacheProps>(
|
|
|
256
261
|
: undefined;
|
|
257
262
|
} else if (property === 'name') {
|
|
258
263
|
value = data?.[property];
|
|
264
|
+
} else if (property === 'isHandRaised') {
|
|
265
|
+
value = data ? data[property] : false;
|
|
259
266
|
} else {
|
|
260
267
|
value = data ? data[property] : undefined;
|
|
261
268
|
}
|
package/src/classes/HMSSDK.tsx
CHANGED
|
@@ -41,13 +41,16 @@ import {
|
|
|
41
41
|
HMSRoomCache,
|
|
42
42
|
setHmsRoomCache,
|
|
43
43
|
} from './HMSRoomCache';
|
|
44
|
-
import { HMSPeerUpdateOrdinals } from './HMSPeerUpdate';
|
|
44
|
+
import { HMSPeerUpdate, HMSPeerUpdateOrdinals } from './HMSPeerUpdate';
|
|
45
45
|
import { HMSSessionStore } from './HMSSessionStore';
|
|
46
|
+
import type { HMSPeerListIteratorOptions } from './HMSPeerListIteratorOptions';
|
|
47
|
+
import { HMSPeerListIterator } from './HMSPeerListIterator';
|
|
46
48
|
|
|
47
49
|
type HmsViewProps = Omit<HmsComponentProps, 'id'>;
|
|
48
50
|
|
|
49
51
|
// TODO: Rename to HMSPIPConfig & to be moved to a separate file
|
|
50
52
|
interface PIPConfig {
|
|
53
|
+
autoEnterPipMode?: boolean;
|
|
51
54
|
aspectRatio?: [number, number];
|
|
52
55
|
endButton?: boolean;
|
|
53
56
|
audioButton?: boolean;
|
|
@@ -66,6 +69,7 @@ export class HMSSDK {
|
|
|
66
69
|
private onJoinDelegate?: any;
|
|
67
70
|
private onRoomDelegate?: any;
|
|
68
71
|
private onPeerDelegate?: any;
|
|
72
|
+
private onPeerListUpdatedDelegate?: any;
|
|
69
73
|
private onTrackDelegate?: any;
|
|
70
74
|
private onErrorDelegate?: any;
|
|
71
75
|
private onMessageDelegate?: any;
|
|
@@ -83,6 +87,7 @@ export class HMSSDK {
|
|
|
83
87
|
private onAudioDeviceChangedDelegate?: any;
|
|
84
88
|
private onSessionStoreAvailableDelegate?: any;
|
|
85
89
|
private onPIPRoomLeaveDelegate?: any;
|
|
90
|
+
private onPIPModeChangedDelegate?: any;
|
|
86
91
|
|
|
87
92
|
private emitterSubscriptions: Partial<
|
|
88
93
|
Record<
|
|
@@ -1145,6 +1150,86 @@ export class HMSSDK {
|
|
|
1145
1150
|
return HMSEncoder.encodeHmsPeer({ peerID: peerId });
|
|
1146
1151
|
};
|
|
1147
1152
|
|
|
1153
|
+
/**
|
|
1154
|
+
* - This function is used to raise hand for the local peer
|
|
1155
|
+
* @memberof HMSSDK
|
|
1156
|
+
*/
|
|
1157
|
+
raiseLocalPeerHand = async () => {
|
|
1158
|
+
const data = {
|
|
1159
|
+
id: this.id,
|
|
1160
|
+
};
|
|
1161
|
+
logger?.verbose('#Function raiseLocalPeerHand', data);
|
|
1162
|
+
return HMSManager.raiseLocalPeerHand(data);
|
|
1163
|
+
};
|
|
1164
|
+
|
|
1165
|
+
/**
|
|
1166
|
+
* - This function is used to lower hand for the local peer
|
|
1167
|
+
* @memberof HMSSDK
|
|
1168
|
+
*/
|
|
1169
|
+
lowerLocalPeerHand = async () => {
|
|
1170
|
+
const data = {
|
|
1171
|
+
id: this.id,
|
|
1172
|
+
};
|
|
1173
|
+
logger?.verbose('#Function lowerLocalPeerHand', data);
|
|
1174
|
+
return HMSManager.lowerLocalPeerHand(data);
|
|
1175
|
+
};
|
|
1176
|
+
|
|
1177
|
+
/**
|
|
1178
|
+
* - This function is used to lower hand for the remote peer
|
|
1179
|
+
* @param peer
|
|
1180
|
+
*/
|
|
1181
|
+
lowerRemotePeerHand = async (peer: HMSPeer) => {
|
|
1182
|
+
const data = {
|
|
1183
|
+
peerId: peer.peerID,
|
|
1184
|
+
id: this.id,
|
|
1185
|
+
};
|
|
1186
|
+
logger?.verbose('#Function lowerRemotePeerHand', data);
|
|
1187
|
+
return HMSManager.lowerRemotePeerHand(data);
|
|
1188
|
+
};
|
|
1189
|
+
|
|
1190
|
+
/**
|
|
1191
|
+
* `getPeerListIterator` method returns an instance of `HMSPeerListIterator` class
|
|
1192
|
+
*
|
|
1193
|
+
* @param options options for configuring iterator
|
|
1194
|
+
* @returns instance of HMSPeerListIterator class
|
|
1195
|
+
*
|
|
1196
|
+
* Example usage:
|
|
1197
|
+
* ```
|
|
1198
|
+
* const peerListIterator = hmsInstance.getPeerListIterator();
|
|
1199
|
+
* ```
|
|
1200
|
+
* OR
|
|
1201
|
+
* ```
|
|
1202
|
+
* const peerListIterator = hmsInstance.getPeerListIterator({
|
|
1203
|
+
* limit: 10,
|
|
1204
|
+
* byRoleName: 'viewer-realtime',
|
|
1205
|
+
* });
|
|
1206
|
+
* ```
|
|
1207
|
+
*/
|
|
1208
|
+
getPeerListIterator = (
|
|
1209
|
+
options?: HMSPeerListIteratorOptions
|
|
1210
|
+
): HMSPeerListIterator => {
|
|
1211
|
+
logger?.verbose('#Function getPeerListIterator', {
|
|
1212
|
+
id: this.id,
|
|
1213
|
+
options,
|
|
1214
|
+
});
|
|
1215
|
+
|
|
1216
|
+
const uniqueId = Math.random().toString(16).slice(2);
|
|
1217
|
+
|
|
1218
|
+
const data: null | { sucess: boolean; uniqueId: string; totalCount: number; } =
|
|
1219
|
+
HMSManager.getPeerListIterator({
|
|
1220
|
+
id: this.id,
|
|
1221
|
+
...options,
|
|
1222
|
+
limit: options?.limit ?? 10,
|
|
1223
|
+
uniqueId,
|
|
1224
|
+
});
|
|
1225
|
+
|
|
1226
|
+
if (!data) {
|
|
1227
|
+
throw new Error('Unable to create PeerListIterator');
|
|
1228
|
+
}
|
|
1229
|
+
|
|
1230
|
+
return new HMSPeerListIterator(data.uniqueId, data.totalCount);
|
|
1231
|
+
};
|
|
1232
|
+
|
|
1148
1233
|
/**
|
|
1149
1234
|
* - This is a prototype event listener that takes action and listens for updates related to that particular action
|
|
1150
1235
|
*
|
|
@@ -1229,6 +1314,28 @@ export class HMSSDK {
|
|
|
1229
1314
|
this.onPeerDelegate = callback;
|
|
1230
1315
|
break;
|
|
1231
1316
|
}
|
|
1317
|
+
case HMSUpdateListenerActions.ON_PEER_LIST_UPDATED: {
|
|
1318
|
+
// Checking if we already have ON_PEER_LIST_UPDATED subscription
|
|
1319
|
+
if (
|
|
1320
|
+
!this.emitterSubscriptions[
|
|
1321
|
+
HMSUpdateListenerActions.ON_PEER_LIST_UPDATED
|
|
1322
|
+
]
|
|
1323
|
+
) {
|
|
1324
|
+
// Adding ON_PEER_LIST_UPDATED native listener
|
|
1325
|
+
const peerListUpdatedSubscription =
|
|
1326
|
+
HMSNativeEventListener.addListener(
|
|
1327
|
+
this.id,
|
|
1328
|
+
HMSUpdateListenerActions.ON_PEER_LIST_UPDATED,
|
|
1329
|
+
this.onPeerListUpdatedListener
|
|
1330
|
+
);
|
|
1331
|
+
this.emitterSubscriptions[
|
|
1332
|
+
HMSUpdateListenerActions.ON_PEER_LIST_UPDATED
|
|
1333
|
+
] = peerListUpdatedSubscription;
|
|
1334
|
+
}
|
|
1335
|
+
// Adding App Delegate listener
|
|
1336
|
+
this.onPeerListUpdatedDelegate = callback;
|
|
1337
|
+
break;
|
|
1338
|
+
}
|
|
1232
1339
|
case HMSUpdateListenerActions.ON_TRACK_UPDATE: {
|
|
1233
1340
|
// Checking if we already have ON_TRACK_UPDATE subscription
|
|
1234
1341
|
if (
|
|
@@ -1554,6 +1661,25 @@ export class HMSSDK {
|
|
|
1554
1661
|
}
|
|
1555
1662
|
break;
|
|
1556
1663
|
}
|
|
1664
|
+
case HMSPIPListenerActions.ON_PIP_MODE_CHANGED: {
|
|
1665
|
+
if (Platform.OS === 'android') {
|
|
1666
|
+
// Checking if we already have ON_PIP_MODE_CHANGED subscription
|
|
1667
|
+
if (
|
|
1668
|
+
!this.emitterSubscriptions[HMSPIPListenerActions.ON_PIP_MODE_CHANGED]
|
|
1669
|
+
) {
|
|
1670
|
+
const pipModeChangedSubscription = HMSNativeEventListener.addListener(
|
|
1671
|
+
this.id,
|
|
1672
|
+
HMSPIPListenerActions.ON_PIP_MODE_CHANGED,
|
|
1673
|
+
this.onPIPModeChangedListener
|
|
1674
|
+
);
|
|
1675
|
+
this.emitterSubscriptions[HMSPIPListenerActions.ON_PIP_MODE_CHANGED] =
|
|
1676
|
+
pipModeChangedSubscription;
|
|
1677
|
+
}
|
|
1678
|
+
// Adding PIP mode changed Delegate listener
|
|
1679
|
+
this.onPIPModeChangedDelegate = callback;
|
|
1680
|
+
}
|
|
1681
|
+
break;
|
|
1682
|
+
}
|
|
1557
1683
|
default:
|
|
1558
1684
|
}
|
|
1559
1685
|
};
|
|
@@ -1893,6 +2019,22 @@ export class HMSSDK {
|
|
|
1893
2019
|
}
|
|
1894
2020
|
break;
|
|
1895
2021
|
}
|
|
2022
|
+
case HMSPIPListenerActions.ON_PIP_MODE_CHANGED: {
|
|
2023
|
+
if (Platform.OS === 'android') {
|
|
2024
|
+
const subscription =
|
|
2025
|
+
this.emitterSubscriptions[HMSPIPListenerActions.ON_PIP_MODE_CHANGED];
|
|
2026
|
+
// Removing ON_PIP_MODE_CHANGED native listener
|
|
2027
|
+
if (subscription) {
|
|
2028
|
+
subscription.remove();
|
|
2029
|
+
|
|
2030
|
+
this.emitterSubscriptions[HMSPIPListenerActions.ON_PIP_MODE_CHANGED] =
|
|
2031
|
+
undefined;
|
|
2032
|
+
}
|
|
2033
|
+
// Removing App Delegate listener
|
|
2034
|
+
this.onPIPModeChangedDelegate = null;
|
|
2035
|
+
}
|
|
2036
|
+
break;
|
|
2037
|
+
}
|
|
1896
2038
|
default:
|
|
1897
2039
|
}
|
|
1898
2040
|
};
|
|
@@ -2015,8 +2157,15 @@ export class HMSSDK {
|
|
|
2015
2157
|
const peer: HMSPeer = HMSEncoder.encodeHmsPeer(data.peer);
|
|
2016
2158
|
const type = HMSEncoder.encodeHmsPeerUpdate(data.type) || data.type;
|
|
2017
2159
|
|
|
2018
|
-
|
|
2160
|
+
if (type === HMSPeerUpdate.PEER_LEFT) {
|
|
2161
|
+
this.sendPeerUpdateWhenPeerLeaves(data, peer, type);
|
|
2162
|
+
} else {
|
|
2163
|
+
getHmsPeersCache()?.updatePeerCache(data.peer.peerID, data.peer, type);
|
|
2164
|
+
this.sendPeerUpdate(peer, type);
|
|
2165
|
+
}
|
|
2166
|
+
};
|
|
2019
2167
|
|
|
2168
|
+
private sendPeerUpdate = (peer: any, type: any) => {
|
|
2020
2169
|
if (this.onPeerDelegate) {
|
|
2021
2170
|
logger?.verbose('#Listener ON_PEER_LISTENER_CALL', {
|
|
2022
2171
|
peer,
|
|
@@ -2024,6 +2173,32 @@ export class HMSSDK {
|
|
|
2024
2173
|
});
|
|
2025
2174
|
this.onPeerDelegate({ peer, type });
|
|
2026
2175
|
}
|
|
2176
|
+
}
|
|
2177
|
+
|
|
2178
|
+
private sendPeerUpdateWhenPeerLeaves = (data: any, peer: any, type: any) => {
|
|
2179
|
+
this.sendPeerUpdate(peer, type);
|
|
2180
|
+
|
|
2181
|
+
getHmsPeersCache()?.updatePeerCache(data.peer.peerID, data.peer, type);
|
|
2182
|
+
}
|
|
2183
|
+
|
|
2184
|
+
onPeerListUpdatedListener = (data: any) => {
|
|
2185
|
+
if (data.id !== this.id) {
|
|
2186
|
+
return;
|
|
2187
|
+
}
|
|
2188
|
+
const addedPeers = HMSEncoder.encodeHmsPeers(data.addedPeers);
|
|
2189
|
+
const removedPeers = HMSEncoder.encodeHmsPeers(data.removedPeers);
|
|
2190
|
+
|
|
2191
|
+
if (this.onPeerListUpdatedDelegate) {
|
|
2192
|
+
logger?.verbose('#Listener ON_PEER_LIST_UPDATED_LISTENER_CALL', {
|
|
2193
|
+
totalAddedPeers: addedPeers.length,
|
|
2194
|
+
totalRemovedPeers: removedPeers.length,
|
|
2195
|
+
});
|
|
2196
|
+
|
|
2197
|
+
this.onPeerListUpdatedDelegate({
|
|
2198
|
+
addedPeers,
|
|
2199
|
+
removedPeers,
|
|
2200
|
+
});
|
|
2201
|
+
}
|
|
2027
2202
|
};
|
|
2028
2203
|
|
|
2029
2204
|
onTrackListener = (data: any) => {
|
|
@@ -2324,12 +2499,20 @@ export class HMSSDK {
|
|
|
2324
2499
|
}
|
|
2325
2500
|
};
|
|
2326
2501
|
|
|
2502
|
+
onPIPModeChangedListener = (data: { isInPictureInPictureMode: boolean }) => {
|
|
2503
|
+
if (this.onPIPModeChangedDelegate) {
|
|
2504
|
+
logger?.verbose('#Listener onPIPModeChanged_CALL', data);
|
|
2505
|
+
|
|
2506
|
+
this.onPIPModeChangedDelegate(data);
|
|
2507
|
+
}
|
|
2508
|
+
}
|
|
2509
|
+
|
|
2327
2510
|
async isPipModeSupported(): Promise<undefined | boolean> {
|
|
2328
2511
|
return HMSManager.handlePipActions('isPipModeSupported', { id: this.id });
|
|
2329
2512
|
}
|
|
2330
2513
|
|
|
2331
|
-
async
|
|
2332
|
-
return HMSManager.handlePipActions('
|
|
2514
|
+
async enterPipMode(data?: PIPConfig): Promise<undefined | boolean> {
|
|
2515
|
+
return HMSManager.handlePipActions('enterPipMode', {
|
|
2333
2516
|
...data,
|
|
2334
2517
|
id: this.id,
|
|
2335
2518
|
});
|
|
@@ -26,4 +26,5 @@ export enum HMSUpdateListenerActions {
|
|
|
26
26
|
ON_AUDIO_DEVICE_CHANGED = 'ON_AUDIO_DEVICE_CHANGED',
|
|
27
27
|
ON_SESSION_STORE_AVAILABLE = 'ON_SESSION_STORE_AVAILABLE',
|
|
28
28
|
ON_SESSION_STORE_CHANGED = 'ON_SESSION_STORE_CHANGED',
|
|
29
|
+
ON_PEER_LIST_UPDATED = 'ON_PEER_LIST_UPDATED',
|
|
29
30
|
}
|
|
Binary file
|
|
Binary file
|