lmw
2024-10-23 2f204867ad034d3a95ba9acc112d6507f296447b
app/src/main/java/com/sinata/xqmuse/ui/mine/ShareActivity.kt
@@ -1,126 +1,68 @@
package com.sinata.xqmuse.ui.mine
import android.Manifest
import android.content.Intent
import android.os.Bundle
import android.webkit.WebChromeClient
import android.webkit.WebSettings
import android.webkit.WebViewClient
import cn.sinata.xldutils.activity.BaseActivity
import cn.sinata.xldutils.gone
import cn.sinata.xldutils.utils.SPUtils
import cn.sinata.xldutils.utils.myToast
import cn.sinata.xldutils.visible
import com.github.zackratos.ultimatebar.UltimateBar
import com.sinata.xqmuse.R
import com.sinata.xqmuse.dialog.TipDialog
import com.sinata.xqmuse.network.Apis
import com.sinata.xqmuse.dialog.ShareDialog
import com.sinata.xqmuse.network.HttpManager
import com.sinata.xqmuse.network.request
import com.sinata.xqmuse.ui.home.ScannerActivity
import com.sinata.xqmuse.utils.extention.clickDelay
import com.sinata.xqmuse.utils.getQRcodeImg
import com.tbruyelle.rxpermissions2.RxPermissions
import com.sinata.xqmuse.utils.interfaces.StringCallback
import kotlinx.android.synthetic.main.activity_share.*
import org.jetbrains.anko.bundleOf
import org.jetbrains.anko.startActivityForResult
import org.jetbrains.anko.toast
import org.jetbrains.anko.backgroundColor
class ShareActivity:BaseActivity() {
    private val code by lazy {  //不为空则需要直接绑定
        intent.getStringExtra("code")
    }
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_share)
        titleBar.leftClick { finish() }
        UltimateBar.with(this)
            .statusDark(true)
            .create().immersionBar() //沉浸状态栏
        titleBar.titleView.text = "好友推广"
        val settings = webView.settings
        settings.javaScriptEnabled = true
        settings.javaScriptCanOpenWindowsAutomatically = true
        settings.defaultTextEncodingName = "utf-8"
        settings.domStorageEnabled = true
        settings.setSupportZoom(true)
//        settings.textZoom = 200
        settings.useWideViewPort = true
        settings.loadWithOverviewMode = true
        settings.layoutAlgorithm = WebSettings.LayoutAlgorithm.TEXT_AUTOSIZING
        webView.webChromeClient = object : WebChromeClient() {}
        webView.webViewClient = object : WebViewClient() {}
        webView.backgroundColor = 0
        webView.background.alpha = 0
        getShareInfo()
        iv_scan.clickDelay {
            val rxPermissions = RxPermissions(this)
            if (rxPermissions.isGranted(Manifest.permission.CAMERA))
                startActivityForResult<ScannerActivity>(1)
            else if ((SPUtils.instance().getBoolean("CAMERA_REFUSE")))
                myToast("没有相机权限")
            else{
                val tipDialog = cn.sinata.xldutils.widget.TipDialog()
                tipDialog.arguments =
                    bundleOf("msg" to "为了扫描好友二维码,我们需要获取相机访问权限", "ok" to "去授权", "cancel" to "不需要")
                tipDialog.setCallback(object : cn.sinata.xldutils.widget.TipDialog.OnClickCallback {
                    override fun onOk() {
                        rxPermissions.request(Manifest.permission.CAMERA)
                            .subscribe {
                                if (it) {
                                    startActivityForResult<ScannerActivity>(1)
                                } else{
                                    SPUtils.instance().put("CAMERA_REFUSE", true).apply()
                                    myToast("没有相机权限")
                                }
                            }
                    }
        iv_back.setOnClickListener { finish() }
        tv_action.setOnClickListener {
            val shareDialog = ShareDialog()
            shareDialog.callback = object :StringCallback{
                override fun onResult(rst: String) {
                    override fun onCancel() {
                        SPUtils.instance().put("CAMERA_REFUSE", true).apply()
                    }
                })
                tipDialog.show(supportFragmentManager, "camera")
            }
        }
        tv_bind.clickDelay {
            val code = et_code.text.toString()
            if (code.length!=6)
                myToast("请填写6位邀请码")
            else
                HttpManager.getBindingUserName(code).request(this){_,data->
                    TipDialog.show(supportFragmentManager,"确认绑定用户“${data}”吗?",object : TipDialog.OnClickCallback{
                        override fun onOk() {
                            HttpManager.binding(code).request(this@ShareActivity){_,_->
                                myToast("绑定成功")
                                getShareInfo()
                            }
                        }
                        override fun onCancel() {
                        }
                    })
                }
            shareDialog.show(supportFragmentManager,"share")
        }
    }
    private fun getShareInfo(){
        HttpManager.peopleList().request(this){_,data->
            tv_rule.text = data?.content
            tv_my_friend.text = "我邀请的好友:${if (data?.people.isNullOrEmpty()) "暂未绑定" else data!!.people}"
            tv_my_invitor.text = data?.invite
            iv_code.setImageBitmap(getQRcodeImg(this, Apis.SHARE_URL+data?.code))
            if (data?.invite?.isNullOrEmpty() == true){
                iv_scan.visible()
                tv_bind.visible()
                et_code.visible()
                if (!code.isNullOrEmpty()){
                    et_code.setText(code)
                    tv_bind.callOnClick()
                }
            }else{
                iv_scan.gone()
                tv_bind.gone()
                et_code.gone()
                if (!code.isNullOrEmpty()){
                    myToast("你已经绑定过邀请人")
                }
        HttpManager.shareInfo().request(this){_,data->
            data?.apply {
                iv_code.setImageURI(qrCode)
                val sHead =
                    "<html><head><meta name=\"viewport\" content=\"width=device-width, " + "initial-scale=1.0, minimum-scale=0.5, maximum-scale=2.0, user-scalable=yes\" />" + "<style>img{max-width:100% !important;height:auto !important;}</style>" + "<style>body{max-width:100% !important;}</style>" + "</head><body>"
                webView!!.loadDataWithBaseURL(
                    null,
                    sHead + rules,
                    "text/html",
                    "utf-8",
                    null
                )
            }
        }
    }
    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
        if (resultCode == RESULT_OK&&data!=null){
            val rst = data.getStringExtra("result")?:""
            if (rst.startsWith(Apis.SHARE_URL))
                et_code.setText(rst.substring(rst.length-6))
            else
                myToast("二维码错误")
        }
    }
}