extract methods (avoid too long method "initObservers")

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
This commit is contained in:
Marcel Hibbe 2025-04-14 12:01:10 +02:00
parent f34968c886
commit a1c7e37fd9
No known key found for this signature in database
GPG Key ID: C793F8B59F43CE7B
2 changed files with 66 additions and 45 deletions

View File

@ -238,22 +238,70 @@ class ConversationInfoActivity :
initObservers() initObservers()
} }
@Suppress("Detekt.LongMethod")
private fun initObservers() { private fun initObservers() {
initViewStateObserver() initViewStateObserver()
initCapabilitiesObersver()
initRoomOberserver()
initBanActorObserver()
initConversationReadOnlyObserver()
initClearChatHistoryObserver()
}
viewModel.getCapabilitiesViewState.observe(this) { state -> private fun initClearChatHistoryObserver() {
viewModel.clearChatHistoryViewState.observe(this) { uiState ->
when (uiState) {
is ConversationInfoViewModel.ClearChatHistoryViewState.None -> {
}
is ConversationInfoViewModel.ClearChatHistoryViewState.Success -> {
Snackbar.make(
binding.root,
context.getString(R.string.nc_clear_history_success),
Snackbar.LENGTH_LONG
).show()
}
is ConversationInfoViewModel.ClearChatHistoryViewState.Error -> {
Snackbar.make(binding.root, R.string.nc_common_error_sorry, Snackbar.LENGTH_LONG).show()
Log.e(TAG, "failed to clear chat history", uiState.exception)
}
}
}
}
private fun initConversationReadOnlyObserver() {
viewModel.getConversationReadOnlyState.observe(this) { state ->
when (state) { when (state) {
is ConversationInfoViewModel.GetCapabilitiesSuccessState -> { is ConversationInfoViewModel.SetConversationReadOnlyViewState.Success -> {
spreedCapabilities = state.spreedCapabilities }
handleConversation() is ConversationInfoViewModel.SetConversationReadOnlyViewState.Error -> {
Snackbar.make(binding.root, R.string.conversation_read_only_failed, Snackbar.LENGTH_LONG).show()
}
is ConversationInfoViewModel.SetConversationReadOnlyViewState.None -> {
}
}
}
}
private fun initBanActorObserver() {
viewModel.getBanActorState.observe(this) { state ->
when (state) {
is ConversationInfoViewModel.BanActorSuccessState -> {
getListOfParticipants() // Refresh the list of participants
}
ConversationInfoViewModel.BanActorErrorState -> {
Snackbar.make(binding.root, "Error banning actor", Snackbar.LENGTH_SHORT).show()
} }
else -> {} else -> {}
} }
} }
}
private fun initRoomOberserver() {
viewModel.createRoomViewState.observe(this) { state -> viewModel.createRoomViewState.observe(this) { state ->
when (state) { when (state) {
is ConversationInfoViewModel.CreateRoomUIState.Success -> { is ConversationInfoViewModel.CreateRoomUIState.Success -> {
@ -272,54 +320,20 @@ class ConversationInfoActivity :
else -> {} else -> {}
} }
} }
}
viewModel.getBanActorState.observe(this) { state -> private fun initCapabilitiesObersver() {
viewModel.getCapabilitiesViewState.observe(this) { state ->
when (state) { when (state) {
is ConversationInfoViewModel.BanActorSuccessState -> { is ConversationInfoViewModel.GetCapabilitiesSuccessState -> {
getListOfParticipants() // Refresh the list of participants spreedCapabilities = state.spreedCapabilities
}
ConversationInfoViewModel.BanActorErrorState -> { handleConversation()
Snackbar.make(binding.root, "Error banning actor", Snackbar.LENGTH_SHORT).show()
} }
else -> {} else -> {}
} }
} }
viewModel.getConversationReadOnlyState.observe(this) { state ->
when (state) {
is ConversationInfoViewModel.SetConversationReadOnlyViewState.Success -> {
}
is ConversationInfoViewModel.SetConversationReadOnlyViewState.Error -> {
Snackbar.make(binding.root, R.string.conversation_read_only_failed, Snackbar.LENGTH_LONG).show()
}
is ConversationInfoViewModel.SetConversationReadOnlyViewState.None -> {
}
}
}
viewModel.clearChatHistoryViewState.observe(this) { uiState ->
when (uiState) {
is ConversationInfoViewModel.ClearChatHistoryViewState.None -> {
}
is ConversationInfoViewModel.ClearChatHistoryViewState.Success -> {
Snackbar.make(
binding.root,
context.getString(R.string.nc_clear_history_success),
Snackbar.LENGTH_LONG
).show()
}
is ConversationInfoViewModel.ClearChatHistoryViewState.Error -> {
Snackbar.make(binding.root, R.string.nc_common_error_sorry, Snackbar.LENGTH_LONG).show()
Log.e(TAG, "failed to clear chat history", uiState.exception)
}
}
}
} }
private fun initViewStateObserver() { private fun initViewStateObserver() {

View File

@ -1,3 +1,10 @@
/*
* Nextcloud Talk - Android Client
*
* SPDX-FileCopyrightText: 2025 Marcel Hibbe <dev@mhibbe.de>
* SPDX-License-Identifier: GPL-3.0-or-later
*/
package com.nextcloud.talk.conversationinfo.viewmodel package com.nextcloud.talk.conversationinfo.viewmodel
import org.junit.Test import org.junit.Test