@dicdikshaorg/video-player-mobile-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 • 19.8 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VuYmlyZC12aWRlby1wbGF5ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BkaWNkaWtzaGFvcmcvdmlkZW8tcGxheWVyLW1vYmlsZS12OS8iLCJzb3VyY2VzIjpbImxpYi9zdW5iaXJkLXZpZGVvLXBsYXllci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEtBQUssQ0FBQyxNQUFNLFdBQVcsQ0FBQztBQUUvQixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNENBQTRDLENBQUM7OztBQUsvRSxNQUFNLE9BQU8seUJBQXlCOzs7O0lBUXBDLFlBQW9CLFdBQXdCO1FBQXhCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQzFDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3RELENBQUM7Ozs7O0lBRU0sVUFBVSxDQUFDLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQWdCO1FBQzNELElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUVqRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRTtZQUM3QyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3BDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQ3ZEO2dCQUNFLE1BQU0sRUFBRTtvQkFDTixLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUs7b0JBQ3BCLEdBQUcs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LCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBQbGF5ZXJDb25maWcgfSBmcm9tICcuL3BsYXllckludGVyZmFjZXMnO1xuaW1wb3J0IHsgVXRpbFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3V0aWwuc2VydmljZSc7XG5pbXBvcnQgeyBDc1RlbGVtZXRyeU1vZHVsZSB9IGZyb20gJ0Bwcm9qZWN0LXN1bmJpcmQvY2xpZW50LXNlcnZpY2VzL3RlbGVtZXRyeSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFN1bmJpcmRWaWRlb1BsYXllclNlcnZpY2Uge1xuXG4gIHByaXZhdGUgY29udGVudFNlc3Npb25JZDogc3RyaW5nO1xuICBwcml2YXRlIHBsYXlTZXNzaW9uSWQ6IHN0cmluZztcbiAgcHJpdmF0ZSB0ZWxlbWV0cnlPYmplY3Q6IGFueTtcbiAgcHJpdmF0ZSBjb250ZXh0O1xuICBwdWJsaWMgY29uZmlnO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdXRpbFNlcnZpY2U6IFV0aWxTZXJ2aWNlKSB7XG4gICAgdGhpcy5jb250ZW50U2Vzc2lvbklkID0gdGhpcy51dGlsU2VydmljZS51bmlxdWVJZCgpO1xuICB9XG5cbiAgcHVibGljIGluaXRpYWxpemUoeyBjb250ZXh0LCBjb25maWcsIG1ldGFkYXRhIH06IFBsYXllckNvbmZpZykge1xuICAgIHRoaXMuY29udGV4dCA9IGNvbnRleHQ7XG4gICAgdGhpcy5jb25maWcgPSBjb25maWc7XG4gICAgdGhpcy5wbGF5U2Vzc2lvbklkID0gdGhpcy51dGlsU2VydmljZS51bmlxdWVJZCgpO1xuXG4gICAgaWYgKCFDc1RlbGVtZXRyeU1vZHVsZS5pbnN0YW5jZS5pc0luaXRpYWxpc2VkKSB7XG4gICAgICBDc1RlbGVtZXRyeU1vZHVsZS5pbnN0YW5jZS5pbml0KHt9KTtcbiAgICAgIENzVGVsZW1ldHJ5TW9kdWxlLmluc3RhbmNlLnRlbGVtZXRyeVNlcnZpY2UuaW5pdFRlbGVtZXRyeShcbiAgICAgICAge1xuICAgICAgICAgIGNvbmZpZzoge1xuICAgICAgICAgICAgcGRhdGE6IGNvbnRleHQucGRhdGEsXG4gICAgICAgICAgICBlbnY6ICdjb250ZW50cGxheWVyJyxcbiAgICAgICAgICAgIGNoYW5uZWw6IGNvbnRleHQuY2hhbm5lbCxcbiAgICAgICAgICAgIGRpZDogY29udGV4dC5kaWQsXG4gICAgICAgICAgICBhdXRodG9rZW46IGNvbnRleHQuYXV0aFRva2VuIHx8ICcnLFxuICAgICAgICAgICAgdWlkOiBjb250ZXh0LnVpZCB8fCAnJyxcbiAgICAgICAgICAgIHNpZDogY29udGV4dC5zaWQsXG4gICAgICAgICAgICBiYXRjaHNpemU6IDIwLFxuICAgICAgICAgICAgbW9kZTogY29udGV4dC5tb2RlLFxuICAgICAgICAgICAgaG9zdDogY29udGV4dC5ob3N0IHx8ICcnLFxuICAgICAgICAgICAgZW5kcG9pbnQ6IGNvbnRleHQuZW5kcG9pbnQgfHwgJy9kYXRhL3YzL3RlbGVtZXRyeScsXG4gICAgICAgICAgICB0YWdzOiBjb250ZXh0LnRhZ3MsXG4gICAgICAgICAgICBjZGF0YTogW3sgaWQ6IHRoaXMuY29udGVudFNlc3Npb25JZCwgdHlwZTogJ0NvbnRlbnRTZXNzaW9uJyB9LFxuICAgICAgICAgICAgeyBpZDogdGhpcy5wbGF5U2Vzc2lvbklkLCB0eXBlOiAnUGxheVNlc3Npb24nIH0sXG4gICAgICAgICAgICB7aWQ6ICcyLjAnICwgdHlwZTogJ1BsYXllclZlcnNpb24nfV1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHVzZXJPcmdEZXRhaWxzOiB7fVxuICAgICAgICB9XG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMudGVsZW1ldHJ5T2JqZWN0ID0ge1xuICAgICAgaWQ6IG1ldGFkYXRhLmlkZW50aWZpZXIsXG4gICAgICB0eXBlOiAnQ29udGVudCcsXG4gICAgICB2ZXI6IG1ldGFkYXRhLnBrZ1ZlcnNpb24gKyAnJyxcbiAgICAgIHJvbGx1cDogY29udGV4dC5vYmplY3RSb2xsdXAgfHwge31cbiAgICB9O1xuICB9XG5cblxuICBwdWJsaWMgc3RhcnQoZHVyYXRpb24pIHtcbiAgICBDc1RlbGVtZXRyeU1vZHVsZS5pbnN0YW5jZS50ZWxlbWV0cnlTZXJ2aWNlLnJhaXNlU3RhcnRUZWxlbWV0cnkoXG4gICAgICB7XG4gICAgICAgIG9wdGlvbnM6IHRoaXMuZ2V0RXZlbnRPcHRpb25zKCksXG4gICAgICAgIGVkYXRhOiB7IHR5cGU6ICdjb250ZW50JywgbW9kZTogJ3BsYXknLCBwYWdlaWQ6ICcnLCBkdXJhdGlvbjogTnVtYmVyKChkdXJhdGlvbiAvIDFlMykudG9GaXhlZCgyKSkgfVxuICAgICAgfVxuICAgICk7XG5cbiAgfVxuXG4gIHB1YmxpYyBlbmQoZHVyYXRpb24sIHRvdGFsbGVuZ3RoLCBjdXJyZW50bGVuZ3RoLCBlbmRwYWdlc2VlbiwgdG90YWxzZWVrZWRsZW5ndGgsIHZpc2l0ZWRsZW5ndGgsIHNjb3JlKSB7XG4gICAgY29uc3QgZHVyYXRpb25TZWMgPSBOdW1iZXIoKGR1cmF0aW9uIC8gMWUzKS50b0ZpeGVkKDIpKTtcbiAgICBDc1RlbGVtZXRyeU1vZHVsZS5pbnN0YW5jZS50ZWxlbWV0cnlTZXJ2aWNlLnJhaXNlRW5kVGVsZW1ldHJ5KHtcbiAgICAgIGVkYXRhOiB7XG4gICAgICAgIHR5cGU6ICdjb250ZW50JyxcbiAgICAgICAgbW9kZTogJ3BsYXknLFxuICAgICAgICBwYWdlaWQ6ICdzdW5iaXJkLXBsYXllci1FbmRwYWdlJyxcbiAgICAgICAgc3VtbWFyeTogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHByb2dyZXNzOiBOdW1iZXIoKChjdXJyZW50bGVuZ3RoIC8gdG90YWxsZW5ndGgpICogMTAwKS50b0ZpeGVkKDApKVxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgdG90YWxsZW5ndGhcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHZpc2l0ZWRsZW5ndGhcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHZpc2l0ZWRjb250ZW50ZW5kOiAodG90YWxsZW5ndGggPT09IGN1cnJlbnRsZW5ndGgpXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0b3RhbHNlZWtlZGxlbmd0aFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgZW5kcGFnZXNlZW5cbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHNjb3JlXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICBkdXJhdGlvbjogZHVyYXRpb25TZWNcbiAgICAgIH0sXG4gICAgICBvcHRpb25zOiB0aGlzLmdldEV2ZW50T3B0aW9ucygpXG4gICAgfSk7XG5cbiAgfVxuXG4gIHB1YmxpYyBpbnRlcmFjdChpZCwgY3VycmVudFBhZ2UsIGV4dHJhVmFsdWVzPykge1xuICAgIENzVGVsZW1ldHJ5TW9kdWxlLmluc3RhbmNlLnRlbGVtZXRyeVNlcnZpY2UucmFpc2VJbnRlcmFjdFRlbGVtZXRyeSh7XG4gICAgICBvcHRpb25zOiB0aGlzLmdldEV2ZW50T3B0aW9ucygpLFxuICAgICAgZWRhdGE6IHsgdHlwZTogJ1RPVUNIJywgc3VidHlwZTogJycsIGlkLCBwYWdlaWQ6IGN1cnJlbnRQYWdlICsgJycgLCBleHRyYTogZXh0cmFWYWx1ZXMgfVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGhlYXJ0QmVhdChkYXRhKSB7XG4gICAgQ3NUZWxlbWV0cnlNb2R1bGUuaW5zdGFuY2UucGxheWVyVGVsZW1ldHJ5U2VydmljZS5vbkhlYXJ0QmVhdEV2ZW50KGRhdGEsIHt9KTtcbiAgfVxuXG4gIHB1YmxpYyBpbXByZXNzaW9uKGN1cnJlbnRQYWdlLCBjZGF0YTogYW55ID0ge30pIHtcbiAgICBjb25zdCBpbXByZXNzaW9uRXZlbnQgPSB7XG4gICAgICBvcHRpb25zOiB0aGlzLmdldEV2ZW50T3B0aW9ucygpLFxuICAgICAgZWRhdGE6IHsgdHlwZTogJ3dvcmtmbG93Jywgc3VidHlwZTogJycsIHBhZ2VpZDogY3VycmVudFBhZ2UgKyAnJywgdXJpOiAnJyB9XG4gICAgfTtcbiAgICBpZiAoIV8uaXNFbXB0eShjZGF0YSkpIHtcbiAgICAgIGltcHJlc3Npb25FdmVudC5vcHRpb25zLmNvbnRleHQuY2RhdGEucHVzaChjZGF0YSk7XG4gICAgfVxuICAgIENzVGVsZW1ldHJ5TW9kdWxlLmluc3RhbmNlLnRlbGVtZXRyeVNlcnZpY2UucmFpc2VJbXByZXNzaW9uVGVsZW1ldHJ5KGltcHJlc3Npb25FdmVudCk7XG4gIH1cblxuICBwdWJsaWMgZXJyb3IoZXJyb3JDb2RlOiBzdHJpbmcgLCBlcnJvclR5cGU6IHN0cmluZyAsICBzdGFja3RyYWNlPzogRXJyb3IpIHtcbiAgICBDc1RlbGVtZXRyeU1vZHVsZS5pbnN0YW5jZS50ZWxlbWV0cnlTZXJ2aWNlLnJhaXNlRXJyb3JUZWxlbWV0cnkoe1xuICAgICAgb3B0aW9uczogdGhpcy5nZXRFdmVudE9wdGlvbnMoKSxcbiAgICAgIGVkYXRhOiB7XG4gICAgICAgIGVycjogZXJyb3JDb2RlLFxuICAgICAgICBlcnJ0eXBlOiBlcnJvclR5cGUsXG4gICAgICAgIHN0YWNrdHJhY2U6IChzdGFja3RyYWNlICYmIHN0YWNrdHJhY2UudG9TdHJpbmcoKSkgfHwgJydcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RXZlbnRPcHRpb25zKCkge1xuICAgIHJldHVybiAoe1xuICAgICAgb2JqZWN0OiB0aGlzLnRlbGVtZXRyeU9iamVjdCxcbiAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgY2hhbm5lbDogdGhpcy5jb250ZXh0LmNoYW5uZWwsXG4gICAgICAgIHBkYXRhOiB0aGlzLmNvbnRleHQucGRhdGEsXG4gICAgICAgIGVudjogJ2NvbnRlbnRwbGF5ZXInLFxuICAgICAgICBzaWQ6IHRoaXMuY29udGV4dC5zaWQsXG4gICAgICAgIHVpZDogdGhpcy5jb250ZXh0LnVpZCxcbiAgICAgICAgY2RhdGE6IFt7IGlkOiB0aGlzLmNvbnRlbnRTZXNzaW9uSWQsIHR5cGU6ICdDb250ZW50U2Vzc2lvbicgfSxcbiAgICAgICAgeyBpZDogdGhpcy5wbGF5U2Vzc2lvbklkLCB0eXBlOiAnUGxheVNlc3Npb24nIH0sXG4gICAgICAgIHtpZDogJzIuMCcgLCB0eXBlOiAnUGxheWVyVmVyc2lvbid9XSxcbiAgICAgICAgcm9sbHVwOiB0aGlzLmNvbnRleHQuY29udGV4dFJvbGx1cCB8fCB7fVxuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iXX0=