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); + } +}