@dicdikshaorg/video-player-v9
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
JavaScript
/**
* @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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VuYmlyZC12aWRlby1wbGF5ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BkaWNkaWtzaGFvcmcvdmlkZW8tcGxheWVyLXY5LyIsInNvdXJjZXMiOlsibGliL3N1bmJpcmQtdmlkZW8tcGxheWVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sS0FBSyxDQUFDLE1BQU0sV0FBVyxDQUFDO0FBRS9CLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQzs7O0FBSy9FLE1BQU0sT0FBTyx5QkFBeUI7Ozs7SUFRcEMsWUFBb0IsV0FBd0I7UUFBeEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDMUMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDdEQsQ0FBQzs7Ozs7SUFFTSxVQUFVLENBQUMsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBZ0I7UUFDM0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRWpELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFO1lBQzdDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDcEMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FDdkQ7Z0JBQ0UsTUFBTSxFQUFFO29CQUNOLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSztvQkFDcEIsR0FBRyxFQUFFLGVB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ZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gtZXMnO1xyXG5pbXBvcnQgeyBQbGF5ZXJDb25maWcgfSBmcm9tICcuL3BsYXllckludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBVdGlsU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvdXRpbC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ3NUZWxlbWV0cnlNb2R1bGUgfSBmcm9tICdAcHJvamVjdC1zdW5iaXJkL2NsaWVudC1zZXJ2aWNlcy90ZWxlbWV0cnknO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgU3VuYmlyZFZpZGVvUGxheWVyU2VydmljZSB7XHJcblxyXG4gIHByaXZhdGUgY29udGVudFNlc3Npb25JZDogc3RyaW5nO1xyXG4gIHByaXZhdGUgcGxheVNlc3Npb25JZDogc3RyaW5nO1xyXG4gIHByaXZhdGUgdGVsZW1ldHJ5T2JqZWN0OiBhbnk7XHJcbiAgcHJpdmF0ZSBjb250ZXh0O1xyXG4gIHB1YmxpYyBjb25maWc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdXRpbFNlcnZpY2U6IFV0aWxTZXJ2aWNlKSB7XHJcbiAgICB0aGlzLmNvbnRlbnRTZXNzaW9uSWQgPSB0aGlzLnV0aWxTZXJ2aWNlLnVuaXF1ZUlkKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaW5pdGlhbGl6ZSh7IGNvbnRleHQsIGNvbmZpZywgbWV0YWRhdGEgfTogUGxheWVyQ29uZmlnKSB7XHJcbiAgICB0aGlzLmNvbnRleHQgPSBjb250ZXh0O1xyXG4gICAgdGhpcy5jb25maWcgPSBjb25maWc7XHJcbiAgICB0aGlzLnBsYXlTZXNzaW9uSWQgPSB0aGlzLnV0aWxTZXJ2aWNlLnVuaXF1ZUlkKCk7XHJcblxyXG4gICAgaWYgKCFDc1RlbGVtZXRyeU1vZHVsZS5pbnN0YW5jZS5pc0luaXRpYWxpc2VkKSB7XHJcbiAgICAgIENzVGVsZW1ldHJ5TW9kdWxlLmluc3RhbmNlLmluaXQoe30pO1xyXG4gICAgICBDc1RlbGVtZXRyeU1vZHVsZS5pbnN0YW5jZS50ZWxlbWV0cnlTZXJ2aWNlLmluaXRUZWxlbWV0cnkoXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgY29uZmlnOiB7XHJcbiAgICAgICAgICAgIHBkYXRhOiBjb250ZXh0LnBkYXRhLFxyXG4gICAgICAgICAgICBlbnY6ICdjb250ZW50cGxheWVyJyxcclxuICAgICAgICAgICAgY2hhbm5lbDogY29udGV4dC5jaGFubmVsLFxyXG4gICAgICAgICAgICBkaWQ6IGNvbnRleHQuZGlkLFxyXG4gICAgICAgICAgICBhdXRodG9rZW46IGNvbnRleHQuYXV0aFRva2VuIHx8ICcnLFxyXG4gICAgICAgICAgICB1aWQ6IGNvbnRleHQudWlkIHx8ICcnLFxyXG4gICAgICAgICAgICBzaWQ6IGNvbnRleHQuc2lkLFxyXG4gICAgICAgICAgICBiYXRjaHNpemU6IDIwLFxyXG4gICAgICAgICAgICBtb2RlOiBjb250ZXh0Lm1vZGUsXHJcbiAgICAgICAgICAgIGhvc3Q6IGNvbnRleHQuaG9zdCB8fCAnJyxcclxuICAgICAgICAgICAgZW5kcG9pbnQ6IGNvbnRleHQuZW5kcG9pbnQgfHwgJy9kYXRhL3YzL3RlbGVtZXRyeScsXHJcbiAgICAgICAgICAgIHRhZ3M6IGNvbnRleHQudGFncyxcclxuICAgICAgICAgICAgY2RhdGE6IFt7IGlkOiB0aGlzLmNvbnRlbnRTZXNzaW9uSWQsIHR5cGU6ICdDb250ZW50U2Vzc2lvbicgfSxcclxuICAgICAgICAgICAgeyBpZDogdGhpcy5wbGF5U2Vzc2lvbklkLCB0eXBlOiAnUGxheVNlc3Npb24nIH0sXHJcbiAgICAgICAgICAgIHtpZDogJzIuMCcgLCB0eXBlOiAnUGxheWVyVmVyc2lvbid9XVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHVzZXJPcmdEZXRhaWxzOiB7fVxyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnRlbGVtZXRyeU9iamVjdCA9IHtcclxuICAgICAgaWQ6IG1ldGFkYXRhLmlkZW50aWZpZXIsXHJcbiAgICAgIHR5cGU6ICdDb250ZW50JyxcclxuICAgICAgdmVyOiBtZXRhZGF0YS5wa2dWZXJzaW9uICsgJycsXHJcbiAgICAgIHJvbGx1cDogY29udGV4dC5vYmplY3RSb2xsdXAgfHwge31cclxuICAgIH07XHJcbiAgfVxyXG5cclxuXHJcbiAgcHVibGljIHN0YXJ0KGR1cmF0aW9uKSB7XHJcbiAgICBDc1RlbGVtZXRyeU1vZHVsZS5pbnN0YW5jZS50ZWxlbWV0cnlTZXJ2aWNlLnJhaXNlU3RhcnRUZWxlbWV0cnkoXHJcbiAgICAgIHtcclxuICAgICAgICBvcHRpb25zOiB0aGlzLmdldEV2ZW50T3B0aW9ucygpLFxyXG4gICAgICAgIGVkYXRhOiB7IHR5cGU6ICdjb250ZW50JywgbW9kZTogJ3BsYXknLCBwYWdlaWQ6ICcnLCBkdXJhdGlvbjogTnVtYmVyKChkdXJhdGlvbiAvIDFlMykudG9GaXhlZCgyKSkgfVxyXG4gICAgICB9XHJcbiAgICApO1xyXG5cclxuICB9XHJcblxyXG4gIHB1YmxpYyBlbmQoZHVyYXRpb24sIHRvdGFsbGVuZ3RoLCBjdXJyZW50bGVuZ3RoLCBlbmRwYWdlc2VlbiwgdG90YWxzZWVrZWRsZW5ndGgsIHZpc2l0ZWRsZW5ndGgsIHNjb3JlKSB7XHJcbiAgICBjb25zdCBkdXJhdGlvblNlYyA9IE51bWJlcigoZHVyYXRpb24gLyAxZTMpLnRvRml4ZWQoMikpO1xyXG4gICAgQ3NUZWxlbWV0cnlNb2R1bGUuaW5zdGFuY2UudGVsZW1ldHJ5U2VydmljZS5yYWlzZUVuZFRlbGVtZXRyeSh7XHJcbiAgICAgIGVkYXRhOiB7XHJcbiAgICAgICAgdHlwZTogJ2NvbnRlbnQnLFxyXG4gICAgICAgIG1vZGU6ICdwbGF5JyxcclxuICAgICAgICBwYWdlaWQ6ICdzdW5iaXJkLXBsYXllci1FbmRwYWdlJyxcclxuICAgICAgICBzdW1tYXJ5OiBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHByb2dyZXNzOiBOdW1iZXIoKChjdXJyZW50bGVuZ3RoIC8gdG90YWxsZW5ndGgpICogMTAwKS50b0ZpeGVkKDApKVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdG90YWxsZW5ndGhcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHZpc2l0ZWRsZW5ndGhcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHZpc2l0ZWRjb250ZW50ZW5kOiAodG90YWxsZW5ndGggPT09IGN1cnJlbnRsZW5ndGgpXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB0b3RhbHNlZWtlZGxlbmd0aFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgZW5kcGFnZXNlZW5cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHNjb3JlXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgXSxcclxuICAgICAgICBkdXJhdGlvbjogZHVyYXRpb25TZWNcclxuICAgICAgfSxcclxuICAgICAgb3B0aW9uczogdGhpcy5nZXRFdmVudE9wdGlvbnMoKVxyXG4gICAgfSk7XHJcblxyXG4gIH1cclxuXHJcbiAgcHVibGljIGludGVyYWN0KGlkLCBjdXJyZW50UGFnZSwgZXh0cmFWYWx1ZXM/KSB7XHJcbiAgICBDc1RlbGVtZXRyeU1vZHVsZS5pbnN0YW5jZS50ZWxlbWV0cnlTZXJ2aWNlLnJhaXNlSW50ZXJhY3RUZWxlbWV0cnkoe1xyXG4gICAgICBvcHRpb25zOiB0aGlzLmdldEV2ZW50T3B0aW9ucygpLFxyXG4gICAgICBlZGF0YTogeyB0eXBlOiAnVE9VQ0gnLCBzdWJ0eXBlOiAnJywgaWQsIHBhZ2VpZDogY3VycmVudFBhZ2UgKyAnJyAsIGV4dHJhOiBleHRyYVZhbHVlcyB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoZWFydEJlYXQoZGF0YSkge1xyXG4gICAgQ3NUZWxlbWV0cnlNb2R1bGUuaW5zdGFuY2UucGxheWVyVGVsZW1ldHJ5U2VydmljZS5vbkhlYXJ0QmVhdEV2ZW50KGRhdGEsIHt9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBpbXByZXNzaW9uKGN1cnJlbnRQYWdlLCBjZGF0YTogYW55ID0ge30pIHtcclxuICAgIGNvbnN0IGltcHJlc3Npb25FdmVudCA9IHtcclxuICAgICAgb3B0aW9uczogdGhpcy5nZXRFdmVudE9wdGlvbnMoKSxcclxuICAgICAgZWRhdGE6IHsgdHlwZTogJ3dvcmtmbG93Jywgc3VidHlwZTogJycsIHBhZ2VpZDogY3VycmVudFBhZ2UgKyAnJywgdXJpOiAnJyB9XHJcbiAgICB9O1xyXG4gICAgaWYgKCFfLmlzRW1wdHkoY2RhdGEpKSB7XHJcbiAgICAgIGltcHJlc3Npb25FdmVudC5vcHRpb25zLmNvbnRleHQuY2RhdGEucHVzaChjZGF0YSk7XHJcbiAgICB9XHJcbiAgICBDc1RlbGVtZXRyeU1vZHVsZS5pbnN0YW5jZS50ZWxlbWV0cnlTZXJ2aWNlLnJhaXNlSW1wcmVzc2lvblRlbGVtZXRyeShpbXByZXNzaW9uRXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGVycm9yKGVycm9yQ29kZTogc3RyaW5nICwgZXJyb3JUeXBlOiBzdHJpbmcgLCAgc3RhY2t0cmFjZT86IEVycm9yKSB7XHJcbiAgICBDc1RlbGVtZXRyeU1vZHVsZS5pbnN0YW5jZS50ZWxlbWV0cnlTZXJ2aWNlLnJhaXNlRXJyb3JUZWxlbWV0cnkoe1xyXG4gICAgICBvcHRpb25zOiB0aGlzLmdldEV2ZW50T3B0aW9ucygpLFxyXG4gICAgICBlZGF0YToge1xyXG4gICAgICAgIGVycjogZXJyb3JDb2RlLFxyXG4gICAgICAgIGVycnR5cGU6IGVycm9yVHlwZSxcclxuICAgICAgICBzdGFja3RyYWNlOiAoc3RhY2t0cmFjZSAmJiBzdGFja3RyYWNlLnRvU3RyaW5nKCkpIHx8ICcnXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRFdmVudE9wdGlvbnMoKSB7XHJcbiAgICByZXR1cm4gKHtcclxuICAgICAgb2JqZWN0OiB0aGlzLnRlbGVtZXRyeU9iamVjdCxcclxuICAgICAgY29udGV4dDoge1xyXG4gICAgICAgIGNoYW5uZWw6IHRoaXMuY29udGV4dC5jaGFubmVsLFxyXG4gICAgICAgIHBkYXRhOiB0aGlzLmNvbnRleHQucGRhdGEsXHJcbiAgICAgICAgZW52OiAnY29udGVudHBsYXllcicsXHJcbiAgICAgICAgc2lkOiB0aGlzLmNvbnRleHQuc2lkLFxyXG4gICAgICAgIHVpZDogdGhpcy5jb250ZXh0LnVpZCxcclxuICAgICAgICBjZGF0YTogW3sgaWQ6IHRoaXMuY29udGVudFNlc3Npb25JZCwgdHlwZTogJ0NvbnRlbnRTZXNzaW9uJyB9LFxyXG4gICAgICAgIHsgaWQ6IHRoaXMucGxheVNlc3Npb25JZCwgdHlwZTogJ1BsYXlTZXNzaW9uJyB9LFxyXG4gICAgICAgIHtpZDogJzIuMCcgLCB0eXBlOiAnUGxheWVyVmVyc2lvbid9XSxcclxuICAgICAgICByb2xsdXA6IHRoaXMuY29udGV4dC5jb250ZXh0Um9sbHVwIHx8IHt9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=