From 9f2dbf7b6c4a4772ce83e8d71a099a24254cd24b Mon Sep 17 00:00:00 2001 From: Alex Hart Date: Thu, 28 Sep 2023 14:43:32 -0300 Subject: [PATCH] Fix context usage in ConversationDataSource. --- .../v2/data/ConversationDataSource.kt | 14 +++++++------- .../v2/items/V2ConversationItemShape.kt | 8 ++++++-- .../V2ConversationItemTextOnlyViewHolder.kt | 18 ++++++++++++------ 3 files changed, 25 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/data/ConversationDataSource.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/data/ConversationDataSource.kt index 92dbf76b40..2fa96c012b 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/data/ConversationDataSource.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/data/ConversationDataSource.kt @@ -47,12 +47,12 @@ private object ThreadHeaderKey : ConversationElementKey * ConversationDataSource for V2. Assumes that ThreadId is never -1L. */ class ConversationDataSource( - private val context: Context, + private val localContext: Context, private val threadId: Long, private val messageRequestData: ConversationData.MessageRequestData, private val showUniversalExpireTimerUpdate: Boolean, private var baseSize: Int, - private val messageRequestRepository: MessageRequestRepository = MessageRequestRepository(context) + private val messageRequestRepository: MessageRequestRepository = MessageRequestRepository(localContext) ) : PagedDataSource { companion object { @@ -130,9 +130,9 @@ class ConversationDataSource( val messages = records.map { record -> ConversationMessageFactory.createWithUnresolvedData( - context, + localContext, record, - record.getDisplayBody(context), + record.getDisplayBody(localContext), extraData.mentionsById[record.id], extraData.hasBeenQuoted.contains(record.id), threadRecipient @@ -192,7 +192,7 @@ class ConversationDataSource( stopwatch.split("models") return ConversationMessageFactory.createWithUnresolvedData( - ApplicationDependencies.getApplication(), + localContext, record, record.getDisplayBody(ApplicationDependencies.getApplication()), extraData.mentionsById[record.id], @@ -222,13 +222,13 @@ class ConversationDataSource( return if (messageRecord.isUpdate) { ConversationUpdate(this) } else if (messageRecord.isOutgoing) { - if (this.isTextOnly(context)) { + if (this.isTextOnly(localContext)) { OutgoingTextOnly(this) } else { OutgoingMedia(this) } } else { - if (this.isTextOnly(context)) { + if (this.isTextOnly(localContext)) { IncomingTextOnly(this) } else { IncomingMedia(this) diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemShape.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemShape.kt index 1e4177fbf7..d9f4087f57 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemShape.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemShape.kt @@ -31,7 +31,10 @@ class V2ConversationItemShape( private val clusterTimeout = 3.minutes } - var corners: Projection.Corners = Projection.Corners(bigRadius) + var cornersLTR: Projection.Corners = Projection.Corners(bigRadius) + private set + + var cornersRTL: Projection.Corners = Projection.Corners(bigRadius) private set /** @@ -80,7 +83,8 @@ class V2ConversationItemShape( bottomStart ) - corners = newCorners + cornersLTR = newCorners + cornersRTL = Projection.Corners(newCorners.toRelativeRadii(false)) } private fun isSingularMessage( diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTextOnlyViewHolder.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTextOnlyViewHolder.kt index c35c77bd61..8d575b19ec 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTextOnlyViewHolder.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTextOnlyViewHolder.kt @@ -238,7 +238,7 @@ open class V2ConversationItemTextOnlyViewHolder>( } else { conversationMessage.threadRecipient.chatColors }, - shapeDelegate.corners + shapeDelegate.cornersLTR ) binding.reply.setBackgroundColor(themeDelegate.getReplyIconBackgroundColor()) @@ -266,7 +266,7 @@ open class V2ConversationItemTextOnlyViewHolder>( Projection.relativeToParent( coordinateRoot, binding.bodyWrapper, - shapeDelegate.corners + shapeDelegate.cornersLTR ).translateX(binding.bodyWrapper.translationX).translateY(root.translationY) ) @@ -318,7 +318,7 @@ open class V2ConversationItemTextOnlyViewHolder>( return Projection.relativeToParent( coordinateRoot, binding.bodyWrapper, - shapeDelegate.corners + shapeDelegate.cornersLTR ) .translateY(root.translationY) .translateX(binding.bodyWrapper.translationX) @@ -337,7 +337,7 @@ open class V2ConversationItemTextOnlyViewHolder>( val projection = Projection.relativeToParent( coordinateRoot, binding.footerBackground, - shapeDelegate.corners + shapeDelegate.cornersLTR ) footerDrawable.applyMaskProjection(projection) @@ -345,7 +345,13 @@ open class V2ConversationItemTextOnlyViewHolder>( } private fun invalidateBodyBubbleDrawable(coordinateRoot: ViewGroup) { - bodyBubbleDrawable.setCorners(shapeDelegate.corners.toRelativeRadii(ViewUtil.isLtr(coordinateRoot))) + val corners: Projection.Corners = if (ViewUtil.isLtr(coordinateRoot)) { + shapeDelegate.cornersLTR + } else { + shapeDelegate.cornersRTL + } + + bodyBubbleDrawable.setCorners(corners.toRadii()) if (bodyBubbleDrawable.isSolidColor()) { return @@ -354,7 +360,7 @@ open class V2ConversationItemTextOnlyViewHolder>( val projection = Projection.relativeToParent( coordinateRoot, binding.bodyWrapper, - shapeDelegate.corners + corners ) bodyBubbleDrawable.applyMaskProjection(projection)