mirror of
https://github.com/inotia00/revanced-patches.git
synced 2025-04-30 06:34:37 +02:00
fix(YouTube Music - Return YouTube Dislike): Length of the separator is different in the new action bar
This commit is contained in:
parent
5bde7019a6
commit
80b9f754ed
@ -20,6 +20,7 @@ import app.revanced.extension.shared.utils.Logger;
|
|||||||
*/
|
*/
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
public class ReturnYouTubeDislikePatch {
|
public class ReturnYouTubeDislikePatch {
|
||||||
|
private static volatile boolean isNewActionBar = false;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Injection point.
|
* Injection point.
|
||||||
@ -52,7 +53,7 @@ public class ReturnYouTubeDislikePatch {
|
|||||||
if (!(original instanceof Spanned)) {
|
if (!(original instanceof Spanned)) {
|
||||||
original = new SpannableString(original);
|
original = new SpannableString(original);
|
||||||
}
|
}
|
||||||
return videoData.getDislikesSpan((Spanned) original, true);
|
return videoData.getDislikesSpan((Spanned) original, true, isNewActionBar);
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
Logger.printException(() -> "onLithoTextLoaded failure", ex);
|
Logger.printException(() -> "onLithoTextLoaded failure", ex);
|
||||||
}
|
}
|
||||||
@ -90,13 +91,21 @@ public class ReturnYouTubeDislikePatch {
|
|||||||
if (videoData == null) {
|
if (videoData == null) {
|
||||||
return original; // User enabled RYD while a video was on screen.
|
return original; // User enabled RYD while a video was on screen.
|
||||||
}
|
}
|
||||||
return videoData.getDislikesSpan(original, false);
|
return videoData.getDislikesSpan(original, false, false);
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
Logger.printException(() -> "onSpannedCreated failure", ex);
|
Logger.printException(() -> "onSpannedCreated failure", ex);
|
||||||
}
|
}
|
||||||
return original;
|
return original;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Injection point.
|
||||||
|
*/
|
||||||
|
public static boolean actionBarFeatureFlagLoaded(boolean original) {
|
||||||
|
isNewActionBar = original;
|
||||||
|
return original;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Injection point.
|
* Injection point.
|
||||||
*/
|
*/
|
||||||
|
@ -159,7 +159,8 @@ public class ReturnYouTubeDislike {
|
|||||||
@NonNull
|
@NonNull
|
||||||
private static SpannableString createDislikeSpan(@NonNull Spanned oldSpannable,
|
private static SpannableString createDislikeSpan(@NonNull Spanned oldSpannable,
|
||||||
@NonNull RYDVoteData voteData,
|
@NonNull RYDVoteData voteData,
|
||||||
boolean isLithoText) {
|
boolean isLithoText,
|
||||||
|
boolean isNewActionBar) {
|
||||||
CharSequence oldLikes = oldSpannable;
|
CharSequence oldLikes = oldSpannable;
|
||||||
|
|
||||||
// YouTube creators can hide the like count on a video,
|
// YouTube creators can hide the like count on a video,
|
||||||
@ -191,9 +192,17 @@ public class ReturnYouTubeDislike {
|
|||||||
|
|
||||||
if (middleSeparatorBounds == null) {
|
if (middleSeparatorBounds == null) {
|
||||||
final DisplayMetrics dp = Utils.getResources().getDisplayMetrics();
|
final DisplayMetrics dp = Utils.getResources().getDisplayMetrics();
|
||||||
|
final int unit;
|
||||||
|
if (isNewActionBar) {
|
||||||
|
unit = 15;
|
||||||
|
} else if (isLithoText) {
|
||||||
|
unit = 23;
|
||||||
|
} else {
|
||||||
|
unit = 25;
|
||||||
|
}
|
||||||
leftSeparatorBounds = new Rect(0, 0,
|
leftSeparatorBounds = new Rect(0, 0,
|
||||||
(int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 1.2f, dp),
|
(int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 1.2f, dp),
|
||||||
(int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, isLithoText ? 23 : 25, dp));
|
(int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, unit, dp));
|
||||||
final int middleSeparatorSize =
|
final int middleSeparatorSize =
|
||||||
(int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 3.7f, dp);
|
(int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 3.7f, dp);
|
||||||
middleSeparatorBounds = new Rect(0, 0, middleSeparatorSize, middleSeparatorSize);
|
middleSeparatorBounds = new Rect(0, 0, middleSeparatorSize, middleSeparatorSize);
|
||||||
@ -439,12 +448,12 @@ public class ReturnYouTubeDislike {
|
|||||||
* @return the replacement span containing dislikes, or the original span if RYD is not available.
|
* @return the replacement span containing dislikes, or the original span if RYD is not available.
|
||||||
*/
|
*/
|
||||||
@NonNull
|
@NonNull
|
||||||
public synchronized Spanned getDislikesSpan(@NonNull Spanned original, boolean isLithoText) {
|
public synchronized Spanned getDislikesSpan(@NonNull Spanned original, boolean isLithoText, boolean isNewActionBar) {
|
||||||
return waitForFetchAndUpdateReplacementSpan(original, isLithoText);
|
return waitForFetchAndUpdateReplacementSpan(original, isLithoText, isNewActionBar);
|
||||||
}
|
}
|
||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
private Spanned waitForFetchAndUpdateReplacementSpan(@NonNull Spanned original, boolean isLithoText) {
|
private Spanned waitForFetchAndUpdateReplacementSpan(@NonNull Spanned original, boolean isLithoText, boolean isNewActionBar) {
|
||||||
try {
|
try {
|
||||||
RYDVoteData votingData = getFetchData(MAX_MILLISECONDS_TO_BLOCK_UI_WAITING_FOR_FETCH);
|
RYDVoteData votingData = getFetchData(MAX_MILLISECONDS_TO_BLOCK_UI_WAITING_FOR_FETCH);
|
||||||
if (votingData == null) {
|
if (votingData == null) {
|
||||||
@ -479,7 +488,7 @@ public class ReturnYouTubeDislike {
|
|||||||
votingData.updateUsingVote(userVote);
|
votingData.updateUsingVote(userVote);
|
||||||
}
|
}
|
||||||
originalDislikeSpan = original;
|
originalDislikeSpan = original;
|
||||||
replacementLikeDislikeSpan = createDislikeSpan(original, votingData, isLithoText);
|
replacementLikeDislikeSpan = createDislikeSpan(original, votingData, isLithoText, isNewActionBar);
|
||||||
Logger.printDebug(() -> "Replaced: '" + originalDislikeSpan + "' with: '"
|
Logger.printDebug(() -> "Replaced: '" + originalDislikeSpan + "' with: '"
|
||||||
+ replacementLikeDislikeSpan + "'" + " using video: " + videoId);
|
+ replacementLikeDislikeSpan + "'" + " using video: " + videoId);
|
||||||
|
|
||||||
|
@ -6,6 +6,8 @@ import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
|
|||||||
import app.revanced.patcher.extensions.InstructionExtensions.removeInstruction
|
import app.revanced.patcher.extensions.InstructionExtensions.removeInstruction
|
||||||
import app.revanced.patcher.patch.bytecodePatch
|
import app.revanced.patcher.patch.bytecodePatch
|
||||||
import app.revanced.patcher.util.smali.ExternalLabel
|
import app.revanced.patcher.util.smali.ExternalLabel
|
||||||
|
import app.revanced.patches.music.utils.ACTION_BAR_POSITION_FEATURE_FLAG
|
||||||
|
import app.revanced.patches.music.utils.actionBarPositionFeatureFlagFingerprint
|
||||||
import app.revanced.patches.music.utils.compatibility.Constants.COMPATIBLE_PACKAGE
|
import app.revanced.patches.music.utils.compatibility.Constants.COMPATIBLE_PACKAGE
|
||||||
import app.revanced.patches.music.utils.extension.Constants.ACTIONBAR_CLASS_DESCRIPTOR
|
import app.revanced.patches.music.utils.extension.Constants.ACTIONBAR_CLASS_DESCRIPTOR
|
||||||
import app.revanced.patches.music.utils.extension.Constants.COMPONENTS_PATH
|
import app.revanced.patches.music.utils.extension.Constants.COMPONENTS_PATH
|
||||||
|
@ -22,15 +22,6 @@ internal val actionBarComponentFingerprint = legacyFingerprint(
|
|||||||
literals = listOf(99180L),
|
literals = listOf(99180L),
|
||||||
)
|
)
|
||||||
|
|
||||||
internal const val ACTION_BAR_POSITION_FEATURE_FLAG = 45658717L
|
|
||||||
|
|
||||||
internal val actionBarPositionFeatureFlagFingerprint = legacyFingerprint(
|
|
||||||
name = "actionBarPositionFeatureFlagFingerprint",
|
|
||||||
returnType = "Z",
|
|
||||||
parameters = emptyList(),
|
|
||||||
literals = listOf(ACTION_BAR_POSITION_FEATURE_FLAG)
|
|
||||||
)
|
|
||||||
|
|
||||||
internal val likeDislikeContainerFingerprint = legacyFingerprint(
|
internal val likeDislikeContainerFingerprint = legacyFingerprint(
|
||||||
name = "likeDislikeContainerFingerprint",
|
name = "likeDislikeContainerFingerprint",
|
||||||
returnType = "V",
|
returnType = "V",
|
||||||
|
@ -6,6 +6,15 @@ import app.revanced.util.or
|
|||||||
import com.android.tools.smali.dexlib2.AccessFlags
|
import com.android.tools.smali.dexlib2.AccessFlags
|
||||||
import com.android.tools.smali.dexlib2.Opcode
|
import com.android.tools.smali.dexlib2.Opcode
|
||||||
|
|
||||||
|
internal const val ACTION_BAR_POSITION_FEATURE_FLAG = 45658717L
|
||||||
|
|
||||||
|
internal val actionBarPositionFeatureFlagFingerprint = legacyFingerprint(
|
||||||
|
name = "actionBarPositionFeatureFlagFingerprint",
|
||||||
|
returnType = "Z",
|
||||||
|
parameters = emptyList(),
|
||||||
|
literals = listOf(ACTION_BAR_POSITION_FEATURE_FLAG)
|
||||||
|
)
|
||||||
|
|
||||||
internal val pendingIntentReceiverFingerprint = legacyFingerprint(
|
internal val pendingIntentReceiverFingerprint = legacyFingerprint(
|
||||||
name = "pendingIntentReceiverFingerprint",
|
name = "pendingIntentReceiverFingerprint",
|
||||||
returnType = "V",
|
returnType = "V",
|
||||||
|
@ -4,6 +4,8 @@ import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
|
|||||||
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
|
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
|
||||||
import app.revanced.patcher.patch.bytecodePatch
|
import app.revanced.patcher.patch.bytecodePatch
|
||||||
import app.revanced.patcher.patch.resourcePatch
|
import app.revanced.patcher.patch.resourcePatch
|
||||||
|
import app.revanced.patches.music.utils.ACTION_BAR_POSITION_FEATURE_FLAG
|
||||||
|
import app.revanced.patches.music.utils.actionBarPositionFeatureFlagFingerprint
|
||||||
import app.revanced.patches.music.utils.compatibility.Constants.COMPATIBLE_PACKAGE
|
import app.revanced.patches.music.utils.compatibility.Constants.COMPATIBLE_PACKAGE
|
||||||
import app.revanced.patches.music.utils.extension.Constants.UTILS_PATH
|
import app.revanced.patches.music.utils.extension.Constants.UTILS_PATH
|
||||||
import app.revanced.patches.music.utils.patch.PatchList.RETURN_YOUTUBE_DISLIKE
|
import app.revanced.patches.music.utils.patch.PatchList.RETURN_YOUTUBE_DISLIKE
|
||||||
@ -25,6 +27,7 @@ import app.revanced.patches.shared.removeLikeFingerprint
|
|||||||
import app.revanced.patches.shared.textcomponent.hookSpannableString
|
import app.revanced.patches.shared.textcomponent.hookSpannableString
|
||||||
import app.revanced.patches.shared.textcomponent.textComponentPatch
|
import app.revanced.patches.shared.textcomponent.textComponentPatch
|
||||||
import app.revanced.util.adoptChild
|
import app.revanced.util.adoptChild
|
||||||
|
import app.revanced.util.fingerprint.injectLiteralInstructionBooleanCall
|
||||||
import app.revanced.util.fingerprint.methodOrThrow
|
import app.revanced.util.fingerprint.methodOrThrow
|
||||||
import app.revanced.util.indexOfFirstInstructionOrThrow
|
import app.revanced.util.indexOfFirstInstructionOrThrow
|
||||||
import com.android.tools.smali.dexlib2.Opcode
|
import com.android.tools.smali.dexlib2.Opcode
|
||||||
@ -78,6 +81,11 @@ private val returnYouTubeDislikeBytecodePatch = bytecodePatch(
|
|||||||
"""
|
"""
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
actionBarPositionFeatureFlagFingerprint.injectLiteralInstructionBooleanCall(
|
||||||
|
ACTION_BAR_POSITION_FEATURE_FLAG,
|
||||||
|
"$EXTENSION_CLASS_DESCRIPTOR->actionBarFeatureFlagLoaded(Z)Z"
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is_7_17_or_greater) {
|
if (is_7_17_or_greater) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user