Runt
2025-07-25 fefe89781718c2bca0990a289928464d637a6b41
libmvi/src/main/java/com/runt/open/mvi/base/model/BaseViewModel.kt
@@ -5,9 +5,9 @@
import android.os.Build
import android.provider.MediaStore
import android.util.Log
import androidx.activity.ComponentActivity
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.LoadingState
@@ -20,8 +20,11 @@
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
@@ -57,7 +60,7 @@
        TAG = javaClass.simpleName;
    }
    fun getActivity(): ComponentActivity {
    fun getActivity(): BaseActivity<LayoutView<BaseViewModel> , BaseViewModel> {
        return mActivity!!;
    }
@@ -69,16 +72,18 @@
        _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 = {},
        onConfirmRequest : () -> Unit = {}, ){
    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, onDismissRequest = onDismissRequest,
            cancelText = cancelText, confirmDissmiss = confirmDissmiss, cancelDissmiss = cancelDissmiss, onCancelRequest = onCancelRequest, onDismissRequest = onDismissRequest,
            onConfirmRequest = onConfirmRequest, setDismiss = messageSetDismiss);
    }
@@ -250,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)