From a74c8c552da7977d83a118a5b7af06c427ef3080 Mon Sep 17 00:00:00 2001 From: Julius Linus Date: Wed, 28 Feb 2024 10:43:10 -0600 Subject: [PATCH] Popup bubbles now show up + Fixed bugs with images + added new string resource Signed-off-by: Julius Linus --- .../com/nextcloud/talk/chat/ChatActivity.kt | 52 +++++++++---------- .../talk/chat/viewmodels/ChatViewModel.kt | 4 +- .../ConversationsListActivity.kt | 2 +- app/src/main/res/values/strings.xml | 1 + 4 files changed, 30 insertions(+), 29 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt b/app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt index 77ec8f886a..ae9e06c6db 100644 --- a/app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt @@ -193,7 +193,7 @@ import com.nextcloud.talk.ui.recyclerview.MessageSwipeActions import com.nextcloud.talk.ui.recyclerview.MessageSwipeCallback import com.nextcloud.talk.utils.ApiUtils import com.nextcloud.talk.utils.AudioUtils -import com.nextcloud.talk.utils.SpreedFeatures +import com.nextcloud.talk.utils.CapabilitiesUtil import com.nextcloud.talk.utils.ContactUtils import com.nextcloud.talk.utils.ConversationUtils import com.nextcloud.talk.utils.DateConstants @@ -206,6 +206,7 @@ import com.nextcloud.talk.utils.MagicCharPolicy import com.nextcloud.talk.utils.Mimetype import com.nextcloud.talk.utils.NotificationUtils import com.nextcloud.talk.utils.ParticipantPermissions +import com.nextcloud.talk.utils.SpreedFeatures import com.nextcloud.talk.utils.UriUtils import com.nextcloud.talk.utils.VibrationUtils import com.nextcloud.talk.utils.bundle.BundleKeys @@ -220,7 +221,6 @@ import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_ROOM_ID import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_ROOM_TOKEN import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_START_CALL_AFTER_ROOM_SWITCH import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_SWITCH_TO_ROOM -import com.nextcloud.talk.utils.CapabilitiesUtil import com.nextcloud.talk.utils.database.user.CurrentUserProviderNew import com.nextcloud.talk.utils.permissions.PlatformPermissionUtil import com.nextcloud.talk.utils.rx.DisposableSet @@ -832,11 +832,11 @@ class ChatActivity : when (state.response.code()) { HTTP_CODE_OK -> { Log.d(TAG, "lookIntoFuture: ${state.lookIntoFuture}") + val chatOverall = state.response.body() as ChatOverall? + var chatMessageList = chatOverall?.ocs!!.data!! processHeaderChatLastGiven(state.response, state.lookIntoFuture) - val chatOverall = state.response.body() as ChatOverall? - var chatMessageList = chatOverall?.ocs!!.data!! chatMessageList = handleSystemMessages(chatMessageList) if (chatMessageList.size == 0) { @@ -861,15 +861,7 @@ class ChatActivity : adapter?.notifyDataSetChanged() } - var lastAdapterId = 0 - if (adapter?.items?.size != 0) { - val item = adapter?.items?.get(0)?.item - if (item != null) { - lastAdapterId = (item as ChatMessage).jsonMessageId - } else { - lastAdapterId = 0 - } - } + var lastAdapterId = getLastAdapterId() if ( state.lookIntoFuture && @@ -898,24 +890,24 @@ class ChatActivity : } HTTP_CODE_NOT_MODIFIED -> { - processHeaderChatLastGiven(state.response, state.lookIntoFuture) chatViewModel.refreshChatParams( setupFieldsForPullChatMessages( - state.lookIntoFuture, + true, globalLastKnownFutureMessageId, true - ) + ), + true ) } HTTP_CODE_PRECONDITION_FAILED -> { - processHeaderChatLastGiven(state.response, state.lookIntoFuture) chatViewModel.refreshChatParams( setupFieldsForPullChatMessages( - state.lookIntoFuture, + true, globalLastKnownFutureMessageId, true - ) + ), + true ) } @@ -1226,6 +1218,19 @@ class ChatActivity : ) } + private fun getLastAdapterId(): Int { + var lastId = 0 + if (adapter?.items?.size != 0) { + val item = adapter?.items?.get(0)?.item + if (item != null) { + lastId = (item as ChatMessage).jsonMessageId + } else { + lastId = 0 + } + } + return lastId + } + private fun setEditUI() { binding.messageInputView.messageSendButton.visibility = View.GONE binding.messageInputView.recordAudioButton.visibility = View.GONE @@ -3703,8 +3708,7 @@ class ChatActivity : } private fun processMessagesFromTheFuture(chatMessageList: List) { - val shouldAddNewMessagesNotice = (adapter?.itemCount ?: 0) > 0 && chatMessageList.isNotEmpty() - + val shouldAddNewMessagesNotice = layoutManager?.findFirstVisibleItemPosition()!! > 0 if (shouldAddNewMessagesNotice) { val unreadChatMessage = ChatMessage() unreadChatMessage.jsonMessageId = -1 @@ -3715,10 +3719,6 @@ class ChatActivity : } addMessagesToAdapter(shouldAddNewMessagesNotice, chatMessageList) - - if (shouldAddNewMessagesNotice && adapter != null) { - scrollToFirstUnreadMessage() - } } private fun processMessagesNotFromTheFuture(chatMessageList: List) { @@ -3791,7 +3791,7 @@ class ChatActivity : } private fun modifyMessageCount(shouldAddNewMessagesNotice: Boolean, shouldScroll: Boolean) { - if (!shouldAddNewMessagesNotice && !shouldScroll) { + if (shouldAddNewMessagesNotice) { binding.popupBubbleView.isShown.let { if (it) { newMessagesCount++ diff --git a/app/src/main/java/com/nextcloud/talk/chat/viewmodels/ChatViewModel.kt b/app/src/main/java/com/nextcloud/talk/chat/viewmodels/ChatViewModel.kt index fadbe677bf..df5be648c0 100644 --- a/app/src/main/java/com/nextcloud/talk/chat/viewmodels/ChatViewModel.kt +++ b/app/src/main/java/com/nextcloud/talk/chat/viewmodels/ChatViewModel.kt @@ -178,8 +178,8 @@ class ChatViewModel @Inject constructor( val editMessageViewState: LiveData get() = _editMessageViewState - fun refreshChatParams(pullChatMessagesFieldMap: HashMap) { - if (pullChatMessagesFieldMap != _getFieldMapForChat.value) { + fun refreshChatParams(pullChatMessagesFieldMap: HashMap, overrideRefresh: Boolean = false) { + if (pullChatMessagesFieldMap != _getFieldMapForChat.value || overrideRefresh) { _getFieldMapForChat.postValue(pullChatMessagesFieldMap) Log.d(TAG, "FieldMap Refreshed with $pullChatMessagesFieldMap vs ${_getFieldMapForChat.value}") } diff --git a/app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt b/app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt index 858f77fb79..add7201ae9 100644 --- a/app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt @@ -322,7 +322,7 @@ class ConversationsListActivity : } is ConversationsListViewModel.GetFederationInvitationsErrorState -> { - Snackbar.make(binding.root, R.string.nc_common_error_sorry, Snackbar.LENGTH_LONG).show() + Snackbar.make(binding.root, R.string.get_invitations_error, Snackbar.LENGTH_LONG).show() } else -> {} diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index e10f7d2fab..8825496fab 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -800,4 +800,5 @@ How to translate with transifex: "Edited by " clear Edit Button Edit Icon + Failed to fetch pending invitations