refactor(login): 优化出盘流程并增强错误处理
- 抽取出盘成功与失败的统一处理方法,简化代码逻辑 - 新增新用户注册采集成功后立即出盘功能,避免与识别成功逻辑冲突 - 出盘成功后取消识别倒计时并控制出盘开关,防止重复出盘 - 出盘失败时统一提示错误并跳转回初始页 - 采集成功后立即异步出盘,确保上传失败时仍能出盘 - 调整识别失败计数重置逻辑,避免无人脸短暂丢帧导致计数异常 - 在人脸离开时重置识别失败计数,保证下次重新累计 - 网络请求增加异常捕获,防止因异常导致回调阻塞无反馈
This commit is contained in:
@@ -249,18 +249,24 @@ class NetViewModelV2 : ViewModel() {
|
||||
*/
|
||||
fun addUserFace(faceData: String, imageFile: File, block: (Boolean, UserFaceModelV2?) -> Unit) {
|
||||
viewModelScope.launch {
|
||||
val imageResp = repository.uploadImage(imageFile)
|
||||
val imageUrl = imageResp.data ?: ""
|
||||
if (imageUrl.isBlank()) {
|
||||
try {
|
||||
val imageResp = repository.uploadImage(imageFile)
|
||||
val imageUrl = imageResp.data ?: ""
|
||||
if (imageUrl.isBlank()) {
|
||||
block(false, null)
|
||||
return@launch
|
||||
}
|
||||
val faceResp = repository.addUserFace(faceData, imageUrl)
|
||||
if (faceResp.isSuccess().not()) {
|
||||
block(false, null)
|
||||
return@launch
|
||||
}
|
||||
block(true, faceResp.data)
|
||||
} catch (e: Exception) {
|
||||
// 网络或解析异常时同样回调失败,避免 block 永不触发导致上层无反馈
|
||||
e.printStackTrace()
|
||||
block(false, null)
|
||||
return@launch
|
||||
}
|
||||
val faceResp = repository.addUserFace(faceData, imageUrl)
|
||||
if (faceResp.isSuccess().not()) {
|
||||
block(false, null)
|
||||
return@launch
|
||||
}
|
||||
block(true, faceResp.data)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user