From 2ac4e3b832c1a4f334347cedbbcf3d841c890f35 Mon Sep 17 00:00:00 2001 From: arichornlover <78001398+arichornlover@users.noreply.github.com> Date: Wed, 24 Jan 2024 16:50:25 -0600 Subject: [PATCH] Create YTReExplore.x --- Source/YTReExplore.x | 45 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 Source/YTReExplore.x diff --git a/Source/YTReExplore.x b/Source/YTReExplore.x new file mode 100644 index 0000000..4fb8009 --- /dev/null +++ b/Source/YTReExplore.x @@ -0,0 +1,45 @@ +#import "../Tweaks/YouTubeHeader/YTIPivotBarRenderer.h" +#import "../Tweaks/YouTubeHeader/YTIGuideResponse.h" +#import "../Tweaks/YouTubeHeader/YTIGuideResponseSupportedRenderers.h" +#import "../Tweaks/YouTubeHeader/YTIBrowseRequest.h" +#import "uYouPlus.h" + +%group YTReExplore // https://github.com/PoomSmart/YTReExplore/ +static void replaceTab(YTIGuideResponse *response) { + NSMutableArray *renderers = [response itemsArray]; + for (YTIGuideResponseSupportedRenderers *guideRenderers in renderers) { + YTIPivotBarRenderer *pivotBarRenderer = [guideRenderers pivotBarRenderer]; + NSMutableArray *items = [pivotBarRenderer itemsArray]; + NSUInteger shortIndex = [items indexOfObjectPassingTest:^BOOL(YTIPivotBarSupportedRenderers *renderers, NSUInteger idx, BOOL *stop) { + return [[[renderers pivotBarItemRenderer] pivotIdentifier] isEqualToString:@"FEshorts"]; + }]; + if (shortIndex != NSNotFound) { + [items removeObjectAtIndex:shortIndex]; + NSUInteger exploreIndex = [items indexOfObjectPassingTest:^BOOL(YTIPivotBarSupportedRenderers *renderers, NSUInteger idx, BOOL *stop) { + return [[[renderers pivotBarItemRenderer] pivotIdentifier] isEqualToString:[%c(YTIBrowseRequest) browseIDForExploreTab]]; + }]; + if (exploreIndex == NSNotFound) { + YTIPivotBarSupportedRenderers *exploreTab = [%c(YTIPivotBarRenderer) pivotSupportedRenderersWithBrowseId:[%c(YTIBrowseRequest) browseIDForExploreTab] title:@"Explore" iconType:292]; + [items insertObject:exploreTab atIndex:1]; + } + break; + } + } +} +%hook YTGuideServiceCoordinator +- (void)handleResponse:(YTIGuideResponse *)response withCompletion:(id)completion { + replaceTab(response); + %orig(response, completion); +} +- (void)handleResponse:(YTIGuideResponse *)response error:(id)error completion:(id)completion { + replaceTab(response); + %orig(response, error, completion); +} +%end +%end + +%ctor { + if (IS_ENABLED(@"reExplore_enabled")) { + %init(YTReExplore); + } +}