Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
107 commits
Select commit Hold shift + click to select a range
724e6d6
feat: Update to patcher v22
LisoUseInAIKyrios Sep 12, 2025
a352a05
Merge remote-tracking branch 'upstream/dev' into feat/patcher_instruc…
LisoUseInAIKyrios Sep 13, 2025
77864f4
unofficial 20.37 support
LisoUseInAIKyrios Sep 13, 2025
6ddf058
Merge remote-tracking branch 'upstream/dev' into feat/patcher_instruc…
LisoUseInAIKyrios Sep 14, 2025
d3fae2a
Merge remote-tracking branch 'upstream/dev' into feat/patcher_instruc…
LisoUseInAIKyrios Sep 14, 2025
c6d8474
Merge remote-tracking branch 'upstream/dev' into feat/patcher_instruc…
LisoUseInAIKyrios Sep 14, 2025
e52a950
Merge remote-tracking branch 'upstream/dev' into feat/patcher_instruc…
LisoUseInAIKyrios Sep 15, 2025
0440189
Merge remote-tracking branch 'upstream/dev' into feat/patcher_instruc…
LisoUseInAIKyrios Sep 16, 2025
e8d56c8
Finish merge
LisoUseInAIKyrios Sep 16, 2025
dcaa6fe
Merge remote-tracking branch 'upstream/dev' into feat/patcher_instruc…
LisoUseInAIKyrios Sep 16, 2025
97ce498
Merge remote-tracking branch 'upstream/dev' into feat/patcher_instruc…
LisoUseInAIKyrios Sep 18, 2025
bb67176
finish merge
LisoUseInAIKyrios Sep 18, 2025
b99789b
unofficial 20.38
LisoUseInAIKyrios Sep 19, 2025
6a5b204
fix SB create/voting buttons (merge error?)
LisoUseInAIKyrios Sep 19, 2025
8e64416
Merge remote-tracking branch 'upstream/dev' into feat/patcher_instruc…
LisoUseInAIKyrios Sep 20, 2025
765957f
finish merge
LisoUseInAIKyrios Sep 20, 2025
d906046
Merge remote-tracking branch 'upstream/dev' into feat/patcher_instruc…
LisoUseInAIKyrios Sep 20, 2025
c2a099d
Merge remote-tracking branch 'upstream/dev' into feat/patcher_instruc…
LisoUseInAIKyrios Sep 21, 2025
a25d769
remove deprecated migration code
LisoUseInAIKyrios Sep 21, 2025
c7a71f4
Merge remote-tracking branch 'upstream/dev' into feat/patcher_instruc…
LisoUseInAIKyrios Sep 21, 2025
56876f3
finish merge
LisoUseInAIKyrios Sep 21, 2025
23b200c
Merge remote-tracking branch 'upstream/dev' into feat/patcher_instruc…
LisoUseInAIKyrios Sep 22, 2025
4096b34
Merge remote-tracking branch 'upstream/dev' into feat/patcher_instruc…
LisoUseInAIKyrios Sep 22, 2025
ecf5752
fix merge error
LisoUseInAIKyrios Sep 22, 2025
45d42a1
fix merge error
LisoUseInAIKyrios Sep 22, 2025
a4d24ad
Merge remote-tracking branch 'upstream/dev' into feat/patcher_instruc…
LisoUseInAIKyrios Sep 22, 2025
7e010d3
delete deprecated dummy files
LisoUseInAIKyrios Sep 22, 2025
ca73609
Merge remote-tracking branch 'upstream/dev' into feat/patcher_instruc…
LisoUseInAIKyrios Sep 23, 2025
c4e6e62
Merge remote-tracking branch 'upstream/dev' into feat/patcher_instruc…
LisoUseInAIKyrios Sep 23, 2025
d6593e2
finish merge
LisoUseInAIKyrios Sep 23, 2025
252f57f
Merge remote-tracking branch 'upstream/dev' into feat/patcher_instruc…
LisoUseInAIKyrios Sep 24, 2025
59e1321
debugging
LisoUseInAIKyrios Sep 25, 2025
41c8fbc
Merge remote-tracking branch 'upstream/dev' into feat/patcher_instruc…
LisoUseInAIKyrios Sep 25, 2025
7b02a31
unofficial 20.39 work in progress (navigation bar notification tab ic…
LisoUseInAIKyrios Sep 25, 2025
d3df249
work in progress cairo notification tab selected icon fix. Icon modif…
LisoUseInAIKyrios Sep 25, 2025
edaad1a
remove 20.07 (one of the more difficult and constantly changing sanit…
LisoUseInAIKyrios Sep 25, 2025
4dec673
Merge remote-tracking branch 'upstream/dev' into feat/patcher_instruc…
LisoUseInAIKyrios Sep 26, 2025
7eb78d4
finish merge
LisoUseInAIKyrios Sep 26, 2025
823530f
Merge remote-tracking branch 'upstream/dev' into feat/patcher_instruc…
LisoUseInAIKyrios Sep 26, 2025
a82f49a
fix typo
LisoUseInAIKyrios Sep 26, 2025
2f9081e
Merge remote-tracking branch 'upstream/dev' into feat/patcher_instruc…
LisoUseInAIKyrios Sep 27, 2025
f252fb2
Merge remote-tracking branch 'upstream/dev' into feat/patcher_instruc…
LisoUseInAIKyrios Sep 27, 2025
f88ad4e
modernize
LisoUseInAIKyrios Sep 27, 2025
8e05bb3
Merge remote-tracking branch 'upstream/dev' into feat/patcher_instruc…
LisoUseInAIKyrios Sep 27, 2025
934947a
Merge remote-tracking branch 'upstream/dev' into feat/patcher_instruc…
LisoUseInAIKyrios Sep 28, 2025
2d49d76
finish merge
LisoUseInAIKyrios Sep 28, 2025
636bded
refactor: Add main activity onCreate extension hook function
LisoUseInAIKyrios Sep 30, 2025
4d9de1a
Use custom navigation bar notification filled icon (20.39 still needs…
LisoUseInAIKyrios Oct 1, 2025
e52b339
Merge remote-tracking branch 'upstream/dev' into feat/patcher_instruc…
LisoUseInAIKyrios Oct 1, 2025
0f03a07
use navigation notification button SVG
LisoUseInAIKyrios Oct 1, 2025
240e953
Merge remote-tracking branch 'upstream/dev' into feat/patcher_instruc…
LisoUseInAIKyrios Oct 1, 2025
967ef47
Merge remote-tracking branch 'upstream/dev' into feat/patcher_instruc…
LisoUseInAIKyrios Oct 1, 2025
2d207fc
Merge remote-tracking branch 'upstream/dev' into feat/patcher_instruc…
LisoUseInAIKyrios Oct 3, 2025
c6becb4
unofficial 20.40.33
LisoUseInAIKyrios Oct 3, 2025
563f586
fix 20.22+ litho broken for some users
LisoUseInAIKyrios Oct 3, 2025
88b077a
Merge remote-tracking branch 'upstream/dev' into feat/patcher_instruc…
LisoUseInAIKyrios Oct 7, 2025
a1c9170
Merge remote-tracking branch 'upstream/dev' into feat/patcher_instruc…
LisoUseInAIKyrios Oct 10, 2025
aae71e6
Merge remote-tracking branch 'upstream/dev' into feat/patcher_instruc…
LisoUseInAIKyrios Oct 14, 2025
1901e96
unofficial 20.41.33
LisoUseInAIKyrios Oct 14, 2025
ed87bc7
Merge remote-tracking branch 'upstream/dev' into feat/patcher_instruc…
LisoUseInAIKyrios Oct 14, 2025
c98c73b
Don't turn off new Shorts player flag on newer targets since it can b…
LisoUseInAIKyrios Oct 15, 2025
a1ad5fe
unofficial 20.42.36
LisoUseInAIKyrios Oct 18, 2025
b5cda51
Merge remote-tracking branch 'upstream/dev' into feat/patcher_instruc…
LisoUseInAIKyrios Oct 18, 2025
1356a7e
add 20.31+ bold icons setting
LisoUseInAIKyrios Oct 20, 2025
39da47e
Use YT notification icon that isn't associated with the navigation ba…
LisoUseInAIKyrios Oct 20, 2025
5449357
refactor
LisoUseInAIKyrios Oct 20, 2025
0389073
fix minimal miniplayer using incorrectly sized bold icons
LisoUseInAIKyrios Oct 20, 2025
64334b4
refactor
LisoUseInAIKyrios Oct 20, 2025
c37527f
Add ReVanced bold icons
LisoUseInAIKyrios Oct 20, 2025
fc988fa
fix setting availability
LisoUseInAIKyrios Oct 20, 2025
47f1a5f
add the last bold resources
LisoUseInAIKyrios Oct 20, 2025
f2356a8
fix swipe bold icon
LisoUseInAIKyrios Oct 20, 2025
f30ece9
Add SB bold icon placeholder code
LisoUseInAIKyrios Oct 20, 2025
a1fd6b1
reformat xml. no functional changes
LisoUseInAIKyrios Oct 21, 2025
7ef70f7
remove bold alert icon
LisoUseInAIKyrios Oct 21, 2025
9a2f232
Don't allow bold icons if spoofing to very old targets
LisoUseInAIKyrios Oct 21, 2025
9984e58
Show bold search icon
LisoUseInAIKyrios Oct 21, 2025
772620c
refactor
LisoUseInAIKyrios Oct 21, 2025
f00c0e0
Merge remote-tracking branch 'upstream/dev' into feat/patcher_instruc…
LisoUseInAIKyrios Oct 22, 2025
6d72b4a
unofficial 20.43.32
LisoUseInAIKyrios Oct 23, 2025
4a73671
Merge remote-tracking branch 'upstream/dev' into feat/patcher_instruc…
LisoUseInAIKyrios Oct 27, 2025
ecda492
finish merge
LisoUseInAIKyrios Oct 27, 2025
c95170e
fix fullscreen button vertical alignment
LisoUseInAIKyrios Oct 27, 2025
594317e
Change lowest supported version to `19.43.41`
LisoUseInAIKyrios Oct 27, 2025
b7be52d
Merge remote-tracking branch 'upstream/dev' into feat/patcher_instruc…
LisoUseInAIKyrios Oct 27, 2025
260afef
fix data migration
LisoUseInAIKyrios Oct 28, 2025
78689fd
Merge remote-tracking branch 'upstream/dev' into feat/patcher_instruc…
LisoUseInAIKyrios Oct 30, 2025
9316072
add temporary debug logging
LisoUseInAIKyrios Oct 30, 2025
955f7c9
Merge remote-tracking branch 'upstream/dev' into feat/patcher_instruc…
LisoUseInAIKyrios Oct 30, 2025
fc70f85
Merge remote-tracking branch 'upstream/dev' into feat/patcher_instruc…
LisoUseInAIKyrios Nov 2, 2025
03ce571
Merge remote-tracking branch 'upstream/dev' into feat/patcher_instruc…
LisoUseInAIKyrios Nov 7, 2025
88352d8
Unofficial 20.45.32
LisoUseInAIKyrios Nov 7, 2025
829bfa7
Merge remote-tracking branch 'upstream/dev' into feat/patcher_instruc…
LisoUseInAIKyrios Nov 8, 2025
3d55083
Merge remote-tracking branch 'upstream/dev' into feat/patcher_instruc…
LisoUseInAIKyrios Nov 8, 2025
7499f3d
add maven local
LisoUseInAIKyrios Nov 8, 2025
49c925e
remove 'by' syntax for fingerprints
LisoUseInAIKyrios Nov 8, 2025
0855290
Merge remote-tracking branch 'upstream/dev' into feat/patcher_instruc…
LisoUseInAIKyrios Nov 8, 2025
675a2c4
add fix content provider patch
LisoUseInAIKyrios Nov 8, 2025
b7c9959
fix custom speeds over 2.0/4.0 not working
LisoUseInAIKyrios Nov 8, 2025
afbcf3d
fix exit fullscreen patch
LisoUseInAIKyrios Nov 8, 2025
3406033
Merge remote-tracking branch 'upstream/dev' into feat/patcher_instruc…
LisoUseInAIKyrios Nov 9, 2025
81a429a
delete deprecated binary compatibility
LisoUseInAIKyrios Nov 9, 2025
29a86fb
refactor
LisoUseInAIKyrios Nov 9, 2025
2687b30
fix loop video not working
LisoUseInAIKyrios Nov 9, 2025
5ccfb3c
Merge remote-tracking branch 'upstream/dev' into feat/patcher_instruc…
LisoUseInAIKyrios Nov 10, 2025
a1a80eb
fix search results patches
LisoUseInAIKyrios Nov 10, 2025
db5b79d
Merge remote-tracking branch 'upstream/dev' into feat/patcher_instruc…
LisoUseInAIKyrios Nov 10, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import app.revanced.extension.music.settings.preference.MusicPreferenceFragment;
import app.revanced.extension.music.settings.search.MusicSearchViewController;
import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.ResourceType;
import app.revanced.extension.shared.Utils;
import app.revanced.extension.shared.settings.BaseActivityHook;

Expand Down Expand Up @@ -46,15 +47,7 @@ protected void customizeActivityTheme(Activity activity) {
// Override the default YouTube Music theme to increase start padding of list items.
// Custom style located in resources/music/values/style.xml
activity.setTheme(Utils.getResourceIdentifierOrThrow(
"Theme.ReVanced.YouTubeMusic.Settings", "style"));
}

/**
* Returns the resource ID for the YouTube Music settings layout.
*/
@Override
protected int getContentViewResourceId() {
return LAYOUT_REVANCED_SETTINGS_WITH_TOOLBAR;
ResourceType.STYLE, "Theme.ReVanced.YouTubeMusic.Settings"));
}

/**
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
package app.revanced.extension.shared;

import java.util.HashMap;
import java.util.Map;

public enum ResourceType {
ANIM("anim"),
ANIMATOR("animator"),
ARRAY("array"),
ATTR("attr"),
BOOL("bool"),
COLOR("color"),
DIMEN("dimen"),
DRAWABLE("drawable"),
FONT("font"),
FRACTION("fraction"),
ID("id"),
INTEGER("integer"),
INTERPOLATOR("interpolator"),
LAYOUT("layout"),
MENU("menu"),
MIPMAP("mipmap"),
NAVIGATION("navigation"),
PLURALS("plurals"),
RAW("raw"),
STRING("string"),
STYLE("style"),
STYLEABLE("styleable"),
TRANSITION("transition"),
VALUES("values"),
XML("xml");

private static final Map<String, ResourceType> VALUE_MAP;

static {
ResourceType[] values = values();
VALUE_MAP = new HashMap<>(2 * values.length);

for (ResourceType type : values) {
VALUE_MAP.put(type.value, type);
}
}

public final String value;

public static ResourceType fromValue(String value) {
ResourceType type = VALUE_MAP.get(value);
if (type == null) {
throw new IllegalArgumentException("Unknown resource type: " + value);
}
return type;
}

ResourceType(String value) {
this.value = value;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,11 @@
import android.view.WindowManager;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.FrameLayout;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.Toast;
import android.widget.Toolbar;

import androidx.annotation.ColorInt;
import androidx.annotation.NonNull;
Expand All @@ -43,8 +47,10 @@
import java.text.Normalizer;
import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Objects;
import java.util.concurrent.Callable;
import java.util.concurrent.Future;
Expand Down Expand Up @@ -148,12 +154,12 @@ public static String getApplicationName() {
/**
* Hide a view by setting its layout height and width to 1dp.
*
* @param condition The setting to check for hiding the view.
* @param setting The setting to check for hiding the view.
* @param view The view to hide.
*/
public static void hideViewBy0dpUnderCondition(BooleanSetting condition, View view) {
if (hideViewBy0dpUnderCondition(condition.get(), view)) {
Logger.printDebug(() -> "View hidden by setting: " + condition);
public static void hideViewBy0dpUnderCondition(BooleanSetting setting, View view) {
if (hideViewBy0dpUnderCondition(setting.get(), view)) {
Logger.printDebug(() -> "View hidden by setting: " + setting);
}
}

Expand All @@ -165,22 +171,47 @@ public static void hideViewBy0dpUnderCondition(BooleanSetting condition, View vi
*/
public static boolean hideViewBy0dpUnderCondition(boolean condition, View view) {
if (condition) {
hideViewByLayoutParams(view);
hideViewBy0dp(view);
return true;
}

return false;
}

/**
* Hide a view by setting its layout params to 0x0
* @param view The view to hide.
*/
public static void hideViewBy0dp(View view) {
if (view instanceof LinearLayout) {
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(0, 0);
view.setLayoutParams(layoutParams);
} else if (view instanceof FrameLayout) {
FrameLayout.LayoutParams layoutParams2 = new FrameLayout.LayoutParams(0, 0);
view.setLayoutParams(layoutParams2);
} else if (view instanceof RelativeLayout) {
RelativeLayout.LayoutParams layoutParams3 = new RelativeLayout.LayoutParams(0, 0);
view.setLayoutParams(layoutParams3);
} else if (view instanceof Toolbar) {
Toolbar.LayoutParams layoutParams4 = new Toolbar.LayoutParams(0, 0);
view.setLayoutParams(layoutParams4);
} else {
ViewGroup.LayoutParams params = view.getLayoutParams();
params.width = 0;
params.height = 0;
view.setLayoutParams(params);
}
}

/**
* Hide a view by setting its visibility to GONE.
*
* @param condition The setting to check for hiding the view.
* @param setting The setting to check for hiding the view.
* @param view The view to hide.
*/
public static void hideViewUnderCondition(BooleanSetting condition, View view) {
if (hideViewUnderCondition(condition.get(), view)) {
Logger.printDebug(() -> "View hidden by setting: " + condition);
public static void hideViewUnderCondition(BooleanSetting setting, View view) {
if (hideViewUnderCondition(setting.get(), view)) {
Logger.printDebug(() -> "View hidden by setting: " + setting);
}
}

Expand All @@ -199,14 +230,14 @@ public static boolean hideViewUnderCondition(boolean condition, View view) {
return false;
}

public static void hideViewByRemovingFromParentUnderCondition(BooleanSetting condition, View view) {
if (hideViewByRemovingFromParentUnderCondition(condition.get(), view)) {
Logger.printDebug(() -> "View hidden by setting: " + condition);
public static void hideViewByRemovingFromParentUnderCondition(BooleanSetting setting, View view) {
if (hideViewByRemovingFromParentUnderCondition(setting.get(), view)) {
Logger.printDebug(() -> "View hidden by setting: " + setting);
}
}

public static boolean hideViewByRemovingFromParentUnderCondition(boolean setting, View view) {
if (setting) {
public static boolean hideViewByRemovingFromParentUnderCondition(boolean condition, View view) {
if (condition) {
ViewParent parent = view.getParent();
if (parent instanceof ViewGroup parentGroup) {
parentGroup.removeView(view);
Expand Down Expand Up @@ -278,12 +309,13 @@ public static int indexOfFirstFound(String value, String... targets) {
* @return zero, if the resource is not found.
*/
@SuppressLint("DiscouragedApi")
public static int getResourceIdentifier(Context context, String resourceIdentifierName, @Nullable String type) {
return context.getResources().getIdentifier(resourceIdentifierName, type, context.getPackageName());
public static int getResourceIdentifier(Context context, @Nullable ResourceType type, String resourceIdentifierName) {
return context.getResources().getIdentifier(resourceIdentifierName,
type == null ? null : type.value, context.getPackageName());
}

public static int getResourceIdentifierOrThrow(Context context, String resourceIdentifierName, @Nullable String type) {
final int resourceId = getResourceIdentifier(context, resourceIdentifierName, type);
public static int getResourceIdentifierOrThrow(Context context, @Nullable ResourceType type, String resourceIdentifierName) {
final int resourceId = getResourceIdentifier(context, type, resourceIdentifierName);
if (resourceId == 0) {
throw new Resources.NotFoundException("No resource id exists with name: " + resourceIdentifierName
+ " type: " + type);
Expand All @@ -293,48 +325,44 @@ public static int getResourceIdentifierOrThrow(Context context, String resourceI

/**
* @return zero, if the resource is not found.
* @see #getResourceIdentifierOrThrow(String, String)
* @see #getResourceIdentifierOrThrow(ResourceType, String)
*/
public static int getResourceIdentifier(String resourceIdentifierName, @Nullable String type) {
return getResourceIdentifier(getContext(), resourceIdentifierName, type);
public static int getResourceIdentifier(@Nullable ResourceType type, String resourceIdentifierName) {
return getResourceIdentifier(getContext(), type, resourceIdentifierName);
}

/**
* @return The resource identifier, or throws an exception if not found.
* @return zero, if the resource is not found.
* @see #getResourceIdentifier(ResourceType, String)
*/
public static int getResourceIdentifierOrThrow(String resourceIdentifierName, @Nullable String type) {
final int resourceId = getResourceIdentifier(getContext(), resourceIdentifierName, type);
if (resourceId == 0) {
throw new Resources.NotFoundException("No resource id exists with name: " + resourceIdentifierName
+ " type: " + type);
}
return resourceId;
public static int getResourceIdentifierOrThrow(@Nullable ResourceType type, String resourceIdentifierName) {
return getResourceIdentifierOrThrow(getContext(), type, resourceIdentifierName);
}

public static int getResourceInteger(String resourceIdentifierName) throws Resources.NotFoundException {
return getContext().getResources().getInteger(getResourceIdentifierOrThrow(resourceIdentifierName, "integer"));
return getContext().getResources().getInteger(getResourceIdentifierOrThrow(ResourceType.INTEGER, resourceIdentifierName));
}

public static Animation getResourceAnimation(String resourceIdentifierName) throws Resources.NotFoundException {
return AnimationUtils.loadAnimation(getContext(), getResourceIdentifierOrThrow(resourceIdentifierName, "anim"));
return AnimationUtils.loadAnimation(getContext(), getResourceIdentifierOrThrow(ResourceType.ANIM, resourceIdentifierName));
}

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

public static int getResourceDimensionPixelSize(String resourceIdentifierName) throws Resources.NotFoundException {
return getContext().getResources().getDimensionPixelSize(getResourceIdentifierOrThrow(resourceIdentifierName, "dimen"));
return getContext().getResources().getDimensionPixelSize(getResourceIdentifierOrThrow(ResourceType.DIMEN, resourceIdentifierName));
}

public static float getResourceDimension(String resourceIdentifierName) throws Resources.NotFoundException {
return getContext().getResources().getDimension(getResourceIdentifierOrThrow(resourceIdentifierName, "dimen"));
return getContext().getResources().getDimension(getResourceIdentifierOrThrow(ResourceType.DIMEN, resourceIdentifierName));
}

public static String[] getResourceStringArray(String resourceIdentifierName) throws Resources.NotFoundException {
return getContext().getResources().getStringArray(getResourceIdentifierOrThrow(resourceIdentifierName, "array"));
return getContext().getResources().getStringArray(getResourceIdentifierOrThrow(ResourceType.ARRAY, resourceIdentifierName));
}

public interface MatchFilter<T> {
Expand All @@ -345,7 +373,7 @@ public interface MatchFilter<T> {
* Includes sub children.
*/
public static <R extends View> R getChildViewByResourceName(View view, String str) {
var child = view.findViewById(Utils.getResourceIdentifierOrThrow(str, "id"));
var child = view.findViewById(Utils.getResourceIdentifierOrThrow(ResourceType.ID, str));
//noinspection unchecked
return (R) child;
}
Expand Down Expand Up @@ -1163,4 +1191,18 @@ public static int clamp(int value, int lower, int upper) {
public static float clamp(float value, float lower, float upper) {
return Math.max(lower, Math.min(value, upper));
}

/**
* @param maxSize The maximum number of elements to keep in the map.
* @return A {@link LinkedHashMap} that automatically evicts the oldest entry
* when the size exceeds {@code maxSize}.
*/
public static <T, V> Map<T, V> createSizeRestrictedMap(int maxSize) {
return new LinkedHashMap<>(2 * maxSize) {
@Override
protected boolean removeEldestEntry(Entry eldest) {
return size() > maxSize;
}
};
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
import java.util.Collection;

import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.ResourceType;
import app.revanced.extension.shared.Utils;
import app.revanced.extension.shared.settings.BaseSettings;
import app.revanced.extension.shared.ui.CustomDialog;
Expand Down Expand Up @@ -128,7 +129,7 @@ static void issueWarning(Activity activity, Collection<Check> failedChecks) {
// Add icon to the dialog.
ImageView iconView = new ImageView(activity);
iconView.setImageResource(Utils.getResourceIdentifierOrThrow(
"revanced_ic_dialog_alert", "drawable"));
ResourceType.DRAWABLE, "revanced_ic_dialog_alert"));
iconView.setColorFilter(Utils.getAppForegroundColor(), PorterDuff.Mode.SRC_IN);
iconView.setPadding(0, 0, 0, 0);
LinearLayout.LayoutParams iconParams = new LinearLayout.LayoutParams(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
import okhttp3.Response;
import okhttp3.ResponseBody;


public abstract class BaseFixRedgifsApiPatch implements Interceptor {
protected static BaseFixRedgifsApiPatch INSTANCE;
public abstract String getDefaultUserAgent();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@

import app.revanced.extension.shared.GmsCoreSupport;
import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.ResourceType;
import app.revanced.extension.shared.Utils;
import app.revanced.extension.shared.settings.BaseSettings;

Expand Down Expand Up @@ -65,7 +66,7 @@ private String packageAndNameIndexToClassAlias(String packageName, int appIndex)
iconName += "_custom";
}

notificationSmallIcon = Utils.getResourceIdentifier(iconName, "drawable");
notificationSmallIcon = Utils.getResourceIdentifier(ResourceType.DRAWABLE, iconName);
if (notificationSmallIcon == 0) {
Logger.printException(() -> "Could not load notification small icon");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import android.widget.Toolbar;

import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.ResourceType;
import app.revanced.extension.shared.Utils;
import app.revanced.extension.shared.settings.preference.ToolbarPreferenceFragment;
import app.revanced.extension.shared.ui.Dim;
Expand All @@ -25,13 +26,13 @@
public abstract class BaseActivityHook extends Activity {

private static final int ID_REVANCED_SETTINGS_FRAGMENTS =
getResourceIdentifierOrThrow("revanced_settings_fragments", "id");
getResourceIdentifierOrThrow(ResourceType.ID, "revanced_settings_fragments");
private static final int ID_REVANCED_TOOLBAR_PARENT =
getResourceIdentifierOrThrow("revanced_toolbar_parent", "id");
getResourceIdentifierOrThrow(ResourceType.ID, "revanced_toolbar_parent");
public static final int LAYOUT_REVANCED_SETTINGS_WITH_TOOLBAR =
getResourceIdentifierOrThrow("revanced_settings_with_toolbar", "layout");
getResourceIdentifierOrThrow(ResourceType.LAYOUT, "revanced_settings_with_toolbar");
private static final int STRING_REVANCED_SETTINGS_TITLE =
getResourceIdentifierOrThrow("revanced_settings_title", "string");
getResourceIdentifierOrThrow(ResourceType.STRING, "revanced_settings_title");

/**
* Layout parameters for the toolbar, extracted from the dummy toolbar.
Expand Down Expand Up @@ -124,14 +125,16 @@ protected void createToolbar(Activity activity, PreferenceFragment fragment) {
}

/**
* Customizes the activity's theme.
* Returns the resource ID for the content view layout.
*/
protected abstract void customizeActivityTheme(Activity activity);
protected int getContentViewResourceId() {
return LAYOUT_REVANCED_SETTINGS_WITH_TOOLBAR;
}

/**
* Returns the resource ID for the content view layout.
* Customizes the activity's theme.
*/
protected abstract int getContentViewResourceId();
protected abstract void customizeActivityTheme(Activity activity);

/**
* Returns the background color for the toolbar.
Expand Down
Loading
Loading