UNPKG

easemob-chat-uikit

Version:

![Static Badge](https://img.shields.io/badge/platform-React-green) ![Static Badge](https://img.shields.io/badge/language-typescript-green) ![GitHub commit activity](https://img.shields.io/github/commit-activity/y/easemob/Easemob-UIKit-web) ![GitHub last c

243 lines (242 loc) 8.09 kB
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; }