New Settings UI, Playback in feeds

This commit is contained in:
Bryce Hackel
2024-07-04 15:19:29 -07:00
parent 172154a836
commit bed3d1571f
14 changed files with 167 additions and 0 deletions

View File

@@ -39,6 +39,25 @@ static const NSInteger YTLitePlusSection = 788;
extern NSBundle *YTLitePlusBundle(); extern NSBundle *YTLitePlusBundle();
// Add both YTLite and YTLitePlus to YouGroupSettings
static const NSInteger YTLiteSection = 789; // Grabbed from YTLite
%hook YTSettingsGroupData
+ (NSMutableArray <NSNumber *> *)tweaks {
NSMutableArray <NSNumber *> *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 // Settings
%hook YTAppSettingsPresentationData %hook YTAppSettingsPresentationData
+ (NSArray *)settingsCategoryOrder { + (NSArray *)settingsCategoryOrder {
@@ -271,9 +290,51 @@ extern NSBundle *YTLitePlusBundle();
}]; }];
[sectionItems addObject:themeGroup]; [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 <YTSettingsSectionItem *> *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 # pragma mark - Miscellaneous
YTSettingsSectionItem *miscellaneousGroup = [YTSettingsSectionItemClass itemWithTitle:LOC(@"MISCELLANEOUS") accessibilityIdentifier:nil detailTextBlock:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) { YTSettingsSectionItem *miscellaneousGroup = [YTSettingsSectionItemClass itemWithTitle:LOC(@"MISCELLANEOUS") accessibilityIdentifier:nil detailTextBlock:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
NSArray <YTSettingsSectionItem *> *rows = @[ NSArray <YTSettingsSectionItem *> *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(@"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(@"HIDE_MODERN_INTERFACE"), LOC(@"HIDE_MODERN_INTERFACE_DESC"), @"ytNoModernUI_enabled"),
BASIC_SWITCH(LOC(@"IPAD_LAYOUT"), LOC(@"IPAD_LAYOUT_DESC"), @"iPadLayout_enabled"), BASIC_SWITCH(LOC(@"IPAD_LAYOUT"), LOC(@"IPAD_LAYOUT_DESC"), @"iPadLayout_enabled"),

View File

@@ -447,6 +447,13 @@ static NSData *cellDividerData = nil;
} }
%end %end
// New Settings UI - @bhackel
%hook YTColdConfig
- (BOOL)mainAppCoreClientEnableCairoSettings {
return IS_ENABLED(@"newSettingsUI_enabled");
}
%end
// BigYTMiniPlayer: https://github.com/Galactic-Dev/BigYTMiniPlayer // BigYTMiniPlayer: https://github.com/Galactic-Dev/BigYTMiniPlayer
%group Main %group Main
%hook YTWatchMiniBarView %hook YTWatchMiniBarView
@@ -718,4 +725,7 @@ static NSData *cellDividerData = nil;
if (![allKeys containsObject:@"YouPiPEnabled"]) { if (![allKeys containsObject:@"YouPiPEnabled"]) {
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"YouPiPEnabled"]; [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"YouPiPEnabled"];
} }
if (![allKeys containsObject:@"newSettingsUI_enabled"]) {
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"newSettingsUI_enabled"];
}
} }

View File

@@ -64,6 +64,14 @@
// Miscellaneous // 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" = "Enable YouTube startup animation";
"ENABLE_YT_STARTUP_ANIMATION_DESC" = ""; "ENABLE_YT_STARTUP_ANIMATION_DESC" = "";

View File

@@ -64,6 +64,14 @@
// Miscellaneous // Miscellaneous
"MISCELLANEOUS" = "Verschiedenes"; "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" = "YouTube-Startanimation aktivieren";
"ENABLE_YT_STARTUP_ANIMATION_DESC" = ""; "ENABLE_YT_STARTUP_ANIMATION_DESC" = "";

View File

@@ -64,6 +64,14 @@
// Miscellaneous // Miscellaneous
"MISCELLANEOUS" = "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" = "Enable YouTube startup animation";
"ENABLE_YT_STARTUP_ANIMATION_DESC" = ""; "ENABLE_YT_STARTUP_ANIMATION_DESC" = "";

View File

@@ -64,6 +64,14 @@
// Miscellaneous // Miscellaneous
"MISCELLANEOUS" = "Misceláneos"; "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" = "Activar la animación de inicio de YouTube";
"ENABLE_YT_STARTUP_ANIMATION_DESC" = ""; "ENABLE_YT_STARTUP_ANIMATION_DESC" = "";

View File

@@ -67,6 +67,14 @@
// Miscellaneous // Miscellaneous
"MISCELLANEOUS" = "Divers"; "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" = "Activer l'animation de démarrage YouTube";
"ENABLE_YT_STARTUP_ANIMATION_DESC" = ""; "ENABLE_YT_STARTUP_ANIMATION_DESC" = "";

View File

@@ -64,6 +64,14 @@
// Miscellaneous // 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" = "YouTube起動時のアニメーションを有効化"; "ENABLE_YT_STARTUP_ANIMATION" = "YouTube起動時のアニメーションを有効化";
"ENABLE_YT_STARTUP_ANIMATION_DESC" = ""; "ENABLE_YT_STARTUP_ANIMATION_DESC" = "";

View File

@@ -64,6 +64,14 @@
// Miscellaneous // Miscellaneous
"MISCELLANEOUS" = "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" = "Enable YouTube startup animation";
"ENABLE_YT_STARTUP_ANIMATION_DESC" = ""; "ENABLE_YT_STARTUP_ANIMATION_DESC" = "";

View File

@@ -64,6 +64,14 @@
// Miscellaneous // Miscellaneous
"MISCELLANEOUS" = "Diverse"; "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" = "Activare animație de pornire YouTube";
"ENABLE_YT_STARTUP_ANIMATION_DESC" = ""; "ENABLE_YT_STARTUP_ANIMATION_DESC" = "";

View File

@@ -64,6 +64,14 @@
// Miscellaneous // Miscellaneous
"MISCELLANEOUS" = "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" = "Enable YouTube startup animation";
"ENABLE_YT_STARTUP_ANIMATION_DESC" = ""; "ENABLE_YT_STARTUP_ANIMATION_DESC" = "";

View File

@@ -79,6 +79,14 @@ https://github.com/PoomSmart/Return-YouTube-Dislikes/tree/main/layout/Library/Ap
// Miscellaneous // Miscellaneous
"MISCELLANEOUS" = "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" = "Enable YouTube startup animation";
"ENABLE_YT_STARTUP_ANIMATION_DESC" = ""; "ENABLE_YT_STARTUP_ANIMATION_DESC" = "";

View File

@@ -64,6 +64,14 @@
// Miscellaneous // Miscellaneous
"MISCELLANEOUS" = "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" = "Enable YouTube startup animation";
"ENABLE_YT_STARTUP_ANIMATION_DESC" = ""; "ENABLE_YT_STARTUP_ANIMATION_DESC" = "";

View File

@@ -62,6 +62,14 @@
// Miscellaneous // 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" = "啟用 Youtube 歡迎動畫"; "ENABLE_YT_STARTUP_ANIMATION" = "啟用 Youtube 歡迎動畫";
"ENABLE_YT_STARTUP_ANIMATION_DESC" = ""; "ENABLE_YT_STARTUP_ANIMATION_DESC" = "";