fix(send_override): media extras (mentions, places, ...)

This commit is contained in:
rhunk
2023-09-01 16:37:08 +02:00
parent d0e6c55717
commit a3edd40cfb
3 changed files with 22 additions and 15 deletions

View File

@ -12,20 +12,25 @@ class MessageSender(
private val context: ModContext,
) {
companion object {
val redSnapProto: () -> ByteArray = {
val redSnapProto: (ByteArray?) -> ByteArray = { extras ->
ProtoWriter().apply {
from(11, 5) {
from(1) {
from(11) {
from(5) {
from(1) {
addVarInt(2, 0)
addVarInt(12, 0)
addVarInt(15, 0)
from(1) {
addVarInt(2, 0)
addVarInt(12, 0)
addVarInt(15, 0)
}
addVarInt(6, 0)
}
from(2) {
addVarInt(5, 1) // audio by default
addBuffer(6, byteArrayOf())
}
addVarInt(6, 0)
}
from(2) {
addVarInt(5, 1) // audio by default
addBuffer(6, byteArrayOf())
extras?.let {
addBuffer(13, it)
}
}
}.toByteArray()

View File

@ -11,7 +11,7 @@ import me.rhunk.snapenhance.ui.ViewAppearanceHelper
import me.rhunk.snapenhance.util.protobuf.ProtoEditor
import me.rhunk.snapenhance.util.protobuf.ProtoReader
class GalleryMediaSendOverride : Feature("Gallery Media Send Override", loadParams = FeatureLoadParams.INIT_SYNC) {
class SendOverride : Feature("Send Override", loadParams = FeatureLoadParams.INIT_SYNC) {
private var isLastSnapSavable = false
override fun init() {
@ -37,7 +37,6 @@ class GalleryMediaSendOverride : Feature("Gallery Media Send Override", loadPara
// only affect snaps
if (!it.containsPath(*Constants.ARROYO_MEDIA_CONTAINER_PROTO_PATH, 11)) return@subscribe
}
isLastSnapSavable = false
event.buffer = ProtoEditor(event.buffer).apply {
//remove the max view time
@ -59,6 +58,7 @@ class GalleryMediaSendOverride : Feature("Gallery Media Send Override", loadPara
context.event.subscribe(SendMessageWithContentEvent::class, {
context.config.messaging.galleryMediaSendOverride.get()
}) { event ->
isLastSnapSavable = false
val localMessageContent = event.messageContent
if (localMessageContent.contentType != ContentType.EXTERNAL_MEDIA) return@subscribe
@ -86,8 +86,10 @@ class GalleryMediaSendOverride : Feature("Gallery Media Send Override", loadPara
when (overrideType) {
"SNAP", "SAVABLE_SNAP" -> {
val extras = messageProtoReader.followPath(3, 3, 13)?.getBuffer()
localMessageContent.contentType = ContentType.SNAP
localMessageContent.content = MessageSender.redSnapProto()
localMessageContent.content = MessageSender.redSnapProto(extras)
if (overrideType == "SAVABLE_SNAP") {
isLastSnapSavable = true
}

View File

@ -27,7 +27,7 @@ import me.rhunk.snapenhance.features.impl.tweaks.AutoSave
import me.rhunk.snapenhance.features.impl.tweaks.CameraTweaks
import me.rhunk.snapenhance.features.impl.tweaks.DisableReplayInFF
import me.rhunk.snapenhance.features.impl.tweaks.DisableVideoLengthRestriction
import me.rhunk.snapenhance.features.impl.tweaks.GalleryMediaSendOverride
import me.rhunk.snapenhance.features.impl.tweaks.SendOverride
import me.rhunk.snapenhance.features.impl.tweaks.GooglePlayServicesDialogs
import me.rhunk.snapenhance.features.impl.tweaks.LocationSpoofer
import me.rhunk.snapenhance.features.impl.tweaks.MediaQualityLevelOverride
@ -77,7 +77,7 @@ class FeatureManager(private val context: ModContext) : Manager {
register(AutoSave::class)
register(UITweaks::class)
register(ConfigurationOverride::class)
register(GalleryMediaSendOverride::class)
register(SendOverride::class)
register(UnlimitedSnapViewTime::class)
register(DisableVideoLengthRestriction::class)
register(MediaQualityLevelOverride::class)