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:
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)
}