refactor code

Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
This commit is contained in:
sowjanyakch 2025-02-20 22:09:46 +01:00 committed by Marcel Hibbe
parent 2b939f9a9a
commit 0e118dbfd1
No known key found for this signature in database
GPG Key ID: C793F8B59F43CE7B
2 changed files with 64 additions and 74 deletions

View File

@ -9,14 +9,13 @@
*/ */
package com.nextcloud.talk.adapters.messages package com.nextcloud.talk.adapters.messages
import android.annotation.SuppressLint
import android.content.Context import android.content.Context
import android.util.Log import android.util.Log
import android.util.TypedValue import android.util.TypedValue
import android.view.View import android.view.View
import android.widget.CheckBox import android.widget.CheckBox
import android.widget.LinearLayout
import androidx.core.text.toSpanned import androidx.core.text.toSpanned
import androidx.emoji2.widget.EmojiTextView
import autodagger.AutoInjector import autodagger.AutoInjector
import coil.load import coil.load
import com.google.android.material.snackbar.Snackbar import com.google.android.material.snackbar.Snackbar
@ -85,82 +84,81 @@ class IncomingTextMessageViewHolder(itemView: View, payload: Any) :
var textSize = context.resources!!.getDimension(R.dimen.chat_text_size) var textSize = context.resources!!.getDimension(R.dimen.chat_text_size)
var processedMessageText = messageUtils.enrichChatMessageText(
binding.messageText.context,
message,
true,
viewThemeUtils
)
processedMessageText = messageUtils.processMessageParameters(
binding.messageText.context,
viewThemeUtils,
processedMessageText!!,
message,
itemView
)
val hasCheckboxes = processCheckboxes( val hasCheckboxes = processCheckboxes(
binding.messageText,
binding
.checkboxContainer,
message, message,
user user
) )
val messageParameters = message.messageParameters if(!hasCheckboxes){
if ( var processedMessageText = messageUtils.enrichChatMessageText(
(messageParameters == null || messageParameters.size <= 0) && binding.messageText.context,
TextMatchers.isMessageWithSingleEmoticonOnly(message.text) message,
) { true,
textSize = (textSize * TEXT_SIZE_MULTIPLIER).toFloat() viewThemeUtils
itemView.isSelected = true )
binding.messageAuthor.visibility = View.GONE
processedMessageText = messageUtils.processMessageParameters(
binding.messageText.context,
viewThemeUtils,
processedMessageText!!,
message,
itemView
)
val messageParameters = message.messageParameters
if (
(messageParameters == null || messageParameters.size <= 0) &&
TextMatchers.isMessageWithSingleEmoticonOnly(message.text)
) {
textSize = (textSize * TEXT_SIZE_MULTIPLIER).toFloat()
itemView.isSelected = true
binding.messageAuthor.visibility = View.GONE
}
binding.messageText.setTextSize(TypedValue.COMPLEX_UNIT_PX, textSize)
binding.messageText.text = processedMessageText
if (message.lastEditTimestamp != 0L && !message.isDeleted) {
binding.messageEditIndicator.visibility = View.VISIBLE
binding.messageTime.text = dateUtils.getLocalTimeStringFromTimestamp(message.lastEditTimestamp!!)
} else {
binding.messageEditIndicator.visibility = View.GONE
binding.messageTime.text = dateUtils.getLocalTimeStringFromTimestamp(message.timestamp)
}
// parent message handling
if (!message.isDeleted && message.parentMessageId != null) {
processParentMessage(message)
binding.messageQuote.quotedChatMessageView.visibility = View.VISIBLE
} else {
binding.messageQuote.quotedChatMessageView.visibility = View.GONE
}
itemView.setTag(R.string.replyable_message_view_tag, message.replyable)
Reaction().showReactions(
message,
::clickOnReaction,
::longClickOnReaction,
binding.reactions,
binding.messageText.context,
false,
viewThemeUtils
)
} }
if (!hasCheckboxes) {
binding.messageText.setTextSize(TypedValue.COMPLEX_UNIT_PX, textSize)
binding.messageText.text = processedMessageText
}
if (message.lastEditTimestamp != 0L && !message.isDeleted) {
binding.messageEditIndicator.visibility = View.VISIBLE
binding.messageTime.text = dateUtils.getLocalTimeStringFromTimestamp(message.lastEditTimestamp!!)
} else {
binding.messageEditIndicator.visibility = View.GONE
binding.messageTime.text = dateUtils.getLocalTimeStringFromTimestamp(message.timestamp)
}
// parent message handling
if (!message.isDeleted && message.parentMessageId != null) {
processParentMessage(message)
binding.messageQuote.quotedChatMessageView.visibility = View.VISIBLE
} else {
binding.messageQuote.quotedChatMessageView.visibility = View.GONE
}
itemView.setTag(R.string.replyable_message_view_tag, message.replyable)
Reaction().showReactions(
message,
::clickOnReaction,
::longClickOnReaction,
binding.reactions,
binding.messageText.context,
false,
viewThemeUtils
)
} }
@SuppressLint("StringFormatMatches")
private fun processCheckboxes( private fun processCheckboxes(
messageTextView: EmojiTextView,
checkBoxContainer: LinearLayout,
chatMessage: ChatMessage, chatMessage: ChatMessage,
user: User user: User
): Boolean { ): Boolean {
val message = chatMessage.message!!.toSpanned() val message = chatMessage.message!!.toSpanned()
val messageTextView = binding.messageText
val checkBoxContainer = binding.checkboxContainer
checkBoxContainer.removeAllViews() checkBoxContainer.removeAllViews()
val regex = """(- \[(X| )])\s*(.+)""".toRegex(RegexOption.MULTILINE) val regex = """(- \[(X|x| )])\s*(.+)""".toRegex(RegexOption.MULTILINE)
val matches = regex.findAll(message) val matches = regex.findAll(message)
if (matches.none()) return false if (matches.none()) return false
val firstPart = message.toString().substringBefore("\n- [") val firstPart = message.toString().substringBefore("\n- [")
@ -171,7 +169,7 @@ class IncomingTextMessageViewHolder(itemView: View, payload: Any) :
viewThemeUtils viewThemeUtils
) )
matches.forEach { matchResult -> matches.forEach { matchResult ->
val isChecked = matchResult.groupValues[2] == "X" val isChecked = matchResult.groupValues[2] == "X" || matchResult.groupValues[2] == "x"
val taskText = matchResult.groupValues[3].trim() val taskText = matchResult.groupValues[3].trim()
lateinit var updatedMessage: String lateinit var updatedMessage: String
val checkBox = CheckBox(checkBoxContainer.context).apply { val checkBox = CheckBox(checkBoxContainer.context).apply {
@ -209,13 +207,6 @@ class IncomingTextMessageViewHolder(itemView: View, payload: Any) :
} }
} }
} }
if (chatMessage.lastEditTimestamp != 0L && !chatMessage.isDeleted) {
binding.messageEditIndicator.visibility = View.VISIBLE
binding.messageTime.text = dateUtils.getLocalTimeStringFromTimestamp(
chatMessage
.lastEditTimestamp!!
)
}
} }
} }
} }

View File

@ -93,8 +93,8 @@
android:textColor="@color/no_emphasis_text" android:textColor="@color/no_emphasis_text"
android:textIsSelectable="false" android:textIsSelectable="false"
android:gravity = "end" android:gravity = "end"
app:layout_alignSelf="flex_end"
app:layout_flexGrow="1" app:layout_flexGrow="1"
app:layout_alignSelf="flex_end"
app:layout_wrapBefore="false" app:layout_wrapBefore="false"
tools:text="12:38" /> tools:text="12:38" />
@ -110,7 +110,6 @@
app:layout_alignSelf="flex_end" app:layout_alignSelf="flex_end"
android:text = "@string/hint_edited_message" android:text = "@string/hint_edited_message"
android:textSize="12sp"> android:textSize="12sp">
</TextView> </TextView>
</LinearLayout> </LinearLayout>