parent
8c21b3127e
commit
4883f4cba0
|
|
@ -68,7 +68,6 @@ import com.img.rabbit.pages.MainScreen
|
|||
import com.img.rabbit.pages.dialog.TipsUniMpDialog
|
||||
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.utils.AppEventBus
|
||||
import com.img.rabbit.utils.AppUpdate
|
||||
|
|
@ -103,6 +102,7 @@ class MainActivity : ComponentActivity(), LoadingCallback {
|
|||
setContent {
|
||||
val coroutineScope = rememberCoroutineScope()
|
||||
var showSplash by remember { mutableStateOf(false) }
|
||||
val isGlobalLoading by generalViewModel.isLoading.collectAsState()
|
||||
|
||||
val context = LocalContext.current
|
||||
val loginViewModel: LoginViewModel = viewModel()
|
||||
|
|
@ -110,22 +110,15 @@ class MainActivity : ComponentActivity(), LoadingCallback {
|
|||
val reportViewModel:ReportViewModel = viewModel()
|
||||
generalViewModel = ViewModelProvider(this, ViewModelProvider.AndroidViewModelFactory.getInstance(application))[GeneralViewModel::class.java]
|
||||
|
||||
val globalStateManager = remember { GlobalStateManager(context) }
|
||||
val updateUniUpdateNotify by globalStateManager.globalUniUpdateNotifyFlow().collectAsState(initial = false)
|
||||
//重置状态信息(防止异常退出导致状态失效)
|
||||
LaunchedEffect(Unit) {
|
||||
globalStateManager.apply {
|
||||
storeGlobalUniUpdateNotify(false)
|
||||
}
|
||||
}
|
||||
|
||||
val isGlobalLoading by generalViewModel.isLoading.collectAsState()
|
||||
// 软件更新提示
|
||||
var showUpdateDialog by remember { mutableStateOf(false) }
|
||||
// 下载小程序资源(在跳转指定页面时,未下载资源需要提示)
|
||||
var showUniDownloadDialog by remember { mutableStateOf(false) }
|
||||
var downloadUniEntity by remember { mutableStateOf<UniVersionEntity?>(null) }
|
||||
// 软件更新提示
|
||||
var showUpdateDialog by remember { mutableStateOf(false) }
|
||||
|
||||
// 小程序资源更新提示
|
||||
var showUniUpdateDialog by remember { mutableStateOf(false) }
|
||||
var updateUniEntity by remember { mutableStateOf<UniVersionEntity?>(null) }
|
||||
//以下为流事件收集订阅
|
||||
LaunchedEffect(Unit) {
|
||||
GeneralViewModel.GlobalEventBus.events.collect { event ->
|
||||
when (event) {
|
||||
|
|
@ -138,8 +131,12 @@ class MainActivity : ComponentActivity(), LoadingCallback {
|
|||
downloadUniEntity = event.entity
|
||||
showUniDownloadDialog = true
|
||||
}
|
||||
// ... 处理其他事件
|
||||
else -> {}
|
||||
// 小程序资源更新提示
|
||||
is GeneralViewModel.GlobalEvent.ShowUniUpdateNotify -> {
|
||||
updateUniEntity = event.entity
|
||||
showUniUpdateDialog = true
|
||||
}
|
||||
// ... 可以处理其他事件
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -316,8 +313,8 @@ class MainActivity : ComponentActivity(), LoadingCallback {
|
|||
//UniApp更新提示
|
||||
val isDownloadingWGT = mutableStateOf(false)
|
||||
val progressWGTState = mutableFloatStateOf(0f)
|
||||
if(updateUniUpdateNotify == true){
|
||||
UniAppUtils.currentUpdateUniMp?.let {
|
||||
if(showUniUpdateDialog){
|
||||
updateUniEntity?.let {
|
||||
TipsUniMpDialog(
|
||||
title = "资源包更新",
|
||||
content1 = "是否确定更新资源包",
|
||||
|
|
@ -332,7 +329,7 @@ class MainActivity : ComponentActivity(), LoadingCallback {
|
|||
if(!isUpdateFinish && !isCancel && data != null){
|
||||
isDownloadingWGT.value = true
|
||||
}else{
|
||||
coroutineScope.launch { globalStateManager.storeGlobalUniUpdateNotify(false) }
|
||||
showUniUpdateDialog = false
|
||||
}
|
||||
}
|
||||
)
|
||||
|
|
|
|||
|
|
@ -28,7 +28,6 @@ import androidx.compose.material3.LinearProgressIndicator
|
|||
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
|
||||
import androidx.compose.runtime.mutableStateMapOf
|
||||
|
|
@ -55,7 +54,6 @@ import coil3.compose.AsyncImage
|
|||
import com.img.rabbit.R
|
||||
import com.img.rabbit.components.CenterToast
|
||||
import com.img.rabbit.pages.LoadingCallback
|
||||
import com.img.rabbit.provider.storage.GlobalStateManager
|
||||
import com.img.rabbit.provider.storage.PreferenceUtil
|
||||
import com.img.rabbit.route.ScreenRoute
|
||||
import com.img.rabbit.utils.UniAppUtils
|
||||
|
|
@ -253,9 +251,8 @@ fun HomeScreen(
|
|||
// 提示更新(1、更新释放新版本并启动;2、直接启动现有版本)
|
||||
UniAppUtils.currentUpdateUniMp = uniMp
|
||||
scope.launch {
|
||||
GlobalStateManager(context).storeGlobalUniUpdateNotify(
|
||||
true
|
||||
)
|
||||
GeneralViewModel.GlobalEventBus.emit(
|
||||
GeneralViewModel.GlobalEvent.ShowUniUpdateNotify(uniMp))
|
||||
}
|
||||
} else {
|
||||
loadingCallback?.showLoading()
|
||||
|
|
@ -383,9 +380,8 @@ fun HomeScreen(
|
|||
// 提示更新(1、更新释放新版本并启动;2、直接启动现有版本)
|
||||
UniAppUtils.currentUpdateUniMp = uniMp
|
||||
scope.launch {
|
||||
GlobalStateManager(context).storeGlobalUniUpdateNotify(
|
||||
true
|
||||
)
|
||||
GeneralViewModel.GlobalEventBus.emit(
|
||||
GeneralViewModel.GlobalEvent.ShowUniUpdateNotify(uniMp))
|
||||
}
|
||||
} else {
|
||||
loadingCallback?.showLoading()
|
||||
|
|
|
|||
|
|
@ -9,11 +9,18 @@ import androidx.datastore.preferences.preferencesDataStore
|
|||
import kotlinx.coroutines.flow.Flow
|
||||
import kotlinx.coroutines.flow.map
|
||||
|
||||
private val Context.storeData: DataStore<Preferences> by preferencesDataStore(name = "global_state")
|
||||
private val Context.storeData: DataStore<Preferences> by preferencesDataStore(name = "global_store")
|
||||
|
||||
/**
|
||||
* 可用于全局存储
|
||||
* 注意:
|
||||
* 1. 该类的状态仅在当前应用进程内有效,不建议用于跨进程通信
|
||||
* 2. 该类存储执行IO操作,不建议简单通知场景使用。(如全局通知建议使用StateFlow
|
||||
*/
|
||||
class GlobalStateManager(
|
||||
private val context: Context
|
||||
) {
|
||||
/*
|
||||
companion object {
|
||||
private val GLOBAL_UNI_UPDATE_NOTIFY = booleanPreferencesKey("global_uni_update_notify")
|
||||
}
|
||||
|
|
@ -31,4 +38,6 @@ class GlobalStateManager(
|
|||
}
|
||||
}
|
||||
|
||||
*/
|
||||
|
||||
}
|
||||
|
|
@ -16,7 +16,6 @@ import androidx.compose.runtime.mutableStateOf
|
|||
import androidx.lifecycle.LiveData
|
||||
import androidx.lifecycle.MutableLiveData
|
||||
import com.img.rabbit.bean.response.UniVersionEntity
|
||||
import com.img.rabbit.bean.response.VersionEntity
|
||||
import com.img.rabbit.config.Constants
|
||||
import com.img.rabbit.provider.api.ApiManager
|
||||
import com.img.rabbit.provider.storage.PreferenceUtil
|
||||
|
|
|
|||
Loading…
Reference in New Issue