From e7bd5b81054be464f53c8918dcc26c6ab8485d96 Mon Sep 17 00:00:00 2001 From: jeongjaino Date: Sat, 3 Aug 2024 15:44:07 +0900 Subject: [PATCH] =?UTF-8?q?[FEATURE]#74=20:=20=EC=B0=A8=EB=8B=A8=20?= =?UTF-8?q?=ED=95=B4=EC=A0=9C=20=EB=A1=9C=EC=A7=81=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../screen/viewmodel/EntireViewModel.kt | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/feature/entire/src/main/java/com/bff/wespot/entire/screen/viewmodel/EntireViewModel.kt b/feature/entire/src/main/java/com/bff/wespot/entire/screen/viewmodel/EntireViewModel.kt index 18b5dc5b..c52df2ab 100644 --- a/feature/entire/src/main/java/com/bff/wespot/entire/screen/viewmodel/EntireViewModel.kt +++ b/feature/entire/src/main/java/com/bff/wespot/entire/screen/viewmodel/EntireViewModel.kt @@ -3,7 +3,9 @@ package com.bff.wespot.entire.screen.viewmodel import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.bff.wespot.domain.repository.auth.AuthRepository +import com.bff.wespot.domain.repository.message.MessageStorageRepository import com.bff.wespot.domain.repository.user.UserRepository +import com.bff.wespot.domain.usecase.GetBlockedMessageListUseCase import com.bff.wespot.entire.screen.state.EntireAction import com.bff.wespot.entire.screen.state.EntireSideEffect import com.bff.wespot.entire.screen.state.EntireUiState @@ -22,6 +24,8 @@ import javax.inject.Inject class EntireViewModel @Inject constructor( private val userRepository: UserRepository, private val authRepository: AuthRepository, + private val getBlockedMessageListUseCase: GetBlockedMessageListUseCase, + private val messageStorageRepository: MessageStorageRepository, private val navigator: Navigator, ) : ViewModel(), ContainerHost { override val container = container(EntireUiState()) @@ -32,7 +36,9 @@ class EntireViewModel @Inject constructor( EntireAction.OnRevokeButtonClicked -> revokeUser() EntireAction.OnSignOutButtonClicked -> signOut() EntireAction.OnRevokeConfirmed -> handleRevokeConfirmed() + EntireAction.OnBlockListScreenEntered -> getUnBlockedMessage() is EntireAction.OnRevokeReasonSelected -> handleRevokeReasonSelected(action.reason) + is EntireAction.UnBlockMessage -> unblockMessage(action.messageId) } } @@ -68,6 +74,35 @@ class EntireViewModel @Inject constructor( } } + private fun getUnBlockedMessage() = intent { + viewModelScope.launch { + getBlockedMessageListUseCase(cursorId = 0) + .onSuccess { messageList -> + reduce { state.copy(blockList = messageList) } + } + .onFailure { + Timber.e(it) + } + } + } + + private fun unblockMessage(messageId: Int) = intent { + viewModelScope.launch { + messageStorageRepository.blockMessage(messageId) + .onSuccess { + val updatedList = state.unBlockList.toMutableList().apply { + if (contains(messageId).not()) { + add(messageId) + } + } + reduce { state.copy(unBlockList = updatedList) } + } + .onFailure { + Timber.e(it) + } + } + } + private fun handleRevokeReasonSelected(reason: String) = intent { reduce { val updatedList = state.revokeReasonList.toMutableList().apply {