mirror of
https://github.com/inotia00/revanced-patches.git
synced 2025-05-03 16:14:28 +02:00
refactor(music/settings): integrate the preferences of the return-youtube-dislike
setting into the existing settings
This commit is contained in:
parent
d2cf10b01d
commit
31df1c67a6
@ -9,9 +9,10 @@ import app.revanced.patcher.patch.annotations.Patch
|
|||||||
import app.revanced.patches.music.utils.annotations.MusicCompatibility
|
import app.revanced.patches.music.utils.annotations.MusicCompatibility
|
||||||
import app.revanced.patches.music.utils.returnyoutubedislike.bytecode.patch.ReturnYouTubeDislikeBytecodePatch
|
import app.revanced.patches.music.utils.returnyoutubedislike.bytecode.patch.ReturnYouTubeDislikeBytecodePatch
|
||||||
import app.revanced.patches.music.utils.settings.resource.patch.SettingsPatch
|
import app.revanced.patches.music.utils.settings.resource.patch.SettingsPatch
|
||||||
import app.revanced.util.resources.MusicResourceHelper.hookPreference
|
import app.revanced.util.resources.MusicResourceHelper.RETURN_YOUTUBE_DISLIKE_SETTINGS_KEY
|
||||||
import app.revanced.util.resources.ResourceUtils
|
import app.revanced.util.resources.MusicResourceHelper.addReVancedMusicPreference
|
||||||
import app.revanced.util.resources.ResourceUtils.copyResources
|
import org.w3c.dom.Element
|
||||||
|
import org.w3c.dom.Node
|
||||||
|
|
||||||
@Patch
|
@Patch
|
||||||
@Name("Return YouTube Dislike")
|
@Name("Return YouTube Dislike")
|
||||||
@ -26,35 +27,93 @@ import app.revanced.util.resources.ResourceUtils.copyResources
|
|||||||
class ReturnYouTubeDislikePatch : ResourcePatch {
|
class ReturnYouTubeDislikePatch : ResourcePatch {
|
||||||
override fun execute(context: ResourceContext) {
|
override fun execute(context: ResourceContext) {
|
||||||
|
|
||||||
/**
|
context.addReVancedMusicPreference(RETURN_YOUTUBE_DISLIKE_SETTINGS_KEY)
|
||||||
* Copy preference
|
context.addSwitchPreference("revanced_ryd_enabled", "true")
|
||||||
*/
|
context.addSwitchPreference("revanced_ryd_dislike_percentage", "false", "revanced_ryd_enabled")
|
||||||
arrayOf(
|
context.addSwitchPreference("revanced_ryd_compact_layout", "false", "revanced_ryd_enabled")
|
||||||
ResourceUtils.ResourceGroup(
|
context.addPreferenceCategory("revanced_ryd_about")
|
||||||
"xml",
|
context.addAboutPreference("revanced_ryd_attribution")
|
||||||
"returnyoutubedislike_prefs.xml"
|
|
||||||
)
|
|
||||||
).forEach { resourceGroup ->
|
|
||||||
context.copyResources("music/returnyoutubedislike", resourceGroup)
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Hook RYD preference
|
|
||||||
*/
|
|
||||||
context.hookPreference(
|
|
||||||
"revanced_ryd_settings",
|
|
||||||
"com.google.android.apps.youtube.music.settings.fragment.AdvancedPrefsFragmentCompat"
|
|
||||||
)
|
|
||||||
|
|
||||||
val publicFile = context["res/values/public.xml"]
|
|
||||||
|
|
||||||
publicFile.writeText(
|
|
||||||
publicFile.readText()
|
|
||||||
.replace(
|
|
||||||
"\"advanced_prefs_compat\"",
|
|
||||||
"\"returnyoutubedislike_prefs\""
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private companion object {
|
||||||
|
const val YOUTUBE_MUSIC_SETTINGS_PATH = "res/xml/settings_headers.xml"
|
||||||
|
const val SWITCH_PREFERENCE_TAG_NAME =
|
||||||
|
"com.google.android.apps.youtube.music.ui.preference.SwitchCompatPreference"
|
||||||
|
const val PREFERENCE_CATEGORY_TAG_NAME =
|
||||||
|
"com.google.android.apps.youtube.music.ui.preference.PreferenceCategoryCompat"
|
||||||
|
|
||||||
|
private fun Node.adoptChild(tagName: String, block: Element.() -> Unit) {
|
||||||
|
val child = ownerDocument.createElement(tagName)
|
||||||
|
child.block()
|
||||||
|
appendChild(child)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun ResourceContext.addAboutPreference(
|
||||||
|
key: String
|
||||||
|
) {
|
||||||
|
this.xmlEditor[YOUTUBE_MUSIC_SETTINGS_PATH].use { editor ->
|
||||||
|
val tags = editor.file.getElementsByTagName(PREFERENCE_CATEGORY_TAG_NAME)
|
||||||
|
List(tags.length) { tags.item(it) as Element }
|
||||||
|
.filter { it.getAttribute("android:key").contains("revanced_ryd_about") }
|
||||||
|
.forEach {
|
||||||
|
it.adoptChild("Preference") {
|
||||||
|
setAttribute("android:title", "@string/$key" + "_title")
|
||||||
|
setAttribute("android:summary", "@string/$key" + "_summary")
|
||||||
|
setAttribute("android:key", key)
|
||||||
|
this.adoptChild("intent") {
|
||||||
|
setAttribute("android:action", "android.intent.action.VIEW")
|
||||||
|
setAttribute("android:data", "https://returnyoutubedislike.com")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun ResourceContext.addPreferenceCategory(
|
||||||
|
category: String
|
||||||
|
) {
|
||||||
|
this.xmlEditor[YOUTUBE_MUSIC_SETTINGS_PATH].use { editor ->
|
||||||
|
val tags = editor.file.getElementsByTagName("PreferenceScreen")
|
||||||
|
List(tags.length) { tags.item(it) as Element }
|
||||||
|
.filter { it.getAttribute("android:key").contains(RETURN_YOUTUBE_DISLIKE_SETTINGS_KEY) }
|
||||||
|
.forEach {
|
||||||
|
it.adoptChild(PREFERENCE_CATEGORY_TAG_NAME) {
|
||||||
|
setAttribute("android:title", "@string/$category")
|
||||||
|
setAttribute("android:key", category)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun ResourceContext.addSwitchPreference(
|
||||||
|
key: String,
|
||||||
|
defaultValue: String
|
||||||
|
) {
|
||||||
|
addSwitchPreference(key, defaultValue, "")
|
||||||
|
}
|
||||||
|
|
||||||
|
fun ResourceContext.addSwitchPreference(
|
||||||
|
key: String,
|
||||||
|
defaultValue: String,
|
||||||
|
dependencyKey: String
|
||||||
|
) {
|
||||||
|
this.xmlEditor[YOUTUBE_MUSIC_SETTINGS_PATH].use { editor ->
|
||||||
|
val tags = editor.file.getElementsByTagName("PreferenceScreen")
|
||||||
|
List(tags.length) { tags.item(it) as Element }
|
||||||
|
.filter { it.getAttribute("android:key").contains(RETURN_YOUTUBE_DISLIKE_SETTINGS_KEY) }
|
||||||
|
.forEach {
|
||||||
|
it.adoptChild(SWITCH_PREFERENCE_TAG_NAME) {
|
||||||
|
setAttribute("android:title", "@string/$key" + "_title")
|
||||||
|
setAttribute("android:summary", "@string/$key" + "_summary")
|
||||||
|
setAttribute("android:key", key)
|
||||||
|
if (dependencyKey.isNotEmpty()) {
|
||||||
|
setAttribute("android:dependency", dependencyKey)
|
||||||
|
}
|
||||||
|
setAttribute("android:defaultValue", defaultValue)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
@ -31,6 +31,8 @@ internal object MusicResourceHelper {
|
|||||||
|
|
||||||
internal const val YOUTUBE_MUSIC_SETTINGS_KEY = "revanced_extended_settings"
|
internal const val YOUTUBE_MUSIC_SETTINGS_KEY = "revanced_extended_settings"
|
||||||
|
|
||||||
|
internal const val RETURN_YOUTUBE_DISLIKE_SETTINGS_KEY = "revanced_ryd_settings"
|
||||||
|
|
||||||
private const val YOUTUBE_MUSIC_PREFERENCE_SCREEN_TAG_NAME =
|
private const val YOUTUBE_MUSIC_PREFERENCE_SCREEN_TAG_NAME =
|
||||||
"PreferenceScreen"
|
"PreferenceScreen"
|
||||||
|
|
||||||
@ -40,7 +42,7 @@ internal object MusicResourceHelper {
|
|||||||
private const val YOUTUBE_MUSIC_PREFERENCE_TARGET_CLASS =
|
private const val YOUTUBE_MUSIC_PREFERENCE_TARGET_CLASS =
|
||||||
"com.google.android.libraries.strictmode.penalties.notification.FullStackTraceActivity"
|
"com.google.android.libraries.strictmode.penalties.notification.FullStackTraceActivity"
|
||||||
|
|
||||||
private var targetPackage = "com.google.android.apps.youtube.music"
|
internal var targetPackage = "com.google.android.apps.youtube.music"
|
||||||
|
|
||||||
internal fun ResourceContext.setMicroG(newPackage: String) {
|
internal fun ResourceContext.setMicroG(newPackage: String) {
|
||||||
targetPackage = newPackage
|
targetPackage = newPackage
|
||||||
|
@ -1,12 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<PreferenceScreen
|
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:yt="http://schemas.android.com/apk/res-auto">
|
|
||||||
<com.google.android.apps.youtube.music.ui.preference.SwitchCompatPreference android:title="@string/revanced_ryd_enabled_title" android:key="revanced_ryd_enabled" android:summary="@string/revanced_ryd_enabled_summary" android:defaultValue="true" />
|
|
||||||
<com.google.android.apps.youtube.music.ui.preference.SwitchCompatPreference android:title="@string/revanced_ryd_dislike_percentage_title" android:key="revanced_ryd_dislike_percentage" android:summary="@string/revanced_ryd_dislike_percentage_summary" android:dependency="revanced_ryd_enabled" android:defaultValue="false" />
|
|
||||||
<com.google.android.apps.youtube.music.ui.preference.SwitchCompatPreference android:title="@string/revanced_ryd_compact_layout_title" android:key="revanced_ryd_compact_layout" android:summary="@string/revanced_ryd_compact_layout_summary" android:dependency="revanced_ryd_enabled" android:defaultValue="false" />
|
|
||||||
<com.google.android.apps.youtube.music.ui.preference.PreferenceCategoryCompat android:title="@string/revanced_ryd_about" android:key="about">
|
|
||||||
<Preference android:title="@string/revanced_ryd_attribution_title" android:key="revanced_ryd_attribution" android:summary="@string/revanced_ryd_attribution_summary">
|
|
||||||
<intent android:action="android.intent.action.VIEW" android:data="https://returnyoutubedislike.com" />
|
|
||||||
</Preference>
|
|
||||||
</com.google.android.apps.youtube.music.ui.preference.PreferenceCategoryCompat>
|
|
||||||
</PreferenceScreen>
|
|
Loading…
x
Reference in New Issue
Block a user