diff --git a/api/revanced-patches.api b/api/revanced-patches.api index c34624f3..320f2475 100644 --- a/api/revanced-patches.api +++ b/api/revanced-patches.api @@ -155,6 +155,12 @@ public final class app/revanced/patches/all/screenshot/removerestriction/RemoveS public static fun values ()[Lapp/revanced/patches/all/screenshot/removerestriction/RemoveScreenshotRestrictionPatch$MethodCall; } +public final class app/revanced/patches/all/shortcut/sharetargets/RemoveShareTargetsPatch : app/revanced/patcher/patch/ResourcePatch { + public static final field INSTANCE Lapp/revanced/patches/all/shortcut/sharetargets/RemoveShareTargetsPatch; + public synthetic fun execute (Lapp/revanced/patcher/data/Context;)V + public fun execute (Lapp/revanced/patcher/data/ResourceContext;)V +} + public final class app/revanced/patches/all/telephony/sim/spoof/SpoofSimCountryPatch : app/revanced/patches/all/misc/transformation/BaseTransformInstructionsPatch { public static final field INSTANCE Lapp/revanced/patches/all/telephony/sim/spoof/SpoofSimCountryPatch; public synthetic fun filterMap (Lcom/android/tools/smali/dexlib2/iface/ClassDef;Lcom/android/tools/smali/dexlib2/iface/Method;Lcom/android/tools/smali/dexlib2/iface/instruction/Instruction;I)Ljava/lang/Object; diff --git a/src/main/kotlin/app/revanced/patches/all/shortcut/sharetargets/RemoveShareTargetsPatch.kt b/src/main/kotlin/app/revanced/patches/all/shortcut/sharetargets/RemoveShareTargetsPatch.kt new file mode 100644 index 00000000..6e7fbb93 --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/all/shortcut/sharetargets/RemoveShareTargetsPatch.kt @@ -0,0 +1,32 @@ +package app.revanced.patches.all.shortcut.sharetargets + +import app.revanced.patcher.data.ResourceContext +import app.revanced.patcher.patch.ResourcePatch +import app.revanced.patcher.patch.annotation.Patch +import app.revanced.util.asSequence +import app.revanced.util.getNode +import org.w3c.dom.Element +import java.io.FileNotFoundException +import java.util.logging.Logger + +@Patch( + name = "Remove share targets", + description = "Removes share targets like directly sharing to a frequent contact.", + use = false, +) +@Suppress("unused") +object RemoveShareTargetsPatch : ResourcePatch() { + override fun execute(context: ResourceContext) { + try { + context.document["res/xml/shortcuts.xml"] + } catch (_: FileNotFoundException) { + return Logger.getLogger(this::class.java.name).warning("The app has no shortcuts") + }.use { document -> + val rootNode = document.getNode("shortcuts") as? Element ?: return@use + + document.getElementsByTagName("share-target").asSequence().forEach { + rootNode.removeChild(it) + } + } + } +}