package com.yingmao.clash.webview import android.app.Activity import android.content.Intent import android.content.pm.ActivityInfo import android.net.Uri import android.os.Bundle import android.os.CountDownTimer import android.text.TextUtils import android.view.View import android.webkit.WebChromeClient import android.webkit.WebView import android.webkit.WebViewClient import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.tencent.mmkv.MMKV import com.yingmao.clash.BuildConfig import com.yingmao.clash.R import com.cncat.vpn.common.log.Log import com.yingmao.clash.base.BaseActivity import com.yingmao.clash.conf.BZYConstants import com.yingmao.clash.listener.AsyncBodyCallback import com.yingmao.clash.util.StatusBarUtils import com.yingmao.clash.vm.LoginAtyVM import com.yingmao.clash.vm.WebViewAtyVM import java.net.URLDecoder import java.net.URLEncoder class BZYWebViewKeFu : BaseActivity() { private lateinit var webView: WebView private lateinit var webViewAtyVM: WebViewAtyVM override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.bzy_kefu_webview_layout) // requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT; //竖屏 // StatusBarUtils.with(this).init() webViewAtyVM = ViewModelProvider(this).get(WebViewAtyVM::class.java) observe(this, webViewAtyVM) initView() } private fun initView() { findViewById(R.id.iv_back).setOnClickListener { finish() } webView = findViewById(R.id.webView) setWebView() countDown() } private fun countDown() { val timer = object : CountDownTimer(5000, 1000) { override fun onTick(millisUntilFinished: Long) { } override fun onFinish() { Log.d("onFinish") webView.evaluateJavascript("updateStatus()", null) } } timer.start() } private fun setWebView() { Log.d("setWebView 1") WebView.setWebContentsDebuggingEnabled(true) Log.d("setWebView 2") val settings = webView.settings settings.javaScriptEnabled = true settings.domStorageEnabled = true settings.allowFileAccess = true Log.d("setWebView 4") webView.webViewClient = object : WebViewClient() { override fun onLoadResource(view: WebView, url: String) { if (url.contains("https://image.crisp.chat/avatar/website") || url.contains("https://client.crisp.chat/static/javascripts/locales")) { webView.evaluateJavascript("updateStatus()", null); } // Log.e("data", "==$url") } } Log.d("setWebView 5") // webView.webChromeClient = object : WebChromeClient() { // override fun onProgressChanged(view: WebView?, newProgress: Int) { //// Log.e("data", "==$newProgress") // } // } when { BuildConfig.is_ym -> { ymKefu() } BuildConfig.is_tz -> { getTzKefu() } BuildConfig.is_yunti -> { getYunTiKefu() } else -> { getBzyKefu() } } } private var kefuHost = "" private fun ymKefu() { val userName = MMKV.defaultMMKV().decodeString(BZYConstants.MMKV_KEY_REMEMBER_USERNAME, "") var enNmae = URLEncoder.encode(userName, "UTF-8") Log.d("enNmae==>${enNmae}") if (TextUtils.isEmpty(kefuHost)) { var mmkvHost = MMKV.defaultMMKV() .decodeString(BZYConstants.MMKV_KEY_KEFU_HOST, "") // com.cncat.vpn.common.log.Log.d("mmkvHost kf ==>${mmkvHost}") webViewAtyVM.getYmKefuHost(object : AsyncBodyCallback { override suspend fun suc(str: String) { // com.cncat.vpn.common.log.Log.d("str==>${str}") if (str != mmkvHost) { MMKV.defaultMMKV() .encode(BZYConstants.MMKV_KEY_KEFU_HOST, str) } // mmkvHost = str kefuHost = str startActivity( Intent( Intent.ACTION_VIEW, Uri.parse(str + "&app_account=${enNmae}") ) ) finish() } override fun err() { if (!TextUtils.isEmpty(mmkvHost)) { startActivity( Intent( Intent.ACTION_VIEW, Uri.parse(mmkvHost + "&app_account=${enNmae}") ) ) finish() } } }) } else { startActivity( Intent( Intent.ACTION_VIEW, Uri.parse(kefuHost + "&app_account=${enNmae}") ) ) finish() } } private fun getBzyKefu() { val userName = MMKV.defaultMMKV().decodeString(BZYConstants.MMKV_KEY_REMEMBER_USERNAME, "") var enNmae = URLEncoder.encode(userName, "UTF-8") Log.d("enNmae==>${enNmae}") if (TextUtils.isEmpty(kefuHost)) { var mmkvHost = MMKV.defaultMMKV() .decodeString(BZYConstants.MMKV_KEY_KEFU_HOST, "") // com.cncat.vpn.common.log.Log.d("mmkvHost kf ==>${mmkvHost}") webViewAtyVM.getBzyKefuHost(object : AsyncBodyCallback { override suspend fun suc(str: String) { // com.cncat.vpn.common.log.Log.d("str==>${str}") if (str != mmkvHost) { MMKV.defaultMMKV() .encode(BZYConstants.MMKV_KEY_KEFU_HOST, str) } // mmkvHost = str kefuHost = str startActivity( Intent( Intent.ACTION_VIEW, Uri.parse(str + "&app_account=${enNmae}") ) ) finish() } override fun err() { if (!TextUtils.isEmpty(mmkvHost)) { startActivity( Intent( Intent.ACTION_VIEW, Uri.parse(mmkvHost + "&app_account=${enNmae}") ) ) finish() } } }) } else { startActivity( Intent( Intent.ACTION_VIEW, Uri.parse(kefuHost + "&app_account=${enNmae}") ) ) finish() } } private fun getTzKefu() { val userName = MMKV.defaultMMKV().decodeString(BZYConstants.MMKV_KEY_REMEMBER_USERNAME, "") var enNmae = URLEncoder.encode(userName, "UTF-8") Log.d("enNmae==>${enNmae}") if (TextUtils.isEmpty(kefuHost)) { var mmkvHost = MMKV.defaultMMKV() .decodeString(BZYConstants.MMKV_KEY_KEFU_HOST, "") // com.cncat.vpn.common.log.Log.d("mmkvHost kf ==>${mmkvHost}") webViewAtyVM.getTzKefuHost(object : AsyncBodyCallback { override suspend fun suc(str: String) { // com.cncat.vpn.common.log.Log.d("str==>${str}") if (str != mmkvHost) { MMKV.defaultMMKV() .encode(BZYConstants.MMKV_KEY_KEFU_HOST, str) } // mmkvHost = str kefuHost = str startActivity( Intent( Intent.ACTION_VIEW, Uri.parse(str + "&app_account=${enNmae}") ) ) finish() } override fun err() { if (!TextUtils.isEmpty(mmkvHost)) { startActivity( Intent( Intent.ACTION_VIEW, Uri.parse(mmkvHost + "&app_account=${enNmae}") ) ) finish() } } }) } else { startActivity( Intent( Intent.ACTION_VIEW, Uri.parse(kefuHost + "&app_account=${enNmae}") ) ) finish() } } private fun getYunTiKefu() { val userName = MMKV.defaultMMKV().decodeString(BZYConstants.MMKV_KEY_REMEMBER_USERNAME, "") var enNmae = URLEncoder.encode(userName, "UTF-8") Log.d("enNmae==>${enNmae}") if (TextUtils.isEmpty(kefuHost)) { var mmkvHost = MMKV.defaultMMKV() .decodeString(BZYConstants.MMKV_KEY_KEFU_HOST, "") // com.cncat.vpn.common.log.Log.d("mmkvHost kf ==>${mmkvHost}") webViewAtyVM.getYunTiKefuHost(object : AsyncBodyCallback { override suspend fun suc(str: String) { // com.cncat.vpn.common.log.Log.d("str==>${str}") if (str != mmkvHost) { MMKV.defaultMMKV() .encode(BZYConstants.MMKV_KEY_KEFU_HOST, str) } kefuHost = str startActivity( Intent( Intent.ACTION_VIEW, Uri.parse(str + "&app_account=${enNmae}") ) ) finish() } override fun err() { if (!TextUtils.isEmpty(mmkvHost)) { startActivity( Intent( Intent.ACTION_VIEW, Uri.parse(mmkvHost + "&app_account=${enNmae}") ) ) finish() } } }) } else { startActivity( Intent( Intent.ACTION_VIEW, Uri.parse(kefuHost + "&app_account=${enNmae}") ) ) finish() } } }