commit 11b7119f8b5478adcadb013112da67044dafa6c7
parent b0dfcd5470ff981e35c38e2ca5b95dfd78794ed9
Author: rhunk <101876869+rhunk@users.noreply.github.com>
Date: Fri, 18 Aug 2023 15:26:54 +0200
fix(media_downloader): partial compat for story replies
Diffstat:
2 files changed, 16 insertions(+), 2 deletions(-)
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/downloader/MediaDownloader.kt b/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/downloader/MediaDownloader.kt
@@ -464,7 +464,11 @@ class MediaDownloader : Feature("MediaDownloader", loadParams = FeatureLoadParam
val messageReader = ProtoReader(messageContent)
val urlProto: ByteArray = if (isArroyoMessage) {
- messageReader.getByteArray(*ARROYO_URL_KEY_PROTO_PATH)!!
+ var finalProto: ByteArray? = null
+ messageReader.readPath(4)?.each(5) {
+ finalProto = getByteArray(1, 3)
+ }
+ finalProto!!
} else {
deletedMediaReference!!
}
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/util/snap/MediaDownloaderHelper.kt b/core/src/main/kotlin/me/rhunk/snapenhance/util/snap/MediaDownloaderHelper.kt
@@ -25,7 +25,17 @@ object MediaDownloaderHelper {
return when (contentType) {
ContentType.NOTE -> messageContainerPath.readPath(*mediaContainerPath)
ContentType.SNAP -> messageContainerPath.readPath(*(intArrayOf(11) + mediaContainerPath))
- ContentType.EXTERNAL_MEDIA -> messageContainerPath.readPath(*(intArrayOf(3, 3) + mediaContainerPath))
+ ContentType.EXTERNAL_MEDIA -> {
+ val externalMediaTypes = arrayOf(
+ intArrayOf(3, 3), //normal external media
+ intArrayOf(7, 12, 3), //attached story reply
+ intArrayOf(7, 3) //original story reply
+ )
+ externalMediaTypes.forEach { path ->
+ messageContainerPath.readPath(*(path + mediaContainerPath))?.also { return it }
+ }
+ null
+ }
else -> null
}
}