UNPKG

sinch-rtc

Version:

RTC JavaScript/Web SDK

68 lines 2.81 kB
"use strict"; 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