sinch-rtc
Version:
RTC JavaScript/Web SDK
68 lines • 2.81 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.CallQualityDataCollector = void 0;
const api_1 = require("../../ocra/api");
const CallQualityWarningEventType_1 = require("./CallQualityWarningEventType");
const CallQualityWarningMediaStreamType_1 = require("./CallQualityWarningMediaStreamType");
const Errors_1 = require("../../utils/Errors");
const utils_1 = require("../../utils");
class CallQualityDataCollector {
constructor() {
this.callQuality = {
warningEvents: [],
semanticVersion: {
major: 0,
minor: 3,
},
};
}
get callQualityData() {
return this.callQuality;
}
onCallQualityWarningEvent(_, callQualityWarningEvent) {
this.addToCallQualityWarningsArray(callQualityWarningEvent);
}
addToCallQualityWarningsArray(callQualityWarningEvent) {
try {
this.callQuality.warningEvents.push(this.toOcraWarningEvent(callQualityWarningEvent));
}
catch (error) {
console.error(`Error when converting ${callQualityWarningEvent.name} to OCRA report type`, error);
}
}
toOcraWarningEvent(callQualityWarningEvent) {
const mediaStreamType = this.toOcraWarningMediaStreamType(callQualityWarningEvent.mediaStreamType);
return Object.assign({ name: this.toOcraWarningEventName(callQualityWarningEvent.name), time: new Date(), type: this.toOcraWarningEventType(callQualityWarningEvent.type) }, (mediaStreamType !== undefined && {
mediaStreamType: mediaStreamType,
}));
}
toOcraWarningEventName(rawName) {
const eventName = Object.values(api_1.WarningEventName).find((value) => value === rawName);
if (!eventName) {
throw new Errors_1.ArgumentError(`Invalid WarningEventName. ${rawName} cannot be mapped to any Ocra event name`, (0, utils_1.nameof)(rawName));
}
return eventName;
}
toOcraWarningEventType(type) {
if (type === CallQualityWarningEventType_1.CallQualityWarningEventType.Recover) {
return api_1.WarningEventType.Recover;
}
else {
return api_1.WarningEventType.Trigger;
}
}
toOcraWarningMediaStreamType(callQualityWarningMediaStreamType) {
if (!callQualityWarningMediaStreamType) {
return undefined;
}
if (callQualityWarningMediaStreamType ===
CallQualityWarningMediaStreamType_1.CallQualityWarningMediaStreamType.Video) {
return api_1.MediaStreamType.Video;
}
else {
return api_1.MediaStreamType.Audio;
}
}
}
exports.CallQualityDataCollector = CallQualityDataCollector;
//# sourceMappingURL=CallQualityDataCollector.js.map