From 4ccb9c8a9a9d4b211b0711837804efc3c1466ce0 Mon Sep 17 00:00:00 2001 From: shenzuqiang Date: Mon, 9 Mar 2026 10:53:09 +0800 Subject: [PATCH] =?UTF-8?q?Dev=EF=BC=9A=201=E3=80=81=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/libs/oauth-weixin-release.aar | Bin 22899 -> 0 bytes .../main/java/com/img/rabbit/MainActivity.kt | 72 ++++++++---------- .../java/com/img/rabbit/pages/MainPage.kt | 7 +- .../com/img/rabbit/pages/screen/HomeScreen.kt | 17 ++--- .../com/img/rabbit/pages/screen/MineScreen.kt | 25 ++---- .../screen/mine/setting/AccountBindScreen.kt | 20 +++-- .../pages/screen/mine/setting/BindScreen.kt | 4 +- .../provider/storage/GlobalStateManager.kt | 27 ------- .../rabbit/provider/storage/PreferenceUtil.kt | 9 ++- .../java/com/img/rabbit/utils/AppEventBus.kt | 2 +- .../java/com/img/rabbit/utils/UniAppUtils.kt | 4 +- .../img/rabbit/viewmodel/GeneralViewModel.kt | 3 - .../img/rabbit/viewmodel/LoginViewModel.kt | 4 + 13 files changed, 78 insertions(+), 116 deletions(-) delete mode 100644 app/libs/oauth-weixin-release.aar diff --git a/app/libs/oauth-weixin-release.aar b/app/libs/oauth-weixin-release.aar deleted file mode 100644 index 871d89c1de6239018c3cbc372330a9975c813f1b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22899 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 when (event) { is LoginBindEvent.Login -> { - Log.i("AppEventBus","--------------登录成功,开始获取配置和个人数据") if(!event.isLogin){ loginViewModel.reset() } @@ -183,6 +162,16 @@ class MainActivity : ComponentActivity(), LoadingCallback { } } + //还原全局用户配置通知 + LaunchedEffect(updateUserConfigNotify) { + delay(300) + if(updateUserConfigNotify == true){ + coroutineScope.launch { + GlobalStateManager(context).storeGlobalUserConfigNotify(false) + } + } + } + AppTheme { SplashScreenContent{ //未同意提示政策弹窗 @@ -236,7 +225,7 @@ class MainActivity : ComponentActivity(), LoadingCallback { //提示下载小程序资源(在跳转指定页面时,未下载资源需要提示) val progressWGTToPageState = mutableFloatStateOf(0f) - if(globalUniDownload == true){ + if(updateUniDownloadNotify == true){ UniAppUtils.currentDownloadUniMp?.let { UniAppUtils.downloadReleaseWgt( coroutineScope, @@ -295,7 +284,7 @@ class MainActivity : ComponentActivity(), LoadingCallback { //UniApp更新提示 val isDownloadingWGT = mutableStateOf(false) val progressWGTState = mutableFloatStateOf(0f) - if(globalUniUpdate == true){ + if(updateUniUpdateNotify == true){ UniAppUtils.currentUpdateUniMp?.let { TipsUniMpDialog( title = "资源包更新", @@ -321,7 +310,7 @@ class MainActivity : ComponentActivity(), LoadingCallback { //App更新提示 val isStartDownload = mutableStateOf(false) val progressState = mutableFloatStateOf(0f) - if(globalUpdate.value == true){ + if(updateAppNotify.value == true){ UpdateDialog( title = PreferenceUtil.getUserConfig()?.config?.versionEntity?.title?:"新版本,更新提示", newVersion = "V${PreferenceUtil.getUserConfig()?.config?.versionEntity?.version}", @@ -362,7 +351,7 @@ class MainActivity : ComponentActivity(), LoadingCallback { } //全局加载提示 - if (globalLoading == true) { + if (updateGlobalLoadingNotify == true) { Log.i("HomeScreen","isStartOn--->${System.currentTimeMillis()}") Box( modifier = Modifier @@ -570,6 +559,7 @@ private fun PrivacyPolicyScreen(viewModel: LoginViewModel, onAgreementChange: (B ) } + @Suppress("DEPRECATION") ClickableText( text = annotatedText, modifier = Modifier diff --git a/app/src/main/java/com/img/rabbit/pages/MainPage.kt b/app/src/main/java/com/img/rabbit/pages/MainPage.kt index 8b4cea3..2c607a4 100644 --- a/app/src/main/java/com/img/rabbit/pages/MainPage.kt +++ b/app/src/main/java/com/img/rabbit/pages/MainPage.kt @@ -76,6 +76,11 @@ fun MainScreen(generalViewModel: GeneralViewModel, loginViewModel: LoginViewMode LaunchedEffect(navBackStackEntry) { // 当返回到MineScreen页面时执行的操作 if (navBackStackEntry?.destination?.route == "home") { + selectedTab = TabItem.Home + // 显示TabBar + generalViewModel.setNavigationBarVisible(true) + }else if(navBackStackEntry?.destination?.route == "mine"){ + selectedTab = TabItem.Mine // 显示TabBar generalViewModel.setNavigationBarVisible(true) } @@ -190,7 +195,7 @@ fun MainScreen(generalViewModel: GeneralViewModel, loginViewModel: LoginViewMode // 设置页面(Setting) composable(ScreenRoute.BindAccount.route) { - AccountBindScreen(navController = navController, loginViewModel = loginViewModel) + AccountBindScreen(navController = navController) } composable(ScreenRoute.ManagerAccount.route) { AccountManagerScreen(navController = navController, loginViewModel = loginViewModel) diff --git a/app/src/main/java/com/img/rabbit/pages/screen/HomeScreen.kt b/app/src/main/java/com/img/rabbit/pages/screen/HomeScreen.kt index f2f9c25..45937c4 100644 --- a/app/src/main/java/com/img/rabbit/pages/screen/HomeScreen.kt +++ b/app/src/main/java/com/img/rabbit/pages/screen/HomeScreen.kt @@ -64,7 +64,6 @@ import com.img.rabbit.utils.UniMpUpdate import com.img.rabbit.utils.UniMpWXPayEvent import com.img.rabbit.viewmodel.GeneralViewModel import io.dcloud.feature.sdk.DCUniMPSDK -import io.dcloud.feature.unimp.DCUniMPJSCallback import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.launch import org.json.JSONObject @@ -76,6 +75,7 @@ fun HomeScreen( generalViewModel: GeneralViewModel, loadingCallback: LoadingCallback? ) { + val TAG = "Rabbit_HomeScreen" val context = LocalContext.current val scope: CoroutineScope = rememberCoroutineScope() val progressPair = mutableStateMapOf() @@ -87,13 +87,12 @@ fun HomeScreen( var lastClickTime by remember { mutableLongStateOf(0L) } - val globalUserConfig by GlobalStateManager(context).globalUserConfigNotifyFlow().collectAsState(initial = false) + val updateUserConfigNotify by GlobalStateManager(context).globalUserConfigNotifyFlow().collectAsState(initial = false) BackHandler(enabled = (currentRoute == ScreenRoute.Home.route)) { val currentTime = System.currentTimeMillis() if (currentTime - lastClickTime > 2000) { Toast.makeText(context, "再按一次退出应用", Toast.LENGTH_SHORT).show() - Log.i("BackHandler", "HomeScreen----->BackHandler") lastClickTime = currentTime } else { (context as? Activity)?.finish() @@ -131,14 +130,14 @@ fun HomeScreen( } } - - var homeIconConfig by remember { mutableStateOf(PreferenceUtil.getUserConfig()?.config?.homeIconEntity) } var uniVersionConfig by remember { mutableStateOf(PreferenceUtil.getUserConfig()?.config?.uniVersionEntity) } - LaunchedEffect(globalUserConfig) { - if(globalUserConfig == true){ + LaunchedEffect(updateUserConfigNotify) { + if(updateUserConfigNotify == true){ homeIconConfig = PreferenceUtil.getUserConfig()?.config?.homeIconEntity uniVersionConfig = PreferenceUtil.getUserConfig()?.config?.uniVersionEntity + + Log.i(TAG,"-------------->HomeScreen页面,用户配置已经刷新") } } @@ -205,7 +204,7 @@ fun HomeScreen( context, scope, uniMp - ) { uniState, filePath, progress -> + ) { uniState, _, progress -> progressPair[uniMpId] ?: mutableMapOf().apply { put( @@ -335,7 +334,7 @@ fun HomeScreen( context, scope, uniMp - ) { uniState, filePath, progress -> + ) { uniState, _, progress -> progressPair[uniMpId] ?: mutableMapOf().apply { put( diff --git a/app/src/main/java/com/img/rabbit/pages/screen/MineScreen.kt b/app/src/main/java/com/img/rabbit/pages/screen/MineScreen.kt index daa0b7b..edc7308 100644 --- a/app/src/main/java/com/img/rabbit/pages/screen/MineScreen.kt +++ b/app/src/main/java/com/img/rabbit/pages/screen/MineScreen.kt @@ -15,7 +15,6 @@ import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height -import androidx.compose.foundation.layout.offset import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.wrapContentHeight @@ -23,7 +22,6 @@ import androidx.compose.foundation.layout.wrapContentSize import androidx.compose.foundation.shape.RoundedCornerShape 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.mutableLongStateOf @@ -35,12 +33,10 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.draw.shadow -import androidx.compose.ui.graphics.Brush import androidx.compose.ui.graphics.Color import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.painterResource -import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp @@ -72,11 +68,8 @@ fun MineScreen( val TAG = "Rabbit_Mine" val context = LocalContext.current val scope = rememberCoroutineScope() -// var globalLogin by mutableStateOf(GlobalStateManager(context).globalLoginNotifyFlow().collectAsState(initial = false)) - var globalBind by mutableStateOf(GlobalStateManager(context).globalBindNotifyFlow().collectAsState(initial = false)) - var globalUnBind by mutableStateOf(GlobalStateManager(context).globalUnBindNotifyFlow().collectAsState(initial = false)) + var updateUserConfigNotify by mutableStateOf(GlobalStateManager(context).globalUserConfigNotifyFlow().collectAsState(initial = false)) - //val vipMember by remember { mutableStateOf(false) } var userInfo by remember { mutableStateOf(PreferenceUtil.getUserInfo()) } // 获取当前路由状态 @@ -89,27 +82,19 @@ fun MineScreen( val currentTime = System.currentTimeMillis() if (currentTime - lastClickTime > 2000) { Toast.makeText(context, "再按一次退出应用", Toast.LENGTH_SHORT).show() - Log.i("BackHandler", "MineScreen----->BackHandler") lastClickTime = currentTime } else { (context as? Activity)?.finish() } } - LaunchedEffect(navBackStackEntry) { - // 当返回到MineScreen页面时执行的操作 - if (navBackStackEntry?.destination?.route == "mine") { - // 显示TabBar - generalViewModel.setNavigationBarVisible(true) - } - } - //刷新用户信息 -// if(globalLogin.value == true || globalBind.value == true || globalUnBind.value == true){ - if(globalBind.value == true || globalUnBind.value == true){ + if(updateUserConfigNotify.value == true){ scope.launch { - delay(300) + delay(200) userInfo = PreferenceUtil.getUserInfo() + + Log.i(TAG,"-------------->MineScreen页面,用户配置已经刷新") } } diff --git a/app/src/main/java/com/img/rabbit/pages/screen/mine/setting/AccountBindScreen.kt b/app/src/main/java/com/img/rabbit/pages/screen/mine/setting/AccountBindScreen.kt index 7e8c184..4d42a2b 100644 --- a/app/src/main/java/com/img/rabbit/pages/screen/mine/setting/AccountBindScreen.kt +++ b/app/src/main/java/com/img/rabbit/pages/screen/mine/setting/AccountBindScreen.kt @@ -46,15 +46,15 @@ import androidx.navigation.NavHostController import androidx.navigation.compose.rememberNavController import com.img.rabbit.R 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.AppEventBus +import com.img.rabbit.utils.LoginBindEvent import com.img.rabbit.viewmodel.AccountBindViewModel import com.img.rabbit.viewmodel.BindViewModel -import com.img.rabbit.viewmodel.LoginViewModel @SuppressLint("UnrememberedMutableState") @Composable -fun AccountBindScreen(navController: NavHostController, viewModel: AccountBindViewModel = viewModel(), loginViewModel: LoginViewModel) { +fun AccountBindScreen(navController: NavHostController, viewModel: AccountBindViewModel = viewModel()) { val context = LocalContext.current /** * 0:m默认未绑定,1:已绑定手机号(去解绑),2:已绑定微信(去解绑) @@ -65,11 +65,17 @@ fun AccountBindScreen(navController: NavHostController, viewModel: AccountBindVi LaunchedEffect(viewModel.unBindState.value) { if(viewModel.unBindState.value != null){ - + val loginInfo = viewModel.unBindState.value?.data Toast.makeText(context, "解绑成功!", Toast.LENGTH_SHORT).show() + AppEventBus.post( LoginBindEvent.Bind(userId = loginInfo?.user_id?:"", loginType = null, isBind = false, data = loginInfo) ) + + val popped = navController.popBackStack(route = "home", inclusive = true) + if (!popped) { + navController.navigate("home") { + popUpTo(navController.graph.startDestinationId) { inclusive = true } + } + } viewModel.unBindState.value = null - GlobalStateManager(context).storeGlobalUnBindNotify(true) - navController.popBackStack() } } LaunchedEffect(viewModel.errorState.value) { @@ -458,7 +464,7 @@ private fun UnBindPhoneDialog( @Preview(showBackground = true) @Composable private fun PreviewAccountBindScreen(){ - AccountBindScreen(navController = rememberNavController(), loginViewModel = LoginViewModel()) + AccountBindScreen(navController = rememberNavController()) } @SuppressLint("UnrememberedMutableState") diff --git a/app/src/main/java/com/img/rabbit/pages/screen/mine/setting/BindScreen.kt b/app/src/main/java/com/img/rabbit/pages/screen/mine/setting/BindScreen.kt index 77769db..bc2afb2 100644 --- a/app/src/main/java/com/img/rabbit/pages/screen/mine/setting/BindScreen.kt +++ b/app/src/main/java/com/img/rabbit/pages/screen/mine/setting/BindScreen.kt @@ -34,7 +34,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.livedata.observeAsState import androidx.compose.runtime.mutableIntStateOf @@ -117,9 +116,10 @@ fun BindScreen(navController: NavHostController, viewModel: BindViewModel = view // 登录成功后,保存 token LaunchedEffect(viewModel.bindState.value) { if (viewModel.bindState.value != null && viewModel.bindState.value?.data?.token != null) { + val loginInfo = viewModel.bindState.value?.data Toast.makeText(context, "绑定成功!", Toast.LENGTH_SHORT).show() + AppEventBus.post( LoginBindEvent.Bind(userId = loginInfo?.user_id?:"", loginType = null, isBind = true, data = loginInfo) ) - GlobalStateManager(context).storeGlobalBindNotify(true) navController.popBackStack() }else if (viewModel.bindState.value != null){ Toast.makeText(context, "绑定失败!", Toast.LENGTH_SHORT).show() diff --git a/app/src/main/java/com/img/rabbit/provider/storage/GlobalStateManager.kt b/app/src/main/java/com/img/rabbit/provider/storage/GlobalStateManager.kt index 3c14e5b..73d4bd3 100644 --- a/app/src/main/java/com/img/rabbit/provider/storage/GlobalStateManager.kt +++ b/app/src/main/java/com/img/rabbit/provider/storage/GlobalStateManager.kt @@ -20,8 +20,6 @@ class GlobalStateManager( ) { companion object { private val GLOBAL_LOADING = booleanPreferencesKey("global_loading") - private val GLOBAL_BIND_NOTIFY = booleanPreferencesKey("global_bind_notify") - private val GLOBAL_UNBIND_NOTIFY = booleanPreferencesKey("global_unbind_notify") private val GLOBAL_UPDATE_NOTIFY = booleanPreferencesKey("global_update_notify") private val GLOBAL_UNI_UPDATE_NOTIFY = booleanPreferencesKey("global_uni_update_notify") private val GLOBAL_UNI_DOWNLOAD_NOTIFY = booleanPreferencesKey("global_uni_download_notify") @@ -40,31 +38,6 @@ class GlobalStateManager( } } - suspend fun storeGlobalBindNotify(value: Boolean) { - context.storeData.edit { preferences -> - preferences[GLOBAL_BIND_NOTIFY] = value - } - } - fun globalBindNotifyFlow(): Flow { - return context.storeData.data.map { - preferences -> - preferences[GLOBAL_BIND_NOTIFY] - } - } - - suspend fun storeGlobalUnBindNotify(value: Boolean) { - context.storeData.edit { preferences -> - preferences[GLOBAL_UNBIND_NOTIFY] = value - } - } - fun globalUnBindNotifyFlow(): Flow { - return context.storeData.data.map { - preferences -> - preferences[GLOBAL_UNBIND_NOTIFY] - } - } - - suspend fun storeGlobalUpdateNotify(value: Boolean) { context.storeData.edit { preferences -> diff --git a/app/src/main/java/com/img/rabbit/provider/storage/PreferenceUtil.kt b/app/src/main/java/com/img/rabbit/provider/storage/PreferenceUtil.kt index bafe0fd..e61431e 100644 --- a/app/src/main/java/com/img/rabbit/provider/storage/PreferenceUtil.kt +++ b/app/src/main/java/com/img/rabbit/provider/storage/PreferenceUtil.kt @@ -81,8 +81,13 @@ object PreferenceUtil { return mmkv.decodeBool(KEY_AGREEMENT, false) } - fun saveUserConfig(config: UserConfigEntity) { - val resultJson = Gson().toJson(config) + fun saveUserConfig(config: UserConfigEntity?) { + val resultJson = if(config == null){ + "{}" + }else{ + Gson().toJson(config) + } + mmkv.encode(KEY_USER_CONFIG, resultJson) } diff --git a/app/src/main/java/com/img/rabbit/utils/AppEventBus.kt b/app/src/main/java/com/img/rabbit/utils/AppEventBus.kt index 814b7ba..a510a33 100644 --- a/app/src/main/java/com/img/rabbit/utils/AppEventBus.kt +++ b/app/src/main/java/com/img/rabbit/utils/AppEventBus.kt @@ -42,7 +42,7 @@ sealed class LoginBindEvent { * 处理绑定与解绑(isBind:true 绑定,false 解绑) * 绑定类型:LoginScreenType,仅包含手机(LoginScreenType.LOGIN_CAPTCHA)和微信(LoginScreenType.LOGIN_WX) */ - data class Bind(val userId: String, val loginType: LoginScreenType, val isBind: Boolean) : LoginBindEvent() + data class Bind(val userId: String, val loginType: LoginScreenType?, val isBind: Boolean, val data: Any?) : LoginBindEvent() } diff --git a/app/src/main/java/com/img/rabbit/utils/UniAppUtils.kt b/app/src/main/java/com/img/rabbit/utils/UniAppUtils.kt index f785c7f..acd677e 100644 --- a/app/src/main/java/com/img/rabbit/utils/UniAppUtils.kt +++ b/app/src/main/java/com/img/rabbit/utils/UniAppUtils.kt @@ -7,7 +7,6 @@ import com.github.gzuliyujiang.oaid.DeviceIdentifier import com.img.rabbit.BuildConfig import com.img.rabbit.bean.response.UniVersionEntity import com.img.rabbit.config.Constants -import com.img.rabbit.config.Constants.LOG_REQUEST import com.img.rabbit.provider.storage.PreferenceUtil import com.img.rabbit.provider.storage.PreferenceUtil.getBDVID import com.img.rabbit.provider.utils.HeadParamUtils.applicationContext @@ -20,7 +19,6 @@ import io.dcloud.feature.sdk.Interface.IUniMP import io.dcloud.feature.unimp.config.UniMPOpenConfiguration import io.dcloud.feature.unimp.config.UniMPReleaseConfiguration import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.launch @@ -227,7 +225,7 @@ object UniAppUtils { downloadUniMp(scope, uniVersion){uniState, filePath, progress -> onProgress(uniState, filePath, progress) if(uniState == UniMpUpdate.DOWNLOAD_FINISH){ - distributeUniMp(context, uniVersion) { loading ->} + distributeUniMp(context, uniVersion) { _ ->} } } } diff --git a/app/src/main/java/com/img/rabbit/viewmodel/GeneralViewModel.kt b/app/src/main/java/com/img/rabbit/viewmodel/GeneralViewModel.kt index 214c805..43ef6f1 100644 --- a/app/src/main/java/com/img/rabbit/viewmodel/GeneralViewModel.kt +++ b/app/src/main/java/com/img/rabbit/viewmodel/GeneralViewModel.kt @@ -1,7 +1,6 @@ package com.img.rabbit.viewmodel import android.annotation.SuppressLint -import android.app.Activity import android.app.Application import android.content.BroadcastReceiver import android.content.Context @@ -15,7 +14,6 @@ import android.net.NetworkRequest import android.os.Build import androidx.compose.runtime.State import androidx.compose.runtime.mutableStateOf -import androidx.core.content.ContextCompat.registerReceiver import androidx.lifecycle.AndroidViewModel import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData @@ -23,7 +21,6 @@ import com.img.rabbit.config.Constants import com.img.rabbit.provider.api.ApiManager import com.img.rabbit.provider.storage.PreferenceUtil import com.tencent.mm.opensdk.constants.ConstantsAPI -import com.tencent.mm.opensdk.modelpay.PayReq import com.tencent.mm.opensdk.openapi.IWXAPI import com.tencent.mm.opensdk.openapi.WXAPIFactory import kotlinx.coroutines.DelicateCoroutinesApi diff --git a/app/src/main/java/com/img/rabbit/viewmodel/LoginViewModel.kt b/app/src/main/java/com/img/rabbit/viewmodel/LoginViewModel.kt index 42e6903..8825620 100644 --- a/app/src/main/java/com/img/rabbit/viewmodel/LoginViewModel.kt +++ b/app/src/main/java/com/img/rabbit/viewmodel/LoginViewModel.kt @@ -35,6 +35,7 @@ import com.tencent.mm.opensdk.openapi.IWXAPI import kotlinx.coroutines.DelicateCoroutinesApi import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.delay import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import kotlinx.serialization.json.Json @@ -115,6 +116,8 @@ class LoginViewModel : BaseViewModel() { fun requestUserConfig(){ mLaunch { + //先置空配置 + PreferenceUtil.saveUserConfig(null) val oaid = MMKVUtils.getString("oaid") ?: "" val response = ApiManager.serviceVo.getUserConfig(oaid, Build.VERSION.SDK_INT, "", DeviceIdentifier.getAndroidID(applicationContext), MMKVUtils.getString("gt_cid") ?: "") if (response.status) { @@ -123,6 +126,7 @@ class LoginViewModel : BaseViewModel() { PreferenceUtil.saveUserConfig(response.data) userConfigResult.value = response + //以下是刷新状态 applicationContext?.let { GlobalStateManager(it) }?.storeGlobalUserConfigNotify(true) }else{ Log.w("LoginViewModel", "获取配置失败: code=${response.code}, message=${response.message}")