Skip to content

Commit a1c7e37

Browse files
committed
extract methods (avoid too long method "initObservers")
Signed-off-by: Marcel Hibbe <[email protected]>
1 parent f34968c commit a1c7e37

File tree

2 files changed

+59
-38
lines changed

2 files changed

+59
-38
lines changed

app/src/main/java/com/nextcloud/talk/conversationinfo/ConversationInfoActivity.kt

Lines changed: 52 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -238,41 +238,54 @@ class ConversationInfoActivity :
238238
initObservers()
239239
}
240240

241-
@Suppress("Detekt.LongMethod")
242241
private fun initObservers() {
243242
initViewStateObserver()
243+
initCapabilitiesObersver()
244+
initRoomOberserver()
245+
initBanActorObserver()
246+
initConversationReadOnlyObserver()
247+
initClearChatHistoryObserver()
248+
}
244249

245-
viewModel.getCapabilitiesViewState.observe(this) { state ->
246-
when (state) {
247-
is ConversationInfoViewModel.GetCapabilitiesSuccessState -> {
248-
spreedCapabilities = state.spreedCapabilities
250+
private fun initClearChatHistoryObserver() {
251+
viewModel.clearChatHistoryViewState.observe(this) { uiState ->
252+
when (uiState) {
253+
is ConversationInfoViewModel.ClearChatHistoryViewState.None -> {
254+
}
249255

250-
handleConversation()
256+
is ConversationInfoViewModel.ClearChatHistoryViewState.Success -> {
257+
Snackbar.make(
258+
binding.root,
259+
context.getString(R.string.nc_clear_history_success),
260+
Snackbar.LENGTH_LONG
261+
).show()
251262
}
252263

253-
else -> {}
264+
is ConversationInfoViewModel.ClearChatHistoryViewState.Error -> {
265+
Snackbar.make(binding.root, R.string.nc_common_error_sorry, Snackbar.LENGTH_LONG).show()
266+
Log.e(TAG, "failed to clear chat history", uiState.exception)
267+
}
254268
}
255269
}
270+
}
256271

257-
viewModel.createRoomViewState.observe(this) { state ->
272+
private fun initConversationReadOnlyObserver() {
273+
viewModel.getConversationReadOnlyState.observe(this) { state ->
258274
when (state) {
259-
is ConversationInfoViewModel.CreateRoomUIState.Success -> {
260-
state.room.ocs?.data?.token?.let { token ->
261-
val chatIntent = Intent(context, ChatActivity::class.java).apply {
262-
putExtra(KEY_ROOM_TOKEN, token)
263-
}
264-
startActivity(chatIntent)
265-
}
275+
is ConversationInfoViewModel.SetConversationReadOnlyViewState.Success -> {
266276
}
267277

268-
is ConversationInfoViewModel.CreateRoomUIState.Error -> {
269-
Snackbar.make(binding.root, R.string.nc_common_error_sorry, Snackbar.LENGTH_LONG).show()
278+
is ConversationInfoViewModel.SetConversationReadOnlyViewState.Error -> {
279+
Snackbar.make(binding.root, R.string.conversation_read_only_failed, Snackbar.LENGTH_LONG).show()
270280
}
271281

272-
else -> {}
282+
is ConversationInfoViewModel.SetConversationReadOnlyViewState.None -> {
283+
}
273284
}
274285
}
286+
}
275287

288+
private fun initBanActorObserver() {
276289
viewModel.getBanActorState.observe(this) { state ->
277290
when (state) {
278291
is ConversationInfoViewModel.BanActorSuccessState -> {
@@ -286,38 +299,39 @@ class ConversationInfoActivity :
286299
else -> {}
287300
}
288301
}
302+
}
289303

290-
viewModel.getConversationReadOnlyState.observe(this) { state ->
304+
private fun initRoomOberserver() {
305+
viewModel.createRoomViewState.observe(this) { state ->
291306
when (state) {
292-
is ConversationInfoViewModel.SetConversationReadOnlyViewState.Success -> {
307+
is ConversationInfoViewModel.CreateRoomUIState.Success -> {
308+
state.room.ocs?.data?.token?.let { token ->
309+
val chatIntent = Intent(context, ChatActivity::class.java).apply {
310+
putExtra(KEY_ROOM_TOKEN, token)
311+
}
312+
startActivity(chatIntent)
313+
}
293314
}
294315

295-
is ConversationInfoViewModel.SetConversationReadOnlyViewState.Error -> {
296-
Snackbar.make(binding.root, R.string.conversation_read_only_failed, Snackbar.LENGTH_LONG).show()
316+
is ConversationInfoViewModel.CreateRoomUIState.Error -> {
317+
Snackbar.make(binding.root, R.string.nc_common_error_sorry, Snackbar.LENGTH_LONG).show()
297318
}
298319

299-
is ConversationInfoViewModel.SetConversationReadOnlyViewState.None -> {
300-
}
320+
else -> {}
301321
}
302322
}
323+
}
303324

304-
viewModel.clearChatHistoryViewState.observe(this) { uiState ->
305-
when (uiState) {
306-
is ConversationInfoViewModel.ClearChatHistoryViewState.None -> {
307-
}
325+
private fun initCapabilitiesObersver() {
326+
viewModel.getCapabilitiesViewState.observe(this) { state ->
327+
when (state) {
328+
is ConversationInfoViewModel.GetCapabilitiesSuccessState -> {
329+
spreedCapabilities = state.spreedCapabilities
308330

309-
is ConversationInfoViewModel.ClearChatHistoryViewState.Success -> {
310-
Snackbar.make(
311-
binding.root,
312-
context.getString(R.string.nc_clear_history_success),
313-
Snackbar.LENGTH_LONG
314-
).show()
331+
handleConversation()
315332
}
316333

317-
is ConversationInfoViewModel.ClearChatHistoryViewState.Error -> {
318-
Snackbar.make(binding.root, R.string.nc_common_error_sorry, Snackbar.LENGTH_LONG).show()
319-
Log.e(TAG, "failed to clear chat history", uiState.exception)
320-
}
334+
else -> {}
321335
}
322336
}
323337
}

app/src/test/java/com/nextcloud/talk/conversationinfo/viewmodel/ConversationInfoViewModelTest.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
/*
2+
* Nextcloud Talk - Android Client
3+
*
4+
* SPDX-FileCopyrightText: 2025 Marcel Hibbe <[email protected]>
5+
* SPDX-License-Identifier: GPL-3.0-or-later
6+
*/
7+
18
package com.nextcloud.talk.conversationinfo.viewmodel
29

310
import org.junit.Test

0 commit comments

Comments
 (0)