From 62d9a47c37ca93023fcdba7f29893adc70ab3965 Mon Sep 17 00:00:00 2001 From: rapterjet2004 Date: Tue, 8 Apr 2025 15:21:05 -0500 Subject: [PATCH] Tables work Signed-off-by: rapterjet2004 --- app/build.gradle | 1 + .../messages/IncomingTextMessageViewHolder.kt | 26 ++++++++++++++++++- .../OutcomingTextMessageViewHolder.kt | 25 +++++++++++++++++- .../com/nextcloud/talk/chat/ChatActivity.kt | 7 +++-- .../talk/utils/message/MessageUtils.kt | 2 ++ 5 files changed, 57 insertions(+), 4 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index f43d999c2..648318316 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -291,6 +291,7 @@ dependencies { implementation "io.noties.markwon:core:$markwonVersion" implementation "io.noties.markwon:ext-strikethrough:$markwonVersion" implementation "io.noties.markwon:ext-tasklist:$markwonVersion" + implementation "io.noties.markwon:ext-tables:$markwonVersion" implementation 'com.github.nextcloud-deps:ImagePicker:2.1.0.2' implementation 'io.github.elye:loaderviewlibrary:3.0.0' diff --git a/app/src/main/java/com/nextcloud/talk/adapters/messages/IncomingTextMessageViewHolder.kt b/app/src/main/java/com/nextcloud/talk/adapters/messages/IncomingTextMessageViewHolder.kt index 5636cc1de..18b298756 100644 --- a/app/src/main/java/com/nextcloud/talk/adapters/messages/IncomingTextMessageViewHolder.kt +++ b/app/src/main/java/com/nextcloud/talk/adapters/messages/IncomingTextMessageViewHolder.kt @@ -18,6 +18,7 @@ import androidx.core.content.ContextCompat import androidx.core.text.toSpanned import autodagger.AutoInjector import coil.load +import com.google.android.flexbox.FlexboxLayout import com.google.android.material.snackbar.Snackbar import com.nextcloud.talk.R import com.nextcloud.talk.application.NextcloudTalkApplication @@ -103,10 +104,33 @@ class IncomingTextMessageViewHolder(itemView: View, payload: Any) : true, viewThemeUtils ) + + val spansFromString: Array = processedMessageText!!.getSpans( + 0, + processedMessageText.length, + Any::class.java + ) + + if (spansFromString.isNotEmpty()) { + binding.bubble.layoutParams.apply { + width = FlexboxLayout.LayoutParams.MATCH_PARENT + } + binding.messageText.layoutParams.apply { + width = FlexboxLayout.LayoutParams.MATCH_PARENT + } + } else { + binding.bubble.layoutParams.apply { + width = FlexboxLayout.LayoutParams.WRAP_CONTENT + } + binding.messageText.layoutParams.apply { + width = FlexboxLayout.LayoutParams.WRAP_CONTENT + } + } + processedMessageText = messageUtils.processMessageParameters( binding.messageText.context, viewThemeUtils, - processedMessageText!!, + processedMessageText, message, itemView ) diff --git a/app/src/main/java/com/nextcloud/talk/adapters/messages/OutcomingTextMessageViewHolder.kt b/app/src/main/java/com/nextcloud/talk/adapters/messages/OutcomingTextMessageViewHolder.kt index ae6caa30b..dc3aea52d 100644 --- a/app/src/main/java/com/nextcloud/talk/adapters/messages/OutcomingTextMessageViewHolder.kt +++ b/app/src/main/java/com/nextcloud/talk/adapters/messages/OutcomingTextMessageViewHolder.kt @@ -116,10 +116,33 @@ class OutcomingTextMessageViewHolder(itemView: View) : false, viewThemeUtils ) + + val spansFromString: Array = processedMessageText!!.getSpans( + 0, + processedMessageText.length, + Any::class.java + ) + + if (spansFromString.isNotEmpty()) { + binding.bubble.layoutParams.apply { + width = FlexboxLayout.LayoutParams.MATCH_PARENT + } + binding.messageText.layoutParams.apply { + width = FlexboxLayout.LayoutParams.MATCH_PARENT + } + } else { + binding.bubble.layoutParams.apply { + width = FlexboxLayout.LayoutParams.WRAP_CONTENT + } + binding.messageText.layoutParams.apply { + width = FlexboxLayout.LayoutParams.WRAP_CONTENT + } + } + processedMessageText = messageUtils.processMessageParameters( binding.messageText.context, viewThemeUtils, - processedMessageText!!, + processedMessageText, message, itemView ) 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 726e3abe9..9b242a8a8 100644 --- a/app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt @@ -230,6 +230,7 @@ import java.util.concurrent.ExecutionException import javax.inject.Inject import kotlin.math.roundToInt +@Suppress("TooManyFunctions") @AutoInjector(NextcloudTalkApplication::class) class ChatActivity : BaseActivity(), @@ -989,8 +990,10 @@ class ChatActivity : val newString = state.messageEdited.ocs?.data?.parentMessage?.message ?: "(null)" val id = state.messageEdited.ocs?.data?.parentMessage?.id.toString() val index = adapter?.getMessagePositionById(id) ?: 0 - val message = adapter?.items?.get(index)?.item as ChatMessage - setMessageAsEdited(message, newString) + val item = adapter?.items?.get(index)?.item + item?.let { + setMessageAsEdited(item as ChatMessage, newString) + } } is MessageInputViewModel.EditMessageErrorState -> { diff --git a/app/src/main/java/com/nextcloud/talk/utils/message/MessageUtils.kt b/app/src/main/java/com/nextcloud/talk/utils/message/MessageUtils.kt index 9ed9e524c..985a0aa1e 100644 --- a/app/src/main/java/com/nextcloud/talk/utils/message/MessageUtils.kt +++ b/app/src/main/java/com/nextcloud/talk/utils/message/MessageUtils.kt @@ -25,6 +25,7 @@ import io.noties.markwon.Markwon import io.noties.markwon.MarkwonConfiguration import io.noties.markwon.core.MarkwonTheme import io.noties.markwon.ext.strikethrough.StrikethroughPlugin +import io.noties.markwon.ext.tables.TablePlugin import io.noties.markwon.ext.tasklist.TaskListDrawable import io.noties.markwon.ext.tasklist.TaskListPlugin @@ -195,6 +196,7 @@ class MessageUtils(val context: Context) { } }) .usePlugin(TaskListPlugin.create(drawable)) + .usePlugin(TablePlugin.create { _ -> }) .usePlugin(StrikethroughPlugin.create()).build() return markwon.toMarkdown(markdown) }