From fdfc1fe39023e7f71049c566a94949646f86e20a Mon Sep 17 00:00:00 2001 From: Bryce Hackel <34104885+bhackel@users.noreply.github.com> Date: Thu, 4 Jul 2024 14:04:09 -0700 Subject: [PATCH] Fix home contents bug --- YTLitePlus.h | 8 ++++++++ YTLitePlus.xm | 31 ++++++++++++++++++++++++++++++- 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/YTLitePlus.h b/YTLitePlus.h index 365f526..508adf6 100644 --- a/YTLitePlus.h +++ b/YTLitePlus.h @@ -94,6 +94,14 @@ @property (nonatomic, assign, readwrite) BOOL enableSnapToChapter; @end +// Hide Home Tab - @bhackel +@interface YTPivotBarViewController : UIViewController +@property NSString *selectedPivotIdentifier; +@property YTIPivotBarRenderer *renderer; +- (void)selectItemWithPivotIdentifier:(NSString *)pivotIdentifier; +- (void)resetViewControllersCache; +@end + // SponsorBlock button in Nav bar @interface MDCButton : UIButton @end diff --git a/YTLitePlus.xm b/YTLitePlus.xm index d86f066..ef17c92 100644 --- a/YTLitePlus.xm +++ b/YTLitePlus.xm @@ -182,7 +182,7 @@ static BOOL IsEnabled(NSString *key) { // Hide Home Tab - @bhackel %group gHideHomeTab -%hook YTPivotBarViewController +%hook YTPivotBarView - (void)setRenderer:(YTIPivotBarRenderer *)renderer { // Iterate over each renderer item NSUInteger indexToRemove = -1; @@ -204,6 +204,35 @@ static BOOL IsEnabled(NSString *key) { %orig; } %end +// Fix bug where contents of leftmost tab is replaced by Home tab +BOOL isTabSelected = NO; +%hook YTPivotBarViewController +- (void)viewDidAppear:(BOOL)animated { + %orig; + if (!isTabSelected) { + // Get the identifier of the selected pivot + NSString *selectedPivotIdentifier = self.selectedPivotIdentifier; + // Find any different tab to switch from by looping through the renderer items + YTIPivotBarRenderer *renderer = self.renderer; + NSArray *itemsArray = renderer.itemsArray; + for (YTIPivotBarSupportedRenderers *item in itemsArray) { + YTIPivotBarItemRenderer *pivotBarItemRenderer = item.pivotBarItemRenderer; + NSString *pivotIdentifier = pivotBarItemRenderer.pivotIdentifier; + if (![pivotIdentifier isEqualToString:selectedPivotIdentifier]) { + // Switch to this tab + [self selectItemWithPivotIdentifier:pivotIdentifier]; + break; + } + } + // Clear any cached controllers to delete the broken home tab + [self resetViewControllersCache]; + // Switch back to the original tab + [self selectItemWithPivotIdentifier:selectedPivotIdentifier]; + // Update flag to not do it again + isTabSelected = YES; + } +} +%end %end // YTNoModernUI - @arichorn