revanced-patches-ex/src/main/kotlin/app/revanced/shared/patches/settings/AbstractSettingsResourcePatch.kt
2022-12-26 00:04:58 +09:00

48 lines
1.8 KiB
Kotlin

package app.revanced.shared.patches.settings
import app.revanced.patcher.data.ResourceContext
import app.revanced.patcher.patch.PatchResult
import app.revanced.patcher.patch.PatchResultSuccess
import app.revanced.patcher.patch.ResourcePatch
import app.revanced.shared.util.resources.ResourceHelper
import app.revanced.shared.util.resources.ResourceUtils
import app.revanced.shared.util.resources.ResourceUtils.copyResources
import app.revanced.shared.util.resources.ResourceUtils.copyXmlNode
/**
* Abstract settings resource patch
*
* @param sourceDirectory Source directory to copy the preference template from
* @param sourcehostDirectory Source directory to copy the preference template from
*/
abstract class AbstractSettingsResourcePatch(
private val sourceDirectory: String,
private val sourcehostDirectory: String,
private val isYouTube: Boolean,
) : ResourcePatch {
override fun execute(context: ResourceContext): PatchResult {
/*
* used for self-restart
*/
context.xmlEditor["AndroidManifest.xml"].use { editor ->
editor.file.getElementsByTagName("manifest").item(0).also {
it.appendChild(it.ownerDocument.createElement("uses-permission").also { element ->
element.setAttribute("android:name", "android.permission.SCHEDULE_EXACT_ALARM")
})
}
}
/*
* Copy strings
*/
context.copyXmlNode(sourcehostDirectory, "values/strings.xml", "resources")
/* initialize ReVanced Settings */
if (isYouTube == true) {
context.copyResources(sourceDirectory, ResourceUtils.ResourceGroup("xml", "revanced_prefs.xml"))
ResourceHelper.initReVancedSettings(context)
}
return PatchResultSuccess()
}
}