easemob-chat-uikit
Version:
   ![GitHub last c
243 lines (242 loc) • 8.09 kB
TypeScript
import { VideoEncoderConfigurationPreset } from 'agora-rtc-sdk-ng';
import { VideoWindowProps } from '../types/index';
import CallError from './CallError';
import { ChatSDK } from 'module/SDK';
export declare enum CALL_STATUS {
IDLE = 0,
INVITING = 1,
ALERTING = 2,
CONFIRM_RING = 3,
RECEIVED_CONFIRM_RING = 4,
ANSWER_CALL = 5,
CONFIRM_CALLEE = 6,
IN_CALL = 7
}
export declare enum CALL_TYPE {
AUDIO_1V1 = 0,
VIDEO_1V1 = 1,
VIDEO_MULTI = 2,
AUDIO_MULTI = 3
}
export interface CallInfo {
callId: string;
channel: string;
token?: string;
type: CALL_TYPE;
callerDevId: string;
calleeDevId?: string;
callerUserId: string;
calleeUserId?: string;
groupId?: string;
groupName?: string;
groupAvatar?: string;
invitedMembers?: string[];
joinedMembers?: any[];
inviteMessageId?: string;
duration?: string;
state?: CALL_STATUS;
}
export declare enum HANGUP_REASON {
HANGUP = "hangup",
CANCEL = "cancel",
REMOTE_CANCEL = "remoteCancel",
REFUSE = "refuse",
REMOTE_REFUSE = "remoteRefuse",
BUSY = "busy",
NO_RESPONSE = "noResponse",
REMOTE_NO_RESPONSE = "remoteNoResponse",
HANDLE_ON_OTHER_DEVICE = "handleOnOtherDevice",
ABNORMAL_END = "abnormalEnd"
}
export interface CallServiceConfig {
connection: any;
onCallStart?: (videos: VideoWindowProps[]) => void;
onCallEnd?: (reason: string, callInfo: CallInfo) => void;
onInvitationReceived?: (invitation: any) => void;
onCallDurationUpdate?: (duration: string) => void;
onUserPublished?: (user: any) => void;
onUserUnpublished?: (user: any, mediaType: string) => void;
onRemoteVideoReady?: (videoInfo: VideoWindowProps) => void;
onNetworkQualityChange?: (networkQuality: Record<string, {
uplinkNetworkQuality: number;
downlinkNetworkQuality: number;
}>) => void;
onTalkingUsersChange?: (talkingUsers: string[]) => void;
userInfoProvider?: (userIds: string[]) => Promise<Array<{
userId: string;
nickname?: string;
avatarUrl?: string;
}>>;
groupInfoProvider?: (groupIds: string[]) => Promise<Array<{
groupId: string;
groupName?: string;
groupAvatar?: string;
}>>;
speakingVolumeThreshold?: number;
outgoingRingtoneSrc?: string;
incomingRingtoneSrc?: string;
enableRingtone?: boolean;
ringtoneVolume?: number;
ringtoneLoop?: boolean;
onCallError?: (error: CallError) => void;
onReceivedCall?: (callType: 'video' | 'audio' | 'group', userId: string, ext?: any) => void;
onRemoteUserJoined?: (userId: string, callType: 'video' | 'audio' | 'group') => void;
onRemoteUserLeft?: (userId: string, callType: 'video' | 'audio' | 'group') => void;
onRtcEngineCreated?: (rtc: any) => void;
onInvitedUserRemoved?: (userId: string, reason: 'refused' | 'cancelled' | 'timeout') => void;
encoderConfig?: VideoEncoderConfigurationPreset;
}
export declare class CallService {
private client;
private rtc;
private appId;
private agoraUid;
private userId;
private connection;
private accessToken?;
private currentCallInfo;
private callStatus;
private callDuration;
private timer;
private intervalTimer;
private joinedMembers;
private invitedMembers;
private userInfos;
private localVideoStream;
private hasEnteredPreview;
private isAnswering;
private remoteVideoTracks;
private remoteAudioTracks;
private remoteVideoStreams;
private pendingVideoTracks;
private onVideoElementReady?;
private onCallStart?;
private onCallEnd?;
private onInvitationReceived?;
private onCallDurationUpdate?;
private onUserPublished?;
private onUserUnpublished?;
private onRemoteVideoReady?;
private onNetworkQualityChange?;
private onTalkingUsersChange?;
private onInvitedUserRemoved?;
private userInfoProvider?;
private groupInfoProvider?;
private onReceivedCall?;
private onRemoteUserJoined?;
private onRemoteUserLeft?;
private onRtcEngineCreated?;
private onCallError?;
private cachedGroupInfos;
private speakingVolumeThreshold;
private outgoingRingtoneAudio;
private incomingRingtoneAudio;
private outgoingRingtoneSrc?;
private incomingRingtoneSrc?;
private enableRingtone;
private ringtoneVolume;
private ringtoneLoop;
private isRingtonePlaying;
private currentRingtoneType;
private creatingVideoTrack;
private encoderConfig?;
private creatingAudioTrack;
private UIdToUserIdMap;
constructor(config: CallServiceConfig);
setUIdToUserIdMap(uid: string, userId: string): void;
getAccessToken(): Promise<string | null>;
setUserInfo(userInfo: {
[key: string]: any;
}): void;
getCallStatus(): CALL_STATUS;
getCurrentCallInfo(): CallInfo | null;
startCall(options: {
msg: string;
callId: string;
channel: string;
chatType: string;
callType: CALL_TYPE;
to: string | string[];
message?: string;
groupId?: string;
groupName?: string;
groupAvatar?: string;
members?: string[];
ext?: Record<string, any>;
}): Promise<ChatSDK.TextMsgBody | null>;
private sendInvitationMessage;
answerCall(result: boolean): Promise<void>;
private sendAlertingMessage;
private sendAnswerCallMessage;
joinCall(): Promise<void>;
hangup(reason?: string, isCancel?: boolean): Promise<void>;
private sendCancelMessage;
sendHangupMessage(): void;
private startCallTimer;
private addAgoraRTCListeners;
private handleUserLeft;
private addMessageListener;
private handleInvitationMessage;
private handleSignalMessage;
private handleAlertMessage;
private sendConfirmRingMessage;
private handleConfirmRingMessage;
private handleAnswerCallMessage;
private sendConfirmCalleeMessage;
private handleConfirmCalleeMessage;
private handleCancelCallMessage;
private handleLeaveCallMessage;
toggleMute(): boolean;
toggleCamera(): Promise<boolean>;
private toggleCameraInPreview;
private speakerEnabled;
toggleSpeaker(): boolean;
isSpeakerEnabled(): boolean;
setSpeakerVolume(volume: number): void;
isMuted(): boolean;
isCameraEnabled(): boolean;
getJoinedMembers(): any[];
refreshLocalVideoStatus(): void;
playLocalVideoManually(): void;
createLocalVideoTrackFor1v1Preview(): Promise<boolean>;
createLocalVideoTrackForGroupCall(): Promise<boolean>;
onRestoreFromMinimized(): void;
private playLocalVideo;
private getOrCreateLocalVideoStream;
private getRemoteUserMutedStatus;
private getRemoteUserCameraStatus;
private getRemoteVideoStream;
addParticipants(newMembers: string[]): Promise<boolean>;
cancelInvitation(userId: string): Promise<boolean>;
cancelGroupCall(): Promise<boolean>;
private updateJoinedMember;
private convertCallTypeToString;
private playRemoteVideoToExistingElements;
getRemoteVideoTrack(userId: string): any;
getRemoteAudioTrack(userId: string): any;
getAllRemoteVideoTracks(): Map<string, any>;
cleanupPreviewMode(): Promise<void>;
getCachedGroupInfo(groupId: string): {
groupName?: string;
groupAvatar?: string;
} | null;
setCachedGroupInfo(groupId: string, groupInfo: {
groupName?: string;
groupAvatar?: string;
}): void;
private checkAndCleanupAllMediaTracks;
destroy(isInitializing?: boolean): void;
setVideoElementReadyCallback(callback: (videoId: string) => void): void;
notifyVideoElementReady(videoId: string): void;
private waitForVideoElement;
private initRingtone;
private playRingtone;
private stopRingtone;
setRingtoneConfig(config: {
outgoingRingtoneSrc?: string;
incomingRingtoneSrc?: string;
enableRingtone?: boolean;
ringtoneVolume?: number;
ringtoneLoop?: boolean;
}): void;
}