From 89e35a1933ba40513a96572b27291c0aa65c918c Mon Sep 17 00:00:00 2001
From: Runt <qingingrunt2010@qq.com>
Date: Sat, 11 Oct 2025 10:21:42 +0000
Subject: [PATCH] 框架优化
---
libmvi/src/main/java/com/runt/open/mvi/base/model/BaseViewModel.kt | 85 ++++++++++++++++++++++++++++++++++++++++--
1 files changed, 81 insertions(+), 4 deletions(-)
diff --git a/libmvi/src/main/java/com/runt/open/mvi/base/model/BaseViewModel.kt b/libmvi/src/main/java/com/runt/open/mvi/base/model/BaseViewModel.kt
index 59f9956..7c8909b 100644
--- a/libmvi/src/main/java/com/runt/open/mvi/base/model/BaseViewModel.kt
+++ b/libmvi/src/main/java/com/runt/open/mvi/base/model/BaseViewModel.kt
@@ -3,22 +3,31 @@
import android.content.Intent
import android.net.Uri
import android.os.Build
+import android.provider.MediaStore
import android.util.Log
-import androidx.activity.ComponentActivity
import androidx.core.content.FileProvider
-import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
+import com.google.gson.Gson
import com.runt.open.mvi.base.BaseActivity
import com.runt.open.mvi.base.LayoutView
+import com.runt.open.mvi.data.LoadingState
+import com.runt.open.mvi.data.MessageState
+import com.runt.open.mvi.data.PopupMessage
import com.runt.open.mvi.retrofit.AndroidScheduler
import io.reactivex.Observable
import io.reactivex.Observer
import io.reactivex.schedulers.Schedulers
+import kotlinx.coroutines.flow.MutableStateFlow
+import kotlinx.coroutines.flow.asStateFlow
import okhttp3.Callback
+import okhttp3.MediaType.Companion.toMediaType
import okhttp3.OkHttpClient
import okhttp3.Request
+import okhttp3.RequestBody
+import okhttp3.RequestBody.Companion.toRequestBody
import okhttp3.Response
import java.io.File
+import java.io.FileInputStream
import java.io.FileOutputStream
import java.io.IOException
import java.io.InputStream
@@ -33,15 +42,77 @@
var TAG = "";
protected var mActivity : BaseActivity<LayoutView<BaseViewModel> , BaseViewModel>? = null
- var verifyResult = MutableLiveData<Int>()
+
+ private val _isLoading = MutableStateFlow(LoadingState())
+ val isLoading = _isLoading.asStateFlow()
+
+ val messageSetDismiss = {
+ _messageState.value = _messageState.value.copy(isVisible = false);
+ }
+ private val _messageState = MutableStateFlow(MessageState(isVisible = false, setDismiss = { }))
+ val messageState = _messageState.asStateFlow()
+
+ private val _popupState = MutableStateFlow(PopupMessage(isVisible = false,"",""))
+ val popupState = _popupState.asStateFlow()
open fun onCreate(activity : BaseActivity<LayoutView<BaseViewModel> , BaseViewModel>) {
mActivity = activity
TAG = javaClass.simpleName;
}
- fun getActivity(): ComponentActivity {
+ open fun onPause(){
+
+ }
+
+ open fun onResume(){
+
+ }
+
+ open fun onStart(){
+
+ }
+
+ open fun onStop(){
+
+ }
+
+ open fun onDestroy(){
+
+ }
+
+ fun getActivity(): BaseActivity<LayoutView<BaseViewModel> , BaseViewModel> {
return mActivity!!;
+ }
+
+ fun showLoading(message : String = "加载中...") {
+ _isLoading.value = LoadingState(isVisible = true,message = message);
+ }
+
+ fun hideLoading() {
+ _isLoading.value = _isLoading.value.copy(isVisible = false);
+ }
+
+ fun showDialog(
+ title : String = "" , message : String = "" , confirmText : String = "确定" , cancelText : String = "" ,
+ touchOutside : Boolean = true , //空白和系统返回 是否关闭
+ showClose : Boolean = false , //显示关闭图标(默认不显示)
+ confirmDissmiss : Boolean = true , //点击确定是否关闭
+ cancelDissmiss : Boolean = true , //点击取消是否关闭
+ onDismissRequest : () -> Unit = {} ,
+ onCancelRequest : () -> Unit = {} ,
+ onConfirmRequest : () -> Unit = {} ,
+ ){
+ _messageState.value = MessageState(title = title, message = message, touchOutside = touchOutside, showClose = showClose, confirmText = confirmText,
+ cancelText = cancelText, confirmDissmiss = confirmDissmiss, cancelDissmiss = cancelDissmiss, onCancelRequest = onCancelRequest, onDismissRequest = onDismissRequest,
+ onConfirmRequest = onConfirmRequest, setDismiss = messageSetDismiss);
+ }
+
+ fun showPopupWindow(title : String,message : String){
+ _popupState.value = PopupMessage(isVisible = true,title,message)
+ }
+
+ fun hidePopupWindow(){
+ _popupState.value = _popupState.value.copy(isVisible = false);
}
/**
@@ -204,4 +275,10 @@
}.subscribe(observer)
}
+ fun createJsonBody(obj : Any) : RequestBody {
+ val mediaType = "application/json; charset=utf-8".toMediaType()
+ val json = if (obj is String) obj else Gson().toJson(obj)
+ val requestBody = json.toString().toRequestBody(mediaType)
+ return requestBody;
+ }
}
\ No newline at end of file
--
Gitblit v1.9.1