commit ab7f5ab1bccb5c9182d6250289262e341572bd5b
parent fae26410ff0b4ac340d7aa61e2c8c2f381ff4b3b
Author: rhunk <101876869+rhunk@users.noreply.github.com>
Date:   Sun, 26 May 2024 16:32:26 +0200

fix(message_indicators): view padding

Diffstat:
Mcore/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/ui/MessageIndicators.kt | 66++++++++++++++++++++++++++++++++++++++----------------------------
1 file changed, 38 insertions(+), 28 deletions(-)

diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/ui/MessageIndicators.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/ui/MessageIndicators.kt @@ -2,13 +2,9 @@ package me.rhunk.snapenhance.core.features.impl.ui import android.view.View import android.view.ViewGroup -import android.widget.FrameLayout +import android.widget.LinearLayout import androidx.compose.foundation.Image -import androidx.compose.foundation.layout.Box -import androidx.compose.foundation.layout.Row -import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.* import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Android import androidx.compose.material.icons.filled.Edit @@ -16,6 +12,7 @@ import androidx.compose.material.icons.filled.Laptop import androidx.compose.material.icons.filled.LocationOn import androidx.compose.material.icons.filled.Lock import androidx.compose.material3.Text +import androidx.compose.runtime.getValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color @@ -25,6 +22,7 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import me.rhunk.snapenhance.common.data.ContentType import me.rhunk.snapenhance.common.ui.createComposeView +import me.rhunk.snapenhance.common.ui.rememberAsyncMutableState import me.rhunk.snapenhance.common.util.protobuf.ProtoReader import me.rhunk.snapenhance.core.event.events.impl.BindViewEvent import me.rhunk.snapenhance.core.features.Feature @@ -52,34 +50,45 @@ class MessageIndicators : Feature("Message Indicators", loadParams = FeatureLoad if (message.contentType != ContentType.SNAP.id && message.contentType != ContentType.EXTERNAL_MEDIA.id) return@chatMessage val reader = ProtoReader(message.messageContent ?: return@chatMessage) - val hasEncryption = reader.containsPath(3, 99, 3) - val sentFromIosDevice = if (reader.containsPath(4, 4, 3)) !reader.containsPath(4, 4, 3, 3, 17) else reader.getVarInt(4, 4, 11, 17, 7) != null - val sentFromWebApp = reader.getVarInt(4, 4, *(if (reader.containsPath(4, 4, 3)) intArrayOf(3, 3, 22, 1) else intArrayOf(11, 22, 1))) == 7L - val sentWithLocation = reader.getVarInt(4, 4, 11, 17, 5) != null - val sentUsingOvfEditor = (reader.getString(4, 4, 11, 12, 1) ?: reader.getString(4, 4, 11, 13, 4, 1, 2, 12, 20, 1)) == "c13129f7-fe4a-44c4-9b9d-e0b26fee8f82" - val sentUsingDirectorMode = reader.followPath(4, 4, 11, 28)?.let { - (it.getVarInt(1) to it.getVarInt(2)) == (0L to 0L) - } == true || reader.getByteArray(4, 4, 11, 13, 4, 1, 2, 12, 27, 1) != null - createComposeView(event.view.context) { Box( modifier = Modifier .fillMaxWidth() + .height(50.dp) .padding(top = 4.dp, end = 1.dp), - contentAlignment = Alignment.BottomEnd + contentAlignment = Alignment.TopEnd ) { + val hasEncryption by rememberAsyncMutableState(defaultValue = false) { + reader.getByteArray(4, 3, 3) != null || reader.containsPath(3, 99, 3) + } + val sentFromIosDevice by rememberAsyncMutableState(defaultValue = false) { + if (reader.containsPath(4, 4, 3)) !reader.containsPath(4, 4, 3, 3, 17) else reader.getVarInt(4, 4, 11, 17, 7) != null + } + val sentFromWebApp by rememberAsyncMutableState(defaultValue = false) { + reader.getVarInt(4, 4, *(if (reader.containsPath(4, 4, 3)) intArrayOf(3, 3, 22, 1) else intArrayOf(11, 22, 1))) == 7L + } + val sentWithLocation by rememberAsyncMutableState(defaultValue = false) { + reader.getVarInt(4, 4, 11, 17, 5) != null + } + val sentUsingOvfEditor by rememberAsyncMutableState(defaultValue = false) { + (reader.getString(4, 4, 11, 12, 1) ?: reader.getString(4, 4, 11, 13, 4, 1, 2, 12, 20, 1)) == "c13129f7-fe4a-44c4-9b9d-e0b26fee8f82" + } + val sentUsingDirectorMode by rememberAsyncMutableState(defaultValue = false) { + reader.followPath(4, 4, 11, 28)?.let { + (it.getVarInt(1) to it.getVarInt(2)) == (0L to 0L) + } == true || reader.getByteArray(4, 4, 11, 13, 4, 1, 2, 12, 27, 1) != null + } + Row( verticalAlignment = Alignment.CenterVertically ) { - if (messageIndicatorsConfig.contains("location_indicator")) { - if (sentWithLocation) { - Image( - imageVector = Icons.Default.LocationOn, - colorFilter = ColorFilter.tint(Color.Green), - contentDescription = null, - modifier = Modifier.size(15.dp) - ) - } + if (sentWithLocation && messageIndicatorsConfig.contains("location_indicator")) { + Image( + imageVector = Icons.Default.LocationOn, + colorFilter = ColorFilter.tint(Color.Green), + contentDescription = null, + modifier = Modifier.size(15.dp) + ) } if (messageIndicatorsConfig.contains("platform_indicator")) { Image( @@ -124,9 +133,10 @@ class MessageIndicators : Feature("Message Indicators", loadParams = FeatureLoad addOnLayoutChangeListener { _, left, _, right, _, _, _, _, _ -> layout(left, 0, right, 0) } - layoutParams = FrameLayout.LayoutParams( - FrameLayout.LayoutParams.MATCH_PARENT, - FrameLayout.LayoutParams.WRAP_CONTENT + setPadding(0, 0, 0, -(50 * event.view.resources.displayMetrics.density).toInt()) + layoutParams = LinearLayout.LayoutParams( + LinearLayout.LayoutParams.MATCH_PARENT, + LinearLayout.LayoutParams.WRAP_CONTENT ) parentLinearLayout.addView(this) }