package com.skytencent.liteav.unify;

import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.os.Handler;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebView;
import android.widget.ImageView;

import com.skytencent.liteav.unifylib.activity.IM;
import com.skytencent.liteav.unifylib.activity.LoginActivity;
import com.skytencent.liteav.unifylib.dialog.MessageEvent;
import com.skytencent.liteav.unifylib.dialog.VideoMsgDialog;
import com.skytencent.liteav.unifylib.service.UpLoadGpsService;
import com.skytencent.liteav.unifylib.utils.SharedPreferencesHelper;

import org.apache.cordova.CordovaActivity;
import org.apache.cordova.engine.SystemWebView;
import org.apache.cordova.engine.SystemWebViewClient;
import org.apache.cordova.engine.SystemWebViewEngine;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import org.jetbrains.annotations.NotNull;

public class MainActivity extends CordovaActivity implements IM.IMNewMessageCallBack {
    private IM mIM;
    private VideoMsgDialog dialog;
    private SystemWebView systemWebView;
    private Handler handler = new Handler();
    private boolean isFinish;
    private long time = System.currentTimeMillis();

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // 调用CordovaActivity初始化方法
        init();
        ImageView imageView = new ImageView(this);
        imageView.setImageResource(R.mipmap.waiting);
        ((ViewGroup) getWindow().getDecorView()).addView(imageView);

        systemWebView = (SystemWebView) appView.getView();
        systemWebView.setWebViewClient(new SystemWebViewClient((SystemWebViewEngine) appView.getEngine()) {
            @Override
            public void onPageFinished(WebView view, String url) {

                long lasttime = System.currentTimeMillis() - time;
                Log.e("MainActivity", "end-start---->" + lasttime);
                super.onPageFinished(view, url);
                if (!isFinish) {
                    isFinish = true;
                    imageView.setVisibility(View.GONE);

                }
            }

            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
                Log.e("MainActivity", "page start---->");
                isFinish = false;
                time = System.currentTimeMillis();
                imageView.setVisibility(View.VISIBLE);
                super.onPageStarted(view, url, favicon);
            }

            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                return super.shouldOverrideUrlLoading(view, url);
            }
        });
        mIM = new IM(MainActivity.this, SharedPreferencesHelper.getString(MainActivity.this, "TxyUserId", ""), SharedPreferencesHelper.getString(MainActivity.this, "token", ""), "admin3");
        mIM.init();
        mIM.initIMListener(this::newMessage);
        EventBus.getDefault().register(this);

        Bundle extras = getIntent().getExtras();
        if (extras != null && extras.getBoolean("cdvStartInBackground", false)) {
            moveTaskToBack(true);
        }
        if (!launchUrl.contains("file")) {
            if (launchUrl.contains("?")) {
                launchUrl = launchUrl + "&v=" + time;
            } else {
                launchUrl = launchUrl + "?v=" + time;

            }
        }

        loadUrl(launchUrl);
    }

    /**
     * 获取im连接状态
     * @return
     */
    public boolean getImStatus() {
        return mIM.getIMStatus();
    }

    public void backLogin() {
        Intent stop = new Intent(this, UpLoadGpsService.class);
        stopService(stop);
        mIM.loginout();
        SharedPreferencesHelper.putString(MainActivity.this, "name", "");
        SharedPreferencesHelper.putString(MainActivity.this, "pwd", "");
        SharedPreferencesHelper.putString(MainActivity.this, "token", "");
        Intent intent = new Intent(this, LoginActivity.class);
        startActivity(intent);
        finish();
    }

    public void getMsgForJs(String msg) {
        mIM.sendToPersonMessage(msg);
    }

    @Subscribe(threadMode = ThreadMode.MAIN)
    public void onShowMessageEvent(MessageEvent messageEvent) {
        if (!TextUtils.isEmpty(messageEvent.getMessage())) {
            if (null == dialog) {
                dialog = new VideoMsgDialog(MainActivity.this, Integer.valueOf(messageEvent.getMessage()), mIM);
                dialog.show();
            } else {
                dialog.dismiss();
                dialog = new VideoMsgDialog(MainActivity.this, Integer.valueOf(messageEvent.getMessage()), mIM);
                dialog.show();
            }
        }
    }

    @Override
    public void onDestroy() {
        // 解绑事件
        EventBus.getDefault().unregister(this);
        super.onDestroy();
    }

    @Override
    public void newMessage(@NotNull String s) {
    }
}
