From a1c7e37fd9725d0b67e3af1f7bc24d8c2dcd1203 Mon Sep 17 00:00:00 2001 From: Marcel Hibbe Date: Mon, 14 Apr 2025 12:01:10 +0200 Subject: [PATCH] extract methods (avoid too long method "initObservers") Signed-off-by: Marcel Hibbe --- .../ConversationInfoActivity.kt | 104 ++++++++++-------- .../ConversationInfoViewModelTest.kt | 7 ++ 2 files changed, 66 insertions(+), 45 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/conversationinfo/ConversationInfoActivity.kt b/app/src/main/java/com/nextcloud/talk/conversationinfo/ConversationInfoActivity.kt index 5af5dcd98..4ab59c9b3 100644 --- a/app/src/main/java/com/nextcloud/talk/conversationinfo/ConversationInfoActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/conversationinfo/ConversationInfoActivity.kt @@ -238,22 +238,70 @@ class ConversationInfoActivity : initObservers() } - @Suppress("Detekt.LongMethod") private fun initObservers() { 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) { - is ConversationInfoViewModel.GetCapabilitiesSuccessState -> { - spreedCapabilities = state.spreedCapabilities + is ConversationInfoViewModel.SetConversationReadOnlyViewState.Success -> { + } - 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 -> {} } } + } + private fun initRoomOberserver() { viewModel.createRoomViewState.observe(this) { state -> when (state) { is ConversationInfoViewModel.CreateRoomUIState.Success -> { @@ -272,54 +320,20 @@ class ConversationInfoActivity : else -> {} } } + } - viewModel.getBanActorState.observe(this) { state -> + private fun initCapabilitiesObersver() { + viewModel.getCapabilitiesViewState.observe(this) { state -> when (state) { - is ConversationInfoViewModel.BanActorSuccessState -> { - getListOfParticipants() // Refresh the list of participants - } + is ConversationInfoViewModel.GetCapabilitiesSuccessState -> { + spreedCapabilities = state.spreedCapabilities - ConversationInfoViewModel.BanActorErrorState -> { - Snackbar.make(binding.root, "Error banning actor", Snackbar.LENGTH_SHORT).show() + handleConversation() } 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() { diff --git a/app/src/test/java/com/nextcloud/talk/conversationinfo/viewmodel/ConversationInfoViewModelTest.kt b/app/src/test/java/com/nextcloud/talk/conversationinfo/viewmodel/ConversationInfoViewModelTest.kt index b7b4272b3..23d7f4141 100644 --- a/app/src/test/java/com/nextcloud/talk/conversationinfo/viewmodel/ConversationInfoViewModelTest.kt +++ b/app/src/test/java/com/nextcloud/talk/conversationinfo/viewmodel/ConversationInfoViewModelTest.kt @@ -1,3 +1,10 @@ +/* + * Nextcloud Talk - Android Client + * + * SPDX-FileCopyrightText: 2025 Marcel Hibbe + * SPDX-License-Identifier: GPL-3.0-or-later + */ + package com.nextcloud.talk.conversationinfo.viewmodel import org.junit.Test