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:
Mcore/src/main/kotlin/me/rhunk/snapenhance/features/impl/downloader/MediaDownloader.kt | 6+++++-
Mcore/src/main/kotlin/me/rhunk/snapenhance/util/snap/MediaDownloaderHelper.kt | 12+++++++++++-
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 } }