@@ -370,7 +370,7 @@ class ChatActivity :
370370 var conversationThreadId: Long? = null
371371 var openedViaNotification: Boolean = false
372372 var conversationThreadInfo: ThreadInfo ? = null
373- var conversationUser: User ? = null
373+ lateinit var conversationUser: User
374374 lateinit var spreedCapabilities: SpreedCapability
375375 var chatApiVersion: Int = 1
376376 private var roomPassword: String = " "
@@ -509,34 +509,41 @@ class ChatActivity :
509509 colorizeNavigationBar()
510510 }
511511
512- conversationUser = currentUserProvider.currentUser.blockingGet()
513- handleIntent(intent)
514-
515512 chatViewModel = ViewModelProvider (this , viewModelFactory)[ChatViewModel ::class .java]
516513
517514 conversationInfoViewModel = ViewModelProvider (this , viewModelFactory)[ConversationInfoViewModel ::class .java]
518515
519516 contextChatViewModel = ViewModelProvider (this , viewModelFactory)[ContextChatViewModel ::class .java]
520517
521- val urlForChatting = ApiUtils .getUrlForChat(chatApiVersion, conversationUser?.baseUrl, roomToken)
522- val credentials = ApiUtils .getCredentials(conversationUser!! .username, conversationUser!! .token)
523- chatViewModel.initData(
524- credentials!! ,
525- urlForChatting,
526- roomToken,
527- conversationThreadId
528- )
518+ lifecycleScope.launch {
519+ currentUserProvider.getCurrentUser()
520+ .onSuccess { user ->
521+ conversationUser = user
522+ handleIntent(intent)
523+ val urlForChatting = ApiUtils .getUrlForChat(chatApiVersion, conversationUser?.baseUrl, roomToken)
524+ val credentials = ApiUtils .getCredentials(conversationUser!! .username, conversationUser!! .token)
525+ chatViewModel.initData(
526+ user,
527+ credentials!! ,
528+ urlForChatting,
529+ roomToken,
530+ conversationThreadId
531+ )
529532
530- conversationThreadId?.let {
531- val threadUrl = ApiUtils .getUrlForThread(
532- version = 1 ,
533- baseUrl = conversationUser!! .baseUrl,
534- token = roomToken,
535- threadId = it.toInt()
536- )
537- chatViewModel.getThread(credentials, threadUrl)
533+ conversationThreadId?.let {
534+ val threadUrl = ApiUtils .getUrlForThread(
535+ version = 1 ,
536+ baseUrl = conversationUser!! .baseUrl,
537+ token = roomToken,
538+ threadId = it.toInt()
539+ )
540+ chatViewModel.getThread(credentials, threadUrl)
541+ }
542+ }
543+ .onFailure {
544+ Snackbar .make(binding.root, R .string.nc_common_error_sorry, Snackbar .LENGTH_LONG ).show()
545+ }
538546 }
539-
540547 messageInputFragment = getMessageInputFragment()
541548 messageInputViewModel = ViewModelProvider (this , viewModelFactory)[MessageInputViewModel ::class .java]
542549 messageInputViewModel.setData(chatViewModel.getChatRepository())
@@ -1412,7 +1419,10 @@ class ChatActivity :
14121419
14131420 cancelNotificationsForCurrentConversation()
14141421
1415- chatViewModel.getRoom(roomToken)
1422+ chatViewModel.getRoom(
1423+ conversationUser,
1424+ roomToken
1425+ )
14161426
14171427 actionBar?.show()
14181428
@@ -1891,7 +1901,10 @@ class ChatActivity :
18911901 }
18921902 getRoomInfoTimerHandler?.postDelayed(
18931903 {
1894- chatViewModel.getRoom(roomToken)
1904+ chatViewModel.getRoom(
1905+ conversationUser,
1906+ roomToken
1907+ )
18951908 },
18961909 if (delay > 0 ) delay else delayForRecursiveCall
18971910 )
@@ -3636,18 +3649,20 @@ class ChatActivity :
36363649 }
36373650
36383651 private fun handleSystemMessages (chatMessageList : List <ChatMessage >): List <ChatMessage > {
3639- val chatMessageMap = chatMessageList.associateBy { it.id }.toMutableMap()
3652+ fun shouldRemoveMessage (currentMessage : MutableMap .MutableEntry <String , ChatMessage >): Boolean =
3653+ isInfoMessageAboutDeletion(currentMessage) ||
3654+ isReactionsMessage(currentMessage) ||
3655+ isPollVotedMessage(currentMessage) ||
3656+ isEditMessage(currentMessage) ||
3657+ isThreadCreatedMessage(currentMessage)
36403658
3659+ val chatMessageMap = chatMessageList.associateBy { it.id }.toMutableMap()
36413660 val chatMessageIterator = chatMessageMap.iterator()
3661+
36423662 while (chatMessageIterator.hasNext()) {
36433663 val currentMessage = chatMessageIterator.next()
36443664
3645- if (isInfoMessageAboutDeletion(currentMessage) ||
3646- isReactionsMessage(currentMessage) ||
3647- isPollVotedMessage(currentMessage) ||
3648- isEditMessage(currentMessage) ||
3649- isThreadCreatedMessage(currentMessage)
3650- ) {
3665+ if (shouldRemoveMessage(currentMessage)) {
36513666 chatMessageIterator.remove()
36523667 }
36533668 }
0 commit comments