Create YTReExplore.x

This commit is contained in:
arichornlover 2024-01-24 16:50:25 -06:00 committed by GitHub
parent 77660c1c51
commit 2ac4e3b832
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

45
Source/YTReExplore.x Normal file
View file

@ -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 <YTIGuideResponseSupportedRenderers *> *renderers = [response itemsArray];
for (YTIGuideResponseSupportedRenderers *guideRenderers in renderers) {
YTIPivotBarRenderer *pivotBarRenderer = [guideRenderers pivotBarRenderer];
NSMutableArray <YTIPivotBarSupportedRenderers *> *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);
}
}