diff --git a/app/src/main/java/com/gamedog/vididin/features/zero/ZeroBuyActivity.kt b/app/src/main/java/com/gamedog/vididin/features/zero/ZeroBuyActivity.kt index f010ea1..8008b0f 100644 --- a/app/src/main/java/com/gamedog/vididin/features/zero/ZeroBuyActivity.kt +++ b/app/src/main/java/com/gamedog/vididin/features/zero/ZeroBuyActivity.kt @@ -223,12 +223,16 @@ class ZeroBuyActivity : AppViewsEmptyViewModelActivity() { } private fun updateItemUI(joinedItem: ZeroBuyItem?) { - val currentList = mAdapter.currentList.toMutableList() - val indexToUpdate = currentList.indexOfFirst { it.id == joinedItem?.id } - if (indexToUpdate != -1) { - currentList.removeAt(indexToUpdate) - currentList.add(indexToUpdate, joinedItem) - mAdapter.submitList(currentList) + if (joinedItem == null) { + mAdapter.notifyDataSetChanged() + } else { + val currentList = mAdapter.currentList.toMutableList() + val indexToUpdate = currentList.indexOfFirst { it.id == joinedItem?.id } + if (indexToUpdate != -1) { + currentList.removeAt(indexToUpdate) + currentList.add(indexToUpdate, joinedItem) + mAdapter.submitList(currentList) + } } } diff --git a/app/src/main/java/com/gamedog/vididin/features/zero/ZeroBuyViewModel.kt b/app/src/main/java/com/gamedog/vididin/features/zero/ZeroBuyViewModel.kt index e3708e0..1ced775 100644 --- a/app/src/main/java/com/gamedog/vididin/features/zero/ZeroBuyViewModel.kt +++ b/app/src/main/java/com/gamedog/vididin/features/zero/ZeroBuyViewModel.kt @@ -20,7 +20,10 @@ import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.launch + + class ZeroBuyViewModel : ViewModel() { + private val CODE_HAS_JOINED_BEFORE: Int = 10003 private val _ZeroBuyListData = MutableStateFlow>(Result.Loading) val ZeroBuyListData: StateFlow> = _ZeroBuyListData.asStateFlow() @@ -51,18 +54,22 @@ class ZeroBuyViewModel : ViewModel() { val respObj = AndroidUtil.json2Object(result.data.string()) - respObj?.contentObj?.let { - val itemId = respObj.contentObj?.id - if ((respObj.code == 0 || respObj.code == 10003) && itemId != null && itemId > 0) { - val mutableJoinedIdList = if(joinZeroBuyItemIds == null) mutableListOf() else joinZeroBuyItemIds.toMutableList() - mutableJoinedIdList.add(itemId) - SpUtil.instance().putList(SpUtil.KEY_ZEROBUY_JOINED_ACTIVITY_IDS, mutableJoinedIdList) + respObj?.let { + if (it.code == CODE_HAS_JOINED_BEFORE || it.code == 0) { + // save + val joinedActivityList = if(joinZeroBuyItemIds == null) mutableListOf() else joinZeroBuyItemIds.toMutableList() + if (!joinedActivityList.contains(itemId)) { + joinedActivityList.add(itemId) + SpUtil.instance().putList(SpUtil.KEY_ZEROBUY_JOINED_ACTIVITY_IDS, joinedActivityList) + } - _ZeroBuyJoinResult.value = Result.Success(respObj?.contentObj) + // flow set + _ZeroBuyJoinResult.value = Result.Success(it.current_purchases[0]) + + // return return@launch } } - _ZeroBuyJoinResult.value = Result.Error(Throwable("empty response")) } is Result.Error -> {