import { UIManager } from 'react-native'; /** * Check whether a native Cast view manager is registered. * Returns false if the Cast SDK is not linked (optional dependency). * * Does NOT permanently cache failures — transient errors (e.g. bridge not * yet ready) are retried on next call. Only a confirmed `true` is cached, * since a view manager won't disappear once registered. */ const _confirmed = new Map(); export function isCastViewAvailable(componentName: string): boolean { if (_confirmed.get(componentName)) return true; try { const available = UIManager.hasViewManagerConfig?.(componentName) ?? ('getViewManagerConfig' in UIManager && !!UIManager.getViewManagerConfig(componentName)); if (available) _confirmed.set(componentName, true); return available; } catch { if (__DEV__) { console.warn( `[${componentName}] Native view manager not found — Cast SDK may not be linked.` ); } return false; } }