diff --git a/app/src/main/java/org/thoughtcrime/securesms/calls/links/CallLinkJoinButton.kt b/app/src/main/java/org/thoughtcrime/securesms/calls/links/CallLinkJoinButton.kt index d0ccd94214..740efb2510 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/calls/links/CallLinkJoinButton.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/calls/links/CallLinkJoinButton.kt @@ -7,12 +7,16 @@ package org.thoughtcrime.securesms.calls.links import android.content.Context import android.util.AttributeSet +import android.view.View import androidx.annotation.ColorRes import androidx.appcompat.widget.LinearLayoutCompat import androidx.core.content.ContextCompat import com.google.android.material.button.MaterialButton import org.thoughtcrime.securesms.R +/** + * ConversationItem action button for joining a call link. + */ class CallLinkJoinButton @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null @@ -22,10 +26,19 @@ class CallLinkJoinButton @JvmOverloads constructor( inflate(context, R.layout.call_link_join_button, this) } + private val joinStroke: View = findViewById(R.id.join_stroke) private val joinButton: MaterialButton = findViewById(R.id.join_button) fun setTextColor(@ColorRes textColorResId: Int) { - joinButton.setTextColor(ContextCompat.getColor(context, textColorResId)) + val color = ContextCompat.getColor(context, textColorResId) + + joinButton.setTextColor(color) + } + + fun setStrokeColor(@ColorRes strokeColorResId: Int) { + val color = ContextCompat.getColor(context, strokeColorResId) + + joinStroke.setBackgroundColor(color) } fun setJoinClickListener(onClickListener: OnClickListener) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationItem.java b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationItem.java index 4fa6c0c8c4..8a317ed062 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationItem.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationItem.java @@ -1153,7 +1153,8 @@ public final class ConversationItem extends RelativeLayout implements BindableCo CallLinkRootKey callLinkRootKey = CallLinks.parseUrl(linkPreview.getUrl()); if (callLinkRootKey != null) { joinCallLinkStub.setVisibility(View.VISIBLE); - joinCallLinkStub.get().setTextColor(messageRecord.isOutgoing() ? R.color.signal_colorOnCustom : R.color.signal_colorOnSurface); + joinCallLinkStub.get().setTextColor(messageRecord.isOutgoing() ? R.color.signal_colorOnCustom : R.color.signal_colorPrimary); + joinCallLinkStub.get().setStrokeColor(messageRecord.isOutgoing() ? R.color.signal_colorOnCustom : R.color.signal_colorOutline); joinCallLinkStub.get().setJoinClickListener(v -> { if (eventListener != null) { eventListener.onJoinCallLink(callLinkRootKey); diff --git a/app/src/main/java/org/thoughtcrime/securesms/messages/DataMessageProcessor.kt b/app/src/main/java/org/thoughtcrime/securesms/messages/DataMessageProcessor.kt index c2b6f335dd..dbd3404339 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/messages/DataMessageProcessor.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/messages/DataMessageProcessor.kt @@ -15,6 +15,7 @@ import org.thoughtcrime.securesms.attachments.Attachment import org.thoughtcrime.securesms.attachments.PointerAttachment import org.thoughtcrime.securesms.attachments.TombstoneAttachment import org.thoughtcrime.securesms.attachments.UriAttachment +import org.thoughtcrime.securesms.calls.links.CallLinks import org.thoughtcrime.securesms.components.emoji.EmojiUtil import org.thoughtcrime.securesms.contactshare.Contact import org.thoughtcrime.securesms.contactshare.ContactModelMapper @@ -1117,8 +1118,9 @@ object DataMessageProcessor { val hasTitle = !TextUtils.isEmpty(title.orElse("")) val presentInBody = url.isPresent && urlsInMessage.containsUrl(url.get()) val validDomain = url.isPresent && LinkUtil.isValidPreviewUrl(url.get()) + val isForCallLink = url.isPresent && CallLinks.isCallLink(url.get()) - if (hasTitle && (presentInBody || isStoryEmbed) && validDomain) { + if ((hasTitle || isForCallLink) && (presentInBody || isStoryEmbed) && validDomain) { val linkPreview = LinkPreview(url.get(), title.orElse(""), description.orElse(""), preview.date, thumbnail.toOptional()) linkPreview } else { diff --git a/app/src/main/res/layout/call_link_join_button.xml b/app/src/main/res/layout/call_link_join_button.xml index 06f3859692..83f9368ab9 100644 --- a/app/src/main/res/layout/call_link_join_button.xml +++ b/app/src/main/res/layout/call_link_join_button.xml @@ -5,6 +5,7 @@