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 98ee526b0..7c89fe228 100644 --- a/app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt @@ -2340,7 +2340,7 @@ class ChatActivity : BuildConfig.APPLICATION_ID, File(file.absolutePath) ) - chatViewModel.uploadFile( + uploadFile( fileUri = shareUri.toString(), isVoiceMessage = false, caption = "", @@ -2531,7 +2531,7 @@ class ChatActivity : private fun uploadFiles(files: MutableList, caption: String = "") { for (i in 0 until files.size) { if (i == files.size - 1) { - chatViewModel.uploadFile( + uploadFile( fileUri = files[i], isVoiceMessage = false, caption = caption, @@ -2540,7 +2540,7 @@ class ChatActivity : displayName = currentConversation?.displayName!! ) } else { - chatViewModel.uploadFile( + uploadFile( fileUri = files[i], isVoiceMessage = false, caption = "", @@ -3880,7 +3880,7 @@ class ChatActivity : val type = message.getCalculateMessageType() when (type) { ChatMessage.MessageType.VOICE_MESSAGE -> { - chatViewModel.uploadFile( + uploadFile( shareUri.toString(), true, roomToken = roomToken, @@ -3896,7 +3896,7 @@ class ChatActivity : if (null != shareUri) { try { context.contentResolver.openInputStream(shareUri)?.close() - chatViewModel.uploadFile( + uploadFile( fileUri = shareUri.toString(), isVoiceMessage = false, caption = caption!!, @@ -3908,7 +3908,7 @@ class ChatActivity : } catch (e: Exception) { Log.w(TAG, "File corresponding to the uri does not exist $shareUri", e) downloadFileToCache(message, false) { - chatViewModel.uploadFile( + uploadFile( fileUri = shareUri.toString(), isVoiceMessage = false, caption = caption!!, @@ -4329,6 +4329,33 @@ class ChatActivity : ) } + fun uploadFile( + fileUri: String, + isVoiceMessage: Boolean, + caption: String = "", + roomToken: String = "", + replyToMessageId: Int? = null, + displayName: String + ) { + chatViewModel.uploadFile( + fileUri, + isVoiceMessage, + caption, + roomToken, + replyToMessageId, + displayName + ) + cancelReply() + } + + fun cancelReply() { + messageInputViewModel.reply(null) + chatViewModel.messageDraft.quotedMessageText = null + chatViewModel.messageDraft.quotedDisplayName = null + chatViewModel.messageDraft.quotedImageUrl = null + chatViewModel.messageDraft.quotedJsonId = null + } + companion object { val TAG = ChatActivity::class.simpleName private const val CONTENT_TYPE_CALL_STARTED: Byte = 1 diff --git a/app/src/main/java/com/nextcloud/talk/chat/MessageInputFragment.kt b/app/src/main/java/com/nextcloud/talk/chat/MessageInputFragment.kt index b32b79722..8ed6aa76d 100644 --- a/app/src/main/java/com/nextcloud/talk/chat/MessageInputFragment.kt +++ b/app/src/main/java/com/nextcloud/talk/chat/MessageInputFragment.kt @@ -182,8 +182,12 @@ class MessageInputFragment : Fragment() { chatActivity.chatViewModel.messageDraft.quotedDisplayName = message.actorDisplayName chatActivity.chatViewModel.messageDraft.quotedImageUrl = message.imageUrl chatActivity.chatViewModel.messageDraft.quotedJsonId = message.jsonMessageId - replyToMessage(message.text, message.actorDisplayName, message.imageUrl, message.jsonMessageId) - } + replyToMessage( + message.text, + message.actorDisplayName, + message.imageUrl + ) + } ?: clearReplyUi() } chatActivity.messageInputViewModel.getEditChatMessage.observe(viewLifecycleOwner) { message -> @@ -314,8 +318,7 @@ class MessageInputFragment : Fragment() { replyToMessage( chatActivity.chatViewModel.messageDraft.quotedMessageText, chatActivity.chatViewModel.messageDraft.quotedDisplayName, - chatActivity.chatViewModel.messageDraft.quotedImageUrl, - chatActivity.chatViewModel.messageDraft.quotedJsonId ?: 0 + chatActivity.chatViewModel.messageDraft.quotedImageUrl ) } } @@ -468,6 +471,10 @@ class MessageInputFragment : Fragment() { binding.fragmentCallStarted.callStartedSecondaryText.visibility = if (collapsed) View.VISIBLE else View.GONE setDropDown(collapsed) } + + binding.fragmentMessageInputView.findViewById(R.id.cancelReplyButton)?.setOnClickListener { + cancelReply() + } } private fun setDropDown(collapsed: Boolean) { @@ -719,12 +726,7 @@ class MessageInputFragment : Fragment() { } } - private fun replyToMessage( - quotedMessageText: String?, - quotedActorDisplayName: String?, - quotedImageUrl: String?, - quotedJsonId: Int - ) { + private fun replyToMessage(quotedMessageText: String?, quotedActorDisplayName: String?, quotedImageUrl: String?) { Log.d(TAG, "Reply") val view = binding.fragmentMessageInputView view.findViewById(R.id.cancelReplyButton)?.visibility = @@ -955,10 +957,6 @@ class MessageInputFragment : Fragment() { private fun themeMessageInputView() { binding.fragmentMessageInputView.button?.let { viewThemeUtils.platform.colorImageView(it, ColorRole.PRIMARY) } - binding.fragmentMessageInputView.findViewById(R.id.cancelReplyButton)?.setOnClickListener { - cancelReply() - } - binding.fragmentMessageInputView.findViewById(R.id.cancelReplyButton)?.let { viewThemeUtils.platform .themeImageButton(it) @@ -1015,18 +1013,14 @@ class MessageInputFragment : Fragment() { } private fun cancelReply() { - // TODO set id in viewmodel to null - val quote = binding.fragmentMessageInputView - .findViewById(R.id.quotedChatMessageView) - quote.visibility = View.GONE - quote.tag = null - binding.fragmentMessageInputView.findViewById(R.id.attachmentButton)?.visibility = View.VISIBLE - chatActivity.messageInputViewModel.reply(null) + chatActivity.cancelReply() + clearReplyUi() + } - chatActivity.chatViewModel.messageDraft.quotedMessageText = null - chatActivity.chatViewModel.messageDraft.quotedDisplayName = null - chatActivity.chatViewModel.messageDraft.quotedImageUrl = null - chatActivity.chatViewModel.messageDraft.quotedJsonId = null + private fun clearReplyUi() { + val quote = binding.fragmentMessageInputView.findViewById(R.id.quotedChatMessageView) + quote.visibility = View.GONE + binding.fragmentMessageInputView.findViewById(R.id.attachmentButton)?.visibility = View.VISIBLE } private fun isInReplyState(): Boolean { diff --git a/app/src/main/java/com/nextcloud/talk/chat/data/network/OfflineFirstChatRepository.kt b/app/src/main/java/com/nextcloud/talk/chat/data/network/OfflineFirstChatRepository.kt index 796b74fb2..03654dd0a 100644 --- a/app/src/main/java/com/nextcloud/talk/chat/data/network/OfflineFirstChatRepository.kt +++ b/app/src/main/java/com/nextcloud/talk/chat/data/network/OfflineFirstChatRepository.kt @@ -445,6 +445,7 @@ class OfflineFirstChatRepository @Inject constructor( return loadFromServer } + @Suppress("LongParameterList") private fun getFieldMap( lookIntoFuture: Boolean, timeout: Int,