commit 9f0fecbf89f75b0d58364e8792169203260ac0e1 parent 986dbad983b121c7f702f6b8569f9fda2afa558f Author: rhunk <101876869+rhunk@users.noreply.github.com> Date: Mon, 12 Aug 2024 19:15:49 +0200 feat(core/ui_tweaks): hide billboard prompt Diffstat:
5 files changed, 34 insertions(+), 1 deletion(-)
diff --git a/common/src/main/assets/lang/en_US.json b/common/src/main/assets/lang/en_US.json @@ -1239,7 +1239,8 @@ "hide_stickers_button": "Remove Stickers Button", "hide_voice_record_button": "Remove Voice Record Button", "hide_unread_chat_hint": "Remove Unread Chat Hint", - "hide_post_to_story_buttons": "Remove Post to Story buttons before sending a Snap" + "hide_post_to_story_buttons": "Remove Post to Story buttons before sending a Snap", + "hide_billboard_prompt": "Remove Billboard Prompt In Friends Feed" }, "hide_story_suggestions": { "hide_friend_suggestions": "Hide friend suggestions", diff --git a/common/src/main/kotlin/me/rhunk/snapenhance/common/config/impl/UserInterfaceTweaks.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/config/impl/UserInterfaceTweaks.kt @@ -49,6 +49,7 @@ class UserInterfaceTweaks : ConfigContainer() { "hide_profile_call_buttons", "hide_unread_chat_hint", "hide_post_to_story_buttons", + "hide_billboard_prompt", ) { requireRestart() } val operaMediaQuickInfo = boolean("opera_media_quick_info") { requireRestart() } val oldBitmojiSelfie = unique("old_bitmoji_selfie", "2d", "3d") { requireCleanCache() } diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/ui/UITweaks.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/ui/UITweaks.kt @@ -10,6 +10,8 @@ import me.rhunk.snapenhance.core.event.events.impl.AddViewEvent import me.rhunk.snapenhance.core.event.events.impl.BindViewEvent import me.rhunk.snapenhance.core.event.events.impl.LayoutInflateEvent import me.rhunk.snapenhance.core.features.Feature +import me.rhunk.snapenhance.core.ui.getComposerContext +import me.rhunk.snapenhance.core.util.dataBuilder import me.rhunk.snapenhance.core.util.hook.HookStage import me.rhunk.snapenhance.core.util.hook.Hooker import me.rhunk.snapenhance.core.util.hook.hook @@ -157,6 +159,14 @@ class UITweaks : Feature("UITweaks") { } } + if (hiddenElements.contains("hide_billboard_prompt") && event.parent.javaClass.name.endsWith("BillboardFeedHeaderPromptComponent")) { + hideView(event.parent) + view.getComposerContext()?.componentContext?.get()?.dataBuilder { + val dismissFunction = get<Any>("_onDismiss") ?: return@subscribe + dismissFunction.javaClass.getMethod("invoke").invoke(dismissFunction) + } + } + if ( ((viewId == getId("post_tool", "id") || viewId == getId("story_button", "id")) && hiddenElements.contains("hide_post_to_story_buttons")) || (viewId == chatNoteRecordButton && hiddenElements.contains("hide_voice_record_button")) || diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/ui/ViewAppearanceHelper.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/ui/ViewAppearanceHelper.kt @@ -24,6 +24,7 @@ import me.rhunk.snapenhance.core.SnapEnhance import me.rhunk.snapenhance.core.util.ktx.getDimens import me.rhunk.snapenhance.core.util.ktx.getDimensFloat import me.rhunk.snapenhance.core.util.ktx.getIdentifier +import me.rhunk.snapenhance.core.wrapper.impl.composer.ComposerContext import me.rhunk.snapenhance.core.wrapper.impl.composer.ComposerViewNode import kotlin.random.Random @@ -117,6 +118,14 @@ fun View.getComposerViewNode(): ComposerViewNode? { }?.invoke(composerViewNode) as? Long ?: return null) } +fun View.getComposerContext(): ComposerContext? { + if (!this::class.java.isAssignableFrom(SnapEnhance.classCache.composerView)) return null + + return ComposerContext(this::class.java.methods.firstOrNull { + it.name == "getComposerContext" + }?.invoke(this) ?: return null) +} + object ViewAppearanceHelper { private fun createRoundedBackground(color: Int, radius: Float, hasRadius: Boolean): Drawable { if (!hasRadius) return ColorDrawable(color) diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/wrapper/impl/composer/ComposerContext.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/wrapper/impl/composer/ComposerContext.kt @@ -0,0 +1,11 @@ +package me.rhunk.snapenhance.core.wrapper.impl.composer + +import me.rhunk.snapenhance.core.wrapper.AbstractWrapper +import java.lang.ref.WeakReference + +class ComposerContext(obj: Any): AbstractWrapper(obj) { + val componentPath by field<String>("componentPath") + val viewModel by field<Any?>("innerViewModel") + val moduleName by field<String>("moduleName") + val componentContext by field<WeakReference<Any?>>("componentContext") +}+ \ No newline at end of file