From c96a3660d8257820c55bc3f1429c07adc364fe7d Mon Sep 17 00:00:00 2001 From: Runt <qingingrunt2010@qq.com> Date: Tue, 05 Aug 2025 12:57:13 +0000 Subject: [PATCH] 加解密优化 --- libmvi/src/main/java/com/runt/open/mvi/base/model/BaseViewModel.kt | 64 ++++++++++++++++++++++++++++++-- 1 files changed, 60 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 8ecb0d2..f8a1e09 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 @@ -5,19 +5,26 @@ 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 @@ -35,15 +42,57 @@ 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 { + 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); } /** @@ -206,6 +255,13 @@ }.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; + } + fun getFilePathFromUri(uri:Uri):String?{ var filePath = ""; var filePathColumn = arrayOf(MediaStore.Video.Media.DATA) -- Gitblit v1.9.1