// eslint-disable-next-line import/no-unresolved
import { NativeModules } from 'react-native';
let _getModeStrategy = null;
let _getNameStrategy = null;

/**
 * RN不同平台不同情况下返回不同的mudules
 * @example 
 * RN 中台 直播端 moduleName 为 MiniAppEBS 时返回 HYLMiniAppEBS
 * RN 虎牙 直播端 moduleName 为 MiniAppEBS 时返回 HYExtEBS
 */
export default {
  /**
   * 设置获取mode 的策略
   * @param {*} strategy 
   */
  setGetModeStrategy(strategy) {
    if (typeof strategy === 'function') {
      _getModeStrategy = strategy;
    }
  },

  /**
   * 获取mode
   * @param {*} moduleName 
   */
  getModule(moduleName) {
    if (!_getModeStrategy) {
      return NativeModules[moduleName];
    }
    return _getModeStrategy(moduleName);
  },

  /**
   * 设置获取事件名的策略
   * @param {*} strategy 
   */
  setGetNameStrategy(strategy) {
    if (typeof strategy === 'function') {
      _getNameStrategy = strategy;
    }
  },

  /**
   * 获取事件名
   * @param {*} name 
   */
  getName(name) {
    if (_getNameStrategy) {
      return _getNameStrategy(name);
    }
    return name;
  },
}