package com.reactlibrary;

import android.content.Context;
import android.graphics.Color;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.RelativeLayout;

import androidx.annotation.Nullable;

import com.appodeal.ads.Appodeal;
import com.appodeal.ads.NativeAd;
import com.appodeal.ads.NativeCallbacks;
import com.appodeal.ads.native_ad.views.NativeAdViewAppWall;
import com.appodeal.ads.native_ad.views.NativeAdViewContentStream;
import com.appodeal.ads.native_ad.views.NativeAdViewNewsFeed;
import com.appodeal.ads.unified.UnifiedNativeAd;
import com.facebook.react.ReactRootView;
import com.facebook.react.bridge.Arguments;
import com.facebook.react.bridge.ReactContext;
import com.facebook.react.bridge.WritableMap;
import com.facebook.react.modules.core.DeviceEventManagerModule;
import com.facebook.react.uimanager.events.RCTEventEmitter;

public class NativeAdWrapper extends ReactRootView {

    Context mContext;
    private int nativeAdType = 4;
    NativeAdViewNewsFeed nativeAdView;

    public NativeAdWrapper(Context context) {
        super(context);
        mContext = context;
        createView(context);
    }

    public void createView(Context context) {
        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        NativeAdViewNewsFeed nativeAdView = (NativeAdViewNewsFeed) inflater.inflate(R.layout.native_ad_view_news_feed, null);
        this.addView(nativeAdView);
    }

    public void setNativeAdType(int type) {
        nativeAdType = type;
        LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        if (type == 1) {
            NativeAdViewNewsFeed nativeAdView = (NativeAdViewNewsFeed) inflater.inflate(R.layout.native_ad_view_news_feed, null);
            this.addView(nativeAdView);
        } else if (type == 2) {
            NativeAdViewContentStream nativeAdView = (NativeAdViewContentStream) inflater.inflate(R.layout.native_ad_view_content_stream, null);
            this.addView(nativeAdView);
        } else if (type == 3) {
            NativeAdViewAppWall nativeAdView = (NativeAdViewAppWall) inflater.inflate(R.layout.native_ad_view_content_stream, null);
            this.addView(nativeAdView);
        } else {

        }
    }

    public void setShow(int type) {
        Log.v("setshow", "1");
        NativeAd nativeAd = Appodeal.getNativeAds(1).get(0);
        if (nativeAdType == 1) {
            NativeAdViewNewsFeed view = (NativeAdViewNewsFeed) this.getChildAt(0);
            view.setNativeAd(nativeAd);
        } else if (nativeAdType == 2) {
            NativeAdViewContentStream view = (NativeAdViewContentStream) this.getChildAt(0);
            view.setNativeAd(nativeAd);
        } else if (nativeAdType == 3) {
            NativeAdViewAppWall view = (NativeAdViewAppWall) this.getChildAt(0);
            view.setNativeAd(nativeAd);
        } else {

        }
        this.requestLayout();
    }
}
