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

import com.facebook.react.bridge.Promise;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactMethod;
import com.moonmiles.apmservices.model.APMAds;
import com.moonmiles.apmservices.net.APMException;
import com.moonmiles.apmservices.sdk.ad.APMAdListListener;
import com.moonmiles.apmservices.sdk.ad.APMServicesAd;
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 APMServicesAdModule extends APMReactContextBaseJavaModule
{

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

    @ReactMethod
    public static void adList(final Promise promise)
    {
        try
        {
            APMServicesAd.adList(new APMAdListListener()
            {
                @Override
                public void adListSuccess(APMAds ads)
                {
                    APMBridgeUtils.resolvePromise(ads, promise);
                }

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

    @ReactMethod
    public static void adNewsList(final Promise promise)
    {
        try
        {
            APMServicesAd.adNewsList(new APMAdListListener()
            {
                @Override
                public void adListSuccess(APMAds ads)
                {
                    APMBridgeUtils.resolvePromise(ads, promise);
                }

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

    @ReactMethod
    public static void adSpecialsList(final Promise promise)
    {
        try
        {
            APMServicesAd.adSpecialsList(new APMAdListListener()
            {
                @Override
                public void adListSuccess(APMAds ads)
                {
                    APMBridgeUtils.resolvePromise(ads, 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 "APMServicesAdModule"; }

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