import {
  requireNativeComponent,
  ViewStyle,
} from 'react-native';

import React, {

} from 'react';

import {
  BlazeBaseGridWidgetViewProps,
  BlazeBaseStoriesWidgetViewProps,
  BlazeBaseWidgetViewProps,
  BlazeSdkBaseWidgetViewProps
} from './BlazeBaseWidgetViewProps';

import {
  BlazeBaseWidgetView,
} from './BlazeBaseWidgetComponent';

export interface BlazeStoriesGridViewProps
  extends BlazeBaseWidgetViewProps,
  BlazeBaseGridWidgetViewProps,
  BlazeBaseStoriesWidgetViewProps {

}

interface BlazeSdkStoriesGridViewNativeProps
  extends BlazeStoriesGridViewProps,
  BlazeSdkBaseWidgetViewProps {

}

export const BLAZE_STORIES_GRID_COMPONENT = 'RTNBlazeStoriesGridView';

export class BlazeStoriesGridView extends BlazeBaseWidgetView<BlazeStoriesGridViewProps> {

  protected getComponentName(): string {
    return BLAZE_STORIES_GRID_COMPONENT
  }

  render() {
    const { style } = this.props;
    const finalStyle: ViewStyle = this.props.isEmbeddedInScrollView
      ? {
        ...style,
        height: this.state.height
      }
      : (style ?? {});

    return (
      <StoriesGridViewManager
        {...this.props}
        {...this.createBaseProps()}
        style={finalStyle}
        ref={(ref) => {
          if (ref) this.ref = ref;
        }}
      />
    );
  }
}

const StoriesGridViewManager = requireNativeComponent<BlazeSdkStoriesGridViewNativeProps>(
  BLAZE_STORIES_GRID_COMPONENT,
);