package com.reactlibrary;

import android.app.Activity;
import android.content.Intent;
import android.content.IntentFilter;
import android.widget.Toast;
import android.util.Log;


// https://facebook.github.io/react-native/
import org.json.JSONException;
import org.json.JSONObject;

import com.facebook.react.ReactInstanceManager;
import com.facebook.react.ReactNativeHost;
import com.facebook.react.bridge.CatalystInstance;
import com.facebook.react.bridge.NativeModule;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactMethod;
import com.facebook.react.bridge.WritableNativeArray;
import com.reizomat.identomat.IdentomatKotlinObjectBridge;
import com.reizomat.identomat.IdentomatBridgeCallback;

import org.json.JSONObject;

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



public class BridgeModule extends ReactContextBaseJavaModule {
    private static ReactApplicationContext reactContext;
    JSONObject identomatConfig = null;
    static IdentomatKotlinObjectBridge  identomatSDK = new IdentomatKotlinObjectBridge();
    String mLanguage=null;
    BridgeModule(ReactApplicationContext context){
        super(context);
        BridgeModule.reactContext = context;
    }

    @Override
    public String getName(){
        return "BridgeModule";
    }
    public void callBack(){
        
        if (reactContext != null) {
            CatalystInstance catalystInstance = reactContext.getCatalystInstance();
            WritableNativeArray params = new WritableNativeArray();
            // params.pushString("session");
            identomatSDK.setCallback(new IdentomatBridgeCallback(){
                @Override
                public void invoke(){
                    System.out.println("---------------------");
                    catalystInstance.callFunction("JavaScriptVisibleToJava", "callBack",params);
                }
            });
        }
    }




    @ReactMethod
    public void setBaseUrl(String baseUrl){
            identomatSDK.setBaseUrl(baseUrl);
    }
    @ReactMethod
    public void start(String mSessionKey){
        callBack();
        // IdentomatBroadcastReceiver mReceiver = new IdentomatBroadcastReceiver();
        // IntentFilter filter = new IntentFilter("com.identomat.Broadcast");
        // reactContext.registerReceiver(mReceiver, filter);
        //     try {
        //         identomatConfig=new JSONObject(identomatConfigString);

        //     } catch (JSONException e) {
        //         e.printStackTrace();
        // }
        identomatSDK.setUp(mSessionKey);
        reactContext.startActivity(identomatSDK.getIdentomatActivity(reactContext));
    }
}
