refactor(music-settings): rebase integrations

This commit is contained in:
inotia00
2023-04-28 11:13:27 +09:00
parent d30aa88904
commit 02682b31ba
41 changed files with 325 additions and 113 deletions

View File

@ -0,0 +1,7 @@
package app.revanced.util.enum
internal enum class CategoryType(val value: String) {
ADS("ads"),
LAYOUT("layout"),
MISC("misc")
}

View File

@ -5,9 +5,7 @@ internal object Constants {
const val PATCHES_PATH = "$INTEGRATIONS_PATH/patches"
const val ADS_PATH = "$PATCHES_PATH/ads"
const val SWIPE_PATH = "$PATCHES_PATH/swipe"
const val BOTTOM_PLAYER = "$PATCHES_PATH/layout/BottomPlayerPatch;"
const val FLYOUT_PANEL = "$PATCHES_PATH/layout/FlyoutPanelPatch;"
const val FULLSCREEN = "$PATCHES_PATH/layout/FullscreenPatch;"
@ -16,15 +14,16 @@ internal object Constants {
const val PLAYER = "$PATCHES_PATH/layout/PlayerPatch;"
const val SEEKBAR = "$PATCHES_PATH/layout/SeekBarPatch;"
const val SHORTS = "$PATCHES_PATH/layout/ShortsPatch;"
const val MISC_PATH = "$PATCHES_PATH/misc"
const val MUSIC_PATH = "$PATCHES_PATH/music"
const val BUTTON_PATH = "$PATCHES_PATH/button"
const val VIDEO_PATH = "$PATCHES_PATH/video"
const val UTILS_PATH = "$PATCHES_PATH/utils"
const val MUSIC_SETTINGS_PATH = "$INTEGRATIONS_PATH/settings/MusicSettings;"
const val MUSIC_INTEGRATIONS_PATH = "Lapp/revanced/music"
private const val MUSIC_PATCHES_PATH = "$MUSIC_INTEGRATIONS_PATH/patches"
const val MUSIC_ADS_PATH = "$MUSIC_PATCHES_PATH/ads"
const val MUSIC_LAYOUT = "$MUSIC_PATCHES_PATH/layout/LayoutPatch;"
const val MUSIC_MISC_PATH = "$MUSIC_PATCHES_PATH/misc"
const val MUSIC_UTILS_PATH = "$MUSIC_PATCHES_PATH/utils"
}

View File

@ -34,8 +34,17 @@ internal object MusicResourceHelper {
private const val YOUTUBE_MUSIC_PREFERENCE_TAG_NAME = "com.google.android.apps.youtube.music.ui.preference.SwitchCompatPreference"
private const val YOUTUBE_MUSIC_PREFERENCE_TARGET_CLASS = "com.google.android.libraries.strictmode.penalties.notification.FullStackTraceActivity"
private var currentMusicPreferenceCategory = emptyArray<String>()
private var targetPackage = "com.google.android.apps.youtube.music"
internal fun ResourceContext.setMicroG (newPackage: String) {
targetPackage = newPackage
replacePackageName()
}
private fun setMusicPreferenceCategory (newCategory: String) {
currentMusicPreferenceCategory += listOf(newCategory)
}
@ -59,20 +68,27 @@ internal object MusicResourceHelper {
}
}
internal fun ResourceContext.sortMusicPreferenceCategory() {
internal fun ResourceContext.sortMusicPreferenceCategory(
category: String
) {
this.xmlEditor[YOUTUBE_MUSIC_SETTINGS_PATH].use { editor ->
editor.file.doRecursively loop@{
if (it !is Element) return@loop
currentMusicPreferenceCategory.forEach { category ->
it.getAttributeNode("android:key")?.let { attribute ->
if (attribute.textContent == "revanced_settings_$category") {
it.cloneNodes(it.parentNode)
}
it.getAttributeNode("android:key")?.let { attribute ->
if (attribute.textContent == "revanced_settings_$category") {
it.cloneNodes(it.parentNode)
}
}
}
}
replacePackageName()
}
private fun ResourceContext.replacePackageName(){
this[YOUTUBE_MUSIC_SETTINGS_PATH].writeText(
this[YOUTUBE_MUSIC_SETTINGS_PATH].readText().replace("\"com.google.android.apps.youtube.music", "\"" + targetPackage)
)
}
internal fun ResourceContext.addMusicPreference(
@ -95,6 +111,54 @@ internal object MusicResourceHelper {
}
}
internal fun ResourceContext.addMusicPreferenceAlt(
category: String,
key: String,
defaultValue: String,
dependencyKey: String
) {
this.xmlEditor[YOUTUBE_MUSIC_SETTINGS_PATH].use { editor ->
val tags = editor.file.getElementsByTagName(YOUTUBE_MUSIC_CATEGORY_TAG_NAME)
List(tags.length) { tags.item(it) as Element }
.filter { it.getAttribute("android:key").contains("revanced_settings_$category") }
.forEach {
it.adoptChild(YOUTUBE_MUSIC_PREFERENCE_TAG_NAME) {
setAttribute("android:title", "@string/$key" + "_title")
setAttribute("android:summaryOn", "@string/$key" + "_summary_on")
setAttribute("android:summaryOff", "@string/$key" + "_summary_off")
setAttribute("android:key", key)
setAttribute("android:defaultValue", defaultValue)
setAttribute("android:dependency", dependencyKey)
}
}
}
}
internal fun ResourceContext.addMusicPreferenceWithIntent(
category: String,
key: String,
dependencyKey: String
) {
this.xmlEditor[YOUTUBE_MUSIC_SETTINGS_PATH].use { editor ->
val tags = editor.file.getElementsByTagName(YOUTUBE_MUSIC_CATEGORY_TAG_NAME)
List(tags.length) { tags.item(it) as Element }
.filter { it.getAttribute("android:key").contains("revanced_settings_$category") }
.forEach {
it.adoptChild("Preference") {
setAttribute("android:title", "@string/$key" + "_title")
setAttribute("android:summary", "@string/$key" + "_summary")
setAttribute("android:key", key)
setAttribute("android:dependency", dependencyKey)
this.adoptChild("intent") {
setAttribute("android:targetPackage", targetPackage)
setAttribute("android:data", key)
setAttribute("android:targetClass", YOUTUBE_MUSIC_PREFERENCE_TARGET_CLASS)
}
}
}
}
}
internal fun ResourceContext.addReVancedMusicPreference() {
this.xmlEditor[YOUTUBE_MUSIC_SETTINGS_PATH].use { editor ->
with (editor.file) {