parent
62061c8fe6
commit
c9d2217716
|
|
@ -4,7 +4,7 @@
|
|||
<selectionStates>
|
||||
<SelectionState runConfigName="app">
|
||||
<option name="selectionMode" value="DROPDOWN" />
|
||||
<DropdownSelection timestamp="2026-03-13T02:12:15.837405600Z">
|
||||
<DropdownSelection timestamp="2026-03-13T03:47:40.083936900Z">
|
||||
<Target type="DEFAULT_BOOT">
|
||||
<handle>
|
||||
<DeviceId pluginId="PhysicalDevice" identifier="serial=Y5DELZR46DZTCI9D" />
|
||||
|
|
|
|||
|
|
@ -57,6 +57,7 @@ import androidx.lifecycle.lifecycleScope
|
|||
import androidx.lifecycle.viewmodel.compose.viewModel
|
||||
import com.google.accompanist.permissions.ExperimentalPermissionsApi
|
||||
import com.img.rabbit.bean.response.UniVersionEntity
|
||||
import com.img.rabbit.bean.response.UserInfoEntity
|
||||
import com.img.rabbit.components.GlobalToast
|
||||
import com.img.rabbit.config.Constants
|
||||
import com.img.rabbit.config.Constants.agreementUrl
|
||||
|
|
@ -65,6 +66,7 @@ import com.img.rabbit.pages.LoadingCallback
|
|||
import com.img.rabbit.pages.LoginScreen
|
||||
import com.img.rabbit.pages.LoginScreenType
|
||||
import com.img.rabbit.pages.MainScreen
|
||||
import com.img.rabbit.pages.dialog.TipsDialog
|
||||
import com.img.rabbit.pages.dialog.TipsUniMpDialog
|
||||
import com.img.rabbit.pages.dialog.TipsUniMpToPageDialog
|
||||
import com.img.rabbit.pages.dialog.UpdateDialog
|
||||
|
|
@ -115,6 +117,8 @@ class MainActivity : ComponentActivity(), LoadingCallback {
|
|||
// 退出登录
|
||||
var isLogout by remember { mutableStateOf(false) }
|
||||
|
||||
// 登录提示
|
||||
var showLoginDialog by remember { mutableStateOf(false) }
|
||||
// 软件更新提示
|
||||
var showUpdateDialog by remember { mutableStateOf(false) }
|
||||
// 下载小程序资源(在跳转指定页面时,未下载资源需要提示)
|
||||
|
|
@ -144,11 +148,35 @@ class MainActivity : ComponentActivity(), LoadingCallback {
|
|||
updateUniEntity = event.entity
|
||||
showUniUpdateDialog = true
|
||||
}
|
||||
// 登录提示
|
||||
is GlobalEvent.ShowLoginNotify -> {
|
||||
showLoginDialog = true
|
||||
}
|
||||
// ... 可以处理其他事件
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 处理全局事件,类似与EventBus订阅
|
||||
LaunchedEffect(Unit) {
|
||||
AppEventBus.events.collect { event ->
|
||||
when (event) {
|
||||
is LoginBindEvent.Login -> {
|
||||
if(!event.isLogin){
|
||||
loginViewModel.reset()
|
||||
isLogout = true
|
||||
}else{
|
||||
isLogout = false
|
||||
}
|
||||
loginViewModel.requestUserConfig()
|
||||
}
|
||||
is LoginBindEvent.Bind -> {
|
||||
loginViewModel.requestUserConfig()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 设置启动页显示条件
|
||||
splashScreen.setKeepOnScreenCondition {
|
||||
splashViewModel.isLoading.value // 当为 true 时,启动页不消失
|
||||
|
|
@ -176,26 +204,6 @@ class MainActivity : ComponentActivity(), LoadingCallback {
|
|||
}
|
||||
}
|
||||
|
||||
// 处理全局事件,类似与EventBus订阅
|
||||
LaunchedEffect(Unit) {
|
||||
AppEventBus.events.collect { event ->
|
||||
when (event) {
|
||||
is LoginBindEvent.Login -> {
|
||||
if(!event.isLogin){
|
||||
loginViewModel.reset()
|
||||
isLogout = true
|
||||
}else{
|
||||
isLogout = false
|
||||
}
|
||||
loginViewModel.requestUserConfig()
|
||||
}
|
||||
is LoginBindEvent.Bind -> {
|
||||
loginViewModel.requestUserConfig()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//提示下载小程序资源(在跳转指定页面时,未下载资源需要提示)
|
||||
val progressWGTToPageState = remember { mutableFloatStateOf(0f) }
|
||||
LaunchedEffect(showUniDownloadDialog) {
|
||||
|
|
@ -309,6 +317,27 @@ class MainActivity : ComponentActivity(), LoadingCallback {
|
|||
}
|
||||
}
|
||||
|
||||
if(showLoginDialog){
|
||||
TipsDialog(
|
||||
title = "温馨提示",
|
||||
content1 = "在使用我们功能之前,需要您先登录!",
|
||||
content2 = null,
|
||||
cancel = "取消",
|
||||
confirm = "立即登录",
|
||||
data = null,
|
||||
onStatusChange = { status, isCancel, _ ->
|
||||
if(!isCancel){
|
||||
// 隐藏TabBar
|
||||
generalViewModel.apply {
|
||||
setNavigationBarVisible(false)
|
||||
navController.navigate("login?type=${LoginViewModel.JumpLoginType.FROM_ADD.type}")
|
||||
}
|
||||
}
|
||||
showLoginDialog = status
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
//提示下载小程序资源(在跳转指定页面时,未下载资源需要提示)
|
||||
if(showUniDownloadDialog){
|
||||
downloadUniEntity?.let {
|
||||
|
|
@ -321,7 +350,6 @@ class MainActivity : ComponentActivity(), LoadingCallback {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
//UniApp更新提示
|
||||
val isDownloadingWGT = mutableStateOf(false)
|
||||
val progressWGTState = mutableFloatStateOf(0f)
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ class UserInfoEntity(
|
|||
val name: String = "",
|
||||
val phone: String = "",
|
||||
val role: String = "",
|
||||
val temp: Boolean = false,
|
||||
val temp: Boolean = true,
|
||||
val unionid: String = "",
|
||||
val user_id: String = "",
|
||||
val vip: Int = 0,
|
||||
|
|
|
|||
|
|
@ -71,6 +71,7 @@ fun MainScreen(generalViewModel: GeneralViewModel, loginViewModel: LoginViewMode
|
|||
val isNavigationBarVisible by generalViewModel.isNavigationBarVisible.observeAsState(initial = true)
|
||||
val tabItems = listOf( TabItem.Home, TabItem.Mine )
|
||||
var selectedTab: TabItem by remember { mutableStateOf(TabItem.Home) }
|
||||
generalViewModel.navController = navController
|
||||
|
||||
// 获取当前路由状态
|
||||
val navBackStackEntry by navController.currentBackStackEntryAsState()
|
||||
|
|
|
|||
|
|
@ -239,6 +239,9 @@ fun HomeScreen(
|
|||
indication = null,
|
||||
interactionSource = remember { MutableInteractionSource() }
|
||||
) {
|
||||
if(!loginViewModel.requiredLogin()){
|
||||
return@clickable
|
||||
}
|
||||
val uniMp = uniVersionConfig[0]
|
||||
dealUniMpDownloadLaunch(
|
||||
context,
|
||||
|
|
@ -309,6 +312,9 @@ fun HomeScreen(
|
|||
indication = null,
|
||||
interactionSource = remember { MutableInteractionSource() }
|
||||
) {
|
||||
if(!loginViewModel.requiredLogin()){
|
||||
return@clickable
|
||||
}
|
||||
val uniMp = uniVersionConfig[1]
|
||||
dealUniMpDownloadLaunch(
|
||||
context,
|
||||
|
|
@ -393,6 +399,9 @@ fun HomeScreen(
|
|||
indication = null,
|
||||
interactionSource = remember { MutableInteractionSource() }
|
||||
) {
|
||||
if(!loginViewModel.requiredLogin()){
|
||||
return@clickable
|
||||
}
|
||||
|
||||
val uniVersion =
|
||||
PreferenceUtil.getUserConfig()?.config?.uniVersionEntity?.firstOrNull { it.unimp_type == item.type }
|
||||
|
|
@ -821,6 +830,7 @@ private fun dealUniMpDownloadLaunch(
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
@Preview(showBackground = true)
|
||||
@Composable
|
||||
private fun PreviewOtherItems() {
|
||||
|
|
|
|||
|
|
@ -67,6 +67,7 @@ sealed class UniMpWXPayEvent {
|
|||
// 可以定义一个事件密封类,方便扩展
|
||||
sealed class GlobalEvent {
|
||||
object ShowAppUpdateNotify : GlobalEvent()
|
||||
object ShowLoginNotify : GlobalEvent()
|
||||
data class ShowUniDownloadNotify(val entity: UniVersionEntity) : GlobalEvent()
|
||||
data class ShowUniUpdateNotify(val entity: UniVersionEntity) : GlobalEvent()
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,6 +15,8 @@ import androidx.compose.runtime.State
|
|||
import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.lifecycle.LiveData
|
||||
import androidx.lifecycle.MutableLiveData
|
||||
import androidx.navigation.NavHostController
|
||||
import androidx.navigation.compose.rememberNavController
|
||||
import com.img.rabbit.bean.response.UniVersionEntity
|
||||
import com.img.rabbit.config.Constants
|
||||
import com.img.rabbit.provider.api.ApiManager
|
||||
|
|
@ -32,6 +34,7 @@ import kotlinx.coroutines.flow.asSharedFlow
|
|||
class GeneralViewModel: BaseViewModel(){
|
||||
lateinit var api: IWXAPI
|
||||
lateinit var receiver: BroadcastReceiver
|
||||
lateinit var navController: NavHostController
|
||||
private val _networkStatus = MutableLiveData<Boolean>()
|
||||
val networkStatus: LiveData<Boolean> = _networkStatus
|
||||
|
||||
|
|
|
|||
|
|
@ -439,6 +439,28 @@ class LoginViewModel : BaseViewModel() {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查是否登录
|
||||
*/
|
||||
fun isLogin(): Boolean{
|
||||
val userInfo = PreferenceUtil.getUserInfo()
|
||||
|
||||
return userInfo!=null && !userInfo.temp
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查登录,未登录 则跳转登录页
|
||||
*/
|
||||
fun requiredLogin(): Boolean{
|
||||
val isLogin = isLogin()
|
||||
if(!isLogin){
|
||||
viewModelScope.launch{
|
||||
GlobalEventBus.emit(GlobalEvent.ShowLoginNotify)
|
||||
}
|
||||
}
|
||||
return isLogin
|
||||
}
|
||||
|
||||
enum class JumpLoginType(val type: Int,val desc: String){
|
||||
NORMAL(0,"正常登录"),
|
||||
FROM_ADD(1,"添加账号"),
|
||||
|
|
|
|||
|
|
@ -121,6 +121,6 @@ interface ServiceVo {
|
|||
* 图片扣取
|
||||
*/
|
||||
@Multipart
|
||||
@POST("/api/image/segment")
|
||||
@POST("/api/image/segment/blob")
|
||||
suspend fun cutoutImage(@Part part: MultipartBody.Part): ResultVo<Any>
|
||||
}
|
||||
Loading…
Reference in New Issue