package com.webengage.we_notificationinbox_rn;

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.webengage.sdk.android.Logger;

import java.util.HashMap;
import java.util.Map;

public class WEInboxPackage extends TurboReactPackage {
  @Nullable
  @Override
  public NativeModule getModule(@NonNull String name, @NonNull ReactApplicationContext reactContext) {
    if (name == null || reactContext == null) {
      return null;
    }
    
    if ("WEInboxReact".equals(name)) {
      try {
        return new WEInboxModule(reactContext);
      } catch (Exception e) {
        Logger.e("WEInboxPackage", "Failed to create WEInboxModule: " + e.getMessage(), e);
        return null;
      }
    }
    return null;
  }

  @NonNull
  @Override
  public ReactModuleInfoProvider getReactModuleInfoProvider() {
    return () -> {
      final Map<String, ReactModuleInfo> moduleInfos = new HashMap<>();
      try {
        boolean isTurboModule = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;
        moduleInfos.put(
          "WEInboxReact",
          new ReactModuleInfo(
            "WEInboxReact",
            "WEInboxReact",
            false, // canOverrideExistingModule
            false, // needsEagerInit
            false, // hasConstants
            false, // isCxxModule
            isTurboModule // isTurboModule
          )
        );
      } catch (Exception e) {
        Logger.e("WEInboxPackage", "Failed to create module info: " + e.getMessage(), e);
      }
      return moduleInfos;
    };
  }
}
