From 11783bc6061cce14d837dab0f9ddb05457f87e8e Mon Sep 17 00:00:00 2001 From: Foxster Date: Thu, 21 Dec 2023 16:41:14 -0800 Subject: [PATCH] Move patches to Patches.xm --- Makefile | 2 +- Sources/Patches.xm | 103 ++++++++++++++++++++++++++++++++++++++++++ Sources/uYouPlus.xm | 106 ++------------------------------------------ 3 files changed, 108 insertions(+), 103 deletions(-) create mode 100644 Sources/Patches.xm diff --git a/Makefile b/Makefile index 6b95bf2..6e4cbf8 100644 --- a/Makefile +++ b/Makefile @@ -26,7 +26,7 @@ TWEAK_NAME = uYouPlus DISPLAY_NAME = YouTube BUNDLE_ID = com.google.ios.youtube -$(TWEAK_NAME)_FILES = Sources/uYouPlus.xm Sources/Settings.xm +$(TWEAK_NAME)_FILES = Sources/uYouPlus.xm Sources/Settings.xm Sources/Patches.xm $(TWEAK_NAME)_FRAMEWORKS = UIKit Security $(TWEAK_NAME)_CFLAGS = -fobjc-arc -DTWEAK_VERSION=\"$(PACKAGE_VERSION)\" $(TWEAK_NAME)_INJECT_DYLIBS = Tweaks/uYou/Library/MobileSubstrate/DynamicLibraries/uYou.dylib $(THEOS_OBJ_DIR)/libFLEX.dylib $(THEOS_OBJ_DIR)/iSponsorBlock.dylib $(THEOS_OBJ_DIR)/YouPiP.dylib $(THEOS_OBJ_DIR)/YouTubeDislikesReturn.dylib $(THEOS_OBJ_DIR)/YTABConfig.dylib $(THEOS_OBJ_DIR)/YTUHD.dylib $(THEOS_OBJ_DIR)/DontEatMyContent.dylib diff --git a/Sources/Patches.xm b/Sources/Patches.xm new file mode 100644 index 0000000..691aec6 --- /dev/null +++ b/Sources/Patches.xm @@ -0,0 +1,103 @@ +#import "uYouPlus.h" + +# pragma mark - YouTube patches + +// Fix Google Sign in by @PoomSmart and @level3tjg (qnblackcat/uYouPlus#684) +%hook NSBundle +- (NSDictionary *)infoDictionary { + NSMutableDictionary *info = %orig.mutableCopy; + NSString *altBundleIdentifier = info[@"ALTBundleIdentifier"]; + if (altBundleIdentifier) info[@"CFBundleIdentifier"] = altBundleIdentifier; + return info; +} +%end + +// Workaround for MiRO92/uYou-for-YouTube#12, qnblackcat/uYouPlus#263 +%hook YTDataUtils ++ (NSMutableDictionary *)spamSignalsDictionary { + return nil; +} ++ (NSMutableDictionary *)spamSignalsDictionaryWithoutIDFA { + return nil; +} +%end + +%hook YTHotConfig +- (BOOL)disableAfmaIdfaCollection { return NO; } +%end + +// https://github.com/PoomSmart/YouTube-X/blob/1e62b68e9027fcb849a75f54a402a530385f2a51/Tweak.x#L27 +// %hook YTAdsInnerTubeContextDecorator +// - (void)decorateContext:(id)context {} +// %end + +# pragma mark - uYou patches + +// Workaround for qnblackcat/uYouPlus#10 +%hook UIViewController +- (UITraitCollection *)traitCollection { + @try { + return %orig; + } @catch(NSException *e) { + return [UITraitCollection currentTraitCollection]; + } +} +%end + +// Prevent uYou player bar from showing when not playing downloaded media +%hook PlayerManager +- (void)pause { + if (isnan([self progress])) + return; + %orig; +} +%end + +// Workaround for issue #54 +%hook YTMainAppVideoPlayerOverlayViewController +- (void)updateRelatedVideos { + if ([[NSUserDefaults standardUserDefaults] boolForKey:@"relatedVideosAtTheEndOfYTVideos"] == NO) {} + else { return %orig; } +} +%end + +// iOS 16 uYou crash fix - @level3tjg: https://github.com/qnblackcat/uYouPlus/pull/224 +%group iOS16 +%hook OBPrivacyLinkButton +%new +- (instancetype)initWithCaption:(NSString *)caption + buttonText:(NSString *)buttonText + image:(UIImage *)image + imageSize:(CGSize)imageSize + useLargeIcon:(BOOL)useLargeIcon { + return [self initWithCaption:caption + buttonText:buttonText + image:image + imageSize:imageSize + useLargeIcon:useLargeIcon + displayLanguage:[NSLocale currentLocale].languageCode]; +} +%end +%end + +// Fix streched artwork in uYou's player view - https://github.com/MiRO92/uYou-for-YouTube/issues/287 +%hook ArtworkImageView +- (id)imageView { + UIImageView * imageView = %orig; + imageView.contentMode = UIViewContentModeScaleAspectFit; + // Make artwork a bit bigger + UIView *artworkImageView = imageView.superview; + if (artworkImageView != nil && !artworkImageView.translatesAutoresizingMaskIntoConstraints) { + [artworkImageView.leftAnchor constraintEqualToAnchor:artworkImageView.superview.leftAnchor constant:16].active = YES; + [artworkImageView.rightAnchor constraintEqualToAnchor:artworkImageView.superview.rightAnchor constant:-16].active = YES; + } + return imageView; +} +%end + +%ctor { + %init; + if (@available(iOS 16, *)) { + %init(iOS16); + } +} \ No newline at end of file diff --git a/Sources/uYouPlus.xm b/Sources/uYouPlus.xm index 8a12883..f35631e 100644 --- a/Sources/uYouPlus.xm +++ b/Sources/uYouPlus.xm @@ -29,55 +29,9 @@ static BOOL oldDarkTheme() { return ([[NSUserDefaults standardUserDefaults] integerForKey:@"appTheme"] == 2); } -// -# pragma mark - uYou's patches -// Workaround for qnblackcat/uYouPlus#10 -%hook UIViewController -- (UITraitCollection *)traitCollection { - @try { - return %orig; - } @catch(NSException *e) { - return [UITraitCollection currentTraitCollection]; - } -} -%end - -// Prevent uYou player bar from showing when not playing downloaded media -%hook PlayerManager -- (void)pause { - if (isnan([self progress])) - return; - %orig; -} -%end - -// Workaround for issue #54 -%hook YTMainAppVideoPlayerOverlayViewController -- (void)updateRelatedVideos { - if ([[NSUserDefaults standardUserDefaults] boolForKey:@"relatedVideosAtTheEndOfYTVideos"] == NO) {} - else { return %orig; } -} -%end - -// iOS 16 uYou crash fix - @level3tjg: https://github.com/qnblackcat/uYouPlus/pull/224 -%group iOS16 -%hook OBPrivacyLinkButton -%new -- (instancetype)initWithCaption:(NSString *)caption - buttonText:(NSString *)buttonText - image:(UIImage *)image - imageSize:(CGSize)imageSize - useLargeIcon:(BOOL)useLargeIcon { - return [self initWithCaption:caption - buttonText:buttonText - image:image - imageSize:imageSize - useLargeIcon:useLargeIcon - displayLanguage:[NSLocale currentLocale].languageCode]; -} -%end -%end +# pragma mark - Tweaks +// FLEX %hook YTAppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { @@ -97,26 +51,6 @@ static BOOL oldDarkTheme() { } %end -# pragma mark - YouTube's patches -// Workaround for MiRO92/uYou-for-YouTube#12, qnblackcat/uYouPlus#263 -%hook YTDataUtils -+ (NSMutableDictionary *)spamSignalsDictionary { - return nil; -} -+ (NSMutableDictionary *)spamSignalsDictionaryWithoutIDFA { - return nil; -} -%end - -%hook YTHotConfig -- (BOOL)disableAfmaIdfaCollection { return NO; } -%end - -// https://github.com/PoomSmart/YouTube-X/blob/1e62b68e9027fcb849a75f54a402a530385f2a51/Tweak.x#L27 -// %hook YTAdsInnerTubeContextDecorator -// - (void)decorateContext:(id)context {} -// %end - // Hide YouTube annoying banner in Home page? - @MiRO92 - YTNoShorts: https://github.com/MiRO92/YTNoShorts %hook YTAsyncCollectionView - (id)cellForItemAtIndexPath:(NSIndexPath *)indexPath { @@ -137,29 +71,6 @@ static BOOL oldDarkTheme() { } %end -// Fix streched artwork in uYou's player view -%hook ArtworkImageView -- (id)imageView { - UIImageView * imageView = %orig; - imageView.contentMode = UIViewContentModeScaleAspectFit; - // Make artwork a bit bigger - UIView *artworkImageView = imageView.superview; - if (artworkImageView != nil && !artworkImageView.translatesAutoresizingMaskIntoConstraints) { - [artworkImageView.leftAnchor constraintEqualToAnchor:artworkImageView.superview.leftAnchor constant:16].active = YES; - [artworkImageView.rightAnchor constraintEqualToAnchor:artworkImageView.superview.rightAnchor constant:-16].active = YES; - } - return imageView; -} -%end - -// Remove “Play next in queue” from the menu (@PoomSmart) - qnblackcat/uYouPlus#1138 -%hook YTMenuItemVisibilityHandler -- (BOOL)shouldShowServiceItemRenderer:(YTIMenuConditionalServiceItemRenderer *)renderer { - return IsEnabled(@"hidePlayNextInQueue_enabled") && renderer.icon.iconType == 251 ? NO : %orig; -} -%end - -# pragma mark - Tweaks // IAmYouTube - https://github.com/PoomSmart/IAmYouTube/ %hook YTVersionUtils + (NSString *)appName { return YT_NAME; } @@ -221,13 +132,6 @@ static BOOL oldDarkTheme() { return YT_NAME; return %orig; } -// Fix Google Sign in by @PoomSmart and @level3tjg (qnblackcat/uYouPlus#684) -- (NSDictionary *)infoDictionary { - NSMutableDictionary *info = %orig.mutableCopy; - NSString *altBundleIdentifier = info[@"ALTBundleIdentifier"]; - if (altBundleIdentifier) info[@"CFBundleIdentifier"] = altBundleIdentifier; - return info; -} %end // YTMiniPlayerEnabler: https://github.com/level3tjg/YTMiniplayerEnabler/ @@ -247,7 +151,7 @@ static BOOL oldDarkTheme() { } %end -//YTCastConfirm: https://github.com/JamieBerghmans/YTCastConfirm +// YTCastConfirm: https://github.com/JamieBerghmans/YTCastConfirm %hook MDXPlaybackRouteButtonController - (void)didPressButton:(id)arg1 { if (IsEnabled(@"castConfirm_enabled")) { @@ -454,6 +358,7 @@ static void replaceTab(YTIGuideResponse *response) { %end # pragma mark - uYouPlus + // Video Player Options // Skips content warning before playing *some videos - @PoomSmart %hook YTPlayabilityResolutionUserActionUIController @@ -979,9 +884,6 @@ UIColor* raisedColor = [UIColor colorWithRed:0.035 green:0.035 blue:0.035 alpha: // dlopen([[NSString stringWithFormat:@"%@/Frameworks/uYou.dylib", [[NSBundle mainBundle] bundlePath]] UTF8String], RTLD_LAZY); %init; - if (@available(iOS 16, *)) { - %init(iOS16); - } if (IsEnabled(@"reExplore_enabled")) { %init(gReExplore); }