Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: disabling UI #107

Merged
merged 5 commits into from
Apr 16, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
60 changes: 60 additions & 0 deletions src/common/ui-wrapper.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
// @flow
import {UIManager} from 'playkit-js-ui'
import {getPreviewThumbnailConfig} from 'poster-and-thumbs'

class UIWrapper {
_uiManager: UIManager;
_disabled: boolean = false;

constructor(player: Player, config: UIOptionsObject) {
if (config.disable) {
this._disabled = true;
appendPlayerViewToTargetContainer(config.targetId, player.getView());
} else {
this._uiManager = new UIManager(player, config);
if (config.customPreset) {
this._uiManager.buildCustomUI(config.customPreset)
} else {
this._uiManager.buildDefaultUI();
}
}
}

setConfig(config: Object, componentAlias?: string): void {
if (this._disabled) return;
this._uiManager.setConfig(config, componentAlias);
}

setErrorPresetConfig(mediaInfo: ProviderMediaInfoObject): void {
if (this._disabled) return;
this._uiManager.setConfig({mediaInfo: mediaInfo}, 'error');
}

setSeekbarConfig(mediaConfig: Object): void {
if (this._disabled) return;
const seekbarConfig = getPreviewThumbnailConfig(this._uiManager, mediaConfig);
if (seekbarConfig) {
this._uiManager.setConfig(seekbarConfig, 'seekbar');
}
}

setLoadingSpinnerState(show: boolean): void {
if (this._disabled) return;
this._uiManager.setConfig({show: show}, 'loading');
}
}

/**
* Appends the player view to the target element in the dom.
* @param {string} targetId - The target id.
* @param {HTMLDivElement} view - The player div element.
* @returns {void}
*/
function appendPlayerViewToTargetContainer(targetId: string, view: HTMLDivElement): void {
const targetContainer = document.getElementById(targetId);
if (targetContainer) {
targetContainer.appendChild(view);
}
}

export {UIWrapper};
28 changes: 0 additions & 28 deletions src/common/utils/ui-actions.js

This file was deleted.

23 changes: 9 additions & 14 deletions src/kaltura-player.js
Original file line number Diff line number Diff line change
@@ -1,32 +1,27 @@
// @flow
import {Error, EventType as CoreEventType, FakeEvent, loadPlayer, Utils} from 'playkit-js'
import {EventType as UIEventType, UIManager} from 'playkit-js-ui'
import {EventType as UIEventType} from 'playkit-js-ui'
import {Provider} from 'playkit-js-providers'
import getLogger from './common/utils/logger'
import {addKalturaParams} from './common/utils/kaltura-params'
import {setUIErrorOverlayConfig, setUILoadingSpinnerState} from './common/utils/ui-actions'
import {evaluatePluginsConfig} from './common/plugins/plugins-config'
import {addKalturaPoster, setUISeekbarConfig} from 'poster-and-thumbs'
import {addKalturaPoster} from 'poster-and-thumbs'
import './assets/style.css'
import {UIWrapper} from './common/ui-wrapper'

export default class KalturaPlayer {
_player: Player;
_playerConfigure: Function;
_provider: Provider;
_uiManager: UIManager;
_uiWrapper: UIWrapper;
_logger: any;

constructor(options: KalturaPlayerOptionsObject) {
this._player = loadPlayer(options.player);
this._playerConfigure = this._player.configure.bind(this._player);
this._logger = getLogger('KalturaPlayer' + Utils.Generator.uniqueId(5));
this._uiWrapper = new UIWrapper(this._player, options.ui);
this._provider = new Provider(options.provider, __VERSION__);
this._uiManager = new UIManager(this._player, options.ui);
if (options.ui.customPreset) {
this._uiManager.buildCustomUI(options.ui.customPreset)
} else {
this._uiManager.buildDefaultUI();
}
Object.assign(this._player, {
loadMedia: mediaInfo => this.loadMedia(mediaInfo),
configure: config => this.configure(config),
Expand All @@ -44,7 +39,7 @@ export default class KalturaPlayer {
this._playerConfigure(config.player);
}
if (config.ui) {
this._uiManager.setConfig(config.ui);
this._uiWrapper.setConfig(config.ui);
}
}
}
Expand All @@ -53,8 +48,8 @@ export default class KalturaPlayer {
this._logger.debug('loadMedia', mediaInfo);
this._player.reset();
this._player.loadingMedia = true;
setUILoadingSpinnerState(this._uiManager, true);
setUIErrorOverlayConfig(this._uiManager, mediaInfo);
this._uiWrapper.setErrorPresetConfig(mediaInfo);
this._uiWrapper.setLoadingSpinnerState(true);
return this._provider.getMediaConfig(mediaInfo)
.then(mediaConfig => this.setMedia(mediaConfig))
.catch(e => {
Expand All @@ -65,7 +60,7 @@ export default class KalturaPlayer {
setMedia(mediaConfig: ProviderMediaConfigObject): void {
this._logger.debug('setMedia', mediaConfig);
const dimensions = this._player.dimensions;
setUISeekbarConfig(this._uiManager, mediaConfig);
this._uiWrapper.setSeekbarConfig(mediaConfig);
Utils.Object.mergeDeep(mediaConfig.metadata, this._player.config.metadata);
addKalturaPoster(mediaConfig.metadata, dimensions.width, dimensions.height);
addKalturaParams(mediaConfig.sources, this._player);
Expand Down
11 changes: 5 additions & 6 deletions src/ott/poster-and-thumbs.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,18 +24,17 @@ function addKalturaPoster(metadata: Object, width: number, height: number): void
}

/**
* Sets the preview thumbnail config for the ui seekbar component.
* Gets the preview thumbnail config for the ui seekbar component.
* @param {UIManager} uiManager - The ui manager.
* @returns {void}
* @returns {?Object} - The preview thumbnail config.
*/
function setUISeekbarConfig(uiManager: UIManager): void {
function getPreviewThumbnailConfig(uiManager: UIManager): ?Object {
let seekbarConfig = Utils.Object.getPropertyPath(uiManager, 'config.components.seekbar');
if (seekbarConfig) {
seekbarConfig = Utils.Object.mergeDeep({
return Utils.Object.mergeDeep({
thumbsWidth: DEFAULT_THUMBS_WIDTH,
thumbsSlices: DEFAULT_THUMBS_SLICES
}, seekbarConfig);
uiManager.setConfig(seekbarConfig, "seekbar");
}
}

Expand Down Expand Up @@ -82,4 +81,4 @@ function selectPosterByPlayerDimensions(posters: Array<Object>, playerWidth: num
return url;
}

export {addKalturaPoster, setUISeekbarConfig};
export {addKalturaPoster, getPreviewThumbnailConfig};
12 changes: 6 additions & 6 deletions src/ovp/poster-and-thumbs.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,17 +16,17 @@ function addKalturaPoster(metadata: Object, playerWidth: number, playerHeight: n
}

/**
* Sets the preview thumbnail config for the ui seekbar component.
* Gets the preview thumbnail config for the ui seekbar component.
* @param {UIManager} uiManager - The ui manager.
* @param {Object} mediaConfig - The provider media config.
* @returns {void}
* @returns {Object} - The preview thumbnail config.
*/
function setUISeekbarConfig(uiManager: UIManager, mediaConfig: Object): void {
uiManager.setConfig({
function getPreviewThumbnailConfig(uiManager: UIManager, mediaConfig: Object): Object {
return {
thumbsSprite: getThumbSlicesUrl(mediaConfig),
thumbsWidth: DEFAULT_THUMBS_WIDTH,
thumbsSlices: DEFAULT_THUMBS_SLICES
}, "seekbar");
};
}

export {addKalturaPoster, setUISeekbarConfig};
export {addKalturaPoster, getPreviewThumbnailConfig};