feat(experiments): disable composer modules

This commit is contained in:
rhunk
2023-11-26 17:47:54 +01:00
parent 284417b87d
commit a6d5d289a4
9 changed files with 62 additions and 3 deletions

View File

@ -149,7 +149,8 @@ class ModContext(
native.loadNativeConfig(
NativeConfig(
disableBitmoji = config.experimental.nativeHooks.disableBitmoji.get(),
disableMetrics = config.global.disableMetrics.get()
disableMetrics = config.global.disableMetrics.get(),
hookAssetOpen = config.experimental.disableComposerModules.get().isNotEmpty()
)
)
}

View File

@ -0,0 +1,22 @@
package me.rhunk.snapenhance.core.features.impl.experiments
import me.rhunk.snapenhance.core.features.Feature
import me.rhunk.snapenhance.core.features.FeatureLoadParams
class DisableComposerModules : Feature("Disable Composer Modules", FeatureLoadParams.INIT_SYNC) {
override fun init() {
val disabledComposerModules = context.config.experimental.disableComposerModules.get().takeIf { it.isNotEmpty() }
?.replace(" ", "")
?.split(",")
?: return
context.native.nativeShouldLoadAsset = callback@{ assetName ->
if (!assetName.endsWith(".composermodule")) return@callback true
val moduleName = assetName.replace(".composermodule", "")
disabledComposerModules.contains(moduleName).not().also {
if (it) context.log.debug("Loading $moduleName composer module")
else context.log.warn("Skipping $moduleName composer module")
}
}
}
}

View File

@ -109,6 +109,7 @@ class FeatureManager(
HalfSwipeNotifier::class,
DisableConfirmationDialogs::class,
Stories::class,
DisableComposerModules::class,
)
initializeFeatures()