infobip-rtc
Version:
Infobip RTC JavaScript SDK - Infobip WebRTC API Implementation
67 lines • 4.13 kB
JavaScript
import { ViberEndpoint, WebrtcEndpoint } from "../../util/Endpoint";
import { FlowType } from "../FlowType";
import { DefaultCall } from "./DefaultCall";
import { CallsApiEvent } from "../event/CallsApiEvents";
import { ApplicationCallOptions } from "../options/ApplicationCallOptions";
import ValidationUtil from "./util/ValidationUtil";
import { InternalApplicationCallOptions } from "../options/InternalApplicationCallOptions";
import { getRecordingOptions } from "./util/CallOptionsUtil";
export class DefaultOutgoingViberCall extends DefaultCall {
constructor(infobipRtc, viberCallOptions, currentUserIdentity, phoneNumberDestination, callerIdentifier) {
super(viberCallOptions, new WebrtcEndpoint(currentUserIdentity), new ViberEndpoint(phoneNumberDestination));
let applicationCallOptions = this.mapOptions(phoneNumberDestination, callerIdentifier, viberCallOptions);
this.applicationCall = infobipRtc.callApplication(phoneNumberDestination, applicationCallOptions);
this.initEventHandlers();
}
counterpart() {
return this.destination();
}
options() {
return this.basicCallOptions;
}
mapOptions(phoneNumberDestination, callerIdentifier, viberCallOptions) {
if (viberCallOptions === null || viberCallOptions === void 0 ? void 0 : viberCallOptions.customData) {
ValidationUtil.validateCustomData(viberCallOptions === null || viberCallOptions === void 0 ? void 0 : viberCallOptions.customData);
}
let internalCustomData = Object.assign(Object.assign({ to: phoneNumberDestination, from: callerIdentifier, type: FlowType.PHONE_NUMBER.toString() }, getRecordingOptions(viberCallOptions)), { viber: true.toString(), withDialog: "true" });
let applicationCallOptions = ApplicationCallOptions.builder()
.setAudio(viberCallOptions === null || viberCallOptions === void 0 ? void 0 : viberCallOptions.audio)
.setAudioOptions(viberCallOptions === null || viberCallOptions === void 0 ? void 0 : viberCallOptions.audioOptions)
.setAutoReconnect(viberCallOptions === null || viberCallOptions === void 0 ? void 0 : viberCallOptions.autoReconnect)
.build();
if (viberCallOptions === null || viberCallOptions === void 0 ? void 0 : viberCallOptions.customData) {
applicationCallOptions.customData = viberCallOptions === null || viberCallOptions === void 0 ? void 0 : viberCallOptions.customData;
}
return new InternalApplicationCallOptions(applicationCallOptions, internalCustomData);
}
initEventHandlers() {
this.applicationCall.on(CallsApiEvent.RINGING, () => {
this.apiEventEmitter.emit(CallsApiEvent.RINGING, {});
});
this.applicationCall.on(CallsApiEvent.EARLY_MEDIA, (event) => {
this.apiEventEmitter.emit(CallsApiEvent.EARLY_MEDIA, event);
});
this.applicationCall.on(CallsApiEvent.ESTABLISHED, (event) => {
this.apiEventEmitter.emit(CallsApiEvent.ESTABLISHED, event);
});
this.applicationCall.on(CallsApiEvent.HANGUP, (event) => {
this.apiEventEmitter.emit(CallsApiEvent.HANGUP, event);
});
this.applicationCall.on(CallsApiEvent.ERROR, (event) => {
this.apiEventEmitter.emit(CallsApiEvent.ERROR, event);
});
this.applicationCall.on(CallsApiEvent.NETWORK_QUALITY_CHANGED, (event) => {
this.apiEventEmitter.emit(CallsApiEvent.NETWORK_QUALITY_CHANGED, event);
});
this.applicationCall.on(CallsApiEvent.DIALOG_RECORDING_STARTED, (event) => {
this.apiEventEmitter.emit(CallsApiEvent.CALL_RECORDING_STARTED, { recordingType: event.recordingType });
});
this.applicationCall.on(CallsApiEvent.RECONNECTING, (event) => {
this.apiEventEmitter.emit(CallsApiEvent.RECONNECTING, event);
});
this.applicationCall.on(CallsApiEvent.RECONNECTED, (event) => {
this.apiEventEmitter.emit(CallsApiEvent.RECONNECTED, event);
});
}
}
//# sourceMappingURL=DefaultOutgoingViberCall.js.map