From a4cb5548d7e8e37a184bc278aa3968b2f476dd03 Mon Sep 17 00:00:00 2001 From: Bryce Hackel <34104885+bhackel@users.noreply.github.com> Date: Thu, 4 Jul 2024 01:16:03 -0700 Subject: [PATCH 01/11] Add Hide Home Tab --- Source/Settings.xm | 10 +++++++ YTLitePlus.xm | 29 +++++++++++++++++++ .../ar.lproj/Localizable.strings | 3 ++ .../de.lproj/Localizable.strings | 3 ++ .../en.lproj/Localizable.strings | 3 ++ .../es.lproj/Localizable.strings | 3 ++ .../fr.lproj/Localizable.strings | 3 ++ .../ja.lproj/Localizable.strings | 3 ++ .../pt.lproj/Localizable.strings | 3 ++ .../ro.lproj/Localizable.strings | 3 ++ .../ru.lproj/Localizable.strings | 3 ++ .../template.lproj/Localizable.strings | 3 ++ .../tr.lproj/Localizable.strings | 3 ++ .../zh_TW.lproj/Localizable.strings | 3 ++ 14 files changed, 75 insertions(+) diff --git a/Source/Settings.xm b/Source/Settings.xm index 8fffd76..5851301 100644 --- a/Source/Settings.xm +++ b/Source/Settings.xm @@ -530,6 +530,16 @@ extern NSBundle *YTLitePlusBundle(); } settingItemId:0], + [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"HIDE_HOME_TAB") + titleDescription:LOC(@"HIDE_HOME_TAB_DESC") + accessibilityIdentifier:nil + switchOn:IsEnabled(@"hideHomeTab_enabled") + switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { + [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"hideHomeTab_enabled"]; + return YES; + } + settingItemId:0], + [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"ENABLE_FLEX") titleDescription:LOC(@"ENABLE_FLEX_DESC") accessibilityIdentifier:nil diff --git a/YTLitePlus.xm b/YTLitePlus.xm index c74fcbf..d86f066 100644 --- a/YTLitePlus.xm +++ b/YTLitePlus.xm @@ -180,6 +180,32 @@ static BOOL IsEnabled(NSString *key) { } %end +// Hide Home Tab - @bhackel +%group gHideHomeTab +%hook YTPivotBarViewController +- (void)setRenderer:(YTIPivotBarRenderer *)renderer { + // Iterate over each renderer item + NSUInteger indexToRemove = -1; + NSMutableArray *itemsArray = renderer.itemsArray; + for (NSUInteger i = 0; i < itemsArray.count; i++) { + YTIPivotBarSupportedRenderers *item = itemsArray[i]; + // Check if this is the home tab button + YTIPivotBarItemRenderer *pivotBarItemRenderer = item.pivotBarItemRenderer; + NSString *pivotIdentifier = pivotBarItemRenderer.pivotIdentifier; + if ([pivotIdentifier isEqualToString:@"FEwhat_to_watch"]) { + // Remove the home tab button + indexToRemove = i; + break; + } + } + if (indexToRemove != -1) { + [itemsArray removeObjectAtIndex:indexToRemove]; + } + %orig; +} +%end +%end + // YTNoModernUI - @arichorn %group gYTNoModernUI %hook YTVersionUtils // YTNoModernUI Original Version @@ -643,6 +669,9 @@ static NSData *cellDividerData = nil; if (IsEnabled(@"disableLiveChatSection_enabled")) { %init(gDisableLiveChatSection); } + if (IsEnabled(@"hideHomeTab_enabled")) { + %init(gHideHomeTab); + } // Change the default value of some options diff --git a/lang/YTLitePlus.bundle/ar.lproj/Localizable.strings b/lang/YTLitePlus.bundle/ar.lproj/Localizable.strings index 428759f..e805339 100644 --- a/lang/YTLitePlus.bundle/ar.lproj/Localizable.strings +++ b/lang/YTLitePlus.bundle/ar.lproj/Localizable.strings @@ -95,6 +95,9 @@ "YT_SPEED" = "Enable YTSpeed"; "YT_SPEED_DESC" = "Enable YTSpeed to have more Playback Speed Options. App restart is required."; +"HIDE_HOME_TAB" = "Hide Home Tab"; +"HIDE_HOME_TAB_DESC" = "Be careful when hiding all tabs"; + "ENABLE_FLEX" = "تمكين FLEX"; "ENABLE_FLEX_DESC" = "تمكين FLEX للتصحيح (غير مستحسن). اترك هذا إلا إذا كنت تعرف ما تفعله"; diff --git a/lang/YTLitePlus.bundle/de.lproj/Localizable.strings b/lang/YTLitePlus.bundle/de.lproj/Localizable.strings index ccc2089..544ef23 100644 --- a/lang/YTLitePlus.bundle/de.lproj/Localizable.strings +++ b/lang/YTLitePlus.bundle/de.lproj/Localizable.strings @@ -95,6 +95,9 @@ "YT_SPEED" = "YTSpeed aktivieren"; "YT_SPEED_DESC" = "Aktiviere YTSpeed, um mehr Optionen für die Wiedergabegeschwindigkeit freizuschalten. Ein Neustart der App ist erforderlich."; +"HIDE_HOME_TAB" = "Hide Home Tab"; +"HIDE_HOME_TAB_DESC" = "Be careful when hiding all tabs"; + "ENABLE_FLEX" = "FLEX aktivieren"; "ENABLE_FLEX_DESC" = "Aktiviere FLEX zum Debuggen (nicht empfohlen). Lass diese Option deaktiviert, es sei denn, du weißt, was du tust."; diff --git a/lang/YTLitePlus.bundle/en.lproj/Localizable.strings b/lang/YTLitePlus.bundle/en.lproj/Localizable.strings index 07f2caa..60ab4ef 100644 --- a/lang/YTLitePlus.bundle/en.lproj/Localizable.strings +++ b/lang/YTLitePlus.bundle/en.lproj/Localizable.strings @@ -95,6 +95,9 @@ "YT_SPEED" = "Enable YTSpeed"; "YT_SPEED_DESC" = "Enable YTSpeed to have more Playback Speed Options. App restart is required."; +"HIDE_HOME_TAB" = "Hide Home Tab"; +"HIDE_HOME_TAB_DESC" = "Be careful when hiding all tabs"; + "ENABLE_FLEX" = "Enable FLEX"; "ENABLE_FLEX_DESC" = "Enable FLEX for debugging (not recommended). Leave this off unless you know what you are doing."; diff --git a/lang/YTLitePlus.bundle/es.lproj/Localizable.strings b/lang/YTLitePlus.bundle/es.lproj/Localizable.strings index ab1221a..775289e 100644 --- a/lang/YTLitePlus.bundle/es.lproj/Localizable.strings +++ b/lang/YTLitePlus.bundle/es.lproj/Localizable.strings @@ -95,6 +95,9 @@ "YT_SPEED" = "Activar YTSpeed"; "YT_SPEED_DESC" = "Activa YTSpeed para tener más opciones de velocidad de reproducción. Es necesario reiniciar la aplicación."; +"HIDE_HOME_TAB" = "Hide Home Tab"; +"HIDE_HOME_TAB_DESC" = "Be careful when hiding all tabs"; + "ENABLE_FLEX" = "Habilitar FLEX"; "ENABLE_FLEX_DESC" = "Habilitar FLEX para depuración (no recomendado). Déjelo desactivado a menos que sepa lo que está haciendo"; diff --git a/lang/YTLitePlus.bundle/fr.lproj/Localizable.strings b/lang/YTLitePlus.bundle/fr.lproj/Localizable.strings index f76adc7..c2a6d7a 100644 --- a/lang/YTLitePlus.bundle/fr.lproj/Localizable.strings +++ b/lang/YTLitePlus.bundle/fr.lproj/Localizable.strings @@ -98,6 +98,9 @@ "YT_SPEED" = "Activer YTSpeed"; "YT_SPEED_DESC" = "Activez YTSpeed pour avoir plus d'options de vitesse de lecture. Un redémarrage de l'application est requis."; +"HIDE_HOME_TAB" = "Hide Home Tab"; +"HIDE_HOME_TAB_DESC" = "Be careful when hiding all tabs"; + "ENABLE_FLEX" = "Activer FLEX"; "ENABLE_FLEX_DESC" = "Activez FLEX pour le débogage (non recommandé). Laissez cette option désactivée, sauf si vous savez ce que vous faites."; diff --git a/lang/YTLitePlus.bundle/ja.lproj/Localizable.strings b/lang/YTLitePlus.bundle/ja.lproj/Localizable.strings index 92a73ac..b63ff85 100644 --- a/lang/YTLitePlus.bundle/ja.lproj/Localizable.strings +++ b/lang/YTLitePlus.bundle/ja.lproj/Localizable.strings @@ -95,6 +95,9 @@ "YT_SPEED" = "YTSpeedを有効化"; "YT_SPEED_DESC" = "より多くの再生速度を選択できるようになります。アプリの再起動が必要です。"; +"HIDE_HOME_TAB" = "Hide Home Tab"; +"HIDE_HOME_TAB_DESC" = "Be careful when hiding all tabs"; + "ENABLE_FLEX" = "FLEXを有効化"; "ENABLE_FLEX_DESC" = "デバッグ用のFLEXを有効化します(推奨しません) \n何をやっているのか分からない場合はオフにしてください。"; diff --git a/lang/YTLitePlus.bundle/pt.lproj/Localizable.strings b/lang/YTLitePlus.bundle/pt.lproj/Localizable.strings index aa34061..9031166 100644 --- a/lang/YTLitePlus.bundle/pt.lproj/Localizable.strings +++ b/lang/YTLitePlus.bundle/pt.lproj/Localizable.strings @@ -95,6 +95,9 @@ "YT_SPEED" = "Enable YTSpeed"; "YT_SPEED_DESC" = "Enable YTSpeed to have more Playback Speed Options. App restart is required."; +"HIDE_HOME_TAB" = "Hide Home Tab"; +"HIDE_HOME_TAB_DESC" = "Be careful when hiding all tabs"; + "ENABLE_FLEX" = "Enable FLEX"; "ENABLE_FLEX_DESC" = "Enable FLEX for debugging (not recommended). Leave this off unless you know what you are doing."; diff --git a/lang/YTLitePlus.bundle/ro.lproj/Localizable.strings b/lang/YTLitePlus.bundle/ro.lproj/Localizable.strings index ea0ac8f..e215287 100644 --- a/lang/YTLitePlus.bundle/ro.lproj/Localizable.strings +++ b/lang/YTLitePlus.bundle/ro.lproj/Localizable.strings @@ -95,6 +95,9 @@ "YT_SPEED" = "Activare YTSpeed"; "YT_SPEED_DESC" = "Activați YTSpeed pentru a avea mai multe opțiuni pentru viteza redării. Este necesară repornirea aplicației."; +"HIDE_HOME_TAB" = "Hide Home Tab"; +"HIDE_HOME_TAB_DESC" = "Be careful when hiding all tabs"; + "ENABLE_FLEX" = "Activare FLEX"; "ENABLE_FLEX_DESC" = "Activați FLEX pentru depanare (nerecomandat). Lăsați această opțiune dezactivată dacă nu știți ce faceți."; diff --git a/lang/YTLitePlus.bundle/ru.lproj/Localizable.strings b/lang/YTLitePlus.bundle/ru.lproj/Localizable.strings index 20c2cb8..948e7de 100644 --- a/lang/YTLitePlus.bundle/ru.lproj/Localizable.strings +++ b/lang/YTLitePlus.bundle/ru.lproj/Localizable.strings @@ -95,6 +95,9 @@ "YT_SPEED" = "Enable YTSpeed"; "YT_SPEED_DESC" = "Enable YTSpeed to have more Playback Speed Options. App restart is required."; +"HIDE_HOME_TAB" = "Hide Home Tab"; +"HIDE_HOME_TAB_DESC" = "Be careful when hiding all tabs"; + "ENABLE_FLEX" = "Enable FLEX"; "ENABLE_FLEX_DESC" = "Enable FLEX for debugging (not recommended). Leave this off unless you know what you are doing."; diff --git a/lang/YTLitePlus.bundle/template.lproj/Localizable.strings b/lang/YTLitePlus.bundle/template.lproj/Localizable.strings index 341a519..5f43cd9 100644 --- a/lang/YTLitePlus.bundle/template.lproj/Localizable.strings +++ b/lang/YTLitePlus.bundle/template.lproj/Localizable.strings @@ -110,6 +110,9 @@ https://github.com/PoomSmart/Return-YouTube-Dislikes/tree/main/layout/Library/Ap "YT_SPEED" = "Enable YTSpeed"; "YT_SPEED_DESC" = "Enable YTSpeed to have more Playback Speed Options. App restart is required."; +"HIDE_HOME_TAB" = "Hide Home Tab"; +"HIDE_HOME_TAB_DESC" = "Be careful when hiding all tabs"; + "ENABLE_FLEX" = "Enable FLEX"; "ENABLE_FLEX_DESC" = "Enable FLEX for debugging (not recommended). Leave this off unless you know what you are doing."; diff --git a/lang/YTLitePlus.bundle/tr.lproj/Localizable.strings b/lang/YTLitePlus.bundle/tr.lproj/Localizable.strings index 5f28c5c..7a68e4c 100644 --- a/lang/YTLitePlus.bundle/tr.lproj/Localizable.strings +++ b/lang/YTLitePlus.bundle/tr.lproj/Localizable.strings @@ -95,6 +95,9 @@ "YT_SPEED" = "Enable YTSpeed"; "YT_SPEED_DESC" = "Enable YTSpeed to have more Playback Speed Options. App restart is required."; +"HIDE_HOME_TAB" = "Hide Home Tab"; +"HIDE_HOME_TAB_DESC" = "Be careful when hiding all tabs"; + "ENABLE_FLEX" = "Enable FLEX"; "ENABLE_FLEX_DESC" = "Enable FLEX for debugging (not recommended). Leave this off unless you know what you are doing."; diff --git a/lang/YTLitePlus.bundle/zh_TW.lproj/Localizable.strings b/lang/YTLitePlus.bundle/zh_TW.lproj/Localizable.strings index cc01736..ff58b17 100644 --- a/lang/YTLitePlus.bundle/zh_TW.lproj/Localizable.strings +++ b/lang/YTLitePlus.bundle/zh_TW.lproj/Localizable.strings @@ -93,6 +93,9 @@ "YT_SPEED" = "啟用 YTSpeed"; "YT_SPEED_DESC" = "擁有更多種影片速度。重新啟動應用程式以套用變更。"; +"HIDE_HOME_TAB" = "Hide Home Tab"; +"HIDE_HOME_TAB_DESC" = "Be careful when hiding all tabs"; + "ENABLE_FLEX" = "啟用 FLEX(不建議使用)"; "ENABLE_FLEX_DESC" = "如果不知道這是什麼,請勿啟用"; 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 02/11] 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 From d3c6da1a547ab3fcdb1feb3f4ba3353fc3711675 Mon Sep 17 00:00:00 2001 From: Bryce Hackel <34104885+bhackel@users.noreply.github.com> Date: Tue, 2 Jul 2024 22:29:24 -0700 Subject: [PATCH 03/11] refactor settings --- Source/Settings.xm | 365 ++++++--------------------------------------- 1 file changed, 48 insertions(+), 317 deletions(-) diff --git a/Source/Settings.xm b/Source/Settings.xm index 5851301..de08adc 100644 --- a/Source/Settings.xm +++ b/Source/Settings.xm @@ -7,6 +7,18 @@ #import "../Tweaks/YouTubeHeader/YTSettingsPickerViewController.h" // #import "AppIconOptionsController.h" +// Basic switch item +#define BASIC_SWITCH(title, description, key) \ + [YTSettingsSectionItemClass switchItemWithTitle:title \ + titleDescription:description \ + accessibilityIdentifier:nil \ + switchOn:IsEnabled(key) \ + switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { \ + [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:key]; \ + return YES; \ + } \ + settingItemId:0] + static BOOL IsEnabled(NSString *key) { return [[NSUserDefaults standardUserDefaults] boolForKey:key]; } @@ -83,65 +95,12 @@ extern NSBundle *YTLitePlusBundle(); # pragma mark - Video Controls Overlay Options YTSettingsSectionItem *videoControlOverlayGroup = [YTSettingsSectionItemClass itemWithTitle:LOC(@"VIDEO_CONTROLS_OVERLAY_OPTIONS") accessibilityIdentifier:nil detailTextBlock:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) { NSArray *rows = @[ - [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"ENABLE_SHARE_BUTTON") - titleDescription:LOC(@"ENABLE_SHARE_BUTTON_DESC") - accessibilityIdentifier:nil - switchOn:IsEnabled(@"enableShareButton_enabled") - switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { - [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"enableShareButton_enabled"]; - return YES; - } - settingItemId:0], - - [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"ENABLE_SAVE_TO_PLAYLIST_BUTTON") - titleDescription:LOC(@"ENABLE_SAVE_TO_PLAYLIST_BUTTON_DESC") - accessibilityIdentifier:nil - switchOn:IsEnabled(@"enableSaveToButton_enabled") - switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { - [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"enableSaveToButton_enabled"]; - return YES; - } - settingItemId:0], - - [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"HIDE_SHADOW_OVERLAY_BUTTONS") - titleDescription:LOC(@"HIDE_SHADOW_OVERLAY_BUTTONS_DESC") - accessibilityIdentifier:nil - switchOn:IsEnabled(@"hideVideoPlayerShadowOverlayButtons_enabled") - switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { - [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"hideVideoPlayerShadowOverlayButtons_enabled"]; - return YES; - } - settingItemId:0], - - [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"HIDE_RIGHT_PANEL") - titleDescription:LOC(@"HIDE_RIGHT_PANEL_DESC") - accessibilityIdentifier:nil - switchOn:IsEnabled(@"hideRightPanel_enabled") - switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { - [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"hideRightPanel_enabled"]; - return YES; - } - settingItemId:0], - - [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"NO_SUGGESTED_VIDEO") - titleDescription:LOC(@"NO_SUGGESTED_VIDEO_DESC") - accessibilityIdentifier:nil - switchOn:IsEnabled(@"noSuggestedVideo_enabled") - switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { - [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"noSuggestedVideo_enabled"]; - return YES; - } - settingItemId:0], - - [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"HIDE_HEATWAVES") - titleDescription:LOC(@"HIDE_HEATWAVES_DESC") - accessibilityIdentifier:nil - switchOn:IsEnabled(@"hideHeatwaves_enabled") - switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { - [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"hideHeatwaves_enabled"]; - return YES; - } - settingItemId:0] + BASIC_SWITCH(LOC(@"ENABLE_SHARE_BUTTON"), LOC(@"ENABLE_SHARE_BUTTON_DESC"), @"enableShareButton_enabled"), + BASIC_SWITCH(LOC(@"ENABLE_SAVE_TO_PLAYLIST_BUTTON"), LOC(@"ENABLE_SAVE_TO_PLAYLIST_BUTTON_DESC"), @"enableSaveToButton_enabled"), + BASIC_SWITCH(LOC(@"HIDE_SHADOW_OVERLAY_BUTTONS"), LOC(@"HIDE_SHADOW_OVERLAY_BUTTONS_DESC"), @"hideVideoPlayerShadowOverlayButtons_enabled"), + BASIC_SWITCH(LOC(@"HIDE_RIGHT_PANEL"), LOC(@"HIDE_RIGHT_PANEL_DESC"), @"hideRightPanel_enabled"), + BASIC_SWITCH(LOC(@"NO_SUGGESTED_VIDEO"), LOC(@"NO_SUGGESTED_VIDEO_DESC"), @"noSuggestedVideo_enabled"), + BASIC_SWITCH(LOC(@"HIDE_HEATWAVES"), LOC(@"HIDE_HEATWAVES_DESC"), @"hideHeatwaves_enabled"), ]; YTSettingsPickerViewController *picker = [[%c(YTSettingsPickerViewController) alloc] initWithNavTitle:LOC(@"VIDEO_CONTROLS_OVERLAY_OPTIONS") pickerSectionTitle:nil rows:rows selectedItemIndex:NSNotFound parentResponder:[self parentResponder]]; [settingsViewController pushViewController:picker]; @@ -152,95 +111,15 @@ extern NSBundle *YTLitePlusBundle(); # pragma mark - App Settings Overlay Options YTSettingsSectionItem *appSettingsOverlayGroup = [YTSettingsSectionItemClass itemWithTitle:LOC(@"APP_SETTINGS_OVERLAY_OPTIONS") accessibilityIdentifier:nil detailTextBlock:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) { NSArray *rows = @[ - [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"HIDE_ACCOUNT_SECTION") - titleDescription:LOC(@"APP_RESTART_DESC") - accessibilityIdentifier:nil - switchOn:IsEnabled(@"disableAccountSection_enabled") - switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { - [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"disableAccountSection_enabled"]; - return YES; - } - settingItemId:0], - - [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"HIDE_AUTOPLAY_SECTION") - titleDescription:LOC(@"APP_RESTART_DESC") - accessibilityIdentifier:nil - switchOn:IsEnabled(@"disableAutoplaySection_enabled") - switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { - [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"disableAutoplaySection_enabled"]; - return YES; - } - settingItemId:0], - - [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"HIDE_TRYNEWFEATURES_SECTION") - titleDescription:LOC(@"APP_RESTART_DESC") - accessibilityIdentifier:nil - switchOn:IsEnabled(@"disableTryNewFeaturesSection_enabled") - switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { - [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"disableTryNewFeaturesSection_enabled"]; - return YES; - } - settingItemId:0], - - [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"HIDE_VIDEOQUALITYPREFERENCES_SECTION") - titleDescription:LOC(@"APP_RESTART_DESC") - accessibilityIdentifier:nil - switchOn:IsEnabled(@"disableVideoQualityPreferencesSection_enabled") - switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { - [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"disableVideoQualityPreferencesSection_enabled"]; - return YES; - } - settingItemId:0], - - [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"HIDE_NOTIFICATIONS_SECTION") - titleDescription:LOC(@"APP_RESTART_DESC") - accessibilityIdentifier:nil - switchOn:IsEnabled(@"disableNotificationsSection_enabled") - switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { - [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"disableNotificationsSection_enabled"]; - return YES; - } - settingItemId:0], - - [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"HIDE_MANAGEALLHISTORY_SECTION") - titleDescription:LOC(@"APP_RESTART_DESC") - accessibilityIdentifier:nil - switchOn:IsEnabled(@"disableManageAllHistorySection_enabled") - switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { - [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"disableManageAllHistorySection_enabled"]; - return YES; - } - settingItemId:0], - - [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"HIDE_YOURDATAINYOUTUBE_SECTION") - titleDescription:LOC(@"APP_RESTART_DESC") - accessibilityIdentifier:nil - switchOn:IsEnabled(@"disableYourDataInYouTubeSection_enabled") - switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { - [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"disableYourDataInYouTubeSection_enabled"]; - return YES; - } - settingItemId:0], - - [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"HIDE_PRIVACY_SECTION") - titleDescription:LOC(@"APP_RESTART_DESC") - accessibilityIdentifier:nil - switchOn:IsEnabled(@"disablePrivacySection_enabled") - switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { - [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"disablePrivacySection_enabled"]; - return YES; - } - settingItemId:0], - - [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"HIDE_LIVECHAT_SECTION") - titleDescription:LOC(@"APP_RESTART_DESC") - accessibilityIdentifier:nil - switchOn:IsEnabled(@"disableLiveChatSection_enabled") - switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { - [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"disableLiveChatSection_enabled"]; - return YES; - } - settingItemId:0] + BASIC_SWITCH(LOC(@"HIDE_ACCOUNT_SECTION"), LOC(@"APP_RESTART_DESC"), @"disableAccountSection_enabled"), + BASIC_SWITCH(LOC(@"HIDE_AUTOPLAY_SECTION"), LOC(@"APP_RESTART_DESC"), @"disableAutoplaySection_enabled"), + BASIC_SWITCH(LOC(@"HIDE_TRYNEWFEATURES_SECTION"), LOC(@"APP_RESTART_DESC"), @"disableTryNewFeaturesSection_enabled"), + BASIC_SWITCH(LOC(@"HIDE_VIDEOQUALITYPREFERENCES_SECTION"), LOC(@"APP_RESTART_DESC"), @"disableVideoQualityPreferencesSection_enabled"), + BASIC_SWITCH(LOC(@"HIDE_NOTIFICATIONS_SECTION"), LOC(@"APP_RESTART_DESC"), @"disableNotificationsSection_enabled"), + BASIC_SWITCH(LOC(@"HIDE_MANAGEALLHISTORY_SECTION"), LOC(@"APP_RESTART_DESC"), @"disableManageAllHistorySection_enabled"), + BASIC_SWITCH(LOC(@"HIDE_YOURDATAINYOUTUBE_SECTION"), LOC(@"APP_RESTART_DESC"), @"disableYourDataInYouTubeSection_enabled"), + BASIC_SWITCH(LOC(@"HIDE_PRIVACY_SECTION"), LOC(@"APP_RESTART_DESC"), @"disablePrivacySection_enabled"), + BASIC_SWITCH(LOC(@"HIDE_LIVECHAT_SECTION"), LOC(@"APP_RESTART_DESC"), @"disableLiveChatSection_enabled") ]; YTSettingsPickerViewController *picker = [[%c(YTSettingsPickerViewController) alloc] initWithNavTitle:LOC(@"App Settings Overlay Options") pickerSectionTitle:nil rows:rows selectedItemIndex:NSNotFound parentResponder:[self parentResponder]]; [settingsViewController pushViewController:picker]; @@ -381,26 +260,10 @@ extern NSBundle *YTLitePlusBundle(); [settingsViewController reloadData]; return YES; }], - - [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"OLED_KEYBOARD") - titleDescription:LOC(@"OLED_KEYBOARD_DESC") - accessibilityIdentifier:nil - switchOn:IsEnabled(@"oledKeyBoard_enabled") - switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { - [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"oledKeyBoard_enabled"]; - return YES; - } - settingItemId:0], - - [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"LOW_CONTRAST_MODE") - titleDescription:LOC(@"LOW_CONTRAST_MODE_DESC") - accessibilityIdentifier:nil - switchOn:IsEnabled(@"lowContrastMode_enabled") - switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { - [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"lowContrastMode_enabled"]; - return YES; - } - settingItemId:0], lowContrastModeSection]; + BASIC_SWITCH(LOC(@"OLED_KEYBOARD"), LOC(@"OLED_KEYBOARD_DESC"), @"oledKeyBoard_enabled"), + BASIC_SWITCH(LOC(@"LOW_CONTRAST_MODE"), LOC(@"LOW_CONTRAST_MODE_DESC"), @"lowContrastMode_enabled"), + lowContrastModeSection + ]; YTSettingsPickerViewController *picker = [[%c(YTSettingsPickerViewController) alloc] initWithNavTitle:LOC(@"THEME_OPTIONS") pickerSectionTitle:nil rows:rows selectedItemIndex:GetSelection(@"appTheme") parentResponder:[self parentResponder]]; [settingsViewController pushViewController:picker]; return YES; @@ -410,155 +273,23 @@ extern NSBundle *YTLitePlusBundle(); # pragma mark - Miscellaneous YTSettingsSectionItem *miscellaneousGroup = [YTSettingsSectionItemClass itemWithTitle:LOC(@"MISCELLANEOUS") accessibilityIdentifier:nil detailTextBlock:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) { NSArray *rows = @[ - [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"ENABLE_YT_STARTUP_ANIMATION") - titleDescription:LOC(@"ENABLE_YT_STARTUP_ANIMATION_DESC") - accessibilityIdentifier:nil - switchOn:IsEnabled(@"ytStartupAnimation_enabled") - switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { - [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"ytStartupAnimation_enabled"]; - return YES; - } - settingItemId:0], - - [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"HIDE_MODERN_INTERFACE") - titleDescription:LOC(@"HIDE_MODERN_INTERFACE_DESC") - accessibilityIdentifier:nil - switchOn:IsEnabled(@"ytNoModernUI_enabled") - switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { - [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"ytNoModernUI_enabled"]; - return YES; - } - settingItemId:0], - - [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"IPAD_LAYOUT") - titleDescription:LOC(@"IPAD_LAYOUT_DESC") - accessibilityIdentifier:nil - switchOn:IsEnabled(@"iPadLayout_enabled") - switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { - [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"iPadLayout_enabled"]; - return YES; - } - settingItemId:0], - - [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"IPHONE_LAYOUT") - titleDescription:LOC(@"IPHONE_LAYOUT_DESC") - accessibilityIdentifier:nil - switchOn:IsEnabled(@"iPhoneLayout_enabled") - switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { - [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"iPhoneLayout_enabled"]; - return YES; - } - settingItemId:0], - - [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"CAST_CONFIRM") - titleDescription:LOC(@"CAST_CONFIRM_DESC") - accessibilityIdentifier:nil - switchOn:IsEnabled(@"castConfirm_enabled") - switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { - [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"castConfirm_enabled"]; - return YES; - } - settingItemId:0], - - [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"NEW_MINIPLAYER_STYLE") - titleDescription:LOC(@"NEW_MINIPLAYER_STYLE_DESC") - accessibilityIdentifier:nil - switchOn:IsEnabled(@"bigYTMiniPlayer_enabled") - switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { - [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"bigYTMiniPlayer_enabled"]; - return YES; - } - settingItemId:0], - - [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"STOCK_VOLUME_HUD") - titleDescription:LOC(@"STOCK_VOLUME_HUD_DESC") - accessibilityIdentifier:nil - switchOn:IsEnabled(@"stockVolumeHUD_enabled") - switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { - [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"stockVolumeHUD_enabled"]; - return YES; - } - settingItemId:0], - - [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"UN_SHORTS") - titleDescription:LOC(@"UN_SHORTS_DESC") - accessibilityIdentifier:nil - switchOn:IsEnabled(@"UnShorts_enabled") - switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { - [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"UnShorts_enabled"]; - return YES ; - } - settingItemId:0], - - [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"HIDE_COMMUNITY_POSTS") - titleDescription:LOC(@"HIDE_COMMUNITY_POSTS_DESC") - accessibilityIdentifier:nil - switchOn:IsEnabled(@"hideCommunityPosts_enabled") - switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { - [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"hideCommunityPosts_enabled"]; - return YES; - } - settingItemId:0], - - [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"HIDE_CAST_BUTTON") - titleDescription:LOC(@"HIDE_CAST_BUTTON_DESC") - accessibilityIdentifier:nil - switchOn:IsEnabled(@"hideCastButton_enabled") - switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { - [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"hideCastButton_enabled"]; - return YES; - } - settingItemId:0], - - [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"HIDE_SPONSORBLOCK_BUTTON") - titleDescription:LOC(@"HIDE_SPONSORBLOCK_BUTTON_DESC") - accessibilityIdentifier:nil - switchOn:IsEnabled(@"hideSponsorBlockButton_enabled") - switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { - [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"hideSponsorBlockButton_enabled"]; - return YES; - } - settingItemId:0], - - [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"YT_SPEED") - titleDescription:LOC(@"YT_SPEED_DESC") - accessibilityIdentifier:nil - switchOn:IsEnabled(@"ytSpeed_enabled") - switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { - [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"ytSpeed_enabled"]; - return YES; - } - settingItemId:0], - - [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"HIDE_HOME_TAB") - titleDescription:LOC(@"HIDE_HOME_TAB_DESC") - accessibilityIdentifier:nil - switchOn:IsEnabled(@"hideHomeTab_enabled") - switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { - [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"hideHomeTab_enabled"]; - return YES; - } - settingItemId:0], - - [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"ENABLE_FLEX") - titleDescription:LOC(@"ENABLE_FLEX_DESC") - accessibilityIdentifier:nil - switchOn:IsEnabled(@"flex_enabled") - switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { - [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"flex_enabled"]; - return YES; - } - settingItemId:0], - - [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"APP_VERSION_SPOOFER_LITE") - titleDescription:LOC(@"APP_VERSION_SPOOFER_LITE_DESC") - accessibilityIdentifier:nil - switchOn:IsEnabled(@"enableVersionSpoofer_enabled") - switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { - [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"enableVersionSpoofer_enabled"]; - return YES; - } - settingItemId:0], versionSpooferSection]; + BASIC_SWITCH(LOC(@"ENABLE_YT_STARTUP_ANIMATION"), LOC(@"ENABLE_YT_STARTUP_ANIMATION_DESC"), @"ytStartupAnimation_enabled"), + BASIC_SWITCH(LOC(@"HIDE_MODERN_INTERFACE"), LOC(@"HIDE_MODERN_INTERFACE_DESC"), @"ytNoModernUI_enabled"), + BASIC_SWITCH(LOC(@"IPAD_LAYOUT"), LOC(@"IPAD_LAYOUT_DESC"), @"iPadLayout_enabled"), + BASIC_SWITCH(LOC(@"IPHONE_LAYOUT"), LOC(@"IPHONE_LAYOUT_DESC"), @"iPhoneLayout_enabled"), + BASIC_SWITCH(LOC(@"CAST_CONFIRM"), LOC(@"CAST_CONFIRM_DESC"), @"castConfirm_enabled"), + BASIC_SWITCH(LOC(@"NEW_MINIPLAYER_STYLE"), LOC(@"NEW_MINIPLAYER_STYLE_DESC"), @"bigYTMiniPlayer_enabled"), + BASIC_SWITCH(LOC(@"STOCK_VOLUME_HUD"), LOC(@"STOCK_VOLUME_HUD_DESC"), @"stockVolumeHUD_enabled"), + BASIC_SWITCH(LOC(@"UN_SHORTS"), LOC(@"UN_SHORTS_DESC"), @"UnShorts_enabled"), + BASIC_SWITCH(LOC(@"HIDE_COMMUNITY_POSTS"), LOC(@"HIDE_COMMUNITY_POSTS_DESC"), @"hideCommunityPosts_enabled"), + BASIC_SWITCH(LOC(@"HIDE_CAST_BUTTON"), LOC(@"HIDE_CAST_BUTTON_DESC"), @"hideCastButton_enabled"), + BASIC_SWITCH(LOC(@"HIDE_SPONSORBLOCK_BUTTON"), LOC(@"HIDE_SPONSORBLOCK_BUTTON_DESC"), @"hideSponsorBlockButton_enabled"), + BASIC_SWITCH(LOC(@"YT_SPEED"), LOC(@"YT_SPEED_DESC"), @"ytSpeed_enabled"), + BASIC_SWITCH(LOC(@"HIDE_HOME_TAB"), LOC(@"HIDE_HOME_TAB_DESC"), @"hideHomeTab_enabled"), + BASIC_SWITCH(LOC(@"ENABLE_FLEX"), LOC(@"ENABLE_FLEX_DESC"), @"flex_enabled"), + BASIC_SWITCH(LOC(@"APP_VERSION_SPOOFER_LITE"), LOC(@"APP_VERSION_SPOOFER_LITE_DESC"), @"enableVersionSpoofer_enabled"), + versionSpooferSection + ]; YTSettingsPickerViewController *picker = [[%c(YTSettingsPickerViewController) alloc] initWithNavTitle:LOC(@"MISCELLANEOUS") pickerSectionTitle:nil rows:rows selectedItemIndex:NSNotFound parentResponder:[self parentResponder]]; [settingsViewController pushViewController:picker]; return YES; From 8a79f37aba8f3b9682ccfdd08d67ea0107bd0637 Mon Sep 17 00:00:00 2001 From: Bryce Hackel <34104885+bhackel@users.noreply.github.com> Date: Thu, 4 Jul 2024 15:53:47 -0700 Subject: [PATCH 04/11] Cleanup and add workflow settings --- .github/workflows/buildapp.yml | 41 +++++++++++++++++++++++++--------- 1 file changed, 31 insertions(+), 10 deletions(-) diff --git a/.github/workflows/buildapp.yml b/.github/workflows/buildapp.yml index f627c34..6fa43c0 100644 --- a/.github/workflows/buildapp.yml +++ b/.github/workflows/buildapp.yml @@ -6,18 +6,23 @@ name: Build and Release YTLitePlus on: workflow_dispatch: inputs: + sdk_version: + description: "iOS SDK Version" + default: "16.5" + required: true + type: string decrypted_youtube_url: - description: "The direct URL to the decrypted YouTube ipa" + description: "Direct URL of the decrypted YouTube ipa" default: "" required: true type: string bundle_id: - description: "Modify the bundle ID. Not recommended" + description: "Modify the bundle ID" default: "com.google.ios.youtube" required: true type: string app_name: - description: "Modify the name of the app on the Home Screen. Not recommended" + description: "Modify the app name" default: "YouTube" required: true type: string @@ -26,9 +31,19 @@ on: default: "" required: false type: string + upload_artifact: + description: "Upload ipa as artifact" + default: true + required: false + type: boolean + catbox_upload: + description: "Upload ipa to Catbox.moe" + default: false + required: false + type: boolean create_release: description: "Create a draft release" - default: true + default: false required: false type: boolean @@ -62,21 +77,22 @@ jobs: path: theos submodules: recursive - - name: Caching + - name: SDK Caching id: SDK uses: actions/cache@v4.0.2 env: - cache-name: iOS-16.5-SDK + cache-name: iOS-${{ inputs.sdk_version }}-SDK with: path: theos/sdks/ key: ${{ env.cache-name }} + restore-keys: ${{ env.cache-name }} - - name: Download iOS 16.5 SDK + - name: Download iOS SDK if: steps.SDK.outputs.cache-hit != 'true' run: | git clone -n --depth=1 --filter=tree:0 https://github.com/theos/sdks/ cd sdks - git sparse-checkout set --no-cone iPhoneOS16.5.sdk + git sparse-checkout set --no-cone iPhoneOS${{ inputs.sdk_version }}.sdk git checkout mv *.sdk $THEOS/sdks env: @@ -124,6 +140,7 @@ jobs: sed -i '' "12s#.*#BUNDLE_ID = ${{ env.BUNDLE_ID }}#g" Makefile sed -i '' "11s#.*#DISPLAY_NAME = ${{ env.APP_NAME }}#g" Makefile sed -i '' "s/^PACKAGE_VERSION.*$/PACKAGE_VERSION = ${{ env.YT_VERSION }}-${{ env.YTLITE_VERSION }}/" Makefile + sed -i '' "1s#.*#export TARGET = iphone:clang:${{ inputs.sdk_version }}:15.0#g" Makefile make package FINALPACKAGE=1 (mv "packages/$(ls -t packages | head -n1)" "packages/YTLitePlus_${{ env.YT_VERSION }}_${{ env.YTLITE_VERSION }}.ipa") echo "package=$(ls -t packages | head -n1)" >>$GITHUB_OUTPUT @@ -135,6 +152,7 @@ jobs: APP_NAME: ${{ inputs.app_name }} - name: Upload Artifact + if: ${{ inputs.upload_artifact }} uses: actions/upload-artifact@v4.3.3 with: name: YTLitePlus_${{ env.YT_VERSION }}_${{ env.YTLITE_VERSION }} @@ -142,6 +160,7 @@ jobs: if-no-files-found: error - name: Upload Artifact to Catbox + if: ${{ inputs.catbox_upload }} run: | RESPONSE=$(curl -F "reqtype=fileupload" -F "fileToUpload=@${{ github.workspace }}/main/packages/${{ steps.build_package.outputs.package }}" https://catbox.moe/user/api.php) CATBOX_URL=$(echo $RESPONSE | grep -o -E 'https://files.catbox.moe/[^"]*') @@ -150,25 +169,27 @@ jobs: echo "CATBOX_FILE=$CATBOX_FILE" >> $GITHUB_ENV - name: Prepare Release Notes + if: ${{ inputs.create_release }} run: | export TODAY=$(date '+%Y-%m-%d') sed "s/%ytliteplus_version%/${{ env.YTLITE_VERSION }}/g; s/%youtube_version%/${{ env.YT_VERSION }}/g; s/%catbox_url%/${{ env.CATBOX_FILE }}/g; s/%date%/$TODAY/g" \ main/.github/RELEASE_TEMPLATE/Release.md > ${{ github.workspace }}/release_notes.md - name: Create Release + if: ${{ inputs.create_release }} id: create_release uses: softprops/action-gh-release@v2.0.6 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - DRAFT: ${{ inputs.create_release }} with: tag_name: v${{ env.YT_VERSION }}-${{ env.YTLITE_VERSION }} name: v${{ env.YT_VERSION }}-${{ env.YTLITE_VERSION }} - YTLitePlus files: main/packages/*.ipa - draft: ${{ env.DRAFT }} + draft: true body_path: ${{ github.workspace }}/release_notes.md - name: Update Altstore Source with latest release + if: ${{ inputs.create_release }} run: | curl --location --request POST 'https://api.github.com/repos/Balackburn/YTLitePlusAltstore/dispatches' \ --header 'Authorization: token ${{ secrets.PERSONAL_ACCESS_TOKEN }}' \ From 172154a836087fd7bd7aa3aca8e49c39ae6ee5b4 Mon Sep 17 00:00:00 2001 From: Bryce Hackel <34104885+bhackel@users.noreply.github.com> Date: Tue, 2 Jul 2024 22:37:32 -0700 Subject: [PATCH 05/11] Add classic Seek Anywhere gesture --- Source/Settings.xm | 1 + YTLitePlus.xm | 7 +++++++ lang/YTLitePlus.bundle/ar.lproj/Localizable.strings | 3 +++ lang/YTLitePlus.bundle/de.lproj/Localizable.strings | 3 +++ lang/YTLitePlus.bundle/en.lproj/Localizable.strings | 3 +++ lang/YTLitePlus.bundle/es.lproj/Localizable.strings | 3 +++ lang/YTLitePlus.bundle/fr.lproj/Localizable.strings | 3 +++ lang/YTLitePlus.bundle/ja.lproj/Localizable.strings | 3 +++ lang/YTLitePlus.bundle/pt.lproj/Localizable.strings | 3 +++ lang/YTLitePlus.bundle/ro.lproj/Localizable.strings | 3 +++ lang/YTLitePlus.bundle/ru.lproj/Localizable.strings | 3 +++ lang/YTLitePlus.bundle/template.lproj/Localizable.strings | 3 +++ lang/YTLitePlus.bundle/tr.lproj/Localizable.strings | 3 +++ lang/YTLitePlus.bundle/vi.lproj/Localizable.strings | 3 +++ lang/YTLitePlus.bundle/zh_TW.lproj/Localizable.strings | 3 +++ 15 files changed, 47 insertions(+) diff --git a/Source/Settings.xm b/Source/Settings.xm index de08adc..159cfdb 100644 --- a/Source/Settings.xm +++ b/Source/Settings.xm @@ -101,6 +101,7 @@ extern NSBundle *YTLitePlusBundle(); BASIC_SWITCH(LOC(@"HIDE_RIGHT_PANEL"), LOC(@"HIDE_RIGHT_PANEL_DESC"), @"hideRightPanel_enabled"), BASIC_SWITCH(LOC(@"NO_SUGGESTED_VIDEO"), LOC(@"NO_SUGGESTED_VIDEO_DESC"), @"noSuggestedVideo_enabled"), BASIC_SWITCH(LOC(@"HIDE_HEATWAVES"), LOC(@"HIDE_HEATWAVES_DESC"), @"hideHeatwaves_enabled"), + BASIC_SWITCH(LOC(@"SEEK_ANYWHERE"), LOC(@"SEEK_ANYWHERE_DESC"), @"seekAnywhere_enabled") ]; YTSettingsPickerViewController *picker = [[%c(YTSettingsPickerViewController) alloc] initWithNavTitle:LOC(@"VIDEO_CONTROLS_OVERLAY_OPTIONS") pickerSectionTitle:nil rows:rows selectedItemIndex:NSNotFound parentResponder:[self parentResponder]]; [settingsViewController pushViewController:picker]; diff --git a/YTLitePlus.xm b/YTLitePlus.xm index ef17c92..c5659f5 100644 --- a/YTLitePlus.xm +++ b/YTLitePlus.xm @@ -440,6 +440,13 @@ static NSData *cellDividerData = nil; } %end +// Seek anywhere gesture - @bhackel +%hook YTColdConfig +- (BOOL)speedMasterArm2FastForwardWithoutSeekBySliding { + return IsEnabled(@"seekAnywhere_enabled") ? NO : %orig; +} +%end + // BigYTMiniPlayer: https://github.com/Galactic-Dev/BigYTMiniPlayer %group Main %hook YTWatchMiniBarView diff --git a/lang/YTLitePlus.bundle/ar.lproj/Localizable.strings b/lang/YTLitePlus.bundle/ar.lproj/Localizable.strings index e805339..eee3340 100644 --- a/lang/YTLitePlus.bundle/ar.lproj/Localizable.strings +++ b/lang/YTLitePlus.bundle/ar.lproj/Localizable.strings @@ -23,6 +23,9 @@ "HIDE_HEATWAVES" = "إخفاء موجات الحر"; "HIDE_HEATWAVES_DESC" = "يخفي موجات الحر في مشغل الفيديو. مطلوب إعادة تشغيل التطبيق."; +"SEEK_ANYWHERE" = "Seek Anywhere Gesture"; +"SEEK_ANYWHERE_DESC" = "Hold and drag on the video player to seek. You must disable YTLite - Hold to speed"; + // App settings overlay options "APP_SETTINGS_OVERLAY_OPTIONS" = "App Settings Overlay Options"; diff --git a/lang/YTLitePlus.bundle/de.lproj/Localizable.strings b/lang/YTLitePlus.bundle/de.lproj/Localizable.strings index 544ef23..a63deb9 100644 --- a/lang/YTLitePlus.bundle/de.lproj/Localizable.strings +++ b/lang/YTLitePlus.bundle/de.lproj/Localizable.strings @@ -23,6 +23,9 @@ "HIDE_HEATWAVES" = "Hitzewellen ausblenden"; "HIDE_HEATWAVES_DESC" = "Versteckt die Hitzewellen im Videoplayer. Ein Neustart der App ist erforderlich."; +"SEEK_ANYWHERE" = "Seek Anywhere Gesture"; +"SEEK_ANYWHERE_DESC" = "Hold and drag on the video player to seek. You must disable YTLite - Hold to speed"; + // App settings overlay options "APP_SETTINGS_OVERLAY_OPTIONS" = "Overlay-Optionen für App-Einstellungen"; diff --git a/lang/YTLitePlus.bundle/en.lproj/Localizable.strings b/lang/YTLitePlus.bundle/en.lproj/Localizable.strings index 60ab4ef..a803563 100644 --- a/lang/YTLitePlus.bundle/en.lproj/Localizable.strings +++ b/lang/YTLitePlus.bundle/en.lproj/Localizable.strings @@ -23,6 +23,9 @@ "HIDE_HEATWAVES" = "Hide Heatwaves"; "HIDE_HEATWAVES_DESC" = "Hides the Heatwaves in the video player. App restart is required."; +"SEEK_ANYWHERE" = "Seek Anywhere Gesture"; +"SEEK_ANYWHERE_DESC" = "Hold and drag on the video player to seek. You must disable YTLite - Hold to speed"; + // App settings overlay options "APP_SETTINGS_OVERLAY_OPTIONS" = "App Settings Overlay Options"; diff --git a/lang/YTLitePlus.bundle/es.lproj/Localizable.strings b/lang/YTLitePlus.bundle/es.lproj/Localizable.strings index 775289e..71112a5 100644 --- a/lang/YTLitePlus.bundle/es.lproj/Localizable.strings +++ b/lang/YTLitePlus.bundle/es.lproj/Localizable.strings @@ -23,6 +23,9 @@ "HIDE_HEATWAVES" = "Ocultar Heatwaves"; "HIDE_HEATWAVES_DESC" = "Oculta las Heatwaves en el reproductor de vídeo. Es necesario reiniciar la aplicación."; +"SEEK_ANYWHERE" = "Seek Anywhere Gesture"; +"SEEK_ANYWHERE_DESC" = "Hold and drag on the video player to seek. You must disable YTLite - Hold to speed"; + // App settings overlay options "APP_SETTINGS_OVERLAY_OPTIONS" = "Opciones de superposición de los ajustes de la aplicación"; diff --git a/lang/YTLitePlus.bundle/fr.lproj/Localizable.strings b/lang/YTLitePlus.bundle/fr.lproj/Localizable.strings index c2a6d7a..20a4094 100644 --- a/lang/YTLitePlus.bundle/fr.lproj/Localizable.strings +++ b/lang/YTLitePlus.bundle/fr.lproj/Localizable.strings @@ -23,6 +23,9 @@ "HIDE_HEATWAVES" = "Masquer les Heatwaves"; "HIDE_HEATWAVES_DESC" = "Masque les Heatwaves dans le lecteur vidéo. Le redémarrage de l'application est requis."; +"SEEK_ANYWHERE" = "Seek Anywhere Gesture"; +"SEEK_ANYWHERE_DESC" = "Hold and drag on the video player to seek. You must disable YTLite - Hold to speed"; + // App settings overlay options "APP_SETTINGS_OVERLAY_OPTIONS" = "Paramètres des options d'overlay de l'application"; diff --git a/lang/YTLitePlus.bundle/ja.lproj/Localizable.strings b/lang/YTLitePlus.bundle/ja.lproj/Localizable.strings index b63ff85..009ca30 100644 --- a/lang/YTLitePlus.bundle/ja.lproj/Localizable.strings +++ b/lang/YTLitePlus.bundle/ja.lproj/Localizable.strings @@ -23,6 +23,9 @@ "HIDE_HEATWAVES" = "ヒートウェーブを非表示"; "HIDE_HEATWAVES_DESC" = "動画プレーヤーのヒートウェーブを非表示にします。アプリの再起動が必要です。"; +"SEEK_ANYWHERE" = "Seek Anywhere Gesture"; +"SEEK_ANYWHERE_DESC" = "Hold and drag on the video player to seek. You must disable YTLite - Hold to speed"; + // App settings overlay options "APP_SETTINGS_OVERLAY_OPTIONS" = "アプリの設定オーバーレイの設定"; diff --git a/lang/YTLitePlus.bundle/pt.lproj/Localizable.strings b/lang/YTLitePlus.bundle/pt.lproj/Localizable.strings index 9031166..90d896b 100644 --- a/lang/YTLitePlus.bundle/pt.lproj/Localizable.strings +++ b/lang/YTLitePlus.bundle/pt.lproj/Localizable.strings @@ -23,6 +23,9 @@ "HIDE_HEATWAVES" = "Hide Heatwaves"; "HIDE_HEATWAVES_DESC" = "Hides the Heatwaves in the video player. App restart is required."; +"SEEK_ANYWHERE" = "Seek Anywhere Gesture"; +"SEEK_ANYWHERE_DESC" = "Hold and drag on the video player to seek. You must disable YTLite - Hold to speed"; + // App settings overlay options "APP_SETTINGS_OVERLAY_OPTIONS" = "App Settings Overlay Options"; diff --git a/lang/YTLitePlus.bundle/ro.lproj/Localizable.strings b/lang/YTLitePlus.bundle/ro.lproj/Localizable.strings index e215287..e4bb217 100644 --- a/lang/YTLitePlus.bundle/ro.lproj/Localizable.strings +++ b/lang/YTLitePlus.bundle/ro.lproj/Localizable.strings @@ -23,6 +23,9 @@ "HIDE_HEATWAVES" = "Ascunde Heatwaves"; "HIDE_HEATWAVES_DESC" = "Ascundere Heatwaves în player-ul video. Este necesară repornirea aplicației."; +"SEEK_ANYWHERE" = "Seek Anywhere Gesture"; +"SEEK_ANYWHERE_DESC" = "Hold and drag on the video player to seek. You must disable YTLite - Hold to speed"; + // App settings overlay options "APP_SETTINGS_OVERLAY_OPTIONS" = "Opțiuni Overlay Setări Aplicație"; diff --git a/lang/YTLitePlus.bundle/ru.lproj/Localizable.strings b/lang/YTLitePlus.bundle/ru.lproj/Localizable.strings index 948e7de..396b34b 100644 --- a/lang/YTLitePlus.bundle/ru.lproj/Localizable.strings +++ b/lang/YTLitePlus.bundle/ru.lproj/Localizable.strings @@ -23,6 +23,9 @@ "HIDE_HEATWAVES" = "Hide Heatwaves"; "HIDE_HEATWAVES_DESC" = "Hides the Heatwaves in the video player. App restart is required."; +"SEEK_ANYWHERE" = "Seek Anywhere Gesture"; +"SEEK_ANYWHERE_DESC" = "Hold and drag on the video player to seek. You must disable YTLite - Hold to speed"; + // App settings overlay options "APP_SETTINGS_OVERLAY_OPTIONS" = "App Settings Overlay Options"; diff --git a/lang/YTLitePlus.bundle/template.lproj/Localizable.strings b/lang/YTLitePlus.bundle/template.lproj/Localizable.strings index 5f43cd9..2e98fa6 100644 --- a/lang/YTLitePlus.bundle/template.lproj/Localizable.strings +++ b/lang/YTLitePlus.bundle/template.lproj/Localizable.strings @@ -38,6 +38,9 @@ https://github.com/PoomSmart/Return-YouTube-Dislikes/tree/main/layout/Library/Ap "HIDE_HEATWAVES" = "Hide Heatwaves"; "HIDE_HEATWAVES_DESC" = "Hides the Heatwaves in the video player. App restart is required."; +"SEEK_ANYWHERE" = "Seek Anywhere Gesture"; +"SEEK_ANYWHERE_DESC" = "Hold and drag on the video player to seek. You must disable YTLite - Hold to speed"; + // App settings overlay options "APP_SETTINGS_OVERLAY_OPTIONS" = "App Settings Overlay Options"; diff --git a/lang/YTLitePlus.bundle/tr.lproj/Localizable.strings b/lang/YTLitePlus.bundle/tr.lproj/Localizable.strings index 7a68e4c..4143157 100644 --- a/lang/YTLitePlus.bundle/tr.lproj/Localizable.strings +++ b/lang/YTLitePlus.bundle/tr.lproj/Localizable.strings @@ -23,6 +23,9 @@ "HIDE_HEATWAVES" = "Hide Heatwaves"; "HIDE_HEATWAVES_DESC" = "Hides the Heatwaves in the video player. App restart is required."; +"SEEK_ANYWHERE" = "Seek Anywhere Gesture"; +"SEEK_ANYWHERE_DESC" = "Hold and drag on the video player to seek. You must disable YTLite - Hold to speed"; + // App settings overlay options "APP_SETTINGS_OVERLAY_OPTIONS" = "App Settings Overlay Options"; diff --git a/lang/YTLitePlus.bundle/vi.lproj/Localizable.strings b/lang/YTLitePlus.bundle/vi.lproj/Localizable.strings index 11f9704..7001202 100644 --- a/lang/YTLitePlus.bundle/vi.lproj/Localizable.strings +++ b/lang/YTLitePlus.bundle/vi.lproj/Localizable.strings @@ -35,6 +35,9 @@ "HIDE_HEATWAVES" = "Ẩn sóng nhiệt"; "HIDE_HEATWAVES_DESC" = "Ẩn Sóng nhiệt trong trình phát video. Khởi động lại ứng dụng là bắt buộc."; +"SEEK_ANYWHERE" = "Seek Anywhere Gesture"; +"SEEK_ANYWHERE_DESC" = "Hold and drag on the video player to seek. You must disable YTLite - Hold to speed"; + // Shorts controls overlay options "SHORTS_CONTROLS_OVERLAY_OPTIONS" = "Tùy chọn lớp phủ điều khiển quần short"; diff --git a/lang/YTLitePlus.bundle/zh_TW.lproj/Localizable.strings b/lang/YTLitePlus.bundle/zh_TW.lproj/Localizable.strings index ff58b17..dc8181d 100644 --- a/lang/YTLitePlus.bundle/zh_TW.lproj/Localizable.strings +++ b/lang/YTLitePlus.bundle/zh_TW.lproj/Localizable.strings @@ -21,6 +21,9 @@ "HIDE_HEATWAVES" = "隱藏熱浪"; "HIDE_HEATWAVES_DESC" = "在播放器中隱藏熱浪"; +"SEEK_ANYWHERE" = "Seek Anywhere Gesture"; +"SEEK_ANYWHERE_DESC" = "Hold and drag on the video player to seek. You must disable YTLite - Hold to speed"; + // App settings overlay options "APP_SETTINGS_OVERLAY_OPTIONS" = "應用程式設定隱藏項目"; From bed3d1571fdc5e8117ef98d9373c79692f110b22 Mon Sep 17 00:00:00 2001 From: Bryce Hackel <34104885+bhackel@users.noreply.github.com> Date: Thu, 4 Jul 2024 15:19:29 -0700 Subject: [PATCH 06/11] New Settings UI, Playback in feeds --- Source/Settings.xm | 61 +++++++++++++++++++ YTLitePlus.xm | 10 +++ .../ar.lproj/Localizable.strings | 8 +++ .../de.lproj/Localizable.strings | 8 +++ .../en.lproj/Localizable.strings | 8 +++ .../es.lproj/Localizable.strings | 8 +++ .../fr.lproj/Localizable.strings | 8 +++ .../ja.lproj/Localizable.strings | 8 +++ .../pt.lproj/Localizable.strings | 8 +++ .../ro.lproj/Localizable.strings | 8 +++ .../ru.lproj/Localizable.strings | 8 +++ .../template.lproj/Localizable.strings | 8 +++ .../tr.lproj/Localizable.strings | 8 +++ .../zh_TW.lproj/Localizable.strings | 8 +++ 14 files changed, 167 insertions(+) diff --git a/Source/Settings.xm b/Source/Settings.xm index 159cfdb..63f6b01 100644 --- a/Source/Settings.xm +++ b/Source/Settings.xm @@ -39,6 +39,25 @@ static const NSInteger YTLitePlusSection = 788; extern NSBundle *YTLitePlusBundle(); +// Add both YTLite and YTLitePlus to YouGroupSettings +static const NSInteger YTLiteSection = 789; // Grabbed from YTLite +%hook YTSettingsGroupData ++ (NSMutableArray *)tweaks { + NSMutableArray *originalTweaks = %orig; + + // Use a static variable to ensure the array is modified only once. + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + [originalTweaks addObject:@(YTLitePlusSection)]; + [originalTweaks addObject:@(YTLiteSection)]; + }); + + // Return the modified array. + return originalTweaks; +} +%end + + // Settings %hook YTAppSettingsPresentationData + (NSArray *)settingsCategoryOrder { @@ -271,9 +290,51 @@ extern NSBundle *YTLitePlusBundle(); }]; [sectionItems addObject:themeGroup]; +# pragma mark - Copy of Playback in feeds section - @bhackel + // This section is hidden in vanilla YouTube when using the new settings UI, so + // we can recreate it here + YTSettingsSectionItem *playbackInFeedsGroup = [YTSettingsSectionItemClass itemWithTitle:LOC(@"PLAYBACK_IN_FEEDS") + accessibilityIdentifier:nil + detailTextBlock:^NSString *() { + switch (GetSelection(@"inline_muted_playback_enabled")) { + case 3: + return LOC(@"PLAYBACK_IN_FEEDS_WIFI_ONLY"); + case 1: + return LOC(@"PLAYBACK_IN_FEEDS_OFF"); + case 2: + default: + return LOC(@"PLAYBACK_IN_FEEDS_ALWAYS_ON"); + } + } + selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) { + NSArray *rows = @[ + [YTSettingsSectionItemClass checkmarkItemWithTitle:LOC(@"PLAYBACK_IN_FEEDS_OFF") selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) { + [[NSUserDefaults standardUserDefaults] setInteger:1 forKey:@"inline_muted_playback_enabled"]; + [settingsViewController reloadData]; + return YES; + }], + [YTSettingsSectionItemClass checkmarkItemWithTitle:LOC(@"PLAYBACK_IN_FEEDS_ALWAYS_ON") selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) { + [[NSUserDefaults standardUserDefaults] setInteger:2 forKey:@"inline_muted_playback_enabled"]; + [settingsViewController reloadData]; + return YES; + }], + [YTSettingsSectionItemClass checkmarkItemWithTitle:LOC(@"PLAYBACK_IN_FEEDS_WIFI_ONLY") selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) { + [[NSUserDefaults standardUserDefaults] setInteger:3 forKey:@"inline_muted_playback_enabled"]; + [settingsViewController reloadData]; + return YES; + }], + ]; + YTSettingsPickerViewController *picker = [[%c(YTSettingsPickerViewController) alloc] initWithNavTitle:LOC(@"PLAYBACK_IN_FEEDS") pickerSectionTitle:nil rows:rows selectedItemIndex:(GetSelection(@"inline_muted_playback_enabled") - 1) parentResponder:[self parentResponder]]; + [settingsViewController pushViewController:picker]; + return YES; + } + ]; + # pragma mark - Miscellaneous YTSettingsSectionItem *miscellaneousGroup = [YTSettingsSectionItemClass itemWithTitle:LOC(@"MISCELLANEOUS") accessibilityIdentifier:nil detailTextBlock:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) { NSArray *rows = @[ + playbackInFeedsGroup, + BASIC_SWITCH(LOC(@"NEW_SETTINGS_UI"), LOC(@"NEW_SETTINGS_UI_DESC"), @"newSettingsUI_enabled"), BASIC_SWITCH(LOC(@"ENABLE_YT_STARTUP_ANIMATION"), LOC(@"ENABLE_YT_STARTUP_ANIMATION_DESC"), @"ytStartupAnimation_enabled"), BASIC_SWITCH(LOC(@"HIDE_MODERN_INTERFACE"), LOC(@"HIDE_MODERN_INTERFACE_DESC"), @"ytNoModernUI_enabled"), BASIC_SWITCH(LOC(@"IPAD_LAYOUT"), LOC(@"IPAD_LAYOUT_DESC"), @"iPadLayout_enabled"), diff --git a/YTLitePlus.xm b/YTLitePlus.xm index c5659f5..82540b4 100644 --- a/YTLitePlus.xm +++ b/YTLitePlus.xm @@ -447,6 +447,13 @@ static NSData *cellDividerData = nil; } %end +// New Settings UI - @bhackel +%hook YTColdConfig +- (BOOL)mainAppCoreClientEnableCairoSettings { + return IS_ENABLED(@"newSettingsUI_enabled"); +} +%end + // BigYTMiniPlayer: https://github.com/Galactic-Dev/BigYTMiniPlayer %group Main %hook YTWatchMiniBarView @@ -718,4 +725,7 @@ static NSData *cellDividerData = nil; if (![allKeys containsObject:@"YouPiPEnabled"]) { [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"YouPiPEnabled"]; } + if (![allKeys containsObject:@"newSettingsUI_enabled"]) { + [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"newSettingsUI_enabled"]; + } } diff --git a/lang/YTLitePlus.bundle/ar.lproj/Localizable.strings b/lang/YTLitePlus.bundle/ar.lproj/Localizable.strings index eee3340..fa3bdce 100644 --- a/lang/YTLitePlus.bundle/ar.lproj/Localizable.strings +++ b/lang/YTLitePlus.bundle/ar.lproj/Localizable.strings @@ -64,6 +64,14 @@ // Miscellaneous "MISCELLANEOUS" = "متنوع"; +"PLAYBACK_IN_FEEDS" = "Playback in feeds"; +"PLAYBACK_IN_FEEDS_ALWAYS_ON" = "Always on"; +"PLAYBACK_IN_FEEDS_WIFI_ONLY" = "Wi-Fi only"; +"PLAYBACK_IN_FEEDS_OFF" = "Off"; + +"NEW_SETTINGS_UI" = "New Settings UI"; +"NEW_SETTINGS_UI_DESC" = "Use new grouped settings UI. May hide some settings"; + "ENABLE_YT_STARTUP_ANIMATION" = "Enable YouTube startup animation"; "ENABLE_YT_STARTUP_ANIMATION_DESC" = ""; diff --git a/lang/YTLitePlus.bundle/de.lproj/Localizable.strings b/lang/YTLitePlus.bundle/de.lproj/Localizable.strings index a63deb9..351c9cc 100644 --- a/lang/YTLitePlus.bundle/de.lproj/Localizable.strings +++ b/lang/YTLitePlus.bundle/de.lproj/Localizable.strings @@ -64,6 +64,14 @@ // Miscellaneous "MISCELLANEOUS" = "Verschiedenes"; +"PLAYBACK_IN_FEEDS" = "Playback in feeds"; +"PLAYBACK_IN_FEEDS_ALWAYS_ON" = "Always on"; +"PLAYBACK_IN_FEEDS_WIFI_ONLY" = "Wi-Fi only"; +"PLAYBACK_IN_FEEDS_OFF" = "Off"; + +"NEW_SETTINGS_UI" = "New Settings UI"; +"NEW_SETTINGS_UI_DESC" = "Use new grouped settings UI. May hide some settings"; + "ENABLE_YT_STARTUP_ANIMATION" = "YouTube-Startanimation aktivieren"; "ENABLE_YT_STARTUP_ANIMATION_DESC" = ""; diff --git a/lang/YTLitePlus.bundle/en.lproj/Localizable.strings b/lang/YTLitePlus.bundle/en.lproj/Localizable.strings index a803563..0ceb43c 100644 --- a/lang/YTLitePlus.bundle/en.lproj/Localizable.strings +++ b/lang/YTLitePlus.bundle/en.lproj/Localizable.strings @@ -64,6 +64,14 @@ // Miscellaneous "MISCELLANEOUS" = "Miscellaneous"; +"PLAYBACK_IN_FEEDS" = "Playback in feeds"; +"PLAYBACK_IN_FEEDS_ALWAYS_ON" = "Always on"; +"PLAYBACK_IN_FEEDS_WIFI_ONLY" = "Wi-Fi only"; +"PLAYBACK_IN_FEEDS_OFF" = "Off"; + +"NEW_SETTINGS_UI" = "New Settings UI"; +"NEW_SETTINGS_UI_DESC" = "Use new grouped settings UI. May hide some settings"; + "ENABLE_YT_STARTUP_ANIMATION" = "Enable YouTube startup animation"; "ENABLE_YT_STARTUP_ANIMATION_DESC" = ""; diff --git a/lang/YTLitePlus.bundle/es.lproj/Localizable.strings b/lang/YTLitePlus.bundle/es.lproj/Localizable.strings index 71112a5..7981598 100644 --- a/lang/YTLitePlus.bundle/es.lproj/Localizable.strings +++ b/lang/YTLitePlus.bundle/es.lproj/Localizable.strings @@ -64,6 +64,14 @@ // Miscellaneous "MISCELLANEOUS" = "Misceláneos"; +"PLAYBACK_IN_FEEDS" = "Playback in feeds"; +"PLAYBACK_IN_FEEDS_ALWAYS_ON" = "Always on"; +"PLAYBACK_IN_FEEDS_WIFI_ONLY" = "Wi-Fi only"; +"PLAYBACK_IN_FEEDS_OFF" = "Off"; + +"NEW_SETTINGS_UI" = "New Settings UI"; +"NEW_SETTINGS_UI_DESC" = "Use new grouped settings UI. May hide some settings"; + "ENABLE_YT_STARTUP_ANIMATION" = "Activar la animación de inicio de YouTube"; "ENABLE_YT_STARTUP_ANIMATION_DESC" = ""; diff --git a/lang/YTLitePlus.bundle/fr.lproj/Localizable.strings b/lang/YTLitePlus.bundle/fr.lproj/Localizable.strings index 20a4094..675d020 100644 --- a/lang/YTLitePlus.bundle/fr.lproj/Localizable.strings +++ b/lang/YTLitePlus.bundle/fr.lproj/Localizable.strings @@ -67,6 +67,14 @@ // Miscellaneous "MISCELLANEOUS" = "Divers"; +"PLAYBACK_IN_FEEDS" = "Playback in feeds"; +"PLAYBACK_IN_FEEDS_ALWAYS_ON" = "Always on"; +"PLAYBACK_IN_FEEDS_WIFI_ONLY" = "Wi-Fi only"; +"PLAYBACK_IN_FEEDS_OFF" = "Off"; + +"NEW_SETTINGS_UI" = "New Settings UI"; +"NEW_SETTINGS_UI_DESC" = "Use new grouped settings UI. May hide some settings"; + "ENABLE_YT_STARTUP_ANIMATION" = "Activer l'animation de démarrage YouTube"; "ENABLE_YT_STARTUP_ANIMATION_DESC" = ""; diff --git a/lang/YTLitePlus.bundle/ja.lproj/Localizable.strings b/lang/YTLitePlus.bundle/ja.lproj/Localizable.strings index 009ca30..fa52201 100644 --- a/lang/YTLitePlus.bundle/ja.lproj/Localizable.strings +++ b/lang/YTLitePlus.bundle/ja.lproj/Localizable.strings @@ -64,6 +64,14 @@ // Miscellaneous "MISCELLANEOUS" = "その他"; +"PLAYBACK_IN_FEEDS" = "Playback in feeds"; +"PLAYBACK_IN_FEEDS_ALWAYS_ON" = "Always on"; +"PLAYBACK_IN_FEEDS_WIFI_ONLY" = "Wi-Fi only"; +"PLAYBACK_IN_FEEDS_OFF" = "Off"; + +"NEW_SETTINGS_UI" = "New Settings UI"; +"NEW_SETTINGS_UI_DESC" = "Use new grouped settings UI. May hide some settings"; + "ENABLE_YT_STARTUP_ANIMATION" = "YouTube起動時のアニメーションを有効化"; "ENABLE_YT_STARTUP_ANIMATION_DESC" = ""; diff --git a/lang/YTLitePlus.bundle/pt.lproj/Localizable.strings b/lang/YTLitePlus.bundle/pt.lproj/Localizable.strings index 90d896b..6888eb9 100644 --- a/lang/YTLitePlus.bundle/pt.lproj/Localizable.strings +++ b/lang/YTLitePlus.bundle/pt.lproj/Localizable.strings @@ -64,6 +64,14 @@ // Miscellaneous "MISCELLANEOUS" = "Miscellaneous"; +"PLAYBACK_IN_FEEDS" = "Playback in feeds"; +"PLAYBACK_IN_FEEDS_ALWAYS_ON" = "Always on"; +"PLAYBACK_IN_FEEDS_WIFI_ONLY" = "Wi-Fi only"; +"PLAYBACK_IN_FEEDS_OFF" = "Off"; + +"NEW_SETTINGS_UI" = "New Settings UI"; +"NEW_SETTINGS_UI_DESC" = "Use new grouped settings UI. May hide some settings"; + "ENABLE_YT_STARTUP_ANIMATION" = "Enable YouTube startup animation"; "ENABLE_YT_STARTUP_ANIMATION_DESC" = ""; diff --git a/lang/YTLitePlus.bundle/ro.lproj/Localizable.strings b/lang/YTLitePlus.bundle/ro.lproj/Localizable.strings index e4bb217..1071e50 100644 --- a/lang/YTLitePlus.bundle/ro.lproj/Localizable.strings +++ b/lang/YTLitePlus.bundle/ro.lproj/Localizable.strings @@ -64,6 +64,14 @@ // Miscellaneous "MISCELLANEOUS" = "Diverse"; +"PLAYBACK_IN_FEEDS" = "Playback in feeds"; +"PLAYBACK_IN_FEEDS_ALWAYS_ON" = "Always on"; +"PLAYBACK_IN_FEEDS_WIFI_ONLY" = "Wi-Fi only"; +"PLAYBACK_IN_FEEDS_OFF" = "Off"; + +"NEW_SETTINGS_UI" = "New Settings UI"; +"NEW_SETTINGS_UI_DESC" = "Use new grouped settings UI. May hide some settings"; + "ENABLE_YT_STARTUP_ANIMATION" = "Activare animație de pornire YouTube"; "ENABLE_YT_STARTUP_ANIMATION_DESC" = ""; diff --git a/lang/YTLitePlus.bundle/ru.lproj/Localizable.strings b/lang/YTLitePlus.bundle/ru.lproj/Localizable.strings index 396b34b..f23eef1 100644 --- a/lang/YTLitePlus.bundle/ru.lproj/Localizable.strings +++ b/lang/YTLitePlus.bundle/ru.lproj/Localizable.strings @@ -64,6 +64,14 @@ // Miscellaneous "MISCELLANEOUS" = "Miscellaneous"; +"PLAYBACK_IN_FEEDS" = "Playback in feeds"; +"PLAYBACK_IN_FEEDS_ALWAYS_ON" = "Always on"; +"PLAYBACK_IN_FEEDS_WIFI_ONLY" = "Wi-Fi only"; +"PLAYBACK_IN_FEEDS_OFF" = "Off"; + +"NEW_SETTINGS_UI" = "New Settings UI"; +"NEW_SETTINGS_UI_DESC" = "Use new grouped settings UI. May hide some settings"; + "ENABLE_YT_STARTUP_ANIMATION" = "Enable YouTube startup animation"; "ENABLE_YT_STARTUP_ANIMATION_DESC" = ""; diff --git a/lang/YTLitePlus.bundle/template.lproj/Localizable.strings b/lang/YTLitePlus.bundle/template.lproj/Localizable.strings index 2e98fa6..9e5ff2d 100644 --- a/lang/YTLitePlus.bundle/template.lproj/Localizable.strings +++ b/lang/YTLitePlus.bundle/template.lproj/Localizable.strings @@ -79,6 +79,14 @@ https://github.com/PoomSmart/Return-YouTube-Dislikes/tree/main/layout/Library/Ap // Miscellaneous "MISCELLANEOUS" = "Miscellaneous"; +"PLAYBACK_IN_FEEDS" = "Playback in feeds"; +"PLAYBACK_IN_FEEDS_ALWAYS_ON" = "Always on"; +"PLAYBACK_IN_FEEDS_WIFI_ONLY" = "Wi-Fi only"; +"PLAYBACK_IN_FEEDS_OFF" = "Off"; + +"NEW_SETTINGS_UI" = "New Settings UI"; +"NEW_SETTINGS_UI_DESC" = "Use new grouped settings UI. May hide some settings"; + "ENABLE_YT_STARTUP_ANIMATION" = "Enable YouTube startup animation"; "ENABLE_YT_STARTUP_ANIMATION_DESC" = ""; diff --git a/lang/YTLitePlus.bundle/tr.lproj/Localizable.strings b/lang/YTLitePlus.bundle/tr.lproj/Localizable.strings index 4143157..d306764 100644 --- a/lang/YTLitePlus.bundle/tr.lproj/Localizable.strings +++ b/lang/YTLitePlus.bundle/tr.lproj/Localizable.strings @@ -64,6 +64,14 @@ // Miscellaneous "MISCELLANEOUS" = "Miscellaneous"; +"PLAYBACK_IN_FEEDS" = "Playback in feeds"; +"PLAYBACK_IN_FEEDS_ALWAYS_ON" = "Always on"; +"PLAYBACK_IN_FEEDS_WIFI_ONLY" = "Wi-Fi only"; +"PLAYBACK_IN_FEEDS_OFF" = "Off"; + +"NEW_SETTINGS_UI" = "New Settings UI"; +"NEW_SETTINGS_UI_DESC" = "Use new grouped settings UI. May hide some settings"; + "ENABLE_YT_STARTUP_ANIMATION" = "Enable YouTube startup animation"; "ENABLE_YT_STARTUP_ANIMATION_DESC" = ""; diff --git a/lang/YTLitePlus.bundle/zh_TW.lproj/Localizable.strings b/lang/YTLitePlus.bundle/zh_TW.lproj/Localizable.strings index dc8181d..ac9a63b 100644 --- a/lang/YTLitePlus.bundle/zh_TW.lproj/Localizable.strings +++ b/lang/YTLitePlus.bundle/zh_TW.lproj/Localizable.strings @@ -62,6 +62,14 @@ // Miscellaneous "MISCELLANEOUS" = "更多"; +"PLAYBACK_IN_FEEDS" = "Playback in feeds"; +"PLAYBACK_IN_FEEDS_ALWAYS_ON" = "Always on"; +"PLAYBACK_IN_FEEDS_WIFI_ONLY" = "Wi-Fi only"; +"PLAYBACK_IN_FEEDS_OFF" = "Off"; + +"NEW_SETTINGS_UI" = "New Settings UI"; +"NEW_SETTINGS_UI_DESC" = "Use new grouped settings UI. May hide some settings"; + "ENABLE_YT_STARTUP_ANIMATION" = "啟用 Youtube 歡迎動畫"; "ENABLE_YT_STARTUP_ANIMATION_DESC" = ""; From 3c63594fc61b03e971ada323e0c79440a2150983 Mon Sep 17 00:00:00 2001 From: Bryce Hackel <34104885+bhackel@users.noreply.github.com> Date: Thu, 4 Jul 2024 23:30:12 -0700 Subject: [PATCH 07/11] Fix crash caused by edge case --- Source/Settings.xm | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Source/Settings.xm b/Source/Settings.xm index 63f6b01..543efe3 100644 --- a/Source/Settings.xm +++ b/Source/Settings.xm @@ -324,7 +324,12 @@ static const NSInteger YTLiteSection = 789; // Grabbed from YTLite return YES; }], ]; - YTSettingsPickerViewController *picker = [[%c(YTSettingsPickerViewController) alloc] initWithNavTitle:LOC(@"PLAYBACK_IN_FEEDS") pickerSectionTitle:nil rows:rows selectedItemIndex:(GetSelection(@"inline_muted_playback_enabled") - 1) parentResponder:[self parentResponder]]; + // It seems values greater than 3 act the same as Always On (Index 1) + int (^getInlineSelection)() = ^int() { + int selection = GetSelection(@"inline_muted_playback_enabled") - 1; + return selection > 3 ? 1 : selection; + }; + YTSettingsPickerViewController *picker = [[%c(YTSettingsPickerViewController) alloc] initWithNavTitle:LOC(@"PLAYBACK_IN_FEEDS") pickerSectionTitle:nil rows:rows selectedItemIndex:getInlineSelection() parentResponder:[self parentResponder]]; [settingsViewController pushViewController:picker]; return YES; } From 4074281265899f292ca90d7d59d6641d1beb34ab Mon Sep 17 00:00:00 2001 From: Bryce Hackel <34104885+bhackel@users.noreply.github.com> Date: Fri, 5 Jul 2024 01:33:58 -0700 Subject: [PATCH 08/11] Add casting fix from uYouEnhanced --- Source/Settings.xm | 1 + YTLitePlus.xm | 18 ++++++++++++++++++ .../ar.lproj/Localizable.strings | 3 +++ .../de.lproj/Localizable.strings | 3 +++ .../en.lproj/Localizable.strings | 3 +++ .../es.lproj/Localizable.strings | 3 +++ .../fr.lproj/Localizable.strings | 3 +++ .../ja.lproj/Localizable.strings | 3 +++ .../pt.lproj/Localizable.strings | 3 +++ .../ro.lproj/Localizable.strings | 3 +++ .../ru.lproj/Localizable.strings | 3 +++ .../template.lproj/Localizable.strings | 3 +++ .../tr.lproj/Localizable.strings | 3 +++ .../zh_TW.lproj/Localizable.strings | 3 +++ 14 files changed, 55 insertions(+) diff --git a/Source/Settings.xm b/Source/Settings.xm index 543efe3..57f2653 100644 --- a/Source/Settings.xm +++ b/Source/Settings.xm @@ -353,6 +353,7 @@ static const NSInteger YTLiteSection = 789; // Grabbed from YTLite BASIC_SWITCH(LOC(@"HIDE_SPONSORBLOCK_BUTTON"), LOC(@"HIDE_SPONSORBLOCK_BUTTON_DESC"), @"hideSponsorBlockButton_enabled"), BASIC_SWITCH(LOC(@"YT_SPEED"), LOC(@"YT_SPEED_DESC"), @"ytSpeed_enabled"), BASIC_SWITCH(LOC(@"HIDE_HOME_TAB"), LOC(@"HIDE_HOME_TAB_DESC"), @"hideHomeTab_enabled"), + BASIC_SWITCH(LOC(@"FIX_CASTING"), LOC(@"FIX_CASTING_DESC"), @"fixCasting_enabled"), BASIC_SWITCH(LOC(@"ENABLE_FLEX"), LOC(@"ENABLE_FLEX_DESC"), @"flex_enabled"), BASIC_SWITCH(LOC(@"APP_VERSION_SPOOFER_LITE"), LOC(@"APP_VERSION_SPOOFER_LITE_DESC"), @"enableVersionSpoofer_enabled"), versionSpooferSection diff --git a/YTLitePlus.xm b/YTLitePlus.xm index 82540b4..de60347 100644 --- a/YTLitePlus.xm +++ b/YTLitePlus.xm @@ -396,6 +396,18 @@ BOOL isTabSelected = NO; } %end +// Fix Casting: https://github.com/arichornlover/uYouEnhanced/issues/606#issuecomment-2098289942 +%group gFixCasting +%hook YTColdConfig +- (BOOL)cxClientEnableIosLocalNetworkPermissionReliabilityFixes { return YES; } +- (BOOL)cxClientEnableIosLocalNetworkPermissionUsingSockets { return NO; } +- (BOOL)cxClientEnableIosLocalNetworkPermissionWifiFixes { return YES; } +%end +%hook YTHotConfig +- (BOOL)isPromptForLocalNetworkPermissionsEnabled { return YES; } +%end +%end + // YTUnShorts - https://github.com/PoomSmart/YTUnShorts %hook YTIElementRenderer @@ -715,6 +727,9 @@ static NSData *cellDividerData = nil; if (IsEnabled(@"hideHomeTab_enabled")) { %init(gHideHomeTab); } + if (IsEnabled(@"fixCasting_enabled")) { + %init(gFixCasting); + } // Change the default value of some options @@ -728,4 +743,7 @@ static NSData *cellDividerData = nil; if (![allKeys containsObject:@"newSettingsUI_enabled"]) { [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"newSettingsUI_enabled"]; } + if (![allKeys containsObject:@"fixCasting_enabled"]) { + [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"fixCasting_enabled"]; + } } diff --git a/lang/YTLitePlus.bundle/ar.lproj/Localizable.strings b/lang/YTLitePlus.bundle/ar.lproj/Localizable.strings index fa3bdce..472952d 100644 --- a/lang/YTLitePlus.bundle/ar.lproj/Localizable.strings +++ b/lang/YTLitePlus.bundle/ar.lproj/Localizable.strings @@ -109,6 +109,9 @@ "HIDE_HOME_TAB" = "Hide Home Tab"; "HIDE_HOME_TAB_DESC" = "Be careful when hiding all tabs"; +"FIX_CASTING" = "Fix Casting"; +"FIX_CASTING_DESC" = "Changes some AB flags to fix casting"; + "ENABLE_FLEX" = "تمكين FLEX"; "ENABLE_FLEX_DESC" = "تمكين FLEX للتصحيح (غير مستحسن). اترك هذا إلا إذا كنت تعرف ما تفعله"; diff --git a/lang/YTLitePlus.bundle/de.lproj/Localizable.strings b/lang/YTLitePlus.bundle/de.lproj/Localizable.strings index 351c9cc..c1c4ede 100644 --- a/lang/YTLitePlus.bundle/de.lproj/Localizable.strings +++ b/lang/YTLitePlus.bundle/de.lproj/Localizable.strings @@ -109,6 +109,9 @@ "HIDE_HOME_TAB" = "Hide Home Tab"; "HIDE_HOME_TAB_DESC" = "Be careful when hiding all tabs"; +"FIX_CASTING" = "Fix Casting"; +"FIX_CASTING_DESC" = "Changes some AB flags to fix casting"; + "ENABLE_FLEX" = "FLEX aktivieren"; "ENABLE_FLEX_DESC" = "Aktiviere FLEX zum Debuggen (nicht empfohlen). Lass diese Option deaktiviert, es sei denn, du weißt, was du tust."; diff --git a/lang/YTLitePlus.bundle/en.lproj/Localizable.strings b/lang/YTLitePlus.bundle/en.lproj/Localizable.strings index 0ceb43c..c5ebc75 100644 --- a/lang/YTLitePlus.bundle/en.lproj/Localizable.strings +++ b/lang/YTLitePlus.bundle/en.lproj/Localizable.strings @@ -109,6 +109,9 @@ "HIDE_HOME_TAB" = "Hide Home Tab"; "HIDE_HOME_TAB_DESC" = "Be careful when hiding all tabs"; +"FIX_CASTING" = "Fix Casting"; +"FIX_CASTING_DESC" = "Changes some AB flags to fix casting"; + "ENABLE_FLEX" = "Enable FLEX"; "ENABLE_FLEX_DESC" = "Enable FLEX for debugging (not recommended). Leave this off unless you know what you are doing."; diff --git a/lang/YTLitePlus.bundle/es.lproj/Localizable.strings b/lang/YTLitePlus.bundle/es.lproj/Localizable.strings index 7981598..db1341f 100644 --- a/lang/YTLitePlus.bundle/es.lproj/Localizable.strings +++ b/lang/YTLitePlus.bundle/es.lproj/Localizable.strings @@ -109,6 +109,9 @@ "HIDE_HOME_TAB" = "Hide Home Tab"; "HIDE_HOME_TAB_DESC" = "Be careful when hiding all tabs"; +"FIX_CASTING" = "Fix Casting"; +"FIX_CASTING_DESC" = "Changes some AB flags to fix casting"; + "ENABLE_FLEX" = "Habilitar FLEX"; "ENABLE_FLEX_DESC" = "Habilitar FLEX para depuración (no recomendado). Déjelo desactivado a menos que sepa lo que está haciendo"; diff --git a/lang/YTLitePlus.bundle/fr.lproj/Localizable.strings b/lang/YTLitePlus.bundle/fr.lproj/Localizable.strings index 675d020..42216b6 100644 --- a/lang/YTLitePlus.bundle/fr.lproj/Localizable.strings +++ b/lang/YTLitePlus.bundle/fr.lproj/Localizable.strings @@ -112,6 +112,9 @@ "HIDE_HOME_TAB" = "Hide Home Tab"; "HIDE_HOME_TAB_DESC" = "Be careful when hiding all tabs"; +"FIX_CASTING" = "Fix Casting"; +"FIX_CASTING_DESC" = "Changes some AB flags to fix casting"; + "ENABLE_FLEX" = "Activer FLEX"; "ENABLE_FLEX_DESC" = "Activez FLEX pour le débogage (non recommandé). Laissez cette option désactivée, sauf si vous savez ce que vous faites."; diff --git a/lang/YTLitePlus.bundle/ja.lproj/Localizable.strings b/lang/YTLitePlus.bundle/ja.lproj/Localizable.strings index fa52201..10a047d 100644 --- a/lang/YTLitePlus.bundle/ja.lproj/Localizable.strings +++ b/lang/YTLitePlus.bundle/ja.lproj/Localizable.strings @@ -109,6 +109,9 @@ "HIDE_HOME_TAB" = "Hide Home Tab"; "HIDE_HOME_TAB_DESC" = "Be careful when hiding all tabs"; +"FIX_CASTING" = "Fix Casting"; +"FIX_CASTING_DESC" = "Changes some AB flags to fix casting"; + "ENABLE_FLEX" = "FLEXを有効化"; "ENABLE_FLEX_DESC" = "デバッグ用のFLEXを有効化します(推奨しません) \n何をやっているのか分からない場合はオフにしてください。"; diff --git a/lang/YTLitePlus.bundle/pt.lproj/Localizable.strings b/lang/YTLitePlus.bundle/pt.lproj/Localizable.strings index 6888eb9..e13ea5e 100644 --- a/lang/YTLitePlus.bundle/pt.lproj/Localizable.strings +++ b/lang/YTLitePlus.bundle/pt.lproj/Localizable.strings @@ -109,6 +109,9 @@ "HIDE_HOME_TAB" = "Hide Home Tab"; "HIDE_HOME_TAB_DESC" = "Be careful when hiding all tabs"; +"FIX_CASTING" = "Fix Casting"; +"FIX_CASTING_DESC" = "Changes some AB flags to fix casting"; + "ENABLE_FLEX" = "Enable FLEX"; "ENABLE_FLEX_DESC" = "Enable FLEX for debugging (not recommended). Leave this off unless you know what you are doing."; diff --git a/lang/YTLitePlus.bundle/ro.lproj/Localizable.strings b/lang/YTLitePlus.bundle/ro.lproj/Localizable.strings index 1071e50..1fe270d 100644 --- a/lang/YTLitePlus.bundle/ro.lproj/Localizable.strings +++ b/lang/YTLitePlus.bundle/ro.lproj/Localizable.strings @@ -109,6 +109,9 @@ "HIDE_HOME_TAB" = "Hide Home Tab"; "HIDE_HOME_TAB_DESC" = "Be careful when hiding all tabs"; +"FIX_CASTING" = "Fix Casting"; +"FIX_CASTING_DESC" = "Changes some AB flags to fix casting"; + "ENABLE_FLEX" = "Activare FLEX"; "ENABLE_FLEX_DESC" = "Activați FLEX pentru depanare (nerecomandat). Lăsați această opțiune dezactivată dacă nu știți ce faceți."; diff --git a/lang/YTLitePlus.bundle/ru.lproj/Localizable.strings b/lang/YTLitePlus.bundle/ru.lproj/Localizable.strings index f23eef1..c9e609a 100644 --- a/lang/YTLitePlus.bundle/ru.lproj/Localizable.strings +++ b/lang/YTLitePlus.bundle/ru.lproj/Localizable.strings @@ -109,6 +109,9 @@ "HIDE_HOME_TAB" = "Hide Home Tab"; "HIDE_HOME_TAB_DESC" = "Be careful when hiding all tabs"; +"FIX_CASTING" = "Fix Casting"; +"FIX_CASTING_DESC" = "Changes some AB flags to fix casting"; + "ENABLE_FLEX" = "Enable FLEX"; "ENABLE_FLEX_DESC" = "Enable FLEX for debugging (not recommended). Leave this off unless you know what you are doing."; diff --git a/lang/YTLitePlus.bundle/template.lproj/Localizable.strings b/lang/YTLitePlus.bundle/template.lproj/Localizable.strings index 9e5ff2d..ff44b8f 100644 --- a/lang/YTLitePlus.bundle/template.lproj/Localizable.strings +++ b/lang/YTLitePlus.bundle/template.lproj/Localizable.strings @@ -124,6 +124,9 @@ https://github.com/PoomSmart/Return-YouTube-Dislikes/tree/main/layout/Library/Ap "HIDE_HOME_TAB" = "Hide Home Tab"; "HIDE_HOME_TAB_DESC" = "Be careful when hiding all tabs"; +"FIX_CASTING" = "Fix Casting"; +"FIX_CASTING_DESC" = "Changes some AB flags to fix casting"; + "ENABLE_FLEX" = "Enable FLEX"; "ENABLE_FLEX_DESC" = "Enable FLEX for debugging (not recommended). Leave this off unless you know what you are doing."; diff --git a/lang/YTLitePlus.bundle/tr.lproj/Localizable.strings b/lang/YTLitePlus.bundle/tr.lproj/Localizable.strings index d306764..fc594f4 100644 --- a/lang/YTLitePlus.bundle/tr.lproj/Localizable.strings +++ b/lang/YTLitePlus.bundle/tr.lproj/Localizable.strings @@ -109,6 +109,9 @@ "HIDE_HOME_TAB" = "Hide Home Tab"; "HIDE_HOME_TAB_DESC" = "Be careful when hiding all tabs"; +"FIX_CASTING" = "Fix Casting"; +"FIX_CASTING_DESC" = "Changes some AB flags to fix casting"; + "ENABLE_FLEX" = "Enable FLEX"; "ENABLE_FLEX_DESC" = "Enable FLEX for debugging (not recommended). Leave this off unless you know what you are doing."; diff --git a/lang/YTLitePlus.bundle/zh_TW.lproj/Localizable.strings b/lang/YTLitePlus.bundle/zh_TW.lproj/Localizable.strings index ac9a63b..cd174c3 100644 --- a/lang/YTLitePlus.bundle/zh_TW.lproj/Localizable.strings +++ b/lang/YTLitePlus.bundle/zh_TW.lproj/Localizable.strings @@ -107,6 +107,9 @@ "HIDE_HOME_TAB" = "Hide Home Tab"; "HIDE_HOME_TAB_DESC" = "Be careful when hiding all tabs"; +"FIX_CASTING" = "Fix Casting"; +"FIX_CASTING_DESC" = "Changes some AB flags to fix casting"; + "ENABLE_FLEX" = "啟用 FLEX(不建議使用)"; "ENABLE_FLEX_DESC" = "如果不知道這是什麼,請勿啟用"; From 4de07c2d7a4f63f6864c1b69fe3cf6144495b6ea Mon Sep 17 00:00:00 2001 From: Bryce Hackel <34104885+bhackel@users.noreply.github.com> Date: Fri, 5 Jul 2024 01:59:32 -0700 Subject: [PATCH 09/11] Fix YouGroupSettings addition --- Source/Settings.xm | 21 ++++++++++----------- YTLitePlus.xm | 6 ++++-- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/Source/Settings.xm b/Source/Settings.xm index 57f2653..79ff3a4 100644 --- a/Source/Settings.xm +++ b/Source/Settings.xm @@ -31,7 +31,6 @@ static int contrastMode() { static int appVersionSpoofer() { return [[NSUserDefaults standardUserDefaults] integerForKey:@"versionSpoofer"]; } -static const NSInteger YTLitePlusSection = 788; @interface YTSettingsSectionItemManager (YTLitePlus) - (void)updateYTLitePlusSectionWithEntry:(id)entry; @@ -40,20 +39,20 @@ static const NSInteger YTLitePlusSection = 788; extern NSBundle *YTLitePlusBundle(); // Add both YTLite and YTLitePlus to YouGroupSettings -static const NSInteger YTLiteSection = 789; // Grabbed from YTLite +static const NSInteger YTLitePlusSection = 788; +static const NSInteger YTLiteSection = 789; %hook YTSettingsGroupData + (NSMutableArray *)tweaks { - NSMutableArray *originalTweaks = %orig; + NSLog(@"bhackel: called hooked 'tweaks' method."); + NSMutableArray *originalTweaks = %orig; - // Use a static variable to ensure the array is modified only once. - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - [originalTweaks addObject:@(YTLitePlusSection)]; - [originalTweaks addObject:@(YTLiteSection)]; - }); + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + [originalTweaks addObject:@(YTLitePlusSection)]; + [originalTweaks addObject:@(YTLiteSection)]; + }); - // Return the modified array. - return originalTweaks; + return originalTweaks; } %end diff --git a/YTLitePlus.xm b/YTLitePlus.xm index de60347..9063ed8 100644 --- a/YTLitePlus.xm +++ b/YTLitePlus.xm @@ -667,6 +667,9 @@ static NSData *cellDividerData = nil; # pragma mark - ctor %ctor { %init; + // Access YouGroupSettings methods + dlopen([[NSString stringWithFormat:@"%@/Frameworks/YouGroupSettings.dylib", [[NSBundle mainBundle] bundlePath]] UTF8String], RTLD_LAZY); + if (IsEnabled(@"hideCastButton_enabled")) { %init(gHideCastButton); } @@ -729,8 +732,7 @@ static NSData *cellDividerData = nil; } if (IsEnabled(@"fixCasting_enabled")) { %init(gFixCasting); - } - + } // Change the default value of some options NSArray *allKeys = [[[NSUserDefaults standardUserDefaults] dictionaryRepresentation] allKeys]; From 25fda866ec885480ea0f7328c12709a5c29783f9 Mon Sep 17 00:00:00 2001 From: Bryce Hackel <34104885+bhackel@users.noreply.github.com> Date: Fri, 5 Jul 2024 23:05:07 -0700 Subject: [PATCH 10/11] Try to debug new settings UI toggle --- Source/Settings.xm | 1 - YTLitePlus.xm | 2 ++ 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/Source/Settings.xm b/Source/Settings.xm index 79ff3a4..3e26b1a 100644 --- a/Source/Settings.xm +++ b/Source/Settings.xm @@ -43,7 +43,6 @@ static const NSInteger YTLitePlusSection = 788; static const NSInteger YTLiteSection = 789; %hook YTSettingsGroupData + (NSMutableArray *)tweaks { - NSLog(@"bhackel: called hooked 'tweaks' method."); NSMutableArray *originalTweaks = %orig; static dispatch_once_t onceToken; diff --git a/YTLitePlus.xm b/YTLitePlus.xm index 9063ed8..3364f26 100644 --- a/YTLitePlus.xm +++ b/YTLitePlus.xm @@ -462,6 +462,8 @@ static NSData *cellDividerData = nil; // New Settings UI - @bhackel %hook YTColdConfig - (BOOL)mainAppCoreClientEnableCairoSettings { + NSLog(@"bhackel: mainAppCoreClientEnableCairoSettings"); + return YES; return IS_ENABLED(@"newSettingsUI_enabled"); } %end From b0a2dd49cea99f9d877eb46f71b7aae1d82d2df7 Mon Sep 17 00:00:00 2001 From: Bryce Hackel <34104885+bhackel@users.noreply.github.com> Date: Sat, 6 Jul 2024 19:52:58 -0700 Subject: [PATCH 11/11] give up on new settings UI --- Source/Settings.xm | 2 +- YTLitePlus.xm | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/Source/Settings.xm b/Source/Settings.xm index 3e26b1a..86bd28a 100644 --- a/Source/Settings.xm +++ b/Source/Settings.xm @@ -337,7 +337,7 @@ static const NSInteger YTLiteSection = 789; YTSettingsSectionItem *miscellaneousGroup = [YTSettingsSectionItemClass itemWithTitle:LOC(@"MISCELLANEOUS") accessibilityIdentifier:nil detailTextBlock:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) { NSArray *rows = @[ playbackInFeedsGroup, - BASIC_SWITCH(LOC(@"NEW_SETTINGS_UI"), LOC(@"NEW_SETTINGS_UI_DESC"), @"newSettingsUI_enabled"), + // BASIC_SWITCH(LOC(@"NEW_SETTINGS_UI"), LOC(@"NEW_SETTINGS_UI_DESC"), @"newSettingsUI_enabled"), // disabled because YTLite is probably forcing it to NO BASIC_SWITCH(LOC(@"ENABLE_YT_STARTUP_ANIMATION"), LOC(@"ENABLE_YT_STARTUP_ANIMATION_DESC"), @"ytStartupAnimation_enabled"), BASIC_SWITCH(LOC(@"HIDE_MODERN_INTERFACE"), LOC(@"HIDE_MODERN_INTERFACE_DESC"), @"ytNoModernUI_enabled"), BASIC_SWITCH(LOC(@"IPAD_LAYOUT"), LOC(@"IPAD_LAYOUT_DESC"), @"iPadLayout_enabled"), diff --git a/YTLitePlus.xm b/YTLitePlus.xm index 3364f26..9063ed8 100644 --- a/YTLitePlus.xm +++ b/YTLitePlus.xm @@ -462,8 +462,6 @@ static NSData *cellDividerData = nil; // New Settings UI - @bhackel %hook YTColdConfig - (BOOL)mainAppCoreClientEnableCairoSettings { - NSLog(@"bhackel: mainAppCoreClientEnableCairoSettings"); - return YES; return IS_ENABLED(@"newSettingsUI_enabled"); } %end