158 lines
5.6 KiB
Kotlin
158 lines
5.6 KiB
Kotlin
package com.gh.common
|
|
|
|
import android.annotation.SuppressLint
|
|
import android.content.Context
|
|
import android.webkit.JavascriptInterface
|
|
import androidx.annotation.Keep
|
|
import com.gh.base.CurrentActivityHolder
|
|
import com.gh.common.util.*
|
|
import com.gh.gamecenter.BuildConfig
|
|
import com.gh.gamecenter.LoginActivity
|
|
import com.gh.gamecenter.ViewImageActivity
|
|
import com.gh.gamecenter.entity.Badge
|
|
import com.gh.gamecenter.entity.MtaEvent
|
|
import com.gh.gamecenter.manager.UserManager
|
|
import com.gh.gamecenter.retrofit.BiResponse
|
|
import com.gh.gamecenter.retrofit.RetrofitManager
|
|
import com.gh.gamecenter.room.AppDatabase
|
|
import com.gh.gamecenter.user.LoginTag
|
|
import com.halo.assistant.HaloApp
|
|
import com.lightgame.utils.Utils
|
|
import io.reactivex.android.schedulers.AndroidSchedulers
|
|
import io.reactivex.schedulers.Schedulers
|
|
import okhttp3.ResponseBody
|
|
import org.json.JSONObject
|
|
import retrofit2.HttpException
|
|
import wendu.dsbridge.CompletionHandler
|
|
|
|
class DefaultJsApi(var context: Context) {
|
|
|
|
@JavascriptInterface
|
|
fun isGhzs(msg: Any): String {
|
|
return "true"
|
|
}
|
|
|
|
@JavascriptInterface
|
|
fun toast(msg: Any) {
|
|
Utils.toast(HaloApp.getInstance().application, msg.toString())
|
|
}
|
|
|
|
@JavascriptInterface
|
|
fun logMtaEvent(event: Any) {
|
|
val mtaEvent = event.toString().toObject() ?: MtaEvent()
|
|
|
|
MtaHelper.onEvent(mtaEvent.name, mtaEvent.key, mtaEvent.value)
|
|
}
|
|
|
|
@JavascriptInterface
|
|
fun getUserInfo(msg: Any): String {
|
|
return UserManager.getInstance().userInfoEntity.toJson()
|
|
}
|
|
|
|
@JavascriptInterface
|
|
fun getUserToken(msg: Any): String {
|
|
return if (UserManager.getInstance().isLoggedIn) UserManager.getInstance().loginTokenEntity.accessToken.value else ""
|
|
}
|
|
|
|
@JavascriptInterface
|
|
fun login(msg: Any) {
|
|
val intent = LoginActivity.getIntent(context, "浏览器")
|
|
context.startActivity(intent)
|
|
}
|
|
|
|
@JavascriptInterface
|
|
fun refreshUserInfoBadge(msg: Any) {
|
|
val userInfoEntity = UserManager.getInstance().userInfoEntity
|
|
if (msg.toString().isNotEmpty()) {
|
|
val badge = msg.toString().toObject() ?: Badge()
|
|
userInfoEntity.badge = badge
|
|
} else {
|
|
userInfoEntity.badge = null
|
|
}
|
|
UserManager.getInstance().userInfoEntity = userInfoEntity
|
|
AppDatabase.getInstance(context).userInfoDao().updateUserInfo(userInfoEntity)
|
|
}
|
|
|
|
@JavascriptInterface
|
|
fun getChannel(msg: Any): String {
|
|
return HaloApp.getInstance().channel
|
|
}
|
|
|
|
@JavascriptInterface
|
|
fun getAppVersion(msg: Any): String {
|
|
return BuildConfig.VERSION_NAME
|
|
}
|
|
|
|
@JavascriptInterface
|
|
fun bindWechat(msg: Any, handler: CompletionHandler<Any>) {
|
|
context.ifLogin("浏览器") {
|
|
LoginHelper.loginWithWechat(object : LoginHelper.LoginCallback {
|
|
@SuppressLint("CheckResult")
|
|
override fun onLoginSuccess(loginType: LoginTag, jsonContent: JSONObject) {
|
|
|
|
val wechatLoginInfoMap = hashMapOf<String, String>()
|
|
wechatLoginInfoMap["openid"] = jsonContent.getString("openid")
|
|
wechatLoginInfoMap["unionid"] = jsonContent.getString("unionid")
|
|
wechatLoginInfoMap["access_token"] = jsonContent.getString("access_token")
|
|
wechatLoginInfoMap["refresh_token"] = jsonContent.getString("refresh_token")
|
|
|
|
RetrofitManager.getInstance(HaloApp.getInstance().application)
|
|
.api
|
|
.postBindWechat(wechatLoginInfoMap.createRequestBody())
|
|
.subscribeOn(Schedulers.io())
|
|
.observeOn(AndroidSchedulers.mainThread())
|
|
.subscribe(object : BiResponse<ResponseBody>() {
|
|
override fun onSuccess(data: ResponseBody) {
|
|
handler.complete(true)
|
|
}
|
|
|
|
override fun onFailure(exception: Exception) {
|
|
handler.complete(false)
|
|
if (exception is HttpException) {
|
|
ErrorHelper.handleError(HaloApp.getInstance().application, exception.response().errorBody()?.string())
|
|
}
|
|
}
|
|
})
|
|
}
|
|
|
|
override fun onLoginFailure(loginType: LoginTag, error: String) {
|
|
handler.complete(false)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
@JavascriptInterface
|
|
fun copyText(msg: Any) {
|
|
msg.toString().copyTextAndToast()
|
|
}
|
|
|
|
@JavascriptInterface
|
|
fun startApp(msg: Any) {
|
|
val packageName = msg.toString()
|
|
PackageUtils.launchApplicationByPackageName(HaloApp.getInstance().application, packageName)
|
|
}
|
|
|
|
@JavascriptInterface
|
|
fun openImage(event: Any) {
|
|
val imageEvent = event.toString().toObject() ?: ImageEvent()
|
|
|
|
val context = CurrentActivityHolder.getCurrentActivity()
|
|
|
|
context?.startActivity(ViewImageActivity.getViewImageIntent(context, imageEvent.imageList, imageEvent.position, "浏览器"))
|
|
}
|
|
|
|
@JavascriptInterface
|
|
fun openBase64Image(event: Any) {
|
|
val context = CurrentActivityHolder.getCurrentActivity()
|
|
|
|
Base64ImageHolder.image = event.toString()
|
|
|
|
context?.startActivity(ViewImageActivity.getBase64ViewImageIntent(context, true))
|
|
}
|
|
|
|
@Keep
|
|
internal data class ImageEvent(var imageList: ArrayList<String> = arrayListOf(), var position: Int = 0)
|
|
|
|
}
|