2021-06-01 06:56:58 +02:00
|
|
|
package org.thoughtcrime.securesms.conversation.v2.messages
|
|
|
|
|
|
|
|
import android.content.Context
|
2021-06-22 01:34:23 +02:00
|
|
|
import android.graphics.drawable.Drawable
|
2021-06-01 06:56:58 +02:00
|
|
|
import android.util.AttributeSet
|
|
|
|
import android.view.LayoutInflater
|
2021-06-21 07:26:09 +02:00
|
|
|
import android.view.ViewOutlineProvider
|
2021-06-01 06:56:58 +02:00
|
|
|
import android.widget.LinearLayout
|
2021-06-22 02:39:34 +02:00
|
|
|
import androidx.core.content.res.ResourcesCompat
|
2021-06-01 06:56:58 +02:00
|
|
|
import kotlinx.android.synthetic.main.view_link_preview.view.*
|
|
|
|
import network.loki.messenger.R
|
2021-06-21 07:26:09 +02:00
|
|
|
import org.thoughtcrime.securesms.database.model.MmsMessageRecord
|
2021-06-22 02:39:34 +02:00
|
|
|
import org.thoughtcrime.securesms.loki.utilities.UiModeUtilities
|
2021-06-21 07:26:09 +02:00
|
|
|
import org.thoughtcrime.securesms.mms.GlideRequests
|
2021-06-24 07:03:29 +02:00
|
|
|
import org.thoughtcrime.securesms.mms.ImageSlide
|
2021-06-01 06:56:58 +02:00
|
|
|
|
|
|
|
class LinkPreviewView : LinearLayout {
|
|
|
|
|
|
|
|
// region Lifecycle
|
2021-06-21 06:24:00 +02:00
|
|
|
constructor(context: Context) : super(context) { initialize() }
|
|
|
|
constructor(context: Context, attrs: AttributeSet) : super(context, attrs) { initialize() }
|
|
|
|
constructor(context: Context, attrs: AttributeSet, defStyleAttr: Int) : super(context, attrs, defStyleAttr) { initialize() }
|
2021-06-01 06:56:58 +02:00
|
|
|
|
2021-06-21 06:24:00 +02:00
|
|
|
private fun initialize() {
|
2021-06-01 06:56:58 +02:00
|
|
|
LayoutInflater.from(context).inflate(R.layout.view_link_preview, this)
|
|
|
|
}
|
|
|
|
// endregion
|
|
|
|
|
|
|
|
// region Updating
|
2021-06-22 01:34:23 +02:00
|
|
|
fun bind(message: MmsMessageRecord, glide: GlideRequests, background: Drawable) {
|
|
|
|
mainLinkPreviewContainer.background = background
|
|
|
|
mainLinkPreviewContainer.outlineProvider = ViewOutlineProvider.BACKGROUND
|
2021-06-21 08:13:21 +02:00
|
|
|
mainLinkPreviewContainer.clipToOutline = true
|
2021-06-21 07:26:09 +02:00
|
|
|
// Thumbnail
|
|
|
|
val linkPreview = message.linkPreviews.first()
|
2021-06-24 07:03:29 +02:00
|
|
|
if (linkPreview.getThumbnail().isPresent) {
|
2021-06-25 01:19:21 +02:00
|
|
|
// This internally fetches the thumbnail
|
2021-06-24 07:03:29 +02:00
|
|
|
thumbnailImageView.setImageResource(glide, ImageSlide(context, linkPreview.getThumbnail().get()), false, false)
|
|
|
|
}
|
2021-06-21 07:26:09 +02:00
|
|
|
// Title
|
|
|
|
titleTextView.text = linkPreview.title
|
2021-06-22 02:39:34 +02:00
|
|
|
val textColorID = if (message.isOutgoing && UiModeUtilities.isDayUiMode(context)) {
|
|
|
|
R.color.white
|
|
|
|
} else {
|
|
|
|
if (UiModeUtilities.isDayUiMode(context)) R.color.black else R.color.white
|
|
|
|
}
|
|
|
|
titleTextView.setTextColor(ResourcesCompat.getColor(resources, textColorID, context.theme))
|
2021-06-22 01:34:23 +02:00
|
|
|
// Body
|
2021-06-23 06:08:17 +02:00
|
|
|
val bodyTextView = VisibleMessageContentView.getBodyTextView(context, message)
|
|
|
|
mainLinkPreviewContainer.addView(bodyTextView)
|
2021-06-01 06:56:58 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
fun recycle() {
|
|
|
|
// TODO: Implement
|
|
|
|
}
|
|
|
|
// endregion
|
|
|
|
}
|