From 967dd1f18d2d58774751ae33a1e337dd7e7bc254 Mon Sep 17 00:00:00 2001 From: Katelyn Dickey Date: Mon, 22 Aug 2022 01:04:38 -0400 Subject: [PATCH] Add clickable links for conversations --- .../briar/android/conversation/ConversationActivity.java | 7 +++++++ .../android/conversation/ConversationItemViewHolder.java | 2 ++ .../briar/android/conversation/ConversationListener.java | 2 ++ .../res/layout/list_item_conversation_msg_in_content.xml | 2 ++ .../src/main/res/layout/list_item_conversation_msg_out.xml | 2 ++ briar-android/src/main/res/values/color.xml | 1 + 6 files changed, 16 insertions(+) diff --git a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationActivity.java index 22f8fa178..a73eb92bf 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationActivity.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationActivity.java @@ -66,6 +66,7 @@ import org.briarproject.briar.android.view.TextAttachmentController.AttachmentLi import org.briarproject.briar.android.view.TextInputView; import org.briarproject.briar.android.view.TextSendController; import org.briarproject.briar.android.view.TextSendController.SendState; +import org.briarproject.briar.android.widget.LinkDialogFragment; import org.briarproject.briar.api.android.AndroidNotificationManager; import org.briarproject.briar.api.attachment.AttachmentHeader; import org.briarproject.briar.api.autodelete.event.ConversationMessagesDeletedEvent; @@ -476,6 +477,12 @@ public class ConversationActivity extends BriarActivity actionMode = null; } + @Override + public void onLinkClick(String url) { + LinkDialogFragment f = LinkDialogFragment.newInstance(url); + f.show(getSupportFragmentManager(), f.getUniqueTag()); + } + private void addSelectionTracker() { RecyclerView recyclerView = list.getRecyclerView(); if (recyclerView.getAdapter() != adapter) diff --git a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationItemViewHolder.java b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationItemViewHolder.java index 42fdd03c3..9a433b16a 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationItemViewHolder.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationItemViewHolder.java @@ -19,6 +19,7 @@ import static android.view.View.VISIBLE; import static org.briarproject.bramble.util.StringUtils.trim; import static org.briarproject.briar.android.util.UiUtils.formatDate; import static org.briarproject.briar.android.util.UiUtils.formatDuration; +import static org.briarproject.briar.android.util.UiUtils.makeLinksClickable; import static org.briarproject.briar.api.autodelete.AutoDeleteConstants.NO_AUTO_DELETE_TIMER; @UiThread @@ -58,6 +59,7 @@ abstract class ConversationItemViewHolder extends ViewHolder { if (item.getText() != null) { text.setText(trim(item.getText())); + makeLinksClickable(text, listener::onLinkClick); } long timestamp = item.getTime(); diff --git a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationListener.java b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationListener.java index ad392705e..de9b526c7 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationListener.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationListener.java @@ -20,4 +20,6 @@ interface ConversationListener { void onAutoDeleteTimerNoticeClicked(); + void onLinkClick(String url); + } diff --git a/briar-android/src/main/res/layout/list_item_conversation_msg_in_content.xml b/briar-android/src/main/res/layout/list_item_conversation_msg_in_content.xml index 63b679572..f0f226729 100644 --- a/briar-android/src/main/res/layout/list_item_conversation_msg_in_content.xml +++ b/briar-android/src/main/res/layout/list_item_conversation_msg_in_content.xml @@ -41,6 +41,8 @@ android:layout_marginRight="@dimen/message_bubble_padding_sides_inner" android:layout_marginBottom="@dimen/message_bubble_padding_bottom_inner" android:textColor="?android:attr/textColorPrimary" + android:textColorLink="@color/briar_text_link" + android:autoLink="web" app:layout_constrainedWidth="true" app:layout_constraintBottom_toTopOf="@+id/statusLayout" app:layout_constraintEnd_toEndOf="parent" diff --git a/briar-android/src/main/res/layout/list_item_conversation_msg_out.xml b/briar-android/src/main/res/layout/list_item_conversation_msg_out.xml index 7e03d0a7f..144dfc1a9 100644 --- a/briar-android/src/main/res/layout/list_item_conversation_msg_out.xml +++ b/briar-android/src/main/res/layout/list_item_conversation_msg_out.xml @@ -49,6 +49,8 @@ android:layout_marginRight="@dimen/message_bubble_padding_sides_inner" android:layout_marginBottom="@dimen/message_bubble_padding_bottom_inner" android:textColor="@color/briar_text_primary_inverse" + android:textColorLink="@color/briar_text_link_inverse" + android:autoLink="web" app:layout_constrainedWidth="true" app:layout_constraintBottom_toTopOf="@+id/statusLayout" app:layout_constraintEnd_toEndOf="parent" diff --git a/briar-android/src/main/res/values/color.xml b/briar-android/src/main/res/values/color.xml index 486bd4f4a..5722c8cd0 100644 --- a/briar-android/src/main/res/values/color.xml +++ b/briar-android/src/main/res/values/color.xml @@ -67,6 +67,7 @@ @color/briar_blue_400 + @android:color/white #df000000 @android:color/white #b4ffffff