Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(YouTube): Add 'About' preference to settings menu #608

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
48eeb7e
feat(YouTube): Show about preference with the patch release version
LisoUseInAIKyrios Apr 2, 2024
8a01e12
fix: Remove timestamp text, and use release version only.
LisoUseInAIKyrios Apr 2, 2024
09302e6
fix: Include patches version with http agent string
LisoUseInAIKyrios Apr 2, 2024
64f0dc8
fix: Show simple name
LisoUseInAIKyrios Apr 2, 2024
62788da
refactor: Move version preference to shared package
LisoUseInAIKyrios Apr 2, 2024
e6b77a5
Comments
LisoUseInAIKyrios Apr 2, 2024
b2f4159
refactor: Use string format
LisoUseInAIKyrios Apr 3, 2024
c04a648
Fix: Use user agent format of "ReVanced/appVersion (patchVersion)"
LisoUseInAIKyrios Apr 5, 2024
b6474cc
Merge remote-tracking branch 'upstream/dev' into revanced_about_screen
LisoUseInAIKyrios Apr 6, 2024
352a91c
fix: Fetch and show social links
LisoUseInAIKyrios Apr 6, 2024
3d2b79d
fix: Dismiss when tapping a link
LisoUseInAIKyrios Apr 6, 2024
c2446b1
fix: Adjust layout
LisoUseInAIKyrios Apr 6, 2024
ba41b00
Merge remote-tracking branch 'upstream/dev' into revanced_about_screen
LisoUseInAIKyrios Apr 6, 2024
22d8cb0
fix: Apply light/dark theme
LisoUseInAIKyrios Apr 6, 2024
10e0c7e
adjust strings and structure
oSumAtrIX Apr 6, 2024
a997034
respect dark mode
oSumAtrIX Apr 6, 2024
30ce00f
refactor: Consolidate color theme code
LisoUseInAIKyrios Apr 7, 2024
5d5029e
fix: Extract app specific light/dark mode logic and colors
LisoUseInAIKyrios Apr 7, 2024
6bdc1fd
fix: Use system dark mode setting
LisoUseInAIKyrios Apr 7, 2024
a757b67
fix: Move about preference to the top
LisoUseInAIKyrios Apr 7, 2024
96ab16a
refactor: Cleanup
LisoUseInAIKyrios Apr 7, 2024
3865450
Merge remote-tracking branch 'upstream/dev' into revanced_about_screen
LisoUseInAIKyrios Apr 7, 2024
8a2fa3e
refactor: Organize code
LisoUseInAIKyrios Apr 7, 2024
754800b
refactor
LisoUseInAIKyrios Apr 8, 2024
2182db3
refactor: Better names for parse connection methods
LisoUseInAIKyrios Apr 8, 2024
116ac59
fix: Immediately disconnect from announcements and social api end poi…
LisoUseInAIKyrios Apr 8, 2024
1ce4b56
fix: Do not throw an exception if no error stream is present
LisoUseInAIKyrios Apr 8, 2024
bd66869
refactor: Simplify
LisoUseInAIKyrios Apr 8, 2024
3a88ff8
work in progress: Use light/dark icons provided by api
LisoUseInAIKyrios Apr 9, 2024
bf923a5
Revert "work in progress: Use light/dark icons provided by api"
LisoUseInAIKyrios Apr 9, 2024
92c266d
fix: Remove icons
LisoUseInAIKyrios Apr 9, 2024
fac25c5
Merge remote-tracking branch 'upstream/dev' into revanced_about_screen
LisoUseInAIKyrios Apr 10, 2024
5913388
fix: User agent can be used to determine the source
LisoUseInAIKyrios Apr 10, 2024
b34b296
Merge remote-tracking branch 'upstream/dev' into revanced_about_screen
LisoUseInAIKyrios Apr 12, 2024
1b46ba3
Merge remote-tracking branch 'upstream/dev' into revanced_about_screen
LisoUseInAIKyrios Apr 12, 2024
e7ae63f
Merge remote-tracking branch 'upstream/dev' into revanced_about_screen
LisoUseInAIKyrios Apr 14, 2024
013fdc3
Merge remote-tracking branch 'upstream/dev' into revanced_about_screen
LisoUseInAIKyrios Apr 14, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
85 changes: 53 additions & 32 deletions app/src/main/java/app/revanced/integrations/shared/Utils.java
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
import java.util.concurrent.TimeUnit;

import app.revanced.integrations.shared.settings.BooleanSetting;
import app.revanced.integrations.shared.settings.preference.ReVancedAboutPreference;
import kotlin.text.Regex;

public class Utils {
Expand All @@ -47,30 +48,44 @@ public class Utils {
private Utils() {
} // utility class

public static String getVersionName() {
if (versionName != null) return versionName;

PackageInfo packageInfo;
try {
final var packageName = Objects.requireNonNull(getContext()).getPackageName();

PackageManager packageManager = context.getPackageManager();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU)
packageInfo = packageManager.getPackageInfo(
packageName,
PackageManager.PackageInfoFlags.of(0)
);
else
packageInfo = packageManager.getPackageInfo(
packageName,
0
);
} catch (PackageManager.NameNotFoundException e) {
Logger.printException(() -> "Failed to get package info", e);
return null;
/**
* Injection point.
*
* @return The manifest 'Version' entry of the patches.jar used during patching.
*/
public static String getPatchesReleaseVersion() {
return ""; // Value is replaced during patching.
}

/**
* @return The version name of the app, such as "YouTube".
*/
public static String getAppVersionName() {
if (versionName == null) {
try {
final var packageName = Objects.requireNonNull(getContext()).getPackageName();

PackageManager packageManager = context.getPackageManager();
PackageInfo packageInfo;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
packageInfo = packageManager.getPackageInfo(
packageName,
PackageManager.PackageInfoFlags.of(0)
);
} else {
packageInfo = packageManager.getPackageInfo(
packageName,
0
);
}
versionName = packageInfo.versionName;
} catch (Exception ex) {
Logger.printException(() -> "Failed to get package info", ex);
versionName = "Unknown";
}
}

return versionName = packageInfo.versionName;
return versionName;
}

/**
Expand Down Expand Up @@ -185,6 +200,7 @@ public static Animation getResourceAnimation(@NonNull String resourceIdentifierN
}

public static int getResourceColor(@NonNull String resourceIdentifierName) throws Resources.NotFoundException {
//noinspection deprecation
return getContext().getResources().getColor(getResourceIdentifier(resourceIdentifierName, "color"));
}

Expand Down Expand Up @@ -323,7 +339,7 @@ public static void runOnMainThreadDelayed(@NonNull Runnable runnable, long delay
try {
runnable.run();
} catch (Exception ex) {
Logger.printException(() -> runnable.getClass() + ": " + ex.getMessage(), ex);
Logger.printException(() -> runnable.getClass().getSimpleName() + ": " + ex.getMessage(), ex);
}
};
new Handler(Looper.getMainLooper()).postDelayed(loggingRunnable, delayMillis);
Expand Down Expand Up @@ -445,19 +461,16 @@ private enum Sort {
this.keySuffix = keySuffix;
}

/**
* Defaults to {@link #UNSORTED} if key is null or has no sort suffix.
*/
@NonNull
static Sort fromKey(@Nullable String key) {
static Sort fromKey(@Nullable String key, @NonNull Sort defaultSort) {
if (key != null) {
for (Sort sort : values()) {
if (key.endsWith(sort.keySuffix)) {
return sort;
}
}
}
return UNSORTED;
return defaultSort;
}
}

Expand All @@ -479,19 +492,26 @@ public static String removePunctuationConvertToLowercase(@Nullable CharSequence
* If a preference has no key or no {@link Sort} suffix,
* then the preferences are left unsorted.
*/
@SuppressWarnings("deprecation")
public static void sortPreferenceGroups(@NonNull PreferenceGroup group) {
Sort sort = Sort.fromKey(group.getKey());
Sort groupSort = Sort.fromKey(group.getKey(), Sort.UNSORTED);
SortedMap<String, Preference> preferences = new TreeMap<>();

for (int i = 0, prefCount = group.getPreferenceCount(); i < prefCount; i++) {
Preference preference = group.getPreference(i);

final Sort preferenceSort;
if (preference instanceof PreferenceGroup) {
sortPreferenceGroups((PreferenceGroup) preference);
preferenceSort = groupSort; // Sort value for groups is for it's content, not itself.
} else {
// Allow individual preferences to set a key sorting.
// Used to force a preference to the top or bottom of a group.
preferenceSort = Sort.fromKey(preference.getKey(), groupSort);
}

final String sortValue;
switch (sort) {
switch (preferenceSort) {
case BY_TITLE:
sortValue = removePunctuationConvertToLowercase(preference.getTitle());
break;
Expand All @@ -511,8 +531,9 @@ public static void sortPreferenceGroups(@NonNull PreferenceGroup group) {
for (Preference pref : preferences.values()) {
int order = index++;

// If the preference is a PreferenceScreen or is an intent preference, move to the top.
if (pref instanceof PreferenceScreen || pref.getIntent() != null) {
// Move any screens, intents, and the one off About preference to the top.
if (pref instanceof PreferenceScreen || pref instanceof ReVancedAboutPreference
|| pref.getIntent() != null) {
// Arbitrary high number.
order -= 1000;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,7 @@

import static app.revanced.integrations.shared.StringRef.str;

/**
*
*
* @noinspection deprecation, DataFlowIssue , unused */
@SuppressWarnings({"unused", "deprecation"})
public abstract class AbstractPreferenceFragment extends PreferenceFragment {
/**
* Indicates that if a preference changes,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@

import static app.revanced.integrations.shared.StringRef.str;

/** @noinspection deprecation, unused */
@SuppressWarnings({"unused", "deprecation"})
public class ImportExportPreference extends EditTextPreference implements Preference.OnPreferenceClickListener {

private String existingSettings;
Expand Down
Loading
Loading