refactor(viewmodel): 新增 seasoningSlotState 替代 loadSeasoning,将 getSamplingList 迁移至 StateFlow
This commit is contained in:
@@ -4,6 +4,7 @@ import android.annotation.SuppressLint
|
||||
import android.os.Bundle
|
||||
import androidx.activity.addCallback
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import com.shuwei.dish.match.R
|
||||
import com.shuwei.dish.match.adapter.HomeModeAdapter
|
||||
@@ -17,6 +18,7 @@ import com.shuwei.dish.match.utils.ext.startActivity
|
||||
import com.shuwei.dish.match.utils.ext.toast
|
||||
import com.shuwei.dish.match.viewmodel.AppViewModel
|
||||
import com.shuwei.dish.match.viewmodel.factory.AppFactory
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
class HomeActivity : BaseActivity() {
|
||||
|
||||
@@ -143,21 +145,22 @@ class HomeActivity : BaseActivity() {
|
||||
}
|
||||
|
||||
private fun goSampling() {
|
||||
appViewModel.loadSeasoning {
|
||||
if (it.isEmpty()) {
|
||||
//无调料信息打开采样历史列表页面,点击设置配置调料信息
|
||||
lifecycleScope.launch {
|
||||
val slots = appViewModel.loadSeasoningSlot()
|
||||
if (slots.isEmpty()) {
|
||||
// 无调料信息,打开采样历史列表页面,点击设置配置调料信息
|
||||
startActivity<SamplingListActivity>()
|
||||
finish()
|
||||
return@loadSeasoning
|
||||
return@launch
|
||||
}
|
||||
appViewModel.countCookFood(cookMode = 1) { count ->
|
||||
if (count > 0) {
|
||||
//有烹饪中数据打开采样历史列表页面
|
||||
// 有烹饪中数据,打开采样历史列表页面
|
||||
startActivity<SamplingListActivity>()
|
||||
finish()
|
||||
return@countCookFood
|
||||
}
|
||||
//无烹饪数据打开新增采样页面
|
||||
// 无烹饪数据,打开新增采样页面
|
||||
startActivity<PrepareCookActivity> {
|
||||
putExtra(PrepareCookActivity.PAGE_FROM, PrepareCookActivity.HOME)
|
||||
}
|
||||
|
||||
@@ -100,19 +100,20 @@ class InitActivity : BaseActivity() {
|
||||
}
|
||||
|
||||
private fun goSampling() {
|
||||
appViewModel.loadSeasoning {
|
||||
if (it.isEmpty()) {
|
||||
//无调料信息打开采样历史列表页面,点击设置配置调料信息
|
||||
lifecycleScope.launch {
|
||||
val slots = appViewModel.loadSeasoningSlot()
|
||||
if (slots.isEmpty()) {
|
||||
// 无调料信息,打开采样历史列表页面,点击设置配置调料信息
|
||||
startActivity<SamplingListActivity>()
|
||||
return@loadSeasoning
|
||||
return@launch
|
||||
}
|
||||
appViewModel.countCookFood(cookMode = 1) { count ->
|
||||
if (count > 0) {
|
||||
//有烹饪中数据打开采样历史列表页面
|
||||
// 有烹饪中数据,打开采样历史列表页面
|
||||
startActivity<SamplingListActivity>()
|
||||
return@countCookFood
|
||||
}
|
||||
//无烹饪数据打开新增采样页面
|
||||
// 无烹饪数据,打开新增采样页面
|
||||
startActivity<PrepareCookActivity> {
|
||||
putExtra(PrepareCookActivity.PAGE_FROM, PrepareCookActivity.HOME)
|
||||
}
|
||||
|
||||
@@ -31,6 +31,7 @@ import com.shuwei.dish.match.viewmodel.AppViewModel
|
||||
import com.shuwei.dish.match.viewmodel.factory.AppFactory
|
||||
import java.io.Serializable
|
||||
import kotlinx.coroutines.launch
|
||||
import com.shuwei.dish.match.net.UiState
|
||||
|
||||
class SamplingListActivity : BaseActivity() {
|
||||
|
||||
@@ -88,6 +89,24 @@ class SamplingListActivity : BaseActivity() {
|
||||
}
|
||||
}
|
||||
}
|
||||
lifecycleScope.launch {
|
||||
repeatOnLifecycle(Lifecycle.State.STARTED) {
|
||||
netViewModel.samplingListState.collect { state ->
|
||||
when (state) {
|
||||
is UiState.Loading -> showLoading()
|
||||
is UiState.Success -> loadDishList(state.data)
|
||||
is UiState.Error -> {
|
||||
binding.refreshLayout.setEnableRefresh(true)
|
||||
toast(state.msg)
|
||||
finishRefresh()
|
||||
delayDismissLoading()
|
||||
if (pageNo == 1) loadEmptyView()
|
||||
}
|
||||
is UiState.Idle -> {}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -229,53 +248,12 @@ class SamplingListActivity : BaseActivity() {
|
||||
|
||||
@SuppressLint("NotifyDataSetChanged")
|
||||
fun getSamplingList() {
|
||||
showLoading()
|
||||
// val map = mapOf(
|
||||
//// "foodName" to input,
|
||||
// "pageNo" to "$pageNo",
|
||||
// "pageSize" to "$pageSize",
|
||||
// "canteenId" to BaseApp.canteenId
|
||||
// )
|
||||
// val sb = StringBuilder(UrlConfig.SAMPLING_LIST).apply {
|
||||
// append("?")
|
||||
// map.forEach { (key, value) -> append("$key=$value&") }
|
||||
// }
|
||||
// sb.deleteCharAt(sb.length - 1)
|
||||
// HttpUtil.get(
|
||||
// url = sb.toString(),
|
||||
// doSuccess = {
|
||||
// loadDishList(it)
|
||||
// }, doFailure = { code, msg ->
|
||||
// binding.refreshLayout.run {
|
||||
// setEnableRefresh(true)
|
||||
// }
|
||||
// toast(msg)
|
||||
// finishRefresh()
|
||||
// binding.refreshLayout.setEnableRefresh(true)
|
||||
// delayDismissLoading()
|
||||
// if (pageNo == 1) {
|
||||
// loadEmptyView()
|
||||
// }
|
||||
// })
|
||||
|
||||
netViewModel.getSamplingList(
|
||||
param = mutableMapOf(
|
||||
"pageNum" to pageNo,
|
||||
"pageSize" to pageSize,
|
||||
"placeId" to BaseApp.canteenId
|
||||
),
|
||||
onSuccess = {
|
||||
loadDishList(it)
|
||||
},
|
||||
onFailure = { code, msg ->
|
||||
binding.refreshLayout.setEnableRefresh(true)
|
||||
toast(msg)
|
||||
finishRefresh()
|
||||
delayDismissLoading()
|
||||
if (pageNo == 1) {
|
||||
loadEmptyView()
|
||||
}
|
||||
}
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
@@ -381,10 +359,11 @@ class SamplingListActivity : BaseActivity() {
|
||||
block()
|
||||
return
|
||||
}
|
||||
appViewModel.loadSeasoning {
|
||||
if (it.isEmpty()) {
|
||||
lifecycleScope.launch {
|
||||
val slots = appViewModel.loadSeasoningSlot()
|
||||
if (slots.isEmpty()) {
|
||||
showDeviceConfigDialog()
|
||||
return@loadSeasoning
|
||||
return@launch
|
||||
}
|
||||
configFinished = true
|
||||
block()
|
||||
|
||||
Reference in New Issue
Block a user