fix(YouTube - MaterialYou): Theme not applied to notification dots in YouTube 19.34.42+

This commit is contained in:
inotia00
2024-12-17 13:07:23 +09:00
parent 7991caa962
commit 98f26a228a
5 changed files with 112 additions and 41 deletions

View File

@ -6,9 +6,9 @@ import app.revanced.patches.youtube.utils.patch.PatchList.MATERIALYOU
import app.revanced.patches.youtube.utils.settings.ResourceUtils.addPreference
import app.revanced.patches.youtube.utils.settings.ResourceUtils.updatePatchStatusTheme
import app.revanced.patches.youtube.utils.settings.settingsPatch
import app.revanced.util.ResourceGroup
import app.revanced.util.copyResources
import app.revanced.util.copyXmlNode
import org.w3c.dom.Element
import java.nio.file.Files
@Suppress("unused")
val materialYouPatch = resourcePatch(
@ -24,24 +24,117 @@ val materialYouPatch = resourcePatch(
)
execute {
arrayOf(
ResourceGroup(
fun patchXmlFile(
fromDir: String,
toDir: String,
xmlFileName: String,
parentNode: String,
targetNode: String? = null,
attribute: String,
newValue: String
) {
val resourceDirectory = get("res")
val fromDirectory = resourceDirectory.resolve(fromDir)
val toDirectory = resourceDirectory.resolve(toDir)
if (!toDirectory.isDirectory) Files.createDirectories(toDirectory.toPath())
val fromXmlFile = fromDirectory.resolve(xmlFileName)
val toXmlFile = toDirectory.resolve(xmlFileName)
if (!fromXmlFile.exists()) {
return
}
if (!toXmlFile.exists()) {
Files.copy(
fromXmlFile.toPath(),
toXmlFile.toPath()
)
}
document("res/$toDir/$xmlFileName").use { document ->
val parentList = document.getElementsByTagName(parentNode).item(0) as Element
if (targetNode != null) {
for (i in 0 until parentList.childNodes.length) {
val node = parentList.childNodes.item(i) as? Element ?: continue
if (node.nodeName == targetNode && node.hasAttribute(attribute)) {
node.getAttributeNode(attribute).textContent = newValue
}
}
} else {
if (parentList.hasAttribute(attribute)) {
parentList.getAttributeNode(attribute).textContent = newValue
}
}
}
}
patchXmlFile(
"drawable",
"drawable-night-v31",
"new_content_dot_background.xml"
),
ResourceGroup(
"new_content_dot_background.xml",
"shape",
"solid",
"android:color",
"@android:color/system_accent1_100"
)
patchXmlFile(
"drawable",
"drawable-night-v31",
"new_content_dot_background_cairo.xml",
"shape",
"solid",
"android:color",
"@android:color/system_accent1_100"
)
patchXmlFile(
"drawable",
"drawable-v31",
"new_content_dot_background.xml",
"shape",
"solid",
"android:color",
"@android:color/system_accent1_200"
)
patchXmlFile(
"drawable",
"drawable-v31",
"new_content_dot_background_cairo.xml",
"shape",
"solid",
"android:color",
"@android:color/system_accent1_200"
)
patchXmlFile(
"drawable",
"drawable-v31",
"new_content_count_background.xml",
"new_content_dot_background.xml"
),
ResourceGroup(
"layout-v31",
"new_content_count.xml"
"shape",
"solid",
"android:color",
"@android:color/system_accent1_100"
)
patchXmlFile(
"drawable",
"drawable-v31",
"new_content_count_background_cairo.xml",
"shape",
"solid",
"android:color",
"@android:color/system_accent1_100"
)
patchXmlFile(
"layout",
"layout-v31",
"new_content_count.xml",
"TextView",
null,
"android:textColor",
"@android:color/system_neutral1_900"
)
).forEach {
get("res/${it.resourceDirectoryName}").mkdirs()
copyResources("youtube/materialyou", it)
}
copyXmlNode("youtube/materialyou/host", "values-v31/colors.xml", "resources")

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<shape android:shape="oval"
xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@android:color/system_accent1_100" />
<stroke android:width="@dimen/new_content_badge_stroke_width" android:color="?ytBrandBackgroundSolid" />
</shape>

View File

@ -1,7 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<shape android:shape="rectangle"
xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@android:color/system_accent1_100" />
<stroke android:width="@dimen/new_content_badge_stroke_width" android:color="?ytBrandBackgroundSolid" />
<corners android:radius="@dimen/new_content_count_radius" />
</shape>

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<shape android:shape="oval"
xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@android:color/system_accent1_200" />
<stroke android:width="@dimen/new_content_badge_stroke_width" android:color="?ytBrandBackgroundSolid" />
</shape>

View File

@ -1,3 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<TextView android:textSize="12.0sp" android:textColor="@android:color/system_neutral1_900" android:gravity="center" android:id="@id/new_content_count" android:background="@drawable/new_content_count_background" android:paddingTop="0.0dip" android:paddingBottom="0.0dip" android:layout_width="wrap_content" android:layout_height="20.0sp" android:minWidth="20.0sp" android:includeFontPadding="false" android:paddingStart="6.0sp" android:paddingEnd="6.0sp"
xmlns:android="http://schemas.android.com/apk/res/android" />