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