commit 571c2e6c4f6699e48f09771ae9053d3c5926d603
parent 1383686a820ddb54bd086d455d1cb0e59649c6b4
Author: rhunk <101876869+rhunk@users.noreply.github.com>
Date:   Fri, 24 Nov 2023 19:24:42 +0100

fix(core/media_downloader): mediaId uniqueness

Diffstat:
Mcore/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/downloader/MediaDownloader.kt | 6++++--
Mcore/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/downloader/decoder/MessageDecoder.kt | 2+-
2 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/downloader/MediaDownloader.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/downloader/MediaDownloader.kt @@ -86,7 +86,6 @@ class MediaDownloader : MessagingRuleFeature("MediaDownloader", MessagingRuleTyp friendInfo: FriendInfo? = null ): DownloadManagerClient { val generatedHash = mediaIdentifier.hashCode().toString(16).replaceFirst("-", "") - val iconUrl = BitmojiSelfie.getBitmojiSelfie(friendInfo?.bitmojiSelfieId, friendInfo?.bitmojiAvatarId, BitmojiSelfie.BitmojiSelfieType.THREE_D) val downloadLogging by context.config.downloader.logging @@ -300,7 +299,10 @@ class MediaDownloader : MessagingRuleFeature("MediaDownloader", MessagingRuleTyp val author = context.database.getFriendInfo(senderId) ?: return val authorUsername = author.usernameForSorting!! - val mediaId = paramMap["MEDIA_ID"]?.toString()?.split("-")?.getOrNull(1) ?: "" + val mediaId = paramMap["MEDIA_ID"]?.toString()?.let { + if (it.contains("-")) it.substringAfter("-") + else it + }?.substringBefore(".") downloadOperaMedia(provideDownloadManagerClient( mediaIdentifier = "$conversationId$senderId${conversationMessage.serverMessageId}$mediaId", diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/downloader/decoder/MessageDecoder.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/downloader/decoder/MessageDecoder.kt @@ -16,7 +16,7 @@ data class DecodedAttachment( ) { @OptIn(ExperimentalEncodingApi::class) val mediaUniqueId: String? by lazy { - runCatching { Base64.UrlSafe.decode(mediaUrlKey.toString()) }.getOrNull()?.let { ProtoReader(it).getString(2, 2) } + runCatching { Base64.UrlSafe.decode(mediaUrlKey.toString()) }.getOrNull()?.let { ProtoReader(it).getString(2, 2)?.substringBefore(".") } } }