package com.volcengine.velive.rn.pull;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

import com.facebook.react.TurboReactPackage;
import com.facebook.react.bridge.NativeModule;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.module.model.ReactModuleInfo;
import com.facebook.react.module.model.ReactModuleInfoProvider;
import com.facebook.react.uimanager.ViewManager;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

//准备新老架构统一磨平
public class VeLivePullPackage extends TurboReactPackage {
  private boolean isTurboModule = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;
  @Override
  public List<ViewManager> createViewManagers(@NonNull ReactApplicationContext reactContext) {
    List<ViewManager> viewManagers = new ArrayList<>();
    viewManagers.add(new VeLivePullViewManager());
    return viewManagers;
  }
  
  @Nullable
  @Override
  public NativeModule getModule(@NonNull String name, @NonNull ReactApplicationContext reactApplicationContext) {
    if (name.equals(VeLivePullImpl.NAME)) {
      return new VeLivePullModule(reactApplicationContext);
    } else {
      return null;
    }
  }

//  @Override
//  public List<NativeModule> createNativeModules(@NonNull ReactApplicationContext reactContext) {
//    List<NativeModule> modules = new ArrayList<>();
//    modules.add(new VeLivePullModule(reactContext));
//    return modules;
//  }

  @Override
  public ReactModuleInfoProvider getReactModuleInfoProvider() {
    return () -> {
      final Map<String, ReactModuleInfo> moduleInfos = new HashMap<>();
      moduleInfos.put(
              VeLivePullImpl.NAME,
        new ReactModuleInfo(
                VeLivePullImpl.NAME,
                VeLivePullImpl.NAME,
          false,
          false,true,false,this.isTurboModule
        )
      );
      return moduleInfos;
    };
  }
}
