mirror of
https://github.com/rhunk/SnapEnhance.git
synced 2025-06-13 05:37:48 +02:00
fix: disable memories snap feed
This commit is contained in:
@ -19,7 +19,7 @@ data class ConfigKeyInfo(
|
|||||||
data class ConfigFilter(
|
data class ConfigFilter(
|
||||||
val filter: (ConfigKeyInfo) -> Boolean,
|
val filter: (ConfigKeyInfo) -> Boolean,
|
||||||
val defaultValue: (ConfigKeyInfo) -> Any?,
|
val defaultValue: (ConfigKeyInfo) -> Any?,
|
||||||
val isAppExperiment: Boolean = false
|
val isAppExperiment: Boolean?
|
||||||
)
|
)
|
||||||
|
|
||||||
class ConfigurationOverride : Feature("Configuration Override", loadParams = FeatureLoadParams.INIT_SYNC) {
|
class ConfigurationOverride : Feature("Configuration Override", loadParams = FeatureLoadParams.INIT_SYNC) {
|
||||||
@ -67,7 +67,6 @@ class ConfigurationOverride : Feature("Configuration Override", loadParams = Fea
|
|||||||
arrayOf("CUSTOM_AD_TRACKER_URL", "CUSTOM_AD_INIT_SERVER_URL", "CUSTOM_AD_SERVER_URL", "INIT_PRIMARY_URL", "INIT_SHADOW_URL", "GRAPHENE_HOST").forEach {
|
arrayOf("CUSTOM_AD_TRACKER_URL", "CUSTOM_AD_INIT_SERVER_URL", "CUSTOM_AD_SERVER_URL", "INIT_PRIMARY_URL", "INIT_SHADOW_URL", "GRAPHENE_HOST").forEach {
|
||||||
overrideProperty(it, { context.config.global.blockAds.get() }, { "http://127.0.0.1" })
|
overrideProperty(it, { context.config.global.blockAds.get() }, { "http://127.0.0.1" })
|
||||||
}
|
}
|
||||||
overrideProperty("ENABLE_SNAP_FEED", { context.config.global.disableMemoriesSnapFeed.get() }, { false })
|
|
||||||
|
|
||||||
classReference.getAsClass()?.hook(
|
classReference.getAsClass()?.hook(
|
||||||
getProperty.getAsString()!!,
|
getProperty.getAsString()!!,
|
||||||
@ -110,7 +109,7 @@ class ConfigurationOverride : Feature("Configuration Override", loadParams = Fea
|
|||||||
return@hook
|
return@hook
|
||||||
}
|
}
|
||||||
propertyOverrides[keyInfo.name]?.let { (filter, value, isAppExperiment) ->
|
propertyOverrides[keyInfo.name]?.let { (filter, value, isAppExperiment) ->
|
||||||
if (!isAppExperiment || !filter(keyInfo)) return@let
|
if (isAppExperiment != true || !filter(keyInfo)) return@let
|
||||||
param.setResult(value(keyInfo))
|
param.setResult(value(keyInfo))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -134,7 +133,7 @@ class ConfigurationOverride : Feature("Configuration Override", loadParams = Fea
|
|||||||
}
|
}
|
||||||
|
|
||||||
val propertyOverride = propertyOverrides[keyInfo.name] ?: return@hook
|
val propertyOverride = propertyOverrides[keyInfo.name] ?: return@hook
|
||||||
if (propertyOverride.isAppExperiment && propertyOverride.filter(keyInfo)) param.setResult(true)
|
propertyOverride.isAppExperiment.takeIf { propertyOverride.filter(keyInfo) }?.let { param.setResult(it) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -0,0 +1,27 @@
|
|||||||
|
package me.rhunk.snapenhance.core.features.impl.global
|
||||||
|
|
||||||
|
import me.rhunk.snapenhance.core.features.Feature
|
||||||
|
import me.rhunk.snapenhance.core.features.FeatureLoadParams
|
||||||
|
import me.rhunk.snapenhance.core.util.hook.HookStage
|
||||||
|
import me.rhunk.snapenhance.core.util.hook.hook
|
||||||
|
import me.rhunk.snapenhance.mapper.impl.MemoriesPresenterMapper
|
||||||
|
|
||||||
|
class DisableMemoriesSnapFeed : Feature("Disable Memories Snap Feed", loadParams = FeatureLoadParams.ACTIVITY_CREATE_SYNC) {
|
||||||
|
override fun onActivityCreate() {
|
||||||
|
if (!context.config.global.disableMemoriesSnapFeed.get()) return
|
||||||
|
|
||||||
|
context.mappings.useMapper(MemoriesPresenterMapper::class) {
|
||||||
|
classReference.get()?.apply {
|
||||||
|
val getNameMethod = getMethod("getName") ?: return@apply
|
||||||
|
|
||||||
|
hook(onNavigationEventMethod.get()!!, HookStage.BEFORE) { param ->
|
||||||
|
val instance = param.thisObject<Any>()
|
||||||
|
|
||||||
|
if (getNameMethod.invoke(instance) == "MemoriesAsyncPresenterFragmentSubscriber") {
|
||||||
|
param.setResult(null)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -121,6 +121,7 @@ class FeatureManager(
|
|||||||
SessionEvents(),
|
SessionEvents(),
|
||||||
DefaultVolumeControls(),
|
DefaultVolumeControls(),
|
||||||
CallRecorder(),
|
CallRecorder(),
|
||||||
|
DisableMemoriesSnapFeed(),
|
||||||
)
|
)
|
||||||
|
|
||||||
initializeFeatures()
|
initializeFeatures()
|
||||||
|
@ -34,6 +34,7 @@ class ClassMapper(
|
|||||||
ViewBinderMapper(),
|
ViewBinderMapper(),
|
||||||
FriendingDataSourcesMapper(),
|
FriendingDataSourcesMapper(),
|
||||||
OperaViewerParamsMapper(),
|
OperaViewerParamsMapper(),
|
||||||
|
MemoriesPresenterMapper(),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -0,0 +1,25 @@
|
|||||||
|
package me.rhunk.snapenhance.mapper.impl
|
||||||
|
|
||||||
|
import me.rhunk.snapenhance.mapper.AbstractClassMapper
|
||||||
|
import me.rhunk.snapenhance.mapper.ext.findConstString
|
||||||
|
import me.rhunk.snapenhance.mapper.ext.getClassName
|
||||||
|
|
||||||
|
class MemoriesPresenterMapper : AbstractClassMapper("MemoriesPresenter") {
|
||||||
|
val classReference = classReference("class")
|
||||||
|
val onNavigationEventMethod = string("onNavigationEventMethod")
|
||||||
|
|
||||||
|
init {
|
||||||
|
mapper {
|
||||||
|
for (clazz in classes) {
|
||||||
|
if (clazz.interfaces.size != 1) continue
|
||||||
|
val getNameMethod = clazz.methods.firstOrNull { it.name == "getName" } ?: continue
|
||||||
|
if (getNameMethod.implementation?.findConstString("MemoriesAsyncPresenterFragmentSubscriber") != true) continue
|
||||||
|
|
||||||
|
val onNavigationEvent = clazz.methods.firstOrNull { it.implementation?.findConstString("Memories") == true } ?: continue
|
||||||
|
|
||||||
|
classReference.set(clazz.getClassName())
|
||||||
|
onNavigationEventMethod.set(onNavigationEvent.name)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user