@wscsports/blaze-rtn-sdk
Version:
WSC Sports Blaze SDK component for React Native
107 lines (105 loc) • 4.35 kB
JavaScript
import { UIManager, findNodeHandle } from 'react-native';
import { Component } from 'react';
import { mapToObject } from '../utils';
import { CommonParser } from '../classes/common-parser';
export class BlazeBaseWidgetView extends Component {
_onDataLoadStarted = event => {
if (this.props.widgetDelegate?.onDataLoadStarted) {
this.props.widgetDelegate?.onDataLoadStarted(event.nativeEvent);
}
};
_onDataLoadCompleted = event => {
if (this.props.widgetDelegate?.onDataLoadComplete) {
this.props.widgetDelegate?.onDataLoadComplete(event.nativeEvent);
}
};
_onPlayerDidAppear = event => {
if (this.props.widgetDelegate?.onPlayerDidAppear) {
this.props.widgetDelegate?.onPlayerDidAppear(event.nativeEvent);
}
};
_onPlayerDismiss = event => {
if (this.props.widgetDelegate?.onPlayerDidDismiss) {
this.props.widgetDelegate?.onPlayerDidDismiss(event.nativeEvent);
}
};
_onItemClicked = event => {
if (this.props.widgetDelegate?.onItemClicked) {
this.props.widgetDelegate?.onItemClicked(event.nativeEvent);
}
};
_onTriggerCTA = event => {
if (this.props.widgetDelegate?.onTriggerCTA) {
this.props.widgetDelegate?.onTriggerCTA(event.nativeEvent);
}
};
_onTriggerPlayerBodyTextLink = event => {
if (this.props.widgetDelegate?.onTriggerPlayerBodyTextLink) {
this.props.widgetDelegate?.onTriggerPlayerBodyTextLink(event.nativeEvent);
}
};
_onPlayerEventTriggered = event => {
if (this.props.widgetDelegate?.onPlayerEventTriggered) {
const nativeEvent = event.nativeEvent;
const widgetId = nativeEvent.widgetId;
const playerEventType = nativeEvent.playerEventType;
const playerEventParams = nativeEvent.playerEventParams;
const result = CommonParser.extractPlayerEvent(playerEventType, playerEventParams);
if (result != null) {
this.props.widgetDelegate?.onPlayerEventTriggered({
widgetId: widgetId,
playerEvent: result
});
}
}
};
reloadData(isSilentRefresh = false) {
if (this.ref) {
UIManager.dispatchViewManagerCommand(findNodeHandle(this.ref), UIManager.getViewManagerConfig(this.getComponentName()).Commands.reloadData, [isSilentRefresh]);
}
}
updateDataSource(dataSource, isSilentRefresh = false) {
if (this.ref) {
UIManager.dispatchViewManagerCommand(findNodeHandle(this.ref), UIManager.getViewManagerConfig(this.getComponentName()).Commands.updateDataSource, [dataSource, isSilentRefresh]);
}
}
play() {
if (this.ref) {
UIManager.dispatchViewManagerCommand(findNodeHandle(this.ref), UIManager.getViewManagerConfig(this.getComponentName()).Commands.play);
}
}
updateOverrideStyles(perItemStyleOverrides, shouldUpdateUi) {
if (this.ref) {
const perItemStyleOverridesRecord = mapToObject(perItemStyleOverrides);
UIManager.dispatchViewManagerCommand(findNodeHandle(this.ref), UIManager.getViewManagerConfig(this.getComponentName()).Commands.updateOverrideStyles, [perItemStyleOverridesRecord, shouldUpdateUi]);
}
}
updateWidgetsUi() {
if (this.ref) {
UIManager.dispatchViewManagerCommand(findNodeHandle(this.ref), UIManager.getViewManagerConfig(this.getComponentName()).Commands.updateWidgetsUi);
}
}
// This method should be overridden by derived components
getComponentName() {
throw new Error('getComponentName() not implemented');
}
createBaseProps() {
const baseProps = {
...this.props,
onWidgetDataLoadStartedInternal: this._onDataLoadStarted,
onWidgetDataLoadCompletedInternal: this._onDataLoadCompleted,
onWidgetPlayerDidAppearInternal: this._onPlayerDidAppear,
onWidgetPlayerDismissedInternal: this._onPlayerDismiss,
onItemClickedInternal: this._onItemClicked,
onTriggerCTAInternal: this._onTriggerCTA,
onTriggerPlayerBodyTextLinkInternal: this._onTriggerPlayerBodyTextLink,
onPlayerEventTriggeredInternal: this._onPlayerEventTriggered
};
// If perItemStyleOverrides is defined and is a Map, convert it to an object
if (this.props.perItemStyleOverrides instanceof Map) {
baseProps.perItemStyleOverridesInternal = mapToObject(this.props.perItemStyleOverrides);
}
return baseProps;
}
}
//# sourceMappingURL=BlazeBaseWidgetComponent.js.map