Skip to content

Commit e30f194

Browse files
committed
Add About in ReVanced Settings
1 parent 8580a8f commit e30f194

File tree

6 files changed

+96
-4
lines changed

6 files changed

+96
-4
lines changed

app/build.gradle.kts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ android {
1515
applicationId = "io.github.chsbuffer.revancedxposed"
1616
versionCode = 18
1717
versionName = "1.0.$versionCode"
18+
val patchVersion = "5.27.0"
19+
buildConfigField("String", "PATCH_VERSION", "\"$patchVersion\"")
1820
}
1921
flavorDimensions += "abi"
2022
productFlavors {

app/src/main/java/app/revanced/extension/shared/Utils.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ private Utils() {
7676
*/
7777
@SuppressWarnings("SameReturnValue")
7878
public static String getPatchesReleaseVersion() {
79-
return BuildConfig.VERSION_NAME;
79+
return BuildConfig.PATCH_VERSION;
8080
}
8181

8282
private static PackageInfo getPackageInfo() throws PackageManager.NameNotFoundException {

app/src/main/java/app/revanced/extension/shared/requests/Requester.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
1+
/*
2+
* Custom changes: custom http agent
3+
* */
14
package app.revanced.extension.shared.requests;
25

36
import app.revanced.extension.shared.Utils;
7+
import io.github.chsbuffer.revancedxposed.BuildConfig;
8+
49
import org.json.JSONArray;
510
import org.json.JSONException;
611
import org.json.JSONObject;
@@ -29,7 +34,7 @@ public static HttpURLConnection getConnectionFromCompiledRoute(String apiUrl, Ro
2934
connection.setRequestMethod(route.getMethod().name());
3035
String agentString = System.getProperty("http.agent")
3136
+ "; ReVancedXposed/" + Utils.getAppVersionName()
32-
+ " (" + Utils.getPatchesReleaseVersion() + ")";
37+
+ " (" + BuildConfig.VERSION_NAME + ")";
3338
connection.setRequestProperty("User-Agent", agentString);
3439

3540
return connection;

app/src/main/java/app/revanced/extension/shared/settings/preference/ReVancedAboutPreference.java

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
/*
2+
* custom change:
3+
* Add ReVanced Xposed links
4+
* */
15
package app.revanced.extension.shared.settings.preference;
26

37
import static app.revanced.extension.shared.StringRef.str;
@@ -35,6 +39,7 @@
3539
import app.revanced.extension.shared.Utils;
3640
import app.revanced.extension.shared.requests.Requester;
3741
import app.revanced.extension.shared.requests.Route;
42+
import io.github.chsbuffer.revancedxposed.BuildConfig;
3843

3944
/**
4045
* Opens a dialog showing official links.
@@ -94,6 +99,37 @@ private String createDialogHtml(WebLink[] aboutLinks) {
9499
"<style> body { background-color: %s; color: %s; } a { color: %s; } </style>",
95100
backgroundColorHex, foregroundColorHex, foregroundColorHex));
96101

102+
//region Add ReVancedXposed
103+
builder.append("<h1>")
104+
.append("ReVanced Xposed")
105+
.append("</h1>");
106+
107+
builder.append("<p>")
108+
// Replace hyphens with non breaking dashes so the version number does not break lines.
109+
.append(useNonBreakingHyphens("Version <i>" + BuildConfig.VERSION_NAME + "</i>"))
110+
.append("</p>");
111+
112+
builder.append("<h2 style=\"margin-top: 30px;\">")
113+
.append("Links")
114+
.append("</h2>");
115+
116+
var myLinks = new WebLink[]{
117+
new WebLink(true, "GitHub", "https://github.com/chsbuffer/ReVancedXposed"),
118+
new WebLink(true, "Discord", "https://discord.gg/QWUrAA2mKq"),
119+
new WebLink(true, "Telegram", "https://t.me/ReVancedXposed"),
120+
new WebLink(true, "Donate", "https://afdian.com/a/ChsBuffer"),
121+
};
122+
123+
builder.append("<div>");
124+
for (WebLink link : myLinks) {
125+
builder.append("<div style=\"margin-bottom: 20px;\">");
126+
builder.append(String.format("<a href=\"%s\">%s</a>", link.url, link.name));
127+
builder.append("</div>");
128+
}
129+
builder.append("</div>");
130+
131+
//endregion
132+
97133
if (isNetworkConnected) {
98134
builder.append("<img style=\"width: 100px; height: 100px;\" "
99135
// Hide the image if it does not load.
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package app.revanced.extension.youtube.settings.preference;
2+
3+
import android.content.Context;
4+
import android.util.AttributeSet;
5+
6+
import app.revanced.extension.shared.settings.preference.ReVancedAboutPreference;
7+
import app.revanced.extension.youtube.ThemeHelper;
8+
9+
@SuppressWarnings("unused")
10+
public class ReVancedYouTubeAboutPreference extends ReVancedAboutPreference {
11+
12+
public int getLightColor() {
13+
return ThemeHelper.getLightThemeColor();
14+
}
15+
16+
public int getDarkColor() {
17+
return ThemeHelper.getDarkThemeColor();
18+
}
19+
20+
public ReVancedYouTubeAboutPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
21+
super(context, attrs, defStyleAttr, defStyleRes);
22+
}
23+
public ReVancedYouTubeAboutPreference(Context context, AttributeSet attrs, int defStyleAttr) {
24+
super(context, attrs, defStyleAttr);
25+
}
26+
public ReVancedYouTubeAboutPreference(Context context, AttributeSet attrs) {
27+
super(context, attrs);
28+
}
29+
public ReVancedYouTubeAboutPreference(Context context) {
30+
super(context);
31+
}
32+
}

app/src/main/java/io/github/chsbuffer/revancedxposed/youtube/misc/Settings.kt

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,12 @@ package io.github.chsbuffer.revancedxposed.youtube.misc
33
import android.app.Activity
44
import android.app.AlertDialog
55
import android.content.res.Resources
6+
import android.webkit.WebView
67
import app.revanced.extension.shared.Logger
78
import app.revanced.extension.shared.Utils
89
import app.revanced.extension.youtube.ThemeHelper
910
import app.revanced.extension.youtube.settings.LicenseActivityHook
11+
import app.revanced.extension.youtube.settings.preference.ReVancedYouTubeAboutPreference
1012
import de.robv.android.xposed.XC_MethodHook
1113
import de.robv.android.xposed.XC_MethodReplacement
1214
import de.robv.android.xposed.XposedBridge
@@ -17,11 +19,11 @@ import io.github.chsbuffer.revancedxposed.invokeOriginalMethod
1719
import io.github.chsbuffer.revancedxposed.shared.misc.settings.preference.BasePreference
1820
import io.github.chsbuffer.revancedxposed.shared.misc.settings.preference.BasePreferenceScreen
1921
import io.github.chsbuffer.revancedxposed.shared.misc.settings.preference.IntentPreference
22+
import io.github.chsbuffer.revancedxposed.shared.misc.settings.preference.NonInteractivePreference
2023
import io.github.chsbuffer.revancedxposed.shared.misc.settings.preference.PreferenceScreenPreference
2124
import io.github.chsbuffer.revancedxposed.shared.misc.settings.preference.PreferenceScreenPreference.Sorting
2225
import io.github.chsbuffer.revancedxposed.youtube.YoutubeHook
2326
import org.luckypray.dexkit.query.enums.StringMatchType
24-
import org.luckypray.dexkit.wrap.DexMethod
2527
import java.lang.reflect.Modifier
2628
import kotlin.system.exitProcess
2729

@@ -61,12 +63,20 @@ fun YoutubeHook.SettingsHook() {
6163
}
6264
}.hookMethod(
6365
ScopedHook(getDexMethod("PreferenceInflater#inflate").toMethod()) {
66+
var handleWebView = false
6467
after {
6568
val preferencesName = app.resources.getResourceName(outerParam.args[0] as Int)
6669
Logger.printDebug { "addPreferencesFromResource $preferencesName" }
6770
if (!preferencesName.contains("settings_fragment")) return@after
6871
XposedBridge.invokeOriginalMethod(
6972
param.method, param.thisObject, param.args.clone().apply {
73+
if (!handleWebView) {
74+
// workaround "AssetManager.addAssetPath gets Invalid When WebView is created":
75+
// let WebView replace the AssetManager first then addModuleAssets
76+
// https://issuetracker.google.com/issues/140652425
77+
WebView(app).destroy()
78+
handleWebView = true
79+
}
7080
app.addModuleAssets()
7181
this[0] = app.resources.getXml(R.xml.yt_revanced_settings)
7282
})
@@ -134,7 +144,14 @@ fun YoutubeHook.SettingsHook() {
134144
ThemeHelper.setTheme(param.result as Enum<*>)
135145
}
136146
})
137-
147+
preferences += NonInteractivePreference(
148+
key = "revanced_settings_screen_00_about",
149+
icon = "@drawable/revanced_settings_screen_00_about",
150+
layout = "@layout/preference_with_icon",
151+
summaryKey = null,
152+
tag = ReVancedYouTubeAboutPreference::class.java,
153+
selectable = true,
154+
)
138155
PreferenceScreen.close()
139156
}
140157

0 commit comments

Comments
 (0)