package com.moonmiles.bridge.apm.service.log;

import com.facebook.react.bridge.Promise;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactMethod;
import com.facebook.react.bridge.ReadableMap;
import com.moonmiles.apmservices.net.APMException;
import com.moonmiles.apmservices.sdk.log.APMServicesLog;
import com.moonmiles.apmservices.sdk.success.APMSuccessListener;
import com.moonmiles.bridge.apm.APMConstants;
import com.moonmiles.bridge.apm.abs.APMReactContextBaseJavaModule;
import com.moonmiles.bridge.apm.utils.APMBridgeUtils;

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

public class APMServicesLogModule extends APMReactContextBaseJavaModule
{

    public APMServicesLogModule(ReactApplicationContext reactContext)
    {
        super(reactContext);
    }

    @ReactMethod
    public static void logSave(ReadableMap params, final Promise promise)
    {
        try
        {
            HashMap hashParams = null;
            if(params != null)
                hashParams = params.toHashMap();

            APMServicesLog.logSave(hashParams, new APMSuccessListener()
            {
                @Override
                public void success()
                {
                    APMBridgeUtils.resolvePromise(null, promise);
                }

                @Override
                public void failure(APMException e)
                {
                    APMBridgeUtils.rejectPromise(e, promise);
                }
            });
        }
        catch(Exception e)
        {
            e.printStackTrace();
            APMBridgeUtils.rejectPromise(e, promise);
        }
    }

    @Override
    public String getName() { return "APMServicesLogModule"; }

    @Override
    public Map<String, Object> getConstants()
    {
        final Map<String, Object> constants = new HashMap<>();
        return constants;
    }
}
