Skip to content

Commit

Permalink
fix(FEV-1249): use KS for thumbnails only if configured "loadThumbnai…
Browse files Browse the repository at this point in the history
…lWithKs" property (#24)
  • Loading branch information
semarche-kaltura authored May 2, 2022
1 parent 6d1f30a commit c4f6c1a
Show file tree
Hide file tree
Showing 6 changed files with 29 additions and 15 deletions.
8 changes: 4 additions & 4 deletions src/cuepoint-service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import {Provider} from './providers/provider';
import {VodProvider} from './providers/vod/vod-provider';
import {LiveProvider} from './providers/live/live-provider';
import {KalturaCuePoint} from './providers/vod/response-types';
import {CuepointTypeMap, KalturaCuePointType, KalturaThumbCuePointSubType} from './types';
import {CuepointTypeMap, KalturaCuePointType, KalturaThumbCuePointSubType, CuepointsConfig} from './types';
import Logger = KalturaPlayerTypes.Logger;
import EventManager = KalturaPlayerTypes.EventManager;

Expand All @@ -27,7 +27,7 @@ export class CuepointService {
return KalturaCuePoint.KalturaCuePointType;
}

constructor(player: Player, eventManager: EventManager, logger: any) {
constructor(player: Player, eventManager: EventManager, logger: any, private _config: CuepointsConfig) {
this._logger = logger;
this._player = player;
this._eventManager = eventManager;
Expand Down Expand Up @@ -60,9 +60,9 @@ export class CuepointService {
}

if (this._player.isLive()) {
this._provider = new LiveProvider(this._player, this._eventManager, this._logger, this._types);
this._provider = new LiveProvider(this._player, this._eventManager, this._logger, this._types, this._config);
} else {
this._provider = new VodProvider(this._player, this._eventManager, this._logger, this._types);
this._provider = new VodProvider(this._player, this._eventManager, this._logger, this._types, this._config);
}
}

Expand Down
11 changes: 7 additions & 4 deletions src/cuepoints.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import {CuepointService} from './cuepoint-service';
import {CuepointsConfig} from './types';
import Player = KalturaPlayerTypes.Player;

export class Cuepoints extends KalturaPlayer.core.BasePlugin {
Expand All @@ -7,12 +8,14 @@ export class Cuepoints extends KalturaPlayer.core.BasePlugin {
* The default configuration of the plugin.
* @static
*/
static defaultConfig = {};
static defaultConfig: CuepointsConfig = {
loadThumbnailWithKs: false
};

constructor(name: string, player: Player) {
super(name, player);
constructor(name: string, player: Player, config: CuepointsConfig) {
super(name, player, config);

this._cuePointService = new CuepointService(player, this.eventManager, this.logger);
this._cuePointService = new CuepointService(player, this.eventManager, this.logger, this.config);
player.registerService('kalturaCuepoints', this._cuePointService);
}

Expand Down
10 changes: 7 additions & 3 deletions src/providers/live/live-provider.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import {Provider} from '../provider';
import {KalturaCuePointType, CuepointTypeMap} from '../../types';
import {KalturaCuePointType, CuepointTypeMap, CuepointsConfig} from '../../types';
import {
PushNotificationPrivider,
PushNotificationEventTypes,
Expand All @@ -26,7 +26,7 @@ export class LiveProvider extends Provider {
private _currentTimeLiveResolvePromise = () => {};
private _currentTimeLivePromise: Promise<void>;

constructor(player: Player, eventManager: EventManager, logger: Logger, types: CuepointTypeMap) {
constructor(player: Player, eventManager: EventManager, logger: Logger, types: CuepointTypeMap, private _config: CuepointsConfig) {
super(player, eventManager, logger, types);
this._pushNotification = new PushNotificationPrivider(this._player, this._logger);
this._currentTimeLivePromise = this._makeCurrentTimeLiveReadyPromise();
Expand Down Expand Up @@ -130,7 +130,11 @@ export class LiveProvider extends Provider {
const newThumbCue = {
...newThumb,
...this._makeCuePointStartEndTime(newThumb.createdAt),
assetUrl: makeAssetUrl(this._player.provider.env.serviceUrl, newThumb.assetId, this._player.config.session?.ks)
assetUrl: makeAssetUrl(
this._player.provider.env.serviceUrl,
newThumb.assetId,
this._config.loadThumbnailWithKs ? this._player.config.session.ks : ''
)
};
this._thumbCuePoints.push(newThumbCue);
this._thumbCuePoints = this._fixCuePointEndTime(this._thumbCuePoints);
Expand Down
2 changes: 1 addition & 1 deletion src/providers/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ export function getDomainFromUrl(url: string) {
}

export function makeAssetUrl(serviceUrl: string, assetId: string, ks: string = '') {
return `${serviceUrl}/index.php/service/thumbAsset/action/serve/thumbAssetId/${assetId}/ks/${ks}`;
return `${serviceUrl}/index.php/service/thumbAsset/action/serve/thumbAssetId/${assetId}${ks ? `/ks/${ks}` : ''}`;
}

export function sortArrayBy<T>(cuePoints: T[], primarySortKey: string, secondarySortKey?: string) {
Expand Down
10 changes: 7 additions & 3 deletions src/providers/vod/vod-provider.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import {Provider, ProviderRequest} from '../provider';
import {ThumbLoader} from './thumb-loader';
import {KalturaQuizQuestionCuePoint, KalturaThumbCuePoint, KalturaCodeCuePoint} from './response-types';
import {KalturaCuePointType, KalturaThumbCuePointSubType, CuepointTypeMap} from '../../types';
import {KalturaCuePointType, KalturaThumbCuePointSubType, CuepointTypeMap, CuepointsConfig} from '../../types';
import Player = KalturaPlayerTypes.Player;
import Logger = KalturaPlayerTypes.Logger;
import EventManager = KalturaPlayerTypes.EventManager;
Expand All @@ -10,7 +10,7 @@ import {ViewChangeLoader} from './view-change-loader';
import {QuizQuestionLoader} from './quiz-question-loader';

export class VodProvider extends Provider {
constructor(player: Player, eventManager: EventManager, logger: Logger, types: CuepointTypeMap) {
constructor(player: Player, eventManager: EventManager, logger: Logger, types: CuepointTypeMap, private _config: CuepointsConfig) {
super(player, eventManager, logger, types);
this._fetchVodData();
}
Expand Down Expand Up @@ -127,7 +127,11 @@ export class VodProvider extends Provider {
const createCuePointList = (thumbCuePoints: Array<KalturaThumbCuePoint>) => {
return thumbCuePoints.map((thumbCuePoint: KalturaThumbCuePoint) => {
return {
assetUrl: makeAssetUrl(this._player.provider.env.serviceUrl, thumbCuePoint.assetId, this._player.config.session.ks),
assetUrl: makeAssetUrl(
this._player.provider.env.serviceUrl,
thumbCuePoint.assetId,
this._config.loadThumbnailWithKs ? this._player.config.session.ks : ''
),
id: thumbCuePoint.id,
cuePointType: thumbCuePoint.cuePointType,
startTime: thumbCuePoint.startTime / 1000,
Expand Down
3 changes: 3 additions & 0 deletions src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,6 @@ export enum KalturaCuePointType {
// HOTSPOT = 'hotspot',
// CHAPTER = 'chapter'
}
export interface CuepointsConfig {
loadThumbnailWithKs: boolean;
}

0 comments on commit c4f6c1a

Please sign in to comment.