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.TipsUniMpDialog
|
||||||
import com.img.rabbit.pages.dialog.TipsUniMpToPageDialog
|
import com.img.rabbit.pages.dialog.TipsUniMpToPageDialog
|
||||||
import com.img.rabbit.pages.dialog.UpdateDialog
|
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
|
||||||
import com.img.rabbit.utils.AppEventBus
|
import com.img.rabbit.utils.AppEventBus
|
||||||
import com.img.rabbit.utils.AppUpdate
|
import com.img.rabbit.utils.AppUpdate
|
||||||
|
|
@ -103,6 +102,7 @@ class MainActivity : ComponentActivity(), LoadingCallback {
|
||||||
setContent {
|
setContent {
|
||||||
val coroutineScope = rememberCoroutineScope()
|
val coroutineScope = rememberCoroutineScope()
|
||||||
var showSplash by remember { mutableStateOf(false) }
|
var showSplash by remember { mutableStateOf(false) }
|
||||||
|
val isGlobalLoading by generalViewModel.isLoading.collectAsState()
|
||||||
|
|
||||||
val context = LocalContext.current
|
val context = LocalContext.current
|
||||||
val loginViewModel: LoginViewModel = viewModel()
|
val loginViewModel: LoginViewModel = viewModel()
|
||||||
|
|
@ -110,22 +110,15 @@ class MainActivity : ComponentActivity(), LoadingCallback {
|
||||||
val reportViewModel:ReportViewModel = viewModel()
|
val reportViewModel:ReportViewModel = viewModel()
|
||||||
generalViewModel = ViewModelProvider(this, ViewModelProvider.AndroidViewModelFactory.getInstance(application))[GeneralViewModel::class.java]
|
generalViewModel = ViewModelProvider(this, ViewModelProvider.AndroidViewModelFactory.getInstance(application))[GeneralViewModel::class.java]
|
||||||
|
|
||||||
val globalStateManager = remember { GlobalStateManager(context) }
|
// 软件更新提示
|
||||||
val updateUniUpdateNotify by globalStateManager.globalUniUpdateNotifyFlow().collectAsState(initial = false)
|
var showUpdateDialog by remember { mutableStateOf(false) }
|
||||||
//重置状态信息(防止异常退出导致状态失效)
|
|
||||||
LaunchedEffect(Unit) {
|
|
||||||
globalStateManager.apply {
|
|
||||||
storeGlobalUniUpdateNotify(false)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
val isGlobalLoading by generalViewModel.isLoading.collectAsState()
|
|
||||||
// 下载小程序资源(在跳转指定页面时,未下载资源需要提示)
|
// 下载小程序资源(在跳转指定页面时,未下载资源需要提示)
|
||||||
var showUniDownloadDialog by remember { mutableStateOf(false) }
|
var showUniDownloadDialog by remember { mutableStateOf(false) }
|
||||||
var downloadUniEntity by remember { mutableStateOf<UniVersionEntity?>(null) }
|
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) {
|
LaunchedEffect(Unit) {
|
||||||
GeneralViewModel.GlobalEventBus.events.collect { event ->
|
GeneralViewModel.GlobalEventBus.events.collect { event ->
|
||||||
when (event) {
|
when (event) {
|
||||||
|
|
@ -138,8 +131,12 @@ class MainActivity : ComponentActivity(), LoadingCallback {
|
||||||
downloadUniEntity = event.entity
|
downloadUniEntity = event.entity
|
||||||
showUniDownloadDialog = true
|
showUniDownloadDialog = true
|
||||||
}
|
}
|
||||||
// ... 处理其他事件
|
// 小程序资源更新提示
|
||||||
else -> {}
|
is GeneralViewModel.GlobalEvent.ShowUniUpdateNotify -> {
|
||||||
|
updateUniEntity = event.entity
|
||||||
|
showUniUpdateDialog = true
|
||||||
|
}
|
||||||
|
// ... 可以处理其他事件
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -316,8 +313,8 @@ class MainActivity : ComponentActivity(), LoadingCallback {
|
||||||
//UniApp更新提示
|
//UniApp更新提示
|
||||||
val isDownloadingWGT = mutableStateOf(false)
|
val isDownloadingWGT = mutableStateOf(false)
|
||||||
val progressWGTState = mutableFloatStateOf(0f)
|
val progressWGTState = mutableFloatStateOf(0f)
|
||||||
if(updateUniUpdateNotify == true){
|
if(showUniUpdateDialog){
|
||||||
UniAppUtils.currentUpdateUniMp?.let {
|
updateUniEntity?.let {
|
||||||
TipsUniMpDialog(
|
TipsUniMpDialog(
|
||||||
title = "资源包更新",
|
title = "资源包更新",
|
||||||
content1 = "是否确定更新资源包",
|
content1 = "是否确定更新资源包",
|
||||||
|
|
@ -332,7 +329,7 @@ class MainActivity : ComponentActivity(), LoadingCallback {
|
||||||
if(!isUpdateFinish && !isCancel && data != null){
|
if(!isUpdateFinish && !isCancel && data != null){
|
||||||
isDownloadingWGT.value = true
|
isDownloadingWGT.value = true
|
||||||
}else{
|
}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.material3.Text
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.LaunchedEffect
|
import androidx.compose.runtime.LaunchedEffect
|
||||||
import androidx.compose.runtime.collectAsState
|
|
||||||
import androidx.compose.runtime.getValue
|
import androidx.compose.runtime.getValue
|
||||||
import androidx.compose.runtime.mutableLongStateOf
|
import androidx.compose.runtime.mutableLongStateOf
|
||||||
import androidx.compose.runtime.mutableStateMapOf
|
import androidx.compose.runtime.mutableStateMapOf
|
||||||
|
|
@ -55,7 +54,6 @@ import coil3.compose.AsyncImage
|
||||||
import com.img.rabbit.R
|
import com.img.rabbit.R
|
||||||
import com.img.rabbit.components.CenterToast
|
import com.img.rabbit.components.CenterToast
|
||||||
import com.img.rabbit.pages.LoadingCallback
|
import com.img.rabbit.pages.LoadingCallback
|
||||||
import com.img.rabbit.provider.storage.GlobalStateManager
|
|
||||||
import com.img.rabbit.provider.storage.PreferenceUtil
|
import com.img.rabbit.provider.storage.PreferenceUtil
|
||||||
import com.img.rabbit.route.ScreenRoute
|
import com.img.rabbit.route.ScreenRoute
|
||||||
import com.img.rabbit.utils.UniAppUtils
|
import com.img.rabbit.utils.UniAppUtils
|
||||||
|
|
@ -253,9 +251,8 @@ fun HomeScreen(
|
||||||
// 提示更新(1、更新释放新版本并启动;2、直接启动现有版本)
|
// 提示更新(1、更新释放新版本并启动;2、直接启动现有版本)
|
||||||
UniAppUtils.currentUpdateUniMp = uniMp
|
UniAppUtils.currentUpdateUniMp = uniMp
|
||||||
scope.launch {
|
scope.launch {
|
||||||
GlobalStateManager(context).storeGlobalUniUpdateNotify(
|
GeneralViewModel.GlobalEventBus.emit(
|
||||||
true
|
GeneralViewModel.GlobalEvent.ShowUniUpdateNotify(uniMp))
|
||||||
)
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
loadingCallback?.showLoading()
|
loadingCallback?.showLoading()
|
||||||
|
|
@ -383,9 +380,8 @@ fun HomeScreen(
|
||||||
// 提示更新(1、更新释放新版本并启动;2、直接启动现有版本)
|
// 提示更新(1、更新释放新版本并启动;2、直接启动现有版本)
|
||||||
UniAppUtils.currentUpdateUniMp = uniMp
|
UniAppUtils.currentUpdateUniMp = uniMp
|
||||||
scope.launch {
|
scope.launch {
|
||||||
GlobalStateManager(context).storeGlobalUniUpdateNotify(
|
GeneralViewModel.GlobalEventBus.emit(
|
||||||
true
|
GeneralViewModel.GlobalEvent.ShowUniUpdateNotify(uniMp))
|
||||||
)
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
loadingCallback?.showLoading()
|
loadingCallback?.showLoading()
|
||||||
|
|
|
||||||
|
|
@ -9,11 +9,18 @@ import androidx.datastore.preferences.preferencesDataStore
|
||||||
import kotlinx.coroutines.flow.Flow
|
import kotlinx.coroutines.flow.Flow
|
||||||
import kotlinx.coroutines.flow.map
|
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(
|
class GlobalStateManager(
|
||||||
private val context: Context
|
private val context: Context
|
||||||
) {
|
) {
|
||||||
|
/*
|
||||||
companion object {
|
companion object {
|
||||||
private val GLOBAL_UNI_UPDATE_NOTIFY = booleanPreferencesKey("global_uni_update_notify")
|
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.LiveData
|
||||||
import androidx.lifecycle.MutableLiveData
|
import androidx.lifecycle.MutableLiveData
|
||||||
import com.img.rabbit.bean.response.UniVersionEntity
|
import com.img.rabbit.bean.response.UniVersionEntity
|
||||||
import com.img.rabbit.bean.response.VersionEntity
|
|
||||||
import com.img.rabbit.config.Constants
|
import com.img.rabbit.config.Constants
|
||||||
import com.img.rabbit.provider.api.ApiManager
|
import com.img.rabbit.provider.api.ApiManager
|
||||||
import com.img.rabbit.provider.storage.PreferenceUtil
|
import com.img.rabbit.provider.storage.PreferenceUtil
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue