commit 3ba4e573adf9e775816b9b115fd966f5a1ff6377
parent 33131728cadbb3e203d17ddec4bf2814b714137c
Author: rhunk <101876869+rhunk@users.noreply.github.com>
Date:   Sat,  2 Sep 2023 12:57:38 +0200

feat: 2d bitmoji selfie

Diffstat:
Mcore/src/main/assets/lang/en_US.json | 4++++
Mcore/src/main/kotlin/me/rhunk/snapenhance/core/config/impl/UserInterfaceTweaks.kt | 1+
Acore/src/main/kotlin/me/rhunk/snapenhance/features/impl/tweaks/OldBitmojiSelfie.kt | 23+++++++++++++++++++++++
Mcore/src/main/kotlin/me/rhunk/snapenhance/manager/impl/FeatureManager.kt | 2++
Mcore/src/main/kotlin/me/rhunk/snapenhance/util/snap/BitmojiSelfie.kt | 12+++++++-----
5 files changed, 37 insertions(+), 5 deletions(-)

diff --git a/core/src/main/assets/lang/en_US.json b/core/src/main/assets/lang/en_US.json @@ -191,6 +191,10 @@ "name": "Hide UI Components", "description": "Select which UI components to hide" }, + "2d_bitmoji_selfie": { + "name": "2D Bitmoji Selfie", + "description": "Brings back the 2D selfie from older Snapchat versions\nYou need to clean the Snapchat cache from debug for this to take effect" + }, "disable_spotlight": { "name": "Disable Spotlight", "description": "Disables the Spotlight page" diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/config/impl/UserInterfaceTweaks.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/config/impl/UserInterfaceTweaks.kt @@ -24,6 +24,7 @@ class UserInterfaceTweaks : ConfigContainer() { "hide_live_location_share_button", "hide_call_buttons" ) + val ddBitmojiSelfie = boolean("2d_bitmoji_selfie") val disableSpotlight = boolean("disable_spotlight") val startupTab = unique("startup_tab", "ngs_map_icon_container", diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/tweaks/OldBitmojiSelfie.kt b/core/src/main/kotlin/me/rhunk/snapenhance/features/impl/tweaks/OldBitmojiSelfie.kt @@ -0,0 +1,22 @@ +package me.rhunk.snapenhance.features.impl.tweaks + +import me.rhunk.snapenhance.core.eventbus.events.impl.NetworkApiRequestEvent +import me.rhunk.snapenhance.features.Feature +import me.rhunk.snapenhance.features.FeatureLoadParams +import me.rhunk.snapenhance.util.snap.BitmojiSelfie + +class OldBitmojiSelfie : Feature("OldBitmojiSelfie", loadParams = FeatureLoadParams.INIT_SYNC) { + override fun init() { + val urlPrefixes = arrayOf("https://images.bitmoji.com/3d/render/", "https://cf-st.sc-cdn.net/3d/render/") + val state by context.config.userInterface.ddBitmojiSelfie + + context.event.subscribe(NetworkApiRequestEvent::class, { state }) { event -> + if (urlPrefixes.firstOrNull { event.url.startsWith(it) } == null) return@subscribe + val bitmojiURI = event.url.substringAfterLast("/") + event.url = + BitmojiSelfie.BitmojiSelfieType.STANDARD.prefixUrl + + bitmojiURI + + (bitmojiURI.takeIf { !it.contains("?") }?.let { "?" } ?: "&") + "transparent=1" + } + } +}+ \ No newline at end of file diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/manager/impl/FeatureManager.kt b/core/src/main/kotlin/me/rhunk/snapenhance/manager/impl/FeatureManager.kt @@ -30,6 +30,7 @@ import me.rhunk.snapenhance.features.impl.tweaks.GooglePlayServicesDialogs import me.rhunk.snapenhance.features.impl.tweaks.LocationSpoofer import me.rhunk.snapenhance.features.impl.tweaks.MediaQualityLevelOverride import me.rhunk.snapenhance.features.impl.tweaks.Notifications +import me.rhunk.snapenhance.features.impl.tweaks.OldBitmojiSelfie import me.rhunk.snapenhance.features.impl.tweaks.SendOverride import me.rhunk.snapenhance.features.impl.tweaks.SnapchatPlus import me.rhunk.snapenhance.features.impl.tweaks.UnlimitedSnapViewTime @@ -95,6 +96,7 @@ class FeatureManager(private val context: ModContext) : Manager { register(ProfilePictureDownloader::class) register(AddFriendSourceSpoof::class) register(DisableReplayInFF::class) + register(OldBitmojiSelfie::class) initializeFeatures() } diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/util/snap/BitmojiSelfie.kt b/core/src/main/kotlin/me/rhunk/snapenhance/util/snap/BitmojiSelfie.kt @@ -1,9 +1,11 @@ package me.rhunk.snapenhance.util.snap object BitmojiSelfie { - enum class BitmojiSelfieType { - STANDARD, - THREE_D + enum class BitmojiSelfieType( + val prefixUrl: String, + ) { + STANDARD("https://sdk.bitmoji.com/render/panel/"), + THREE_D("https://images.bitmoji.com/3d/render/") } fun getBitmojiSelfie(selfieId: String?, avatarId: String?, type: BitmojiSelfieType): String? { @@ -11,8 +13,8 @@ object BitmojiSelfie { return null } return when (type) { - BitmojiSelfieType.STANDARD -> "https://sdk.bitmoji.com/render/panel/$selfieId-$avatarId-v1.webp?transparent=1" - BitmojiSelfieType.THREE_D -> "https://images.bitmoji.com/3d/render/$selfieId-$avatarId-v1.webp?trim=circle" + BitmojiSelfieType.STANDARD -> "${type.prefixUrl}$selfieId-$avatarId-v1.webp?transparent=1" + BitmojiSelfieType.THREE_D -> "${type.prefixUrl}$selfieId-$avatarId-v1.webp?trim=circle" } } } \ No newline at end of file