UNPKG

dictrigyn-video-player

Version:

Contains Video player library components powered by angular. These components are designed to be used in sunbird consumption platforms *(mobile app, web portal, offline desktop app)* to drive reusability, maintainability hence reducing the redundant devel

225 lines 20.5 kB
/** * @fileoverview added by tsickle * Generated from: lib/sunbird-video-player.service.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Injectable } from '@angular/core'; import * as _ from 'lodash-es'; import { UtilService } from './services/util.service'; import { CsTelemetryModule } from '@project-sunbird/client-services/telemetry'; import * as i0 from "@angular/core"; import * as i1 from "./services/util.service"; export class SunbirdVideoPlayerService { /** * @param {?} utilService */ constructor(utilService) { this.utilService = utilService; this.contentSessionId = this.utilService.uniqueId(); } /** * @param {?} __0 * @return {?} */ initialize({ context, config, metadata }) { this.context = context; this.config = config; this.playSessionId = this.utilService.uniqueId(); if (!CsTelemetryModule.instance.isInitialised) { CsTelemetryModule.instance.init({}); CsTelemetryModule.instance.telemetryService.initTelemetry({ config: { pdata: context.pdata, env: 'contentplayer', channel: context.channel, did: context.did, authtoken: context.authToken || '', uid: context.uid || '', sid: context.sid, batchsize: 20, mode: context.mode, host: context.host || '', endpoint: context.endpoint || '/data/v3/telemetry', tags: context.tags, cdata: [{ id: this.contentSessionId, type: 'ContentSession' }, { id: this.playSessionId, type: 'PlaySession' }, { id: '2.0', type: 'PlayerVersion' }] }, userOrgDetails: {} }); } this.telemetryObject = { id: metadata.identifier, type: 'Content', ver: metadata.pkgVersion + '', rollup: context.objectRollup || {} }; } /** * @param {?} duration * @return {?} */ start(duration) { CsTelemetryModule.instance.telemetryService.raiseStartTelemetry({ options: this.getEventOptions(), edata: { type: 'content', mode: 'play', pageid: '', duration: Number((duration / 1e3).toFixed(2)) } }); } /** * @param {?} duration * @param {?} totallength * @param {?} currentlength * @param {?} endpageseen * @param {?} totalseekedlength * @param {?} visitedlength * @param {?} score * @return {?} */ end(duration, totallength, currentlength, endpageseen, totalseekedlength, visitedlength, score) { /** @type {?} */ const durationSec = Number((duration / 1e3).toFixed(2)); CsTelemetryModule.instance.telemetryService.raiseEndTelemetry({ edata: { type: 'content', mode: 'play', pageid: 'sunbird-player-Endpage', summary: [ { progress: Number(((currentlength / totallength) * 100).toFixed(0)) }, { totallength }, { visitedlength }, { visitedcontentend: (totallength === currentlength) }, { totalseekedlength }, { endpageseen }, { score } ], duration: durationSec }, options: this.getEventOptions() }); } /** * @param {?} id * @param {?} currentPage * @param {?=} extraValues * @return {?} */ interact(id, currentPage, extraValues) { CsTelemetryModule.instance.telemetryService.raiseInteractTelemetry({ options: this.getEventOptions(), edata: { type: 'TOUCH', subtype: '', id, pageid: currentPage + '', extra: extraValues } }); } /** * @param {?} data * @return {?} */ heartBeat(data) { CsTelemetryModule.instance.playerTelemetryService.onHeartBeatEvent(data, {}); } /** * @param {?} currentPage * @param {?=} cdata * @return {?} */ impression(currentPage, cdata = {}) { /** @type {?} */ const impressionEvent = { options: this.getEventOptions(), edata: { type: 'workflow', subtype: '', pageid: currentPage + '', uri: '' } }; if (!_.isEmpty(cdata)) { impressionEvent.options.context.cdata.push(cdata); } CsTelemetryModule.instance.telemetryService.raiseImpressionTelemetry(impressionEvent); } /** * @param {?} errorCode * @param {?} errorType * @param {?=} stacktrace * @return {?} */ error(errorCode, errorType, stacktrace) { CsTelemetryModule.instance.telemetryService.raiseErrorTelemetry({ options: this.getEventOptions(), edata: { err: errorCode, errtype: errorType, stacktrace: (stacktrace && stacktrace.toString()) || '' } }); } /** * @private * @return {?} */ getEventOptions() { return ({ object: this.telemetryObject, context: { channel: this.context.channel, pdata: this.context.pdata, env: 'contentplayer', sid: this.context.sid, uid: this.context.uid, cdata: [{ id: this.contentSessionId, type: 'ContentSession' }, { id: this.playSessionId, type: 'PlaySession' }, { id: '2.0', type: 'PlayerVersion' }], rollup: this.context.contextRollup || {} } }); } } SunbirdVideoPlayerService.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] } ]; /** @nocollapse */ SunbirdVideoPlayerService.ctorParameters = () => [ { type: UtilService } ]; /** @nocollapse */ SunbirdVideoPlayerService.ɵprov = i0.ɵɵdefineInjectable({ factory: function SunbirdVideoPlayerService_Factory() { return new SunbirdVideoPlayerService(i0.ɵɵinject(i1.UtilService)); }, token: SunbirdVideoPlayerService, providedIn: "root" }); if (false) { /** * @type {?} * @private */ SunbirdVideoPlayerService.prototype.contentSessionId; /** * @type {?} * @private */ SunbirdVideoPlayerService.prototype.playSessionId; /** * @type {?} * @private */ SunbirdVideoPlayerService.prototype.telemetryObject; /** * @type {?} * @private */ SunbirdVideoPlayerService.prototype.context; /** @type {?} */ SunbirdVideoPlayerService.prototype.config; /** * @type {?} * @private */ SunbirdVideoPlayerService.prototype.utilService; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VuYmlyZC12aWRlby1wbGF5ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2RpY3RyaWd5bi12aWRlby1wbGF5ZXIvIiwic291cmNlcyI6WyJsaWIvc3VuYmlyZC12aWRlby1wbGF5ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxLQUFLLENBQUMsTUFBTSxXQUFXLENBQUM7QUFFL0IsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDOzs7QUFLL0UsTUFBTSxPQUFPLHlCQUF5Qjs7OztJQVFwQyxZQUFvQixXQUF3QjtRQUF4QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUMxQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN0RCxDQUFDOzs7OztJQUVNLFVBQVUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFnQjtRQUMzRCxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFakQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUU7WUFDN0MsaUJBQWlCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNwQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUN2RDtnQkFDRSxNQUFNLEVBQUU7b0JBQ04sS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLO29CQUNwQixHQUFHLEVBQUUsZUFBZTtvQkFD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bnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaC1lcyc7XHJcbmltcG9ydCB7IFBsYXllckNvbmZpZyB9IGZyb20gJy4vcGxheWVySW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IFV0aWxTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy91dGlsLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDc1RlbGVtZXRyeU1vZHVsZSB9IGZyb20gJ0Bwcm9qZWN0LXN1bmJpcmQvY2xpZW50LXNlcnZpY2VzL3RlbGVtZXRyeSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTdW5iaXJkVmlkZW9QbGF5ZXJTZXJ2aWNlIHtcclxuXHJcbiAgcHJpdmF0ZSBjb250ZW50U2Vzc2lvbklkOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBwbGF5U2Vzc2lvbklkOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSB0ZWxlbWV0cnlPYmplY3Q6IGFueTtcclxuICBwcml2YXRlIGNvbnRleHQ7XHJcbiAgcHVibGljIGNvbmZpZztcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSB1dGlsU2VydmljZTogVXRpbFNlcnZpY2UpIHtcclxuICAgIHRoaXMuY29udGVudFNlc3Npb25JZCA9IHRoaXMudXRpbFNlcnZpY2UudW5pcXVlSWQoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBpbml0aWFsaXplKHsgY29udGV4dCwgY29uZmlnLCBtZXRhZGF0YSB9OiBQbGF5ZXJDb25maWcpIHtcclxuICAgIHRoaXMuY29udGV4dCA9IGNvbnRleHQ7XHJcbiAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcclxuICAgIHRoaXMucGxheVNlc3Npb25JZCA9IHRoaXMudXRpbFNlcnZpY2UudW5pcXVlSWQoKTtcclxuXHJcbiAgICBpZiAoIUNzVGVsZW1ldHJ5TW9kdWxlLmluc3RhbmNlLmlzSW5pdGlhbGlzZWQpIHtcclxuICAgICAgQ3NUZWxlbWV0cnlNb2R1bGUuaW5zdGFuY2UuaW5pdCh7fSk7XHJcbiAgICAgIENzVGVsZW1ldHJ5TW9kdWxlLmluc3RhbmNlLnRlbGVtZXRyeVNlcnZpY2UuaW5pdFRlbGVtZXRyeShcclxuICAgICAgICB7XHJcbiAgICAgICAgICBjb25maWc6IHtcclxuICAgICAgICAgICAgcGRhdGE6IGNvbnRleHQucGRhdGEsXHJcbiAgICAgICAgICAgIGVudjogJ2NvbnRlbnRwbGF5ZXInLFxyXG4gICAgICAgICAgICBjaGFubmVsOiBjb250ZXh0LmNoYW5uZWwsXHJcbiAgICAgICAgICAgIGRpZDogY29udGV4dC5kaWQsXHJcbiAgICAgICAgICAgIGF1dGh0b2tlbjogY29udGV4dC5hdXRoVG9rZW4gfHwgJycsXHJcbiAgICAgICAgICAgIHVpZDogY29udGV4dC51aWQgfHwgJycsXHJcbiAgICAgICAgICAgIHNpZDogY29udGV4dC5zaWQsXHJcbiAgICAgICAgICAgIGJhdGNoc2l6ZTogMjAsXHJcbiAgICAgICAgICAgIG1vZGU6IGNvbnRleHQubW9kZSxcclxuICAgICAgICAgICAgaG9zdDogY29udGV4dC5ob3N0IHx8ICcnLFxyXG4gICAgICAgICAgICBlbmRwb2ludDogY29udGV4dC5lbmRwb2ludCB8fCAnL2RhdGEvdjMvdGVsZW1ldHJ5JyxcclxuICAgICAgICAgICAgdGFnczogY29udGV4dC50YWdzLFxyXG4gICAgICAgICAgICBjZGF0YTogW3sgaWQ6IHRoaXMuY29udGVudFNlc3Npb25JZCwgdHlwZTogJ0NvbnRlbnRTZXNzaW9uJyB9LFxyXG4gICAgICAgICAgICB7IGlkOiB0aGlzLnBsYXlTZXNzaW9uSWQsIHR5cGU6ICdQbGF5U2Vzc2lvbicgfSxcclxuICAgICAgICAgICAge2lkOiAnMi4wJyAsIHR5cGU6ICdQbGF5ZXJWZXJzaW9uJ31dXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgdXNlck9yZ0RldGFpbHM6IHt9XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudGVsZW1ldHJ5T2JqZWN0ID0ge1xyXG4gICAgICBpZDogbWV0YWRhdGEuaWRlbnRpZmllcixcclxuICAgICAgdHlwZTogJ0NvbnRlbnQnLFxyXG4gICAgICB2ZXI6IG1ldGFkYXRhLnBrZ1ZlcnNpb24gKyAnJyxcclxuICAgICAgcm9sbHVwOiBjb250ZXh0Lm9iamVjdFJvbGx1cCB8fCB7fVxyXG4gICAgfTtcclxuICB9XHJcblxyXG5cclxuICBwdWJsaWMgc3RhcnQoZHVyYXRpb24pIHtcclxuICAgIENzVGVsZW1ldHJ5TW9kdWxlLmluc3RhbmNlLnRlbGVtZXRyeVNlcnZpY2UucmFpc2VTdGFydFRlbGVtZXRyeShcclxuICAgICAge1xyXG4gICAgICAgIG9wdGlvbnM6IHRoaXMuZ2V0RXZlbnRPcHRpb25zKCksXHJcbiAgICAgICAgZWRhdGE6IHsgdHlwZTogJ2NvbnRlbnQnLCBtb2RlOiAncGxheScsIHBhZ2VpZDogJycsIGR1cmF0aW9uOiBOdW1iZXIoKGR1cmF0aW9uIC8gMWUzKS50b0ZpeGVkKDIpKSB9XHJcbiAgICAgIH1cclxuICAgICk7XHJcblxyXG4gIH1cclxuXHJcbiAgcHVibGljIGVuZChkdXJhdGlvbiwgdG90YWxsZW5ndGgsIGN1cnJlbnRsZW5ndGgsIGVuZHBhZ2VzZWVuLCB0b3RhbHNlZWtlZGxlbmd0aCwgdmlzaXRlZGxlbmd0aCwgc2NvcmUpIHtcclxuICAgIGNvbnN0IGR1cmF0aW9uU2VjID0gTnVtYmVyKChkdXJhdGlvbiAvIDFlMykudG9GaXhlZCgyKSk7XHJcbiAgICBDc1RlbGVtZXRyeU1vZHVsZS5pbnN0YW5jZS50ZWxlbWV0cnlTZXJ2aWNlLnJhaXNlRW5kVGVsZW1ldHJ5KHtcclxuICAgICAgZWRhdGE6IHtcclxuICAgICAgICB0eXBlOiAnY29udGVudCcsXHJcbiAgICAgICAgbW9kZTogJ3BsYXknLFxyXG4gICAgICAgIHBhZ2VpZDogJ3N1bmJpcmQtcGxheWVyLUVuZHBhZ2UnLFxyXG4gICAgICAgIHN1bW1hcnk6IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgcHJvZ3Jlc3M6IE51bWJlcigoKGN1cnJlbnRsZW5ndGggLyB0b3RhbGxlbmd0aCkgKiAxMDApLnRvRml4ZWQoMCkpXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB0b3RhbGxlbmd0aFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdmlzaXRlZGxlbmd0aFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdmlzaXRlZGNvbnRlbnRlbmQ6ICh0b3RhbGxlbmd0aCA9PT0gY3VycmVudGxlbmd0aClcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHRvdGFsc2Vla2VkbGVuZ3RoXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBlbmRwYWdlc2VlblxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgc2NvcmVcclxuICAgICAgICAgIH1cclxuICAgICAgICBdLFxyXG4gICAgICAgIGR1cmF0aW9uOiBkdXJhdGlvblNlY1xyXG4gICAgICB9LFxyXG4gICAgICBvcHRpb25zOiB0aGlzLmdldEV2ZW50T3B0aW9ucygpXHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaW50ZXJhY3QoaWQsIGN1cnJlbnRQYWdlLCBleHRyYVZhbHVlcz8pIHtcclxuICAgIENzVGVsZW1ldHJ5TW9kdWxlLmluc3RhbmNlLnRlbGVtZXRyeVNlcnZpY2UucmFpc2VJbnRlcmFjdFRlbGVtZXRyeSh7XHJcbiAgICAgIG9wdGlvbnM6IHRoaXMuZ2V0RXZlbnRPcHRpb25zKCksXHJcbiAgICAgIGVkYXRhOiB7IHR5cGU6ICdUT1VDSCcsIHN1YnR5cGU6ICcnLCBpZCwgcGFnZWlkOiBjdXJyZW50UGFnZSArICcnICwgZXh0cmE6IGV4dHJhVmFsdWVzIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhlYXJ0QmVhdChkYXRhKSB7XHJcbiAgICBDc1RlbGVtZXRyeU1vZHVsZS5pbnN0YW5jZS5wbGF5ZXJUZWxlbWV0cnlTZXJ2aWNlLm9uSGVhcnRCZWF0RXZlbnQoZGF0YSwge30pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGltcHJlc3Npb24oY3VycmVudFBhZ2UsIGNkYXRhOiBhbnkgPSB7fSkge1xyXG4gICAgY29uc3QgaW1wcmVzc2lvbkV2ZW50ID0ge1xyXG4gICAgICBvcHRpb25zOiB0aGlzLmdldEV2ZW50T3B0aW9ucygpLFxyXG4gICAgICBlZGF0YTogeyB0eXBlOiAnd29ya2Zsb3cnLCBzdWJ0eXBlOiAnJywgcGFnZWlkOiBjdXJyZW50UGFnZSArICcnLCB1cmk6ICcnIH1cclxuICAgIH07XHJcbiAgICBpZiAoIV8uaXNFbXB0eShjZGF0YSkpIHtcclxuICAgICAgaW1wcmVzc2lvbkV2ZW50Lm9wdGlvbnMuY29udGV4dC5jZGF0YS5wdXNoKGNkYXRhKTtcclxuICAgIH1cclxuICAgIENzVGVsZW1ldHJ5TW9kdWxlLmluc3RhbmNlLnRlbGVtZXRyeVNlcnZpY2UucmFpc2VJbXByZXNzaW9uVGVsZW1ldHJ5KGltcHJlc3Npb25FdmVudCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZXJyb3IoZXJyb3JDb2RlOiBzdHJpbmcgLCBlcnJvclR5cGU6IHN0cmluZyAsICBzdGFja3RyYWNlPzogRXJyb3IpIHtcclxuICAgIENzVGVsZW1ldHJ5TW9kdWxlLmluc3RhbmNlLnRlbGVtZXRyeVNlcnZpY2UucmFpc2VFcnJvclRlbGVtZXRyeSh7XHJcbiAgICAgIG9wdGlvbnM6IHRoaXMuZ2V0RXZlbnRPcHRpb25zKCksXHJcbiAgICAgIGVkYXRhOiB7XHJcbiAgICAgICAgZXJyOiBlcnJvckNvZGUsXHJcbiAgICAgICAgZXJydHlwZTogZXJyb3JUeXBlLFxyXG4gICAgICAgIHN0YWNrdHJhY2U6IChzdGFja3RyYWNlICYmIHN0YWNrdHJhY2UudG9TdHJpbmcoKSkgfHwgJydcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEV2ZW50T3B0aW9ucygpIHtcclxuICAgIHJldHVybiAoe1xyXG4gICAgICBvYmplY3Q6IHRoaXMudGVsZW1ldHJ5T2JqZWN0LFxyXG4gICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgY2hhbm5lbDogdGhpcy5jb250ZXh0LmNoYW5uZWwsXHJcbiAgICAgICAgcGRhdGE6IHRoaXMuY29udGV4dC5wZGF0YSxcclxuICAgICAgICBlbnY6ICdjb250ZW50cGxheWVyJyxcclxuICAgICAgICBzaWQ6IHRoaXMuY29udGV4dC5zaWQsXHJcbiAgICAgICAgdWlkOiB0aGlzLmNvbnRleHQudWlkLFxyXG4gICAgICAgIGNkYXRhOiBbeyBpZDogdGhpcy5jb250ZW50U2Vzc2lvbklkLCB0eXBlOiAnQ29udGVudFNlc3Npb24nIH0sXHJcbiAgICAgICAgeyBpZDogdGhpcy5wbGF5U2Vzc2lvbklkLCB0eXBlOiAnUGxheVNlc3Npb24nIH0sXHJcbiAgICAgICAge2lkOiAnMi4wJyAsIHR5cGU6ICdQbGF5ZXJWZXJzaW9uJ31dLFxyXG4gICAgICAgIHJvbGx1cDogdGhpcy5jb250ZXh0LmNvbnRleHRSb2xsdXAgfHwge31cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==