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 index 55553070..fb25ca15 100644 --- 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 index 964da8b8..e6307250 100644 --- 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 } }