mirror of
https://github.com/revanced/revanced-patches
synced 2024-11-09 09:47:05 +01:00
feat: dynamic-color
patch (#652)
This commit is contained in:
parent
62dd303995
commit
a16575b984
@ -0,0 +1,9 @@
|
|||||||
|
package app.revanced.patches.twitter.misc.dynamiccolor.annotations
|
||||||
|
|
||||||
|
import app.revanced.patcher.annotation.Compatibility
|
||||||
|
import app.revanced.patcher.annotation.Package
|
||||||
|
|
||||||
|
@Compatibility([Package("com.twitter.android")])
|
||||||
|
@Target(AnnotationTarget.CLASS)
|
||||||
|
@Retention(AnnotationRetention.RUNTIME)
|
||||||
|
internal annotation class DynamicColorCompatibility
|
@ -0,0 +1,89 @@
|
|||||||
|
package app.revanced.patches.twitter.misc.dynamiccolor.patch
|
||||||
|
|
||||||
|
import app.revanced.patcher.annotation.Description
|
||||||
|
import app.revanced.patcher.annotation.Name
|
||||||
|
import app.revanced.patcher.annotation.Version
|
||||||
|
import app.revanced.patcher.data.impl.ResourceData
|
||||||
|
import app.revanced.patcher.patch.PatchResult
|
||||||
|
import app.revanced.patcher.patch.PatchResultError
|
||||||
|
import app.revanced.patcher.patch.PatchResultSuccess
|
||||||
|
import app.revanced.patcher.patch.annotations.Patch
|
||||||
|
import app.revanced.patcher.patch.impl.ResourcePatch
|
||||||
|
import app.revanced.patches.twitter.misc.dynamiccolor.annotations.DynamicColorCompatibility
|
||||||
|
import java.nio.file.Files
|
||||||
|
|
||||||
|
@Patch
|
||||||
|
@Name("dynamic-color")
|
||||||
|
@Description("Replaces the default Twitter Blue with the users Material You palette.")
|
||||||
|
@DynamicColorCompatibility
|
||||||
|
@Version("0.0.1")
|
||||||
|
class DynamicColorPatch : ResourcePatch() {
|
||||||
|
override fun execute(data: ResourceData): PatchResult {
|
||||||
|
val resDirectory = data["res"]
|
||||||
|
if (!resDirectory.isDirectory) return PatchResultError("The res folder can not be found.")
|
||||||
|
|
||||||
|
val valuesV31Directory = resDirectory.resolve("values-v31")
|
||||||
|
if (!valuesV31Directory.isDirectory) Files.createDirectories(valuesV31Directory.toPath())
|
||||||
|
|
||||||
|
val valuesNightV31Directory = resDirectory.resolve("values-night-v31")
|
||||||
|
if (!valuesNightV31Directory.isDirectory) Files.createDirectories(valuesNightV31Directory.toPath())
|
||||||
|
|
||||||
|
listOf(valuesV31Directory, valuesNightV31Directory).forEach {
|
||||||
|
val colorsXml = it.resolve("colors.xml")
|
||||||
|
|
||||||
|
if(!colorsXml.exists()) {
|
||||||
|
Files.writeString(
|
||||||
|
colorsXml.toPath(),
|
||||||
|
"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" +
|
||||||
|
"<resources>\n" +
|
||||||
|
"</resources>"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
data.xmlEditor["res/values-v31/colors.xml"].use { editor ->
|
||||||
|
val document = editor.file
|
||||||
|
|
||||||
|
mapOf(
|
||||||
|
"ps__twitter_blue" to "@color/twitter_blue",
|
||||||
|
"ps__twitter_blue_pressed" to "@color/twitter_blue_fill_pressed",
|
||||||
|
"twitter_blue" to "@android:color/system_accent1_400",
|
||||||
|
"twitter_blue_fill_pressed" to "@android:color/system_accent1_300",
|
||||||
|
"twitter_blue_opacity_30" to "@android:color/system_accent1_100",
|
||||||
|
"twitter_blue_opacity_50" to "@android:color/system_accent1_200",
|
||||||
|
"twitter_blue_opacity_58" to "@android:color/system_accent1_300",
|
||||||
|
"deep_transparent_twitter_blue" to "@android:color/system_accent1_200",
|
||||||
|
"ic_launcher_background" to "#1DA1F2"
|
||||||
|
).forEach { (k, v) ->
|
||||||
|
val colorElement = document.createElement("color")
|
||||||
|
|
||||||
|
colorElement.setAttribute("name", k)
|
||||||
|
colorElement.textContent = v
|
||||||
|
|
||||||
|
document.getElementsByTagName("resources").item(0).appendChild(colorElement)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
data.xmlEditor["res/values-night-v31/colors.xml"].use { editor ->
|
||||||
|
val document = editor.file
|
||||||
|
|
||||||
|
mapOf(
|
||||||
|
"twitter_blue" to "@android:color/system_accent1_200",
|
||||||
|
"twitter_blue_fill_pressed" to "@android:color/system_accent1_300",
|
||||||
|
"twitter_blue_opacity_30" to "@android:color/system_accent1_50",
|
||||||
|
"twitter_blue_opacity_50" to "@android:color/system_accent1_100",
|
||||||
|
"twitter_blue_opacity_58" to "@android:color/system_accent1_200",
|
||||||
|
"deep_transparent_twitter_blue" to "@android:color/system_accent1_200"
|
||||||
|
).forEach { (k, v) ->
|
||||||
|
val colorElement = document.createElement("color")
|
||||||
|
|
||||||
|
colorElement.setAttribute("name", k)
|
||||||
|
colorElement.textContent = v
|
||||||
|
|
||||||
|
document.getElementsByTagName("resources").item(0).appendChild(colorElement)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return PatchResultSuccess()
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user