mirror of
https://github.com/nextcloud/talk-android
synced 2025-07-17 01:35:03 +01:00
refactor code
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
This commit is contained in:
parent
2b939f9a9a
commit
0e118dbfd1
@ -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!!
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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>
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user