1、代码优化处理
This commit is contained in:
shenzuqiang 2026-03-11 12:03:21 +08:00
parent 7cdbf8f613
commit 89e79bdaff
28 changed files with 14 additions and 179 deletions

View File

@ -69,7 +69,6 @@ import com.img.rabbit.pages.dialog.TipsUniMpToPageDialog
import com.img.rabbit.pages.dialog.UpdateDialog
import com.img.rabbit.provider.storage.GlobalStateManager
import com.img.rabbit.provider.storage.PreferenceUtil
import com.img.rabbit.provider.storage.PreferenceUtil.saveBDVID
import com.img.rabbit.utils.AppEventBus
import com.img.rabbit.utils.AppUpdate
import com.img.rabbit.utils.ChannelUtils
@ -124,7 +123,6 @@ class MainActivity : ComponentActivity(), LoadingCallback {
LaunchedEffect(generalViewModel.agreementStatus.value) {
if (generalViewModel.agreementStatus.value == true){
saveBDVID()
//获取服务器时间
generalViewModel.getServerTime()
}

View File

@ -15,7 +15,6 @@ import androidx.navigation.compose.NavHost
import androidx.navigation.compose.composable
import androidx.navigation.compose.rememberNavController
import com.img.rabbit.pages.screen.mine.FeedbackScreen
import com.img.rabbit.pages.screen.mine.OnlineServiceScreen
import com.img.rabbit.pages.screen.mine.SettingScreen
import androidx.compose.material3.Icon
import androidx.compose.material3.NavigationBar
@ -215,9 +214,6 @@ fun MainScreen(generalViewModel: GeneralViewModel, loginViewModel: LoginViewMode
composable(ScreenRoute.Feedback.route) {
FeedbackScreen(navController = navController)
}
composable(ScreenRoute.OnlineService.route) {
OnlineServiceScreen(navController = navController)
}
composable(ScreenRoute.Setting.route) {
SettingScreen(navController = navController, loginViewModel = loginViewModel)
}

View File

@ -3,7 +3,6 @@ package com.img.rabbit.pages.screen
import android.annotation.SuppressLint
import android.app.Activity
import android.util.Log
import android.widget.Toast
import androidx.activity.compose.BackHandler
import androidx.compose.foundation.Image
import androidx.compose.foundation.background

View File

@ -3,7 +3,6 @@ package com.img.rabbit.pages.screen
import android.annotation.SuppressLint
import android.app.Activity
import android.util.Log
import android.widget.Toast
import androidx.activity.compose.BackHandler
import androidx.compose.foundation.Image
import androidx.compose.foundation.background

View File

@ -1,7 +1,6 @@
package com.img.rabbit.pages.screen.make
import android.graphics.Bitmap
import android.widget.Toast
import androidx.activity.compose.rememberLauncherForActivityResult
import androidx.compose.foundation.Image
import androidx.compose.foundation.background
@ -54,8 +53,6 @@ import github.leavesczy.matisse.MediaType
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import androidx.compose.ui.graphics.asAndroidBitmap
import com.img.rabbit.components.CenterToast
import io.moyuru.cropify.Cropify

View File

@ -4,7 +4,6 @@ import android.graphics.Bitmap
import android.net.Uri
import android.os.Build
import android.util.Log
import android.widget.Toast
import androidx.activity.compose.rememberLauncherForActivityResult
import androidx.activity.result.contract.ActivityResultContracts
import androidx.compose.foundation.Canvas

View File

@ -1,7 +1,5 @@
package com.img.rabbit.pages.screen.mine
import android.text.TextUtils
import android.widget.Toast
import androidx.compose.foundation.background
import androidx.compose.foundation.border
import androidx.compose.foundation.clickable

View File

@ -1,79 +0,0 @@
package com.img.rabbit.pages.screen.mine
import androidx.compose.foundation.clickable
import androidx.compose.foundation.interaction.MutableInteractionSource
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.navigationBarsPadding
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.Icon
import androidx.compose.material3.Scaffold
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import androidx.navigation.NavHostController
import androidx.navigation.compose.rememberNavController
import com.img.rabbit.R
@Composable
fun OnlineServiceScreen(navController: NavHostController) {
Scaffold{
Column(
modifier = Modifier.fillMaxSize().padding(it).navigationBarsPadding()
) {
// 顶部栏
Row(
modifier = Modifier
.fillMaxWidth()
.padding(16.dp),
verticalAlignment = Alignment.CenterVertically
) {
// 返回按钮
Icon(
painter = painterResource(id = R.mipmap.ic_back),
contentDescription = "返回",
modifier = Modifier
.clickable(
indication = null,
interactionSource = remember { MutableInteractionSource() }
) { navController.popBackStack() }
.padding(end = 16.dp)
)
Column(
modifier = Modifier.fillMaxWidth().padding(end = 26.dp)
) {
Text(
text = "",
color = Color(0xFF1A1A1A),
fontSize = 16.sp,
fontWeight = FontWeight.Bold,
modifier = Modifier.align(Alignment.CenterHorizontally)
)
}
}
Box(
modifier = Modifier.fillMaxWidth().padding(end = 26.dp)
){
//TODO 在线客服内容
}
}
}
}
@Preview(showBackground = true)
@Composable
private fun PreviewOnlineServiceScreen(){
OnlineServiceScreen(navController = rememberNavController())
}

View File

@ -1,7 +1,6 @@
package com.img.rabbit.pages.screen.mine
import android.annotation.SuppressLint
import android.util.Log
import androidx.compose.foundation.Image
import androidx.compose.foundation.background
import androidx.compose.foundation.border
@ -23,7 +22,6 @@ import androidx.compose.material3.Scaffold
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
@ -44,14 +42,10 @@ import androidx.lifecycle.viewmodel.compose.viewModel
import androidx.navigation.NavHostController
import androidx.navigation.compose.rememberNavController
import com.img.rabbit.R
import com.img.rabbit.bean.response.UserInfoEntity
import com.img.rabbit.pages.dialog.TipsDialog
import com.img.rabbit.pages.toolbar.TitleBar
import com.img.rabbit.provider.storage.GlobalStateManager
import com.img.rabbit.provider.storage.PreferenceUtil
import com.img.rabbit.utils.AppDataStoreUtils
import com.img.rabbit.utils.AppEventBus
import com.img.rabbit.utils.LoginBindEvent
import com.img.rabbit.viewmodel.LoginViewModel
@SuppressLint("UnrememberedMutableState")

View File

@ -1,16 +0,0 @@
package com.img.rabbit.pages.screen.mine
import androidx.compose.runtime.Composable
import androidx.compose.ui.tooling.preview.Preview
import androidx.navigation.NavHostController
import androidx.navigation.compose.rememberNavController
@Composable
fun VersionUpdateScreen(navController: NavHostController) {
}
@Preview(showBackground = true)
@Composable
private fun PreviewVersionUpdateScreen(){
VersionUpdateScreen(navController = rememberNavController())
}

View File

@ -1,7 +1,6 @@
package com.img.rabbit.pages.screen.mine.setting
import android.annotation.SuppressLint
import android.widget.Toast
import androidx.compose.foundation.Image
import androidx.compose.foundation.background
import androidx.compose.foundation.border

View File

@ -1,7 +1,6 @@
package com.img.rabbit.pages.screen.mine.setting
import android.annotation.SuppressLint
import android.widget.Toast
import androidx.compose.foundation.Image
import androidx.compose.foundation.background
import androidx.compose.foundation.border

View File

@ -7,7 +7,6 @@ import android.util.Log
import android.view.LayoutInflater
import android.widget.CheckBox
import android.widget.TextView
import android.widget.Toast
import androidx.compose.foundation.Image
import androidx.compose.foundation.background
import androidx.compose.foundation.border

View File

@ -3,8 +3,6 @@ package com.img.rabbit.provider.storage
import android.text.TextUtils
import com.google.gson.Gson
import com.google.gson.GsonBuilder
import com.google.gson.JsonArray
import com.google.gson.JsonObject
import com.img.rabbit.bean.local.UniMpVersionBean
import com.img.rabbit.bean.response.UserConfigEntity
import com.img.rabbit.bean.response.LoginInfoEntity
@ -198,33 +196,6 @@ object PreferenceUtil {
this.timeDiff = timeDiff
}
/**
* 保存百度归因bd_vid
*/
fun saveBDVID() {
try {
val str = applicationContext?.let { ChannelReader.get(it) }
if (!TextUtils.isEmpty(str)) {
@Suppress("NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS")
val jsonObj = JSONObject(str)
jsonObj.getString("bd_vid").let {
MMKVUtils.put("bd_vid", it)
}
} else {
MMKVUtils.put("bd_vid", "")
}
} catch (e: Exception) {
e.printStackTrace()
}
}
/**
* 获取百度归因bd_vid
*/
fun getBDVID(): String {
return MMKVUtils.getString(KEY_DB_VID) ?: ""
}
/**
* 退出登录时清除用户信息
*/

View File

@ -6,7 +6,6 @@ import com.img.rabbit.provider.storage.PreferenceUtil
import com.img.rabbit.BuildConfig
import com.img.rabbit.config.Constants
import com.img.rabbit.config.Constants.LOG_REQUEST
import com.img.rabbit.provider.storage.PreferenceUtil.getBDVID
import com.img.rabbit.provider.utils.HeadParamUtils.applicationContext
import com.img.rabbit.provider.utils.HeadParamUtils.getAppVersionName
import com.img.rabbit.utils.ChannelUtils
@ -31,7 +30,7 @@ class HeaderInterceptor : Interceptor {
mBuilder.header("x-package", BuildConfig.APPLICATION_ID)
mBuilder.header("x-base-version", getAppVersionName()?:"")
mBuilder.header("x-channel", "rabbit_${ChannelUtils.getChannel(applicationContext)}")
mBuilder.header("x-click-id", getBDVID())
mBuilder.header("x-click-id", "${ChannelUtils.getBdVid(applicationContext)}")
mBuilder.header("x-app-id", Constants.AppId)
val stringBuilder = StringBuilder()
@ -43,7 +42,7 @@ class HeaderInterceptor : Interceptor {
stringBuilder.append("│ x-mobile-model = ${android.os.Build.MODEL}\n")
stringBuilder.append("│ x-base-version = ${getAppVersionName()}\n")
stringBuilder.append("│ x-channel = rabbit_${ChannelUtils.getChannel(applicationContext)}\n")
stringBuilder.append("│ x-click-id = ${getBDVID()}\n")
stringBuilder.append("│ x-click-id = ${ChannelUtils.getBdVid(applicationContext)}\n")
stringBuilder.append("│ x-package = ${BuildConfig.APPLICATION_ID}\n")
stringBuilder.append("-------------> header end <-------------")

View File

@ -1,6 +1,5 @@
package com.img.rabbit.provider.utils
import android.content.Intent
import android.text.TextUtils
import android.util.Log
import com.img.rabbit.BuildConfig

View File

@ -20,7 +20,6 @@ sealed class ScreenRoute(val route: String) {
//我的页面Mine
object Feedback : ScreenRoute("feedback")
object OnlineService : ScreenRoute("onlineService")
object Login : ScreenRoute("login")
object Setting : ScreenRoute("setting")

View File

@ -1,7 +1,5 @@
package com.img.rabbit.utils
import android.content.Context
import android.content.Intent
import android.graphics.Color
import android.graphics.Typeface
import android.text.Spannable
@ -12,7 +10,6 @@ import android.text.style.ClickableSpan
import android.view.View
import android.widget.TextView
import androidx.core.graphics.toColorInt
import androidx.core.net.toUri
object AgreementTextHelper {

View File

@ -1,6 +1,5 @@
package com.img.rabbit.utils
import android.annotation.SuppressLint
import android.app.ActivityManager
import android.app.usage.StorageStatsManager
import android.content.Context

View File

@ -3,8 +3,10 @@ package com.img.rabbit.utils
import android.content.Context
import android.content.pm.PackageManager
import android.text.TextUtils
import com.alibaba.fastjson.JSON
import com.bytedance.hume.readapk.HumeSDK
import com.img.rabbit.BuildConfig
import com.img.rabbit.utils.appwalle.ChannelReader
import com.kwai.monitor.payload.TurboHelper
import com.tencent.vasdolly.helper.ChannelReaderUtil
@ -52,5 +54,13 @@ object ChannelUtils {
return ""
}
fun getBdVid(context: Context?): String? {
val content: String? = context?.let { ChannelReader.get(it) }
if (!TextUtils.isEmpty(content)) {
return JSON.parseObject(content).getString("bd_vid")
}
return ""
}
}

View File

@ -1,7 +1,6 @@
package com.img.rabbit.utils
import android.annotation.SuppressLint
import android.app.Application
import android.content.Context
import android.net.ConnectivityManager
import android.net.NetworkCapabilities

View File

@ -6,12 +6,7 @@ import com.google.mlkit.vision.segmentation.Segmentation
import com.google.mlkit.vision.segmentation.selfie.SelfieSegmenterOptions
import androidx.core.graphics.createBitmap
import android.graphics.*
import androidx.compose.ui.geometry.Offset
import com.google.mlkit.vision.face.FaceContour
import com.google.mlkit.vision.face.FaceDetection
import com.google.mlkit.vision.face.FaceDetectorOptions
import androidx.core.graphics.get
// 变换状态模型
data class TransformState(

View File

@ -12,7 +12,6 @@ import com.img.rabbit.bean.response.UniVersionEntity
import com.img.rabbit.components.CenterToast
import com.img.rabbit.config.Constants
import com.img.rabbit.provider.storage.PreferenceUtil
import com.img.rabbit.provider.storage.PreferenceUtil.getBDVID
import com.img.rabbit.provider.utils.HeadParamUtils.applicationContext
import com.img.rabbit.provider.utils.HeadParamUtils.getAppVersionName
import com.img.rabbit.uni.UniMPAlipaySplashView
@ -33,9 +32,6 @@ import kotlinx.coroutines.withContext
import okhttp3.OkHttpClient
import okhttp3.Request
import java.io.File
import java.net.HttpURLConnection
import java.net.URL
import java.util.concurrent.TimeUnit
import kotlin.jvm.java
@ -369,7 +365,7 @@ object UniAppUtils {
stringBuilder.append("│ x-mobile-model = ${android.os.Build.MODEL}\n")
stringBuilder.append("│ x-channel = ${ChannelUtils.getChannel(applicationContext)}\n")
stringBuilder.append("│ x-package = ${BuildConfig.APPLICATION_ID}\n")
stringBuilder.append("│ x-click-id = ${getBDVID()}\n")
stringBuilder.append("│ x-click-id = ${ChannelUtils.getBdVid(applicationContext)}\n")
stringBuilder.append("│ host = ${Constants.RELEASE_BASE_URL}\n")
stringBuilder.append("│ decrypt = ${Constants.AESDecrypt}\n")
stringBuilder.append("│ decrypt = ${Constants.Signature}\n")
@ -385,7 +381,7 @@ object UniAppUtils {
extraData.put("x-mobile-model", android.os.Build.MODEL)
extraData.put("x-channel", ChannelUtils.getChannel(applicationContext))
extraData.put("x-package", BuildConfig.APPLICATION_ID)
extraData.put("x-click-id",getBDVID())
extraData.put("x-click-id",ChannelUtils.getBdVid(applicationContext))
extraData.put("host", "${Constants.RELEASE_BASE_URL}/")
extraData.put("decrypt", Constants.AESDecrypt)
extraData.put("encrypt", Constants.Signature)

View File

@ -19,8 +19,6 @@ public final class ChannelReader {
/**
* 读取注入的内容
* @param context
* @return
*/
public static String get(@NonNull Context context) {
String apkPath = getApkPath(context);

View File

@ -19,10 +19,6 @@ public final class PayloadReader {
/**
* 读取指定ID的数据
*
* @param apkFile
* @param id
* @return
*/
public static String getString(File apkFile, int id) {
byte[] bytes = get(apkFile, id);

View File

@ -3,7 +3,6 @@ package com.img.rabbit.viewmodel
import android.app.Activity
import android.content.Context
import android.util.Log
import android.widget.Toast
import androidx.compose.runtime.State
import androidx.compose.runtime.mutableStateOf
import com.g.gysdk.GYManager

View File

@ -34,10 +34,8 @@ import com.img.rabbit.utils.MMKVUtils
import com.img.rabbit.utils.StringUtils
import com.tencent.mm.opensdk.modelmsg.SendAuth
import com.tencent.mm.opensdk.openapi.IWXAPI
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.DelicateCoroutinesApi
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import kotlinx.serialization.json.Json

View File

@ -9,8 +9,6 @@ import com.tencent.mm.opensdk.constants.ConstantsAPI
import com.tencent.mm.opensdk.modelbase.BaseReq
import com.tencent.mm.opensdk.modelbase.BaseResp
import io.dcloud.feature.payment.weixin.AbsWXPayCallbackActivity
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
class WXPayEntryActivity : AbsWXPayCallbackActivity() {
//val scope = CoroutineScope(Dispatchers.Main)