From 47670220de335ea4ff9026db6e8f094153c8ae10 Mon Sep 17 00:00:00 2001
From: Runt <qingingrunt2010@qq.com>
Date: Sun, 05 Apr 2026 10:48:56 +0000
Subject: [PATCH] 音频播放问题修复 反馈图片上传问题修复 版本更新优化

---
 libmvi/src/main/java/com/runt/open/mvi/base/model/BaseViewModel.kt |   94 ++++++++++++++++++++++++++++-------------------
 1 files changed, 56 insertions(+), 38 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 f8a1e09..a9fa4f0 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,14 +3,16 @@
 import android.content.Intent
 import android.net.Uri
 import android.os.Build
-import android.provider.MediaStore
 import android.util.Log
+import androidx.compose.ui.text.input.KeyboardType
 import androidx.core.content.FileProvider
 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.InputMessageState
 import com.runt.open.mvi.data.LoadingState
+import com.runt.open.mvi.data.Message
 import com.runt.open.mvi.data.MessageState
 import com.runt.open.mvi.data.PopupMessage
 import com.runt.open.mvi.retrofit.AndroidScheduler
@@ -27,7 +29,6 @@
 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
@@ -47,9 +48,9 @@
     val isLoading = _isLoading.asStateFlow()
 
     val messageSetDismiss = {
-        _messageState.value = _messageState.value.copy(isVisible = false);
+        _messageState.value = MessageState(isVisible = false)
     }
-    private val _messageState = MutableStateFlow(MessageState(isVisible = false, setDismiss = { }))
+    private val _messageState = MutableStateFlow(Message(isVisible = false, setDismiss = { }))
     val messageState = _messageState.asStateFlow()
 
     private val _popupState = MutableStateFlow(PopupMessage(isVisible = false,"",""))
@@ -58,6 +59,26 @@
     open fun onCreate(activity : BaseActivity<LayoutView<BaseViewModel> , BaseViewModel>) {
         mActivity = activity
         TAG = javaClass.simpleName;
+    }
+
+    open fun onPause(){
+
+    }
+
+    open fun onResume(){
+
+    }
+
+    open fun onStart(){
+
+    }
+
+    open fun onStop(){
+
+    }
+
+    open fun onDestroy(){
+
     }
 
     fun getActivity(): BaseActivity<LayoutView<BaseViewModel> , BaseViewModel> {
@@ -71,20 +92,44 @@
     fun hideLoading() {
         _isLoading.value = _isLoading.value.copy(isVisible = false);
     }
-
-    fun showDialog(
-        title : String = "" , message : String = "" , confirmText : String = "确定" , cancelText : String = "" ,
+    fun showInputDialog(
+        title : String = "" , message : String = "" , hint : String = "",regex : String = "",
+        confirmText:String = "确定", cancelText:String = "取消",
+        maxLines:Int = 0, minLength:Int = 0, maxLength:Int = 0,
+        inputType : KeyboardType = KeyboardType.Text ,
         touchOutside : Boolean = true , //空白和系统返回 是否关闭
         showClose : Boolean = false , //显示关闭图标(默认不显示)
-        confirmDissmiss : Boolean = true , //点击确定是否关闭
-        cancelDissmiss : Boolean = true , //点击取消是否关闭
+        confirmDismiss : Boolean = true , //点击确定是否关闭
+        cancelDismiss : Boolean = true , //点击取消是否关闭
+        onDismissRequest : () -> Unit = {} ,
+        onCancelRequest : () -> Unit = {} ,
+        onConfirmRequest : (String) -> Unit = {} ,
+    ){
+        _messageState.value = InputMessageState(title = title, message = message, hint = hint, regex = regex,
+            maxLines = maxLines, minLength = minLength, maxLength = maxLength, inputType = inputType,
+            touchOutside = touchOutside, showClose = showClose, confirmText = confirmText,
+            cancelText = cancelText, confirmDismiss = confirmDismiss, cancelDismiss = cancelDismiss, onCancelRequest = onCancelRequest, onDismissRequest = onDismissRequest,
+            onConfirmRequest = onConfirmRequest, setDismiss = messageSetDismiss);
+    }
+
+    fun showDialog(
+        title : String = "" , message : String = "" ,
+        confirmText : String = "确定" , cancelText : String = "" ,
+        touchOutside : Boolean = true , //空白和系统返回 是否关闭
+        showClose : Boolean = false , //显示关闭图标(默认不显示)
+        confirmDismiss : Boolean = true , //点击确定是否关闭
+        cancelDismiss : 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,
+        _messageState.value = MessageState(title = title, message = message,  touchOutside = touchOutside, showClose = showClose, confirmText = confirmText,
+            cancelText = cancelText, confirmDismiss = confirmDismiss, cancelDismiss = cancelDismiss, onCancelRequest = onCancelRequest, onDismissRequest = onDismissRequest,
             onConfirmRequest = onConfirmRequest, setDismiss = messageSetDismiss);
+    }
+
+    fun dismissDialog(){
+        messageSetDismiss.invoke();
     }
 
     fun showPopupWindow(title : String,message : String){
@@ -260,32 +305,5 @@
         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)
-        var cursor = mActivity!!.contentResolver.query(uri!!,filePathColumn,null,null,null)
-        cursor?.let {
-            it.moveToFirst()
-            var index = it.getColumnIndex(filePathColumn[0])
-            if(index > -1 && index < it.columnCount){
-                filePath = it.getString(index)
-            }
-            it.close();
-        }
-        var file = File(filePath);
-        Log.i(TAG,"文件是否存在=${file.exists()} file=${filePath} ")
-        if(file.exists()){
-            try {
-                var inputStream = FileInputStream(file)
-                inputStream.close();
-                return filePath;
-            }catch (e:Exception){
-                return null;
-            }
-        }else{
-            return null;
-        }
     }
 }
\ No newline at end of file

--
Gitblit v1.9.1