feat(YouTube - Shorts components): Add Open Shorts with Regular player fullscreen
Close https://github.com/anddea/revanced-patches/issues/1462
This commit is contained in:
parent
bc406169a0
commit
a5985e9bf5
9 changed files with 169 additions and 7 deletions
|
|
@ -0,0 +1,29 @@
|
|||
package app.morphe.extension.youtube.patches.player;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
public class OpenVideosFullscreenHookPatch {
|
||||
|
||||
@Nullable
|
||||
private static volatile Boolean openNextVideoFullscreen;
|
||||
|
||||
public static void setOpenNextVideoFullscreen(@Nullable Boolean forceFullScreen) {
|
||||
openNextVideoFullscreen = forceFullScreen;
|
||||
}
|
||||
|
||||
/**
|
||||
* Injection point.
|
||||
*
|
||||
* Returns negated value.
|
||||
*/
|
||||
public static boolean doNotOpenVideoFullscreenPortrait(boolean original) {
|
||||
Boolean openFullscreen = openNextVideoFullscreen;
|
||||
if (openFullscreen != null) {
|
||||
openNextVideoFullscreen = null;
|
||||
return !openFullscreen;
|
||||
}
|
||||
|
||||
return original;
|
||||
}
|
||||
}
|
||||
|
|
@ -15,6 +15,7 @@ import java.lang.ref.WeakReference;
|
|||
|
||||
import app.morphe.extension.shared.utils.Logger;
|
||||
import app.morphe.extension.shared.utils.ResourceUtils;
|
||||
import app.morphe.extension.youtube.patches.player.OpenVideosFullscreenHookPatch;
|
||||
import app.morphe.extension.youtube.settings.Settings;
|
||||
import app.morphe.extension.youtube.shared.NavigationBar.NavigationButton;
|
||||
import app.morphe.extension.youtube.shared.ShortsPlayerState;
|
||||
|
|
@ -23,6 +24,12 @@ import kotlin.Unit;
|
|||
|
||||
@SuppressWarnings("unused")
|
||||
public class ShortsPatch {
|
||||
public enum ShortsPlayerType {
|
||||
SHORTS_PLAYER,
|
||||
REGULAR_PLAYER,
|
||||
REGULAR_PLAYER_FULLSCREEN
|
||||
}
|
||||
|
||||
private static final boolean ENABLE_SHORTS_TIME_STAMP =
|
||||
Settings.ENABLE_SHORTS_TIME_STAMP.get();
|
||||
private static final boolean ENABLE_SHORTS_CLEAR_MODE =
|
||||
|
|
@ -190,7 +197,8 @@ public class ShortsPatch {
|
|||
|
||||
public static boolean openShortInRegularPlayer(String videoId) {
|
||||
try {
|
||||
if (!Settings.OPEN_SHORTS_IN_REGULAR_PLAYER.get()) {
|
||||
ShortsPlayerType shortsPlayerType = Settings.SHORTS_PLAYER_TYPE.get();
|
||||
if (shortsPlayerType == ShortsPlayerType.SHORTS_PLAYER) {
|
||||
return false; // Default unpatched behavior.
|
||||
}
|
||||
|
||||
|
|
@ -214,9 +222,13 @@ public class ShortsPatch {
|
|||
return false; // Always use Shorts player for the Shorts nav button.
|
||||
}
|
||||
|
||||
OpenVideosFullscreenHookPatch.setOpenNextVideoFullscreen(
|
||||
shortsPlayerType == ShortsPlayerType.REGULAR_PLAYER_FULLSCREEN
|
||||
);
|
||||
VideoUtils.openVideo(videoId, true);
|
||||
return true;
|
||||
} catch (Exception ex) {
|
||||
OpenVideosFullscreenHookPatch.setOpenNextVideoFullscreen(null);
|
||||
Logger.printException(() -> "openShortInRegularPlayer failure", ex);
|
||||
return false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -45,6 +45,7 @@ import app.morphe.extension.youtube.patches.general.YouTubeMusicActionsPatch;
|
|||
import app.morphe.extension.youtube.patches.player.ExitFullscreenPatch.FullscreenMode;
|
||||
import app.morphe.extension.youtube.patches.player.MiniplayerPatch;
|
||||
import app.morphe.extension.youtube.patches.shorts.AnimationFeedbackPatch.AnimationType;
|
||||
import app.morphe.extension.youtube.patches.shorts.ShortsPatch.ShortsPlayerType;
|
||||
import app.morphe.extension.youtube.patches.shorts.ShortsRepeatStatePatch.ShortsLoopBehavior;
|
||||
import app.morphe.extension.youtube.patches.spoof.SpoofVideoStreamsPatch;
|
||||
import app.morphe.extension.youtube.patches.swipe.SwipeControlsPatch.SwipeOverlayBrightnessColorAvailability;
|
||||
|
|
@ -534,7 +535,7 @@ public class Settings extends SharedYouTubeSettings {
|
|||
public static final BooleanSetting HIDE_SHORTS_SHELF_HISTORY = new BooleanSetting("revanced_hide_shorts_shelf_history", FALSE, parent(HIDE_SHORTS_SHELF));
|
||||
public static final EnumSetting<ShortsLoopBehavior> CHANGE_SHORTS_BACKGROUND_REPEAT_STATE = new EnumSetting<>("revanced_change_shorts_background_repeat_state", ShortsLoopBehavior.UNKNOWN);
|
||||
public static final EnumSetting<ShortsLoopBehavior> CHANGE_SHORTS_REPEAT_STATE = new EnumSetting<>("revanced_change_shorts_repeat_state", ShortsLoopBehavior.UNKNOWN);
|
||||
public static final BooleanSetting OPEN_SHORTS_IN_REGULAR_PLAYER = new BooleanSetting("revanced_open_shorts_in_regular_player", FALSE);
|
||||
public static final EnumSetting<ShortsPlayerType> SHORTS_PLAYER_TYPE = new EnumSetting<>("revanced_shorts_player_type", ShortsPlayerType.SHORTS_PLAYER);
|
||||
|
||||
// PreferenceScreen: Shorts - Shorts player components
|
||||
public static final BooleanSetting HIDE_SHORTS_AUTO_DUBBED_LABEL = new BooleanSetting("revanced_hide_shorts_auto_dubbed_label", FALSE);
|
||||
|
|
@ -877,6 +878,17 @@ public class Settings extends SharedYouTubeSettings {
|
|||
}
|
||||
}
|
||||
|
||||
// Migrate old open Shorts in regular player to new Shorts player type.
|
||||
final String oldOpenShortsInRegularPlayerKey = "revanced_open_shorts_in_regular_player";
|
||||
if (ytPrefs.preferences.contains(oldOpenShortsInRegularPlayerKey)) {
|
||||
boolean oldOpenShortsInRegularPlayer = ytPrefs.getBoolean(oldOpenShortsInRegularPlayerKey, FALSE);
|
||||
ytPrefs.removeKey(oldOpenShortsInRegularPlayerKey);
|
||||
|
||||
if (oldOpenShortsInRegularPlayer && SHORTS_PLAYER_TYPE.isSetToDefault()) {
|
||||
SHORTS_PLAYER_TYPE.save(ShortsPlayerType.REGULAR_PLAYER);
|
||||
}
|
||||
}
|
||||
|
||||
// Migrate old saved data. Must be done here before the settings can be used by any other code.
|
||||
applyOldSbOpacityToColor(SB_CATEGORY_SPONSOR_COLOR, DEPRECATED_SB_CATEGORY_SPONSOR_OPACITY);
|
||||
applyOldSbOpacityToColor(SB_CATEGORY_SELF_PROMO_COLOR, DEPRECATED_SB_CATEGORY_SELF_PROMO_OPACITY);
|
||||
|
|
|
|||
|
|
@ -387,7 +387,7 @@ private val rvxPreferenceKey = mapOf(
|
|||
"revanced_language" to "M 480 840 Q 405.23 840 339.54 811.58 Q 273.85 783.15 224.85 734.54 Q 175.85 685.92 147.92 620.12 Q 120 554.31 120 478.77 Q 120 404 147.92 338.42 Q 175.85 272.85 224.85 224.23 Q 273.85 175.62 339.54 147.81 Q 405.23 120 480 120 Q 554.77 120 620.46 147.81 Q 686.15 175.62 735.15 224.23 Q 784.15 272.85 812.08 338.42 Q 840 404 840 478.77 Q 840 554.31 812.08 620.12 Q 784.15 685.92 735.15 734.54 Q 686.15 783.15 620.46 811.58 Q 554.77 840 480 840 Z M 480 811.23 Q 519.62 766.77 544.27 719.12 Q 568.92 671.46 584.69 609 L 375.54 609 Q 391.85 673.62 416.5 721.23 Q 441.15 768.85 480 811.23 Z M 438.08 806.92 Q 406.92 772 381.62 719.15 Q 356.31 666.31 343.54 609 L 175.08 609 Q 213.85 693.08 280 742.42 Q 346.15 791.77 438.08 806.92 Z M 522.92 806.69 Q 608 794.46 677.42 742.31 Q 746.85 690.15 784.92 609 L 616.69 609 Q 599.85 667.62 575.04 719.69 Q 550.23 771.77 522.92 806.69 Z M 165.85 578.23 L 337.92 578.23 Q 333.38 550.46 331.73 525.88 Q 330.08 501.31 330.08 478.77 Q 330.08 455.31 331.85 431.58 Q 333.62 407.85 338.15 381.54 L 165.85 381.54 Q 158.08 404 154.42 428.38 Q 150.77 452.77 150.77 478.77 Q 150.77 505.54 154.42 530.27 Q 158.08 555 165.85 578.23 Z M 369.15 578.23 L 591.08 578.23 Q 595.85 548.77 597.62 525.81 Q 599.38 502.85 599.38 478.77 Q 599.38 455.69 597.62 433.35 Q 595.85 411 591.08 381.54 L 369.15 381.54 Q 364.38 411 362.62 433.35 Q 360.85 455.69 360.85 478.77 Q 360.85 502.85 362.62 525.81 Q 364.38 548.77 369.15 578.23 Z M 621.85 578.23 L 794.15 578.23 Q 801.92 555 805.58 530.27 Q 809.23 505.54 809.23 478.77 Q 809.23 452.77 805.58 428.38 Q 801.92 404 794.15 381.54 L 622.85 381.54 Q 626.62 412.69 628.38 435.81 Q 630.15 458.92 630.15 478.77 Q 630.15 501.54 628.27 525.27 Q 626.38 549 621.85 578.23 Z M 616.46 350.77 L 784.92 350.77 Q 747.31 266.38 679.81 215.38 Q 612.31 164.38 521.92 152.31 Q 553.08 190.85 577.5 241.92 Q 601.92 293 616.46 350.77 Z M 375.54 350.77 L 585.69 350.77 Q 570.08 290.85 543.69 240.19 Q 517.31 189.54 480 149.23 Q 444.15 184.69 419.46 232.54 Q 394.77 280.38 375.54 350.77 Z M 175.08 350.77 L 343.77 350.77 Q 357.85 293.69 381.77 243.12 Q 405.69 192.54 437.08 152.54 Q 346.69 165.38 279.92 215.77 Q 213.15 266.15 175.08 350.77 Z",
|
||||
"revanced_miniplayer_type" to "offline_key",
|
||||
"revanced_open_links_externally" to "M 675.38 697.62 L 675.38 806 Q 675.38 812.6 670.94 816.99 Q 666.5 821.38 659.82 821.38 Q 653.15 821.38 648.88 816.99 Q 644.62 812.6 644.62 806 L 644.62 667.69 Q 644.62 658.27 651.44 651.44 Q 658.27 644.62 667.69 644.62 L 806 644.62 Q 812.6 644.62 816.99 649.06 Q 821.38 653.5 821.38 660.18 Q 821.38 666.85 816.99 671.12 Q 812.6 675.38 806 675.38 L 696.62 675.38 L 829 807.77 Q 833.38 812.15 833.38 818.54 Q 833.38 824.93 829.39 829.16 Q 824.62 834.15 817.92 833.77 Q 811.22 833.38 806.77 829 L 675.38 697.62 Z M 480 840 Q 405.46 840 339.77 811.58 Q 274.08 783.15 225.46 734.54 Q 176.85 685.92 148.42 620.48 Q 120 555.04 120 481.23 Q 120 405.43 148.42 340.07 Q 176.85 274.72 225.46 225.78 Q 274.08 176.85 339.77 148.42 Q 405.46 120 480 120 Q 554.54 120 620.23 148.42 Q 685.92 176.85 734.54 225.78 Q 783.15 274.72 811.58 340.07 Q 840 405.43 840 481.23 Q 840 493.69 839 506.65 Q 838 519.62 836 532.08 Q 835.54 539.15 829.77 544.19 Q 824 549.23 817.93 549.23 Q 811.85 549.23 807.81 545.12 Q 803.77 541 805 534.38 Q 807 521.15 808.12 507.42 Q 809.23 493.69 809.23 481.23 Q 809.23 456.17 805.52 431.12 Q 801.8 406.06 794.37 381.77 L 621.85 381.77 Q 626.15 406.31 628.15 431.28 Q 630.15 456.26 630.15 481.23 Q 630.15 493.69 629.15 506.65 Q 628.15 519.62 627.92 532.85 Q 626.92 538.92 622.28 544.08 Q 617.63 549.23 611.43 549.23 Q 604.46 549.23 600.31 545.23 Q 596.15 541.23 597.15 534.62 Q 598.38 521.38 598.88 507.54 Q 599.38 493.69 599.38 481.23 Q 599.38 456.17 597.5 431.12 Q 595.62 406.06 591.08 381.77 L 369.58 381.77 Q 365.38 406.31 363.12 431.12 Q 360.85 455.92 360.85 480.73 Q 360.85 505.54 363.12 529.85 Q 365.38 554.15 369.15 578.46 L 543.08 578.46 Q 549.67 578.46 554.07 582.91 Q 558.46 587.35 558.46 594.02 Q 558.46 600.69 554.07 604.96 Q 549.67 609.23 543.08 609.23 L 375.54 609.23 Q 391.08 665.31 414.54 717.85 Q 438 770.38 480 810.77 Q 494.56 810.77 507.97 809.27 Q 521.38 807.77 534.85 805.77 Q 540.46 804.54 544.85 808.69 Q 549.23 812.85 549.23 818.46 Q 549.23 824.91 545.08 829.73 Q 540.92 834.54 534.08 835.77 Q 520.62 837.77 507.42 838.88 Q 494.23 840 480 840 Z M 165.63 578.46 L 338.15 578.46 Q 334.12 554.15 332.1 529.85 Q 330.08 505.54 330.08 481.23 Q 330.08 456.17 331.85 431.12 Q 333.62 406.06 337.92 381.77 L 165.56 381.77 Q 158.16 406.11 154.47 431.22 Q 150.77 456.32 150.77 481.43 Q 150.77 505.77 154.48 530.13 Q 158.2 554.49 165.63 578.46 Z M 437.08 808.23 Q 403.38 764.15 380.12 713.77 Q 356.85 663.38 343.77 609.23 L 175.08 609.23 Q 211.15 689.31 280.69 742.46 Q 350.23 795.62 437.08 808.23 Z M 175.08 351 L 343.13 351 Q 356.08 296.08 378.58 245.19 Q 401.08 194.31 438.08 151.54 Q 350.92 165.54 281.65 218.35 Q 212.38 271.15 175.08 351 Z M 375.54 351 L 584.69 351 Q 570.92 294.69 544.85 243.15 Q 518.77 191.62 480 148.77 Q 440.46 191.08 414.77 242.88 Q 389.08 294.69 375.54 351 Z M 617.03 351 L 784.92 351 Q 747.62 271.15 678.46 217.85 Q 609.31 164.54 522.92 151.77 Q 556.85 195.85 578.96 246.73 Q 601.08 297.62 617.03 351 Z",
|
||||
"revanced_open_shorts_in_regular_player" to "revanced_preference_screen_player",
|
||||
"revanced_shorts_player_type" to "revanced_preference_screen_player",
|
||||
"revanced_overlay_button_always_repeat" to "M 475.231 586.462 L 475.231 402.846 L 429.231 402.846 L 429.231 372.308 L 505.769 372.308 L 505.769 586.462 L 475.231 586.462 Z M 292.308 840 L 160 707.692 L 292.308 575.385 L 314.308 597.846 L 219.846 692.308 L 701.538 692.308 L 701.538 532.308 L 732.308 532.308 L 732.308 723.077 L 219.846 723.077 L 314.308 817.539 L 292.308 840 Z M 227.692 427.692 L 227.692 236.923 L 740.154 236.923 L 645.692 142.461 L 667.692 120 L 800 252.308 L 667.692 384.615 L 645.692 362.154 L 740.154 267.692 L 258.462 267.692 L 258.462 427.692 L 227.692 427.692 Z",
|
||||
"revanced_overlay_button_copy_video_url" to "M 356.923 718.462 C 341.551 718.462 328.477 713.074 317.702 702.298 C 306.926 691.523 301.538 678.449 301.538 663.077 L 301.538 195.384 C 301.538 180.013 306.926 166.939 317.702 156.163 C 328.477 145.388 341.551 140 356.923 140 L 704.616 140 C 719.987 140 733.061 145.388 743.837 156.163 C 754.612 166.939 760 180.013 760 195.384 L 760 663.077 C 760 678.449 754.612 691.523 743.837 702.298 C 733.061 713.074 719.987 718.462 704.616 718.462 L 356.923 718.462 Z M 356.923 687.693 L 704.616 687.693 C 710.769 687.693 716.41 685.129 721.539 680 C 726.667 674.872 729.231 669.231 729.231 663.077 L 729.231 195.384 C 729.231 189.231 726.667 183.59 721.539 178.461 C 716.41 173.333 710.769 170.769 704.616 170.769 L 356.923 170.769 C 350.769 170.769 345.128 173.333 340 178.461 C 334.872 183.59 332.308 189.231 332.308 195.384 L 332.308 663.077 C 332.308 669.231 334.872 674.872 340 680 C 345.128 685.129 350.769 687.693 356.923 687.693 Z M 255.384 820 C 240.013 820 226.939 814.612 216.163 803.837 C 205.388 793.062 200 779.988 200 764.616 L 200 266.154 L 230.769 266.154 L 230.769 764.616 C 230.769 770.77 233.333 776.411 238.461 781.539 C 243.59 786.667 249.231 789.231 255.384 789.231 L 633.847 789.231 L 633.847 820 L 255.384 820 Z M 332.308 687.693 L 332.308 170.769 L 332.308 687.693 Z",
|
||||
"revanced_overlay_button_copy_video_url_timestamp" to "M 680.616 860 C 637.301 860 600.677 845.033 570.744 815.1 C 540.811 785.167 525.844 748.543 525.844 705.228 C 525.844 661.911 540.823 625.287 570.78 595.356 C 600.737 565.423 637.221 550.456 680.232 550.456 C 723.805 550.456 760.557 565.435 790.488 595.392 C 820.421 625.349 835.388 661.833 835.388 704.844 C 835.388 748.417 820.421 785.169 790.488 815.1 C 760.555 845.033 723.931 860 680.616 860 Z M 742.904 795.848 L 764.692 774 L 692 701.308 L 692 592.384 L 661.46 592.384 L 661.46 713 L 742.9 795.848 L 742.904 795.848 Z M 356.924 718.46 C 341.551 718.46 328.477 713.072 317.704 702.296 C 306.928 691.52 301.54 678.447 301.54 663.076 L 301.54 195.384 C 301.54 180.013 306.928 166.94 317.704 156.164 C 328.477 145.388 341.551 140 356.924 140 L 704.616 140 C 719.987 140 733.06 145.388 743.836 156.164 C 754.612 166.94 760 180.013 760 195.384 L 760 462.616 C 754.101 460.717 748.877 458.891 744.328 457.136 C 739.779 455.379 734.745 453.591 729.228 451.772 L 729.228 195.384 C 729.231 189.229 726.668 183.588 721.54 178.46 C 716.412 173.332 710.771 170.768 704.616 170.768 L 356.924 170.768 C 350.769 170.768 345.128 173.332 340 178.46 C 334.872 183.588 332.308 189.229 332.308 195.384 L 332.308 663.076 C 332.308 669.231 334.872 674.872 340 680 C 345.128 685.128 350.769 687.692 356.924 687.692 L 416.924 687.692 L 416.924 718.46 L 356.924 718.46 Z M 255.384 820 C 240.013 820 226.94 814.612 216.164 803.836 C 205.388 793.06 200 779.987 200 764.616 L 200 266.152 L 230.768 266.152 L 230.768 764.616 C 230.768 770.771 233.332 776.412 238.46 781.54 C 243.588 786.668 249.229 789.232 255.384 789.232 L 440 789.232 C 441.795 794.616 443.872 799.705 446.232 804.5 C 448.592 809.295 451.567 814.461 455.2 820 L 255.384 820 Z M 332.308 687.692 L 332.308 170.768 L 332.308 687.692 Z",
|
||||
|
|
|
|||
|
|
@ -0,0 +1,96 @@
|
|||
package app.morphe.patches.youtube.player.fullscreen
|
||||
|
||||
import app.morphe.patcher.Fingerprint
|
||||
import app.morphe.patcher.InstructionLocation
|
||||
import app.morphe.patcher.OpcodesFilter.Companion.opcodesToFilters
|
||||
import app.morphe.patcher.extensions.InstructionExtensions.addInstructions
|
||||
import app.morphe.patcher.extensions.InstructionExtensions.getInstruction
|
||||
import app.morphe.patcher.literal
|
||||
import app.morphe.patcher.opcode
|
||||
import app.morphe.patcher.patch.bytecodePatch
|
||||
import app.morphe.patches.youtube.utils.extension.Constants.PLAYER_PATH
|
||||
import app.morphe.patches.youtube.utils.playservice.is_19_46_or_greater
|
||||
import app.morphe.patches.youtube.utils.playservice.versionCheckPatch
|
||||
import app.morphe.util.insertLiteralOverride
|
||||
import com.android.tools.smali.dexlib2.AccessFlags
|
||||
import com.android.tools.smali.dexlib2.Opcode
|
||||
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
|
||||
|
||||
private const val EXTENSION_CLASS_DESCRIPTOR =
|
||||
"$PLAYER_PATH/OpenVideosFullscreenHookPatch;"
|
||||
|
||||
/**
|
||||
* 19.46+
|
||||
*/
|
||||
internal object openVideosFullscreenPortraitFingerprint : Fingerprint(
|
||||
returnType = "V",
|
||||
parameters = listOf("L", "Lj\$/util/Optional;"),
|
||||
filters = listOf(
|
||||
opcode(Opcode.MOVE_RESULT), // Conditional check to modify.
|
||||
literal(45666112L, location = InstructionLocation.MatchAfterWithin(5)),
|
||||
opcode(Opcode.MOVE_RESULT, location = InstructionLocation.MatchAfterWithin(10)),
|
||||
)
|
||||
)
|
||||
|
||||
/**
|
||||
* Pre 19.46.
|
||||
*/
|
||||
internal object openVideosFullscreenPortraitLegacyFingerprint : Fingerprint(
|
||||
accessFlags = listOf(AccessFlags.PUBLIC, AccessFlags.FINAL),
|
||||
returnType = "V",
|
||||
parameters = listOf("L", "Lj\$/util/Optional;"),
|
||||
filters = opcodesToFilters(
|
||||
Opcode.GOTO,
|
||||
Opcode.SGET_OBJECT,
|
||||
Opcode.GOTO,
|
||||
Opcode.SGET_OBJECT,
|
||||
Opcode.INVOKE_VIRTUAL,
|
||||
Opcode.MOVE_RESULT,
|
||||
Opcode.IF_EQ,
|
||||
Opcode.IF_EQ,
|
||||
Opcode.IGET_OBJECT,
|
||||
Opcode.INVOKE_VIRTUAL,
|
||||
Opcode.MOVE_RESULT
|
||||
)
|
||||
)
|
||||
|
||||
internal val openVideosFullscreenHookPatch = bytecodePatch(
|
||||
description = "openVideosFullscreenHookPatch"
|
||||
) {
|
||||
dependsOn(versionCheckPatch)
|
||||
|
||||
execute {
|
||||
val fingerprint: Fingerprint
|
||||
val insertIndex: Int
|
||||
|
||||
if (is_19_46_or_greater) {
|
||||
fingerprint = openVideosFullscreenPortraitFingerprint
|
||||
insertIndex = fingerprint.instructionMatches.first().index
|
||||
|
||||
openVideosFullscreenPortraitFingerprint.let {
|
||||
// Remove the A/B feature call so the one-shot override can decide portrait fullscreen.
|
||||
it.method.insertLiteralOverride(
|
||||
it.instructionMatches.last().index,
|
||||
false
|
||||
)
|
||||
}
|
||||
} else {
|
||||
fingerprint = openVideosFullscreenPortraitLegacyFingerprint
|
||||
insertIndex = fingerprint.instructionMatches.last().index
|
||||
}
|
||||
|
||||
fingerprint.let {
|
||||
it.method.apply {
|
||||
val register = getInstruction<OneRegisterInstruction>(insertIndex).registerA
|
||||
|
||||
addInstructions(
|
||||
insertIndex + 1,
|
||||
"""
|
||||
invoke-static { v$register }, $EXTENSION_CLASS_DESCRIPTOR->doNotOpenVideoFullscreenPortrait(Z)Z
|
||||
move-result v$register
|
||||
"""
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -16,6 +16,7 @@ import app.morphe.patches.shared.mainactivity.injectOnCreateMethodCall
|
|||
import app.morphe.patches.shared.textcomponent.hookSpannableString
|
||||
import app.morphe.patches.shared.textcomponent.textComponentPatch
|
||||
import app.morphe.patches.youtube.player.overlaybuttons.geminiButton
|
||||
import app.morphe.patches.youtube.player.fullscreen.openVideosFullscreenHookPatch
|
||||
import app.morphe.patches.youtube.utils.bottomSheetMenuItemBuilderFingerprint
|
||||
import app.morphe.patches.youtube.utils.compatibility.Constants.COMPATIBLE_PACKAGE
|
||||
import app.morphe.patches.youtube.utils.engagement.engagementPanelHookPatch
|
||||
|
|
@ -743,6 +744,7 @@ val shortsComponentPatch = bytecodePatch(
|
|||
lithoFilterPatch,
|
||||
lithoLayoutPatch,
|
||||
navigationBarHookPatch,
|
||||
openVideosFullscreenHookPatch,
|
||||
playbackStartDescriptorPatch,
|
||||
playerTypeHookPatch,
|
||||
sharedResourceIdPatch,
|
||||
|
|
|
|||
|
|
@ -108,6 +108,16 @@
|
|||
<item>REPEAT</item>
|
||||
<item>END_SCREEN</item>
|
||||
</string-array>
|
||||
<string-array name="revanced_shorts_player_type_entries">
|
||||
<item>@string/revanced_shorts_player_type_shorts_player</item>
|
||||
<item>@string/revanced_shorts_player_type_regular_player</item>
|
||||
<item>@string/revanced_shorts_player_type_regular_player_fullscreen</item>
|
||||
</string-array>
|
||||
<string-array name="revanced_shorts_player_type_entry_values">
|
||||
<item>SHORTS_PLAYER</item>
|
||||
<item>REGULAR_PLAYER</item>
|
||||
<item>REGULAR_PLAYER_FULLSCREEN</item>
|
||||
</string-array>
|
||||
<string-array name="revanced_custom_playback_speed_menu_type_entries">
|
||||
<item>@string/revanced_custom_playback_speed_menu_type_entry_youtube_legacy</item>
|
||||
<item>@string/revanced_custom_playback_speed_menu_type_entry_custom_no_theme</item>
|
||||
|
|
|
|||
|
|
@ -1732,9 +1732,10 @@ Miniplayer can be dragged off-screen to the left or right."</string>
|
|||
<string name="revanced_open_links_externally_summary_off">Opens links in in-app browser.</string>
|
||||
<string name="revanced_open_links_externally_summary_on">Opens links in external browser.</string>
|
||||
<string name="revanced_open_links_externally_title">Open links externally</string>
|
||||
<string name="revanced_open_shorts_in_regular_player_summary_off">Do not open Shorts in regular player.</string>
|
||||
<string name="revanced_open_shorts_in_regular_player_summary_on">Open Shorts in regular player.</string>
|
||||
<string name="revanced_open_shorts_in_regular_player_title">Open Shorts in regular player</string>
|
||||
<string name="revanced_shorts_player_type_title">Open Shorts with</string>
|
||||
<string name="revanced_shorts_player_type_shorts_player">Shorts player</string>
|
||||
<string name="revanced_shorts_player_type_regular_player">Regular player</string>
|
||||
<string name="revanced_shorts_player_type_regular_player_fullscreen">Regular player fullscreen</string>
|
||||
<string name="revanced_overlay_button">Overlay buttons</string>
|
||||
<string name="revanced_overlay_button_always_repeat_summary">"Tap to toggle always repeat states.
|
||||
Tap and hold to toggle pause after repeat states."</string>
|
||||
|
|
|
|||
|
|
@ -760,7 +760,7 @@
|
|||
<app.morphe.extension.shared.settings.preference.CustomDialogListPreference android:entries="@array/revanced_change_shorts_repeat_state_entries" android:title="@string/revanced_change_shorts_background_repeat_state_title" android:key="revanced_change_shorts_background_repeat_state" android:entryValues="@array/revanced_change_shorts_repeat_state_entry_values" />SETTINGS: SHORTS_REPEAT_STATE_BACKGROUND -->
|
||||
|
||||
<!-- SETTINGS: SHORTS_COMPONENTS
|
||||
<SwitchPreference android:title="@string/revanced_open_shorts_in_regular_player_title" android:key="revanced_open_shorts_in_regular_player" android:summaryOn="@string/revanced_open_shorts_in_regular_player_summary_on" android:summaryOff="@string/revanced_open_shorts_in_regular_player_summary_off" />SETTINGS: SHORTS_COMPONENTS -->
|
||||
<app.morphe.extension.shared.settings.preference.CustomDialogListPreference android:entries="@array/revanced_shorts_player_type_entries" android:title="@string/revanced_shorts_player_type_title" android:key="revanced_shorts_player_type" android:entryValues="@array/revanced_shorts_player_type_entry_values" />SETTINGS: SHORTS_COMPONENTS -->
|
||||
|
||||
<!-- PREFERENCE_SCREEN: SHORTS
|
||||
</PreferenceScreen>PREFERENCE_SCREEN: SHORTS -->
|
||||
|
|
|
|||
Loading…
Reference in a new issue