- 将应用名称从 SmartPlateCabinet 更改为 SmartTakePlate - 更新初始化页面背景图片为 bg_collect_page3 - 替换 View 组件为 Space 组件以优化布局权重分配 - 调整取盘按钮尺寸和文字大小提升用户体验 - 简化人脸识别登录页面布局结构 - 更新应用图标资源为 logo_launcher - 移除未使用的权限声明和活动注册 - 优化人脸识别相关 API 接口调用 - 调整时间显示逻辑仅保留时间部分 - 移除扫描枪事件监听相关功能代码 - 重构人脸识别数据更新逻辑 - 移除余额不足对话框相关代码
74 lines
2.3 KiB
Kotlin
74 lines
2.3 KiB
Kotlin
package com.sw.platecabinet.viewmodel
|
|
|
|
import androidx.lifecycle.ViewModel
|
|
import androidx.lifecycle.viewModelScope
|
|
import com.sw.plate.utils.ToastUtils
|
|
import com.sw.platecabinet.model.response.ApiResponse
|
|
import com.sw.platecabinet.network.ApiClient
|
|
import com.sw.platecabinet.repository.RemoteRepository
|
|
import kotlinx.coroutines.flow.MutableStateFlow
|
|
import kotlinx.coroutines.flow.StateFlow
|
|
import kotlinx.coroutines.launch
|
|
import timber.log.Timber
|
|
|
|
abstract class BaseViewModel() : ViewModel() {
|
|
protected val repository = RemoteRepository(ApiClient.apiService)
|
|
|
|
// 显示进度条
|
|
private val _showLoading = MutableStateFlow<Boolean>(false)
|
|
val showLoading: StateFlow<Boolean> = _showLoading
|
|
|
|
/**
|
|
* 带进度条的请求
|
|
*/
|
|
protected fun launchWithLoading(block: suspend () -> Unit) {
|
|
viewModelScope.launch {
|
|
try {
|
|
_showLoading.value = true
|
|
block()
|
|
} catch (e: Exception) {
|
|
// 错误处理可被子类重写
|
|
handleError(e)
|
|
} finally {
|
|
_showLoading.value = false
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 不带进度条的请求
|
|
*/
|
|
protected fun launch(block: suspend () -> Unit) {
|
|
viewModelScope.launch() {
|
|
try {
|
|
block()
|
|
} catch (e: Exception) {
|
|
// 错误处理可被子类重写
|
|
handleError(e)
|
|
}
|
|
}
|
|
}
|
|
|
|
protected open fun parseResponse(response: ApiResponse<*>): Boolean {
|
|
if (response.isSuccess()) {
|
|
return true
|
|
}
|
|
Timber.d("msg = ${response.msg}, code = ${response.code}")
|
|
ToastUtils.showToast("${response.msg}(${response.code})")
|
|
return false
|
|
}
|
|
|
|
|
|
fun handleError(exception: Exception) {
|
|
Timber.d("handleError ${exception.message}")
|
|
}
|
|
|
|
// fun parseEquipmentInfo(equipmentInfo: EquipmentInfo) {
|
|
//// GlobalData.appBaseUrl = equipmentInfo.appPackageUrl!!
|
|
//// GlobalData.appBaseUrl="https://vip.shuziweidao.com"
|
|
//// GlobalData.sdkKey = equipmentInfo.arcsoftSdkKey!!
|
|
//// GlobalData.appId = equipmentInfo.arcsoftAppId!!
|
|
//// GlobalData.activeKey = equipmentInfo.arcsoftActiveKey!!
|
|
//// GlobalData.restId = equipmentInfo.canteenId!!
|
|
// }
|
|
} |