Runt
2025-12-12 53f2a4266f3e42296bdcc0f0c8365b2cd4a152b1
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,"",""))
@@ -91,22 +92,46 @@
    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 = 1, 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,
            cancelText = cancelText, confirmDismiss = confirmDismiss, cancelDismiss = cancelDismiss, onCancelRequest = onCancelRequest, onDismissRequest = onDismissRequest,
            onConfirmRequest = onConfirmRequest, setDismiss = messageSetDismiss);
    }
    fun dismissDialog(){
        messageSetDismiss.invoke();
    }
    fun showPopupWindow(title : String,message : String){
        _popupState.value = PopupMessage(isVisible = true,title,message)
    }