Merge branch 'develop' into feature/fga/fix_timeline_back_pagination_loop

This commit is contained in:
ganfra 2023-12-15 15:14:11 +01:00
commit f548dadfd7
42 changed files with 86 additions and 89 deletions

1
changelog.d/1940.bugfix Normal file
View file

@ -0,0 +1 @@
Fix scaling of timeline images: don't crop, don't set min/max aspect ratio values.

View file

@ -213,7 +213,8 @@ class TimelinePresenter @AssistedInject constructor(
newMostRecentItemId != prevMostRecentItemIdValue
if (hasNewEvent) {
val newMostRecentEvent = newMostRecentItem as? TimelineItem.Event
val fromMe = newMostRecentEvent?.localSendState != null
// Scroll to bottom if the new event is from me, even if sent from another device
val fromMe = newMostRecentEvent?.isMine == true
newEventState.value = if (fromMe) {
NewEventState.FromMe
} else {

View file

@ -99,10 +99,9 @@ fun MessageEventBubble(
}
// Ignore state.isHighlighted for now, we need a design decision on it.
val backgroundBubbleColor = if (state.isMine) {
ElementTheme.colors.messageFromMeBackground
} else {
ElementTheme.colors.messageFromOtherBackground
val backgroundBubbleColor = when {
state.isMine -> ElementTheme.colors.messageFromMeBackground
else -> ElementTheme.colors.messageFromOtherBackground
}
val bubbleShape = bubbleShape()
Box(

View file

@ -439,7 +439,7 @@ private fun MessageEventBubbleContent(
) {
when (timestampPosition) {
TimestampPosition.Overlay ->
Box(modifier) {
Box(modifier, contentAlignment = Alignment.Center) {
content()
TimelineEventTimestampView(
event = event,
@ -650,7 +650,7 @@ internal fun TimelineItemEventRowPreview() = ElementPreview {
event = aTimelineItemEvent(
isMine = it,
content = aTimelineItemImageContent().copy(
aspectRatio = 5f
aspectRatio = 2.5f
),
groupPosition = TimelineItemGroupPosition.Last,
),

View file

@ -71,7 +71,7 @@ internal fun TimelineItemEventRowWithReplyPreview(
isMine = it,
timelineItemReactions = aTimelineItemReactions(count = 0),
content = aTimelineItemImageContent().copy(
aspectRatio = 5f
aspectRatio = 2.5f
),
inReplyTo = inReplyToDetails,
isThreaded = true,

View file

@ -25,9 +25,8 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
private const val MAX_HEIGHT_IN_DP = 360f
private const val MIN_ASPECT_RATIO = 0.6f
private const val MAX_ASPECT_RATIO = 4f
private const val MIN_HEIGHT_IN_DP = 100
private const val MAX_HEIGHT_IN_DP = 360
private const val DEFAULT_ASPECT_RATIO = 1.33f
@Composable
@ -37,11 +36,11 @@ fun TimelineItemAspectRatioBox(
contentAlignment: Alignment = Alignment.TopStart,
content: @Composable (BoxScope.() -> Unit),
) {
val safeAspectRatio = (aspectRatio ?: DEFAULT_ASPECT_RATIO).coerceIn(MIN_ASPECT_RATIO, MAX_ASPECT_RATIO)
val safeAspectRatio = aspectRatio ?: DEFAULT_ASPECT_RATIO
Box(
modifier = modifier
.heightIn(max = MAX_HEIGHT_IN_DP.dp)
.aspectRatio(safeAspectRatio, true),
.heightIn(min = MIN_HEIGHT_IN_DP.dp, max = MAX_HEIGHT_IN_DP.dp)
.aspectRatio(safeAspectRatio, false),
contentAlignment = contentAlignment,
content = content
)

View file

@ -18,13 +18,12 @@ package io.element.android.features.messages.impl.timeline.components.event
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.layout.ContentScale
import androidx.compose.ui.tooling.preview.PreviewParameter
import io.element.android.features.messages.impl.timeline.model.event.TimelineItemImageContent
import io.element.android.features.messages.impl.timeline.model.event.TimelineItemImageContentProvider
import io.element.android.libraries.designsystem.components.BlurHashAsyncImage
import io.element.android.libraries.designsystem.preview.PreviewsDayNight
import io.element.android.libraries.designsystem.preview.ElementPreview
import io.element.android.libraries.designsystem.preview.PreviewsDayNight
import io.element.android.libraries.matrix.ui.media.MediaRequestData
@Composable
@ -34,12 +33,11 @@ fun TimelineItemImageView(
) {
TimelineItemAspectRatioBox(
aspectRatio = content.aspectRatio,
modifier = modifier
modifier = modifier,
) {
BlurHashAsyncImage(
model = MediaRequestData(content.preferredMediaSource, MediaRequestData.Kind.File(content.body, content.mimeType)),
blurHash = content.blurhash,
contentScale = ContentScale.Crop,
)
}
}

View file

@ -37,7 +37,6 @@ import io.element.android.libraries.featureflag.test.FakeFeatureFlagService
import io.element.android.libraries.matrix.api.timeline.MatrixTimeline
import io.element.android.libraries.matrix.api.timeline.MatrixTimelineItem
import io.element.android.libraries.matrix.api.timeline.item.event.EventReaction
import io.element.android.libraries.matrix.api.timeline.item.event.LocalEventSendState
import io.element.android.libraries.matrix.api.timeline.item.event.ReactionSender
import io.element.android.libraries.matrix.api.timeline.item.virtual.VirtualTimelineItem
import io.element.android.libraries.matrix.test.AN_EVENT_ID
@ -205,7 +204,7 @@ class TimelinePresenterTest {
consumeItemsUntilPredicate { it.timelineItems.size == 1 }
// Mimics sending a message, and assert newEventState is FromMe
timeline.updateTimelineItems { items ->
val event = anEventTimelineItem(content = aMessageContent(), localSendState = LocalEventSendState.Sent(AN_EVENT_ID))
val event = anEventTimelineItem(content = aMessageContent(), isOwn = true)
items + listOf(MatrixTimelineItem.Event("1", event))
}
consumeItemsUntilPredicate { it.timelineItems.size == 2 }
@ -366,7 +365,7 @@ class TimelinePresenterTest {
messagesNavigator: FakeMessagesNavigator = FakeMessagesNavigator(),
endPollAction: EndPollAction = FakeEndPollAction(),
sendPollResponseAction: SendPollResponseAction = FakeSendPollResponseAction(),
): TimelinePresenter {
): TimelinePresenter {
return TimelinePresenter(
timelineItemsFactory = timelineItemsFactory,
room = FakeMatrixRoom(matrixTimeline = timeline),

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:c40273c36eb1479f284e75fa91d4a75b1ae97edd0242dda37a2d4a8f10394928
size 138700
oid sha256:301b6cc63cc5e075aa70e0d4d67da5a3fd96049f834f5d04665e905de6860d89
size 123525

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:9765d4c28463df920063a46f3aaaa29df816ba44c424ae4fac6c9e2380cb64ee
size 138717
oid sha256:d03c9055f17ecba10787da59bc7d598b9b397c52f70f930a4603c58bb26b2d60
size 123995

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:06617cda0f93ce0ea26b2a77a243371cdaf4f9a2956d8159ecb7196f7f6fe082
size 139282
oid sha256:f4fe06708cd1f1e49254779bce07f6751792a94fa9065882385efad1ac8663c2
size 124159

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:7d444f76e3eed1fe8291a25b24a8712427747a728270244cfa3842260b9c1b2d
size 139335
oid sha256:b1c09f5b8c68f493a04541a7ce77ca33d98c41e56c020e355dfc4419406592ae
size 124700

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:3c1b0ba1c320f576b62b1a27387a9f9a46e09e9f063e02700bd8ccded1f99f68
size 150335
oid sha256:1ca195029059318ae3c0d78982024f026546e9ecbbe3484262c459541a72b0d4
size 139498

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:47da4816749072a1521ce4890eaa7a432d534e594b7561ccb232f1f986644386
size 146063
oid sha256:056f97085265006349952cab7ce090cf613ffd2d99e6b1746f0274228d8f85f9
size 135870

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:d05bc70fe365692805c5627f6a8e24190ca9e2f3873f3dc1afffeb18b97b4834
size 131802
oid sha256:711686ff22c31041ff142d7ba8bb6af3352f5b8383e88ed3258f0ba1dbd8dada
size 167432

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:48f35f2c39b7b124c4df7dc0d9ddd97e40be2a70b784834dc99ac134d05ab74e
size 151274
oid sha256:1c17b41f0a27e5e197a50dd8018561769ff8ee7166b4f08aebec13b1020b0641
size 171777

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:8b61fcac5c3b5107e86d0dec94f38543277e3ca1c8d54ec2c6a606692fe1a6c4
size 129785
oid sha256:ac9dd0ab14d1c25f97274feadc122506ce1411efa0966e9b97e8e9105f90ec89
size 165158

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:acabd4ae5b0404418de449b47d2e037cbc3cbfe86c699bb4a912dcaad9658597
size 119825
oid sha256:07dd3eef2dcf3e5b9ad9e2b765f2c855e77550a4d9f67abaec58770e96aa055f
size 154167

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:c45c7f0dd89c5ae639b763417a3a055eee29f7db91db320068b5fae9178231c0
size 117849
oid sha256:52563ac5d69e50244537181e1ce3d94d18713ae4833f1f24190b579237ebf27b
size 152512

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:28f6897219f94ffff48953ea387ea91914e731d53862511b1e81ddbd4f9f81a7
size 126184
oid sha256:212f7662c10e40beed0441d8a7bf63b29039cda2cfd107cc913540fffca2fb8c
size 161102

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:2b7ea11a870467df04e66236ec3ee85d96b6c0b3ea38ffe2a60721bf4e5794f9
size 116505
oid sha256:50f79dcf56fcede4a87ec8cfc0ecae2b983102123c92ee976661a270036a59ee
size 151464

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:3293abf633684ad534cdf27eb8bec831090afcb40268f54dccd6d8a39fc5ca38
size 120153
oid sha256:321be7239a8421f7be80e9be9e3befb14543285bebbab08de2e33acd519de9d6
size 154468

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:798be7ee710c62eabfba8ee89cc3b0ed9f0b3250f491d7a03c7695dcb9c96a16
size 127201
oid sha256:aa2d9a694e1e2c2816769caf15bb16906bd82567c4eaa3b0e00837518b41b8d2
size 162373

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:2bfa1880ffbf6d154df5f5130ff19b079e2db9496791fb417f71e186c6ad9dc2
size 116859
oid sha256:59cd8489ec06f17beb95990e06c5fdf726a22761ccb87212cf99919f231f0237
size 151677

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:cd0bcd7381de78ddb833d2912d6895c10bcf6ef537687f659780177ebbc5b352
size 115888
oid sha256:7a9ed336d0c4ebfe6dfbaa8c8d5a5efd760003eb55369811bed7d30954910677
size 150970

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:c02b2a2b48c8b7c24a082eaf112d98b21ac9e5df8db2ecbce8fe16f00356b38e
size 129442
oid sha256:64a98bd4cfc092eab2ab27472d7895df87ca7d58ef0ca319a4468be5696125f8
size 165098

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ea1594733269d422572619828e66bb4177a60a0cc2910c7c700c2b2db0e73e81
size 148333
oid sha256:324e0df2a6c27363d98c898ebcc907cb2b30a23481ef6ed2d4d9f5a35b20aff4
size 169342

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:c51f5ffe2df513e2868d4672750fec64bd97ad942fdd6b1f74ebe3437c200c1c
size 127782
oid sha256:55675ed0ab4ad9e30f4bb000912ad5413903bdb12e3cee48bf337ae811c6afaa
size 163210

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:d404d2d2828018013b29a58e14c87aacc5ae40924cc68cf237c0d5fdfde2622d
size 117909
oid sha256:6236e2f6f7b9f7e5512394d53acdf1ffb98ae9a515d09d8d418322bdce252301
size 152787

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:439da7c5062743bc80036b829525089185b5c3394fa12458dbbb299b63226b1d
size 115892
oid sha256:4b7c2ed87c849b9f22a4d767261ec970ff397396f00a1e289bbf9a87c260e5ec
size 151068

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:1c367d94ecdf82b40051920782e98f6b138b443d1d47887aa25dc718f2a3847a
size 124231
oid sha256:e1f740c97ee0c69aec6d11067738d1b81cfb95e0e078affe93ce79eb3f79df63
size 159375

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:3244853b7f42894529ecdc55a812530a528db1883ff51d390507bb846560d128
size 114393
oid sha256:fbfd1da880da72462ece7550bff5c6789b32c9a294c56626e00f1ba21baed569
size 149837

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:af627492f704c63ff337354a2f5259ffc5452018a518190b9a2dbba5efd68597
size 118409
oid sha256:e54db5eefb4c3d539e79beb82e860dfc2fbc775c75da18be541fb852f661682c
size 153188

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:8a1e67039cb6f46ef7d3f10ef25057a3fd35531564178c56498d28649edfed49
size 125289
oid sha256:3a498a0f7d71103472e2d30780a40eddb4699114f46526976bcd4bc7dfb5f229
size 160488

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:47943a4a887e34fe7133ef53218759f2ba69db06cde76b064763eee69007f662
size 114754
oid sha256:39c1df36664808d4af9b3ac2881e648bafdf5354376b74f0ca7c731cb05072be
size 150007

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:82bf809126a9d41a610c36e4dfbf584c91c40e595d71e875f5afd3b8ffdc1bc4
size 113881
oid sha256:de3d3ef7e6b65220c7df8a25f2d1539990ef0a47b7e6f2d53b1f53a0e351af4c
size 149396

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:11da400ec4d40643f4cf601c795d8c7d6488b4526d0f80127fc3aaf68024e871
size 153433
oid sha256:1173aed6e70d09e8c8c8db2032e28464caee6da101c0fe7fc160482d477f7d18
size 190846

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:9c79824aea14c0a42fdd21d50763092e08f20cedb8b6b0b1e450d8dc028e8cf3
size 148228
oid sha256:e15bf90ad85964a4365eaf0cb47e2856ef8c2846047e22302497014059aca11f
size 187016

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:fa6571e27635039a0b104c9062dbf01b6134982ba27f960f9394b4bd10b09313
size 230532
oid sha256:2489cb6ab856106d527134b51b90342885b21585cb3f7a929385a187eef2f12c
size 208912

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:30e8b758628d2f319662ca803fc222e01845cf6c0156af2ab729b21e13a7fe22
size 231421
oid sha256:f38480a36ab69497fa1d7a5b92ce581f422bf834961d336343662f9024a43d19
size 209748

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:2689767ba1970a99cc2c0e1fc911fd61d4f43f4a13cadfa49ec22c205de21849
size 229850
oid sha256:bb3d9e761e12a8038b5dbd7b4e6c66c9e4cc65c798f79944a5626a6e205458c7
size 208390

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:f4edb8dc7eed92cef41ec6081dbbaf96f4d6170acb61575b045a39fcc9e231b2
size 230752
oid sha256:de0a4c9214993a733998f638c257556203369a506947ba5ec9042648347bd978
size 209261