@100mslive/hms-video-store
Version:
@100mslive Core SDK which abstracts the complexities of webRTC while providing a reactive store for data management with a unidirectional data flow
155 lines (154 loc) • 8.27 kB
TypeScript
import { HMSDeviceChangeEvent } from './device-change';
import { HMSException } from './error';
import { HMSMessage } from './message';
import { HMSPeer, HMSTrack } from './peer';
import { HMSPlaylistItem } from './playlist';
import { HMSChangeMultiTrackStateRequest, HMSChangeTrackStateRequest, HMSLeaveRoomRequest } from './requests';
import { HMSPoll, HMSTranscriptionInfo } from '../internal';
interface BaseNotification {
id: number;
type: string;
message: string;
severity?: HMSNotificationSeverity;
}
export interface HMSPeerNotification extends BaseNotification {
type: HMSNotificationTypes.PEER_JOINED | HMSNotificationTypes.PEER_LEFT | HMSNotificationTypes.NAME_UPDATED | HMSNotificationTypes.METADATA_UPDATED | HMSNotificationTypes.ROLE_UPDATED | HMSNotificationTypes.HAND_RAISE_CHANGED;
data: HMSPeer;
}
export interface HMSPeerListNotification extends BaseNotification {
type: HMSNotificationTypes.PEER_LIST;
data: HMSPeer[];
}
export interface HMSTrackNotification extends BaseNotification {
type: HMSNotificationTypes.TRACK_ADDED | HMSNotificationTypes.TRACK_DEGRADED | HMSNotificationTypes.TRACK_UNMUTED | HMSNotificationTypes.TRACK_DESCRIPTION_CHANGED | HMSNotificationTypes.TRACK_MUTED | HMSNotificationTypes.TRACK_REMOVED | HMSNotificationTypes.TRACK_RESTORED;
data: HMSTrack;
}
export interface HMSMessageNotification extends BaseNotification {
type: HMSNotificationTypes.NEW_MESSAGE;
data: HMSMessage;
}
export interface HMSExceptionNotification extends BaseNotification {
type: HMSNotificationTypes.ERROR;
data: HMSException;
}
export interface HMSChangeTrackStateRequestNotification extends BaseNotification {
type: HMSNotificationTypes.CHANGE_TRACK_STATE_REQUEST;
data: HMSChangeTrackStateRequest;
}
export interface HMSChangeMultiTrackStateRequestNotification extends BaseNotification {
type: HMSNotificationTypes.CHANGE_MULTI_TRACK_STATE_REQUEST;
data: HMSChangeMultiTrackStateRequest;
}
export interface HMSLeaveRoomRequestNotification extends BaseNotification {
type: HMSNotificationTypes.ROOM_ENDED | HMSNotificationTypes.REMOVED_FROM_ROOM;
data: HMSLeaveRoomRequest;
}
export interface HMSDeviceChangeEventNotification extends BaseNotification {
type: HMSNotificationTypes.DEVICE_CHANGE_UPDATE;
data?: HMSDeviceChangeEvent;
}
export interface HMSPlaylistItemNotification<T> extends BaseNotification {
type: HMSNotificationTypes.PLAYLIST_TRACK_ENDED;
data: HMSPlaylistItem<T>;
}
export interface HMSReconnectionNotification extends BaseNotification {
type: HMSNotificationTypes.RECONNECTED | HMSNotificationTypes.RECONNECTING;
data: HMSException | null;
}
export interface HMSPollNotification extends BaseNotification {
type: HMSNotificationTypes.POLL_STARTED | HMSNotificationTypes.POLL_STOPPED | HMSNotificationTypes.POLL_VOTES_UPDATED;
data: HMSPoll;
}
export interface HMSTranscriptionNotification extends BaseNotification {
type: HMSNotificationTypes.TRANSCRIPTION_STATE_UPDATED;
data: HMSTranscriptionInfo[];
}
export declare type HMSNotification = HMSPeerNotification | HMSPeerListNotification | HMSTrackNotification | HMSMessageNotification | HMSExceptionNotification | HMSChangeTrackStateRequestNotification | HMSChangeMultiTrackStateRequestNotification | HMSLeaveRoomRequestNotification | HMSDeviceChangeEventNotification | HMSReconnectionNotification | HMSTranscriptionNotification | HMSPlaylistItemNotification<any>;
export declare enum HMSNotificationSeverity {
INFO = "info",
ERROR = "error"
}
export declare enum HMSNotificationTypes {
PEER_JOINED = "PEER_JOINED",
PEER_LEFT = "PEER_LEFT",
PEER_LIST = "PEER_LIST",
NEW_MESSAGE = "NEW_MESSAGE",
ERROR = "ERROR",
RECONNECTING = "RECONNECTING",
RECONNECTED = "RECONNECTED",
TRACK_ADDED = "TRACK_ADDED",
TRACK_REMOVED = "TRACK_REMOVED",
TRACK_MUTED = "TRACK_MUTED",
TRACK_UNMUTED = "TRACK_UNMUTED",
TRACK_DEGRADED = "TRACK_DEGRADED",
TRACK_RESTORED = "TRACK_RESTORED",
TRACK_DESCRIPTION_CHANGED = "TRACK_DESCRIPTION_CHANGED",
ROLE_UPDATED = "ROLE_UPDATED",
CHANGE_TRACK_STATE_REQUEST = "CHANGE_TRACK_STATE_REQUEST",
CHANGE_MULTI_TRACK_STATE_REQUEST = "CHANGE_MULTI_TRACK_STATE_REQUEST",
ROOM_ENDED = "ROOM_ENDED",
REMOVED_FROM_ROOM = "REMOVED_FROM_ROOM",
DEVICE_CHANGE_UPDATE = "DEVICE_CHANGE_UPDATE",
PLAYLIST_TRACK_ENDED = "PLAYLIST_TRACK_ENDED",
NAME_UPDATED = "NAME_UPDATED",
METADATA_UPDATED = "METADATA_UPDATED",
POLL_CREATED = "POLL_CREATED",
POLL_STARTED = "POLL_STARTED",
POLL_STOPPED = "POLL_STOPPED",
POLL_VOTES_UPDATED = "POLL_VOTES_UPDATED",
POLLS_LIST = "POLLS_LIST",
HAND_RAISE_CHANGED = "HAND_RAISE_CHANGED",
TRANSCRIPTION_STATE_UPDATED = "TRANSCRIPTION_STATE_UPDATED"
}
export declare type HMSNotificationMapping<T extends HMSNotificationTypes, C = any> = {
[HMSNotificationTypes.PEER_JOINED]: HMSPeerNotification;
[HMSNotificationTypes.PEER_LEFT]: HMSPeerNotification;
[HMSNotificationTypes.PEER_LIST]: HMSPeerListNotification;
[HMSNotificationTypes.NAME_UPDATED]: HMSPeerNotification;
[HMSNotificationTypes.METADATA_UPDATED]: HMSPeerNotification;
[HMSNotificationTypes.ROLE_UPDATED]: HMSPeerNotification;
[HMSNotificationTypes.TRACK_ADDED]: HMSTrackNotification;
[HMSNotificationTypes.TRACK_REMOVED]: HMSTrackNotification;
[HMSNotificationTypes.TRACK_MUTED]: HMSTrackNotification;
[HMSNotificationTypes.TRACK_UNMUTED]: HMSTrackNotification;
[HMSNotificationTypes.TRACK_DEGRADED]: HMSTrackNotification;
[HMSNotificationTypes.TRACK_RESTORED]: HMSTrackNotification;
[HMSNotificationTypes.TRACK_DESCRIPTION_CHANGED]: HMSTrackNotification;
[HMSNotificationTypes.TRACK_UNMUTED]: HMSTrackNotification;
[HMSNotificationTypes.NEW_MESSAGE]: HMSMessageNotification;
[HMSNotificationTypes.ROOM_ENDED]: HMSLeaveRoomRequestNotification;
[HMSNotificationTypes.REMOVED_FROM_ROOM]: HMSLeaveRoomRequestNotification;
[HMSNotificationTypes.DEVICE_CHANGE_UPDATE]: HMSDeviceChangeEventNotification;
[HMSNotificationTypes.PLAYLIST_TRACK_ENDED]: HMSPlaylistItemNotification<C>;
[HMSNotificationTypes.ERROR]: HMSExceptionNotification;
[HMSNotificationTypes.CHANGE_TRACK_STATE_REQUEST]: HMSChangeTrackStateRequestNotification;
[HMSNotificationTypes.CHANGE_MULTI_TRACK_STATE_REQUEST]: HMSChangeMultiTrackStateRequestNotification;
[HMSNotificationTypes.RECONNECTED]: HMSReconnectionNotification;
[HMSNotificationTypes.RECONNECTING]: HMSReconnectionNotification;
[HMSNotificationTypes.POLL_STARTED]: HMSPollNotification;
[HMSNotificationTypes.POLL_STOPPED]: HMSPollNotification;
[HMSNotificationTypes.POLL_VOTES_UPDATED]: HMSPollNotification;
[HMSNotificationTypes.POLLS_LIST]: HMSPollNotification;
[HMSNotificationTypes.POLL_CREATED]: HMSPollNotification;
[HMSNotificationTypes.HAND_RAISE_CHANGED]: HMSPeerNotification;
[HMSNotificationTypes.TRANSCRIPTION_STATE_UPDATED]: HMSTranscriptionNotification;
}[T];
export declare type MappedNotifications<Type extends HMSNotificationTypes[]> = {
[index in keyof Type]: HMSNotificationMapping<Type[index]>;
};
export declare type HMSNotificationTypeParam = HMSNotificationTypes | HMSNotificationTypes[] | undefined;
export declare type HMSNotificationInCallback<T extends HMSNotificationTypeParam> = T extends HMSNotificationTypes[] ? MappedNotifications<T>[number] : T extends HMSNotificationTypes ? HMSNotificationMapping<T> : HMSNotification;
export declare type HMSNotificationCallback<T extends HMSNotificationTypeParam> = (notification: HMSNotificationInCallback<T>) => void;
/**
* @category Core
*/
export interface IHMSNotifications {
/**
* you can subscribe to notifications for new message, peer add etc. using this function.
* note that this is not meant to maintain any state on your side, as the reactive store already
* does that. The intent of this function is mainly to display toast notifications or send analytics.
* We'll provide a display message which can be displayed as it is for common cases.
*/
onNotification<T extends HMSNotificationTypeParam>(cb: HMSNotificationCallback<T>, types?: T): () => void;
}
export {};