package com.xg.navigation;

import android.app.Activity;
import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.view.ViewGroup;
import android.view.Window;

import com.facebook.react.ReactApplication;
import com.facebook.react.ReactInstanceManager;
import com.facebook.react.ReactRootView;
import com.facebook.react.modules.core.DefaultHardwareBackBtnHandler;

/**
 * Created by fanzhengchen on 3/14/18.
 */

public class AlertDialog extends android.app.AlertDialog{

    private static final String KEY = "needForce";

    private ReactRootView mReactRootView;
    private ReactInstanceManager mReactInstanceManager;

    /**
     * 是否可取消
     * 适配热更新强制弹窗
     */
    private Boolean isCancelAble = true;

    public AlertDialog(@NonNull Context context) {
        super(context, R.style.dialogNoBg);

        Activity _activity = CurrentActivityManager.getInstance().getActivity();
        if(!CurrentActivityManager.getInstance().isActivityDestroyed()) {
            mReactRootView = new ReactRootView(_activity);
            mReactInstanceManager = ((ReactApplication) _activity.getApplication())
                    .getReactNativeHost().getReactInstanceManager();
        }
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(mReactRootView);
        Window window = getWindow();
        if (window != null){
            window.setLayout(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.MATCH_PARENT);
            window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
        }
    }

    @Override
    public void onBackPressed() {
        if (isCancelAble) {
            super.onBackPressed();
        }
    }

    public void startReactNativeApplication(Bundle bundle) {
        if (bundle!=null) {
            isCancelAble = !bundle.getBoolean(KEY);
        }else{
            isCancelAble = true;
        }
        if (mReactRootView != null) {
            mReactRootView.startReactApplication(mReactInstanceManager,"alert", bundle);
        }
    }



    @Override
    public void onDetachedFromWindow() {
        if (mReactRootView != null){
            mReactRootView.unmountReactApplication();
            mReactRootView = null;
        }
        super.onDetachedFromWindow();
    }
}
