|  |  | 
 |  |  | 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 | 
 |  |  | 
 |  |  | 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 | 
 |  |  | 
 |  |  |         TAG = javaClass.simpleName; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     fun getActivity(): ComponentActivity { | 
 |  |  |     fun getActivity(): BaseActivity<LayoutView<BaseViewModel> , BaseViewModel> { | 
 |  |  |         return mActivity!!; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | 
 |  |  |         _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); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | 
 |  |  |             }.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) |