diff --git a/app/src/main/java/com/shuwei/dish/match/base/BaseActivity.kt b/app/src/main/java/com/shuwei/dish/match/base/BaseActivity.kt index 3070655..6f26be9 100644 --- a/app/src/main/java/com/shuwei/dish/match/base/BaseActivity.kt +++ b/app/src/main/java/com/shuwei/dish/match/base/BaseActivity.kt @@ -21,8 +21,6 @@ import androidx.core.view.WindowInsetsControllerCompat import com.shuwei.dish.match.R import com.shuwei.dish.match.databinding.ActivityBaseBinding import com.shuwei.dish.match.dialog.Loading -import com.shuwei.dish.match.entity.CookFoodGoodsEntity -import com.shuwei.dish.match.entity.SeasoningEntity import com.shuwei.dish.match.net.NetViewModel import com.shuwei.dish.match.ui.InitActivity import com.shuwei.dish.match.utils.ActivityManager @@ -183,22 +181,6 @@ open class BaseActivity : AppCompatActivity() { val netViewModel: NetViewModel by viewModels() - fun queryGoodsList( - param: MutableMap, - onSuccess: (MutableList?) -> Unit, - onFailure: (String, String) -> Unit - ) { - netViewModel.queryGoodsList(param, onSuccess, onFailure) - } - - fun querySeasoningList( - param: MutableMap, - onSuccess: (MutableList?) -> Unit, - onFailure: (String, String) -> Unit - ) { - netViewModel.querySeasoningList(param, onSuccess, onFailure) - } - private var permissionCallback: ((isGranted: Boolean) -> Unit)? = null private var activityCallback: ((intent: Intent?) -> Unit)? = null diff --git a/app/src/main/java/com/shuwei/dish/match/dialog/FoodSearchDialog.kt b/app/src/main/java/com/shuwei/dish/match/dialog/FoodSearchDialog.kt index c7f2a8c..4b16567 100644 --- a/app/src/main/java/com/shuwei/dish/match/dialog/FoodSearchDialog.kt +++ b/app/src/main/java/com/shuwei/dish/match/dialog/FoodSearchDialog.kt @@ -130,7 +130,7 @@ class FoodSearchDialog( if (!goodsName.isNullOrBlank()) { param["goodsName"] = goodsName!! } - activity.queryGoodsList(param = param, onSuccess = { + activity.netViewModel.queryGoodsList(param = param, onSuccess = { loadGoodsList(it) }, onFailure = { _, msg -> activity.toast(msg) diff --git a/app/src/main/java/com/shuwei/dish/match/dialog/SeasoningSearchDialog.kt b/app/src/main/java/com/shuwei/dish/match/dialog/SeasoningSearchDialog.kt index 0c0c94b..b4a3174 100644 --- a/app/src/main/java/com/shuwei/dish/match/dialog/SeasoningSearchDialog.kt +++ b/app/src/main/java/com/shuwei/dish/match/dialog/SeasoningSearchDialog.kt @@ -181,7 +181,7 @@ class SeasoningSearchDialog( if (!goodsName.isNullOrBlank()) { param["goodsName"] = goodsName!! } - activity.querySeasoningList(param = param, onSuccess = { + activity.netViewModel.querySeasoningList(param = param, onSuccess = { loadGoodsList(it) }, onFailure = { _, msg -> activity.toast(msg) diff --git a/app/src/main/java/com/shuwei/dish/match/viewmodel/AppViewModel.kt b/app/src/main/java/com/shuwei/dish/match/viewmodel/AppViewModel.kt index 166ec14..2e8912d 100644 --- a/app/src/main/java/com/shuwei/dish/match/viewmodel/AppViewModel.kt +++ b/app/src/main/java/com/shuwei/dish/match/viewmodel/AppViewModel.kt @@ -7,6 +7,8 @@ import com.shuwei.dish.match.entity.CookFoodEntity import com.shuwei.dish.match.entity.CookFoodGoodsEntity import com.shuwei.dish.match.entity.SeasoningEntity import kotlinx.coroutines.launch +import kotlinx.coroutines.sync.Mutex +import kotlinx.coroutines.sync.withLock import kotlin.collections.forEach class AppViewModel(private val rep: AppRepository) : ViewModel() { @@ -149,14 +151,13 @@ class AppViewModel(private val rep: AppRepository) : ViewModel() { // } // } - private var isProcessing = false + private val loadSeasoningMutex = Mutex() fun loadSeasoning(action: (MutableList) -> Unit) { + if (loadSeasoningMutex.isLocked) return viewModelScope.launch { - if (isProcessing) return@launch - isProcessing = true - val list = rep.getAllStream() - action(list) - isProcessing = false + loadSeasoningMutex.withLock { + action(rep.getAllStream()) + } } }