UNPKG

@applicaster/zapp-react-native-utils

Version:

Applicaster Zapp React Native utilities package

71 lines (54 loc) 1.46 kB
import { appStore } from "@applicaster/zapp-react-native-redux/AppStore"; import { findPluginByIdentifier } from "@applicaster/zapp-react-native-utils/pluginUtils"; import { Player } from "./player"; import { PlayerRole } from "./conts"; type PlayerFactoryItem = { Component: any; controller: Player; }; type PlayerFactoryProps = { player: any; playerId: string; autoplay: boolean; entry: ZappEntry; muted: boolean; playerPluginId: string; screenConfig: Record<string, any>; playerRole: PlayerRole; }; interface PlayerConstructor { new (params: any): Player; } export const playerFactory = ( config: PlayerFactoryProps ): PlayerFactoryItem | null => { const IDENTIFIER = config?.playerPluginId; if (!IDENTIFIER) { return null; } const plugins = appStore.get("plugins"); if (!plugins) { return null; } const playerPlugin = findPluginByIdentifier(IDENTIFIER, plugins); if (!playerPlugin?.module?.playerProtocol) { return null; } const playerProtocol: PlayerConstructor = playerPlugin.module.playerProtocol( config?.screenConfig, config?.entry ); const playerView = (playerProtocol as any)?.Component || null; if (!playerView) { return null; } const Controller = (playerProtocol as any)?.controllerClass || null; if (Controller === null) { return null; } const controller = new Controller(config); return { controller, Component: playerView, }; };