package com.nsure.reactnative;

import android.util.Log;

import com.facebook.react.ReactPackage;
import com.facebook.react.bridge.NativeModule;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.uimanager.ViewManager;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class NSureSDKPackage implements ReactPackage {

    @Override
    public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) {
        List<NativeModule> modules = new ArrayList<>();
        modules.add(new NSureSDK(reactContext));

        // DEV-only Crash Lab; class only exists in src/debug/.
        try {
            Class<?> crashLabClass = Class.forName("com.nsure.reactnative.NSureSDKCrashLab");
            NativeModule crashLab = (NativeModule) crashLabClass
                    .getConstructor(ReactApplicationContext.class)
                    .newInstance(reactContext);
            modules.add(crashLab);
        } catch (ClassNotFoundException expected) {
            // Release variants: class absent, skip.
        } catch (Throwable unexpected) {
            // Class present but failed to instantiate — surface the real cause.
            Log.w("NSureSDKPackage", "NSureSDKCrashLab present but failed to register", unexpected);
        }

        return modules;
    }

    @Override
    public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) {
        return Collections.emptyList();
    }
}
