feat(core/ui_tweaks): hide billboard prompt

This commit is contained in:
rhunk
2024-08-12 19:15:49 +02:00
parent 986dbad983
commit 9f0fecbf89
5 changed files with 33 additions and 1 deletions

View File

@@ -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",

View File

@@ -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() }

View File

@@ -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")) ||

View File

@@ -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)

View File

@@ -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")
}