From 0001c86396deefe6e6b27d0a67a892897f3e9dde Mon Sep 17 00:00:00 2001
From: GitHub Actions
Date: Thu, 10 Oct 2024 00:56:30 +0000
Subject: [PATCH 1/5] updated submodules
---
Tweaks/YouTubeHeader | 2 +-
Tweaks/protobuf | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/Tweaks/YouTubeHeader b/Tweaks/YouTubeHeader
index 4ac9135b5b..128c9305d7 160000
--- a/Tweaks/YouTubeHeader
+++ b/Tweaks/YouTubeHeader
@@ -1 +1 @@
-Subproject commit 4ac9135b5b270647a723bab78c2bb3cbc6acb6a0
+Subproject commit 128c9305d7e796b883d8563b3cb6e7eac7a33ea8
diff --git a/Tweaks/protobuf b/Tweaks/protobuf
index 6690ab42d8..60ca6e06d7 160000
--- a/Tweaks/protobuf
+++ b/Tweaks/protobuf
@@ -1 +1 @@
-Subproject commit 6690ab42d855ea19d9a24cd99b0375910ea772ca
+Subproject commit 60ca6e06d78e68854f8b1bd1c644a7f4376f6168
From 957577b4d3c492ab378bcdd706aff2d400898189 Mon Sep 17 00:00:00 2001
From: "aric3435 (INACTIVE)" <78001398+arichornlover@users.noreply.github.com>
Date: Wed, 9 Oct 2024 21:24:24 -0500
Subject: [PATCH 2/5] =?UTF-8?q?Update=20buildapp.yml=20dependencies=20?=
=?UTF-8?q?=F0=9F=94=A7?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.github/workflows/buildapp.yml | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/.github/workflows/buildapp.yml b/.github/workflows/buildapp.yml
index 409459a2f0..e399fe80fc 100644
--- a/.github/workflows/buildapp.yml
+++ b/.github/workflows/buildapp.yml
@@ -60,7 +60,7 @@ jobs:
steps:
- name: Checkout Main
- uses: actions/checkout@v4.1.7
+ uses: actions/checkout@v4.2.1
with:
path: main
ref: ${{ github.event.inputs.commit_id || github.ref }}
@@ -73,7 +73,7 @@ jobs:
run: echo "$(brew --prefix make)/libexec/gnubin" >> $GITHUB_PATH
- name: Setup Theos
- uses: actions/checkout@v4.1.7
+ uses: actions/checkout@v4.2.1
with:
repository: theos/theos
ref: 5bfdc3cb7133ec1cab43182115d902e2b57c9eac
@@ -82,7 +82,7 @@ jobs:
- name: SDK Caching
id: SDK
- uses: actions/cache@v4.0.2
+ uses: actions/cache@v4.1.1
env:
cache-name: iOS-${{ inputs.sdk_version }}-SDK
with:
@@ -102,7 +102,7 @@ jobs:
THEOS: ${{ github.workspace }}/theos
- name: Setup Theos Jailed
- uses: actions/checkout@v4.1.7
+ uses: actions/checkout@v4.2.1
with:
repository: qnblackcat/theos-jailed
ref: master
@@ -151,7 +151,7 @@ jobs:
- name: Upload Artifact
if: ${{ inputs.upload_artifact }}
- uses: actions/upload-artifact@v4.3.4
+ uses: actions/upload-artifact@v4.4.3
env:
UYOU_VERSION: ${{ inputs.uyou_version }}
YOUTUBE_VERSION: ${{ steps.prepare_youtube.outputs.youtube_version }}
@@ -163,7 +163,7 @@ jobs:
- name: Create Release
if: ${{ inputs.create_release }}
id: create_release
- uses: softprops/action-gh-release@v2.0.5
+ uses: softprops/action-gh-release@v2.0.8
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
UYOU_VERSION: ${{ inputs.uyou_version }}
From 8bcf7610bdf3c0f54a847a9e38d111255ad99c44 Mon Sep 17 00:00:00 2001
From: "aric3435 (INACTIVE)" <78001398+arichornlover@users.noreply.github.com>
Date: Thu, 10 Oct 2024 00:24:29 -0500
Subject: [PATCH 3/5] Fix uYouEnhanced Injection (Makefile)
for macOS-13 and higher.
---
Makefile | 1 +
1 file changed, 1 insertion(+)
diff --git a/Makefile b/Makefile
index 88a25f2f93..6a9d7b461c 100644
--- a/Makefile
+++ b/Makefile
@@ -21,6 +21,7 @@ endif
ifndef UYOU_VERSION
UYOU_VERSION = 3.0.4
endif
+PACKAGE_NAME = $(TWEAK_NAME)
PACKAGE_VERSION = $(YOUTUBE_VERSION)-$(UYOU_VERSION)
INSTALL_TARGET_PROCESSES = YouTube
From ae5558784e008520dd34f4c4d632cba7ab3620c8 Mon Sep 17 00:00:00 2001
From: "aric3435 (INACTIVE)" <78001398+arichornlover@users.noreply.github.com>
Date: Thu, 10 Oct 2024 00:38:36 -0500
Subject: [PATCH 4/5] v19.40.4-3.0.4
---
README.md | 60 +++++++++++++++++++++++++++++--------------------------
1 file changed, 32 insertions(+), 28 deletions(-)
diff --git a/README.md b/README.md
index bf63849f5b..b7bb241698 100644
--- a/README.md
+++ b/README.md
@@ -15,14 +15,14 @@
-
-
-
+
+
+
-
-
+
+
> [!NOTE]
@@ -36,7 +36,7 @@
[![Download](https://img.shields.io/badge/Download-blue?style=flat)](#download)
[![Building](https://img.shields.io/badge/Building-blue?style=flat)](#building)
[![Installation](https://img.shields.io/badge/Installation-blue?style=flat)](#installation)
-[![Donations](https://img.shields.io/badge/Donations-blue?style=flat)](#donations)
+[![Support the Developers](https://img.shields.io/badge/Support%20the%20Developers-blue?style=flat)](#support-the-developers)
[![Wiki](https://img.shields.io/badge/Wiki-blue?style=flat)](#wiki)
# Credits
@@ -287,38 +287,41 @@
- **Compatibility:** Requires iOS/iPadOS 15.0 or later.
- For AltStore user:
- - My official AltStore repo: https://therealfoxster.github.io/altsource-viewer/view/?source=https://raw.githubusercontent.com/arichornlover/arichornlover.github.io/main/apps.json
+ - My official AltStore repo (uYouEnhanced - iOS 15+): https://therealfoxster.github.io/altsource-viewer/view/?source=https://raw.githubusercontent.com/arichornloverALT/arichornloverALT.github.io/main/apps.json
- - [Open in AltStore (v19.33.2-3.0.4)](https://tinyurl.com/4n9ed9a9) - It will take a while to install because AltStore needs to download the IPA first.
+ - My alternative AltStore repo (uYouEnhanced - iOS 14+ - mainly for Trollstore users): https://therealfoxster.github.io/altsource-viewer/view/?source=https://raw.githubusercontent.com/arichornloverALT/arichornloverALT.github.io/main/apps-legacy.json - not sure if i can update this ipa. this IPA will be locked in YouTube Version **19.20.2**
+
+ - [Open in AltStore (v19.40.4-3.0.4)](https://tinyurl.com/44zmcw8t) - It will take a while to install because AltStore needs to download the IPA first.
- Version information (last updated: Sep 29, 2024)
+ Version information (last updated: Oct 10, 2024)
| **Tweaks/App** | **Developer** | **Version** | **Open source** |
| - | - | :-: | :-: |
-| **YouTube** | Google Inc | 19.33.2 | ✖︎ |
+| **YouTube** | Google Inc | 19.40.4 | ✖︎ |
| [uYou](https://github.com/MiRO92/uYou-for-YouTube) | [MiRO92](https://twitter.com/miro92) | 3.0.4 | ✖︎ |
| **Open in YouTube** | [CokePokes](https://github.com/CokePokes) | 1.2 | [✔︎](https://github.com/CokePokes/YoutubeExtensions) |
-| **iSponsorBlock** | [Galactic-Dev](https://github.com/Galactic-Dev) | 1.2.5 | [✔︎](https://github.com/Galactic-Dev/iSponsorBlock) |
+| **iSponsorBlock** | [Galactic-Dev](https://github.com/Galactic-Dev) | 1.2.9 | [✔︎](https://github.com/Galactic-Dev/iSponsorBlock) |
| **BigYTMiniPlayer** | [Galactic-Dev](https://github.com/Galactic-Dev) | 1.0-1 | [✔︎](https://github.com/Galactic-Dev/BigYTMiniPlayer) |
| **YTNoHoverCards** | [level3tjg](https://twitter.com/level3tjg) | 0.0.3 | [✔︎](https://github.com/level3tjg/YTNoHoverCards) |
| **YTMiniplayerEnabler** | [level3tjg](https://twitter.com/level3tjg) | 0.0.2 | [✔︎](https://github.com/level3tjg/YTMiniplayerEnabler) |
-| **DontEatMyContent** | [therealFoxster](https://github.com/therealFoxster) | 1.1.6 | [✔︎](https://github.com/therealFoxster/DontEatMyContent) |
+| **DontEatMyContent** | [therealFoxster](https://github.com/therealFoxster) | 1.1.8 | [✔︎](https://github.com/therealFoxster/DontEatMyContent) |
| **YTSpeed** | [Lyvendia](https://github.com/Lyvendia) | 1.0.1 | [✔︎](https://github.com/Lyvendia/YTSpeed) |
| **Alderis Color Picker** | [HASHBANG Productions](https://github.com/hbang) | 1.2 | [✔︎](https://github.com/hbang/Alderis) |
-| **YTUHD** | [PoomSmart](https://twitter.com/poomsmart) | 1.5.1 | [✔︎](https://github.com/PoomSmart/YTUHD) |
-| **YouPiP** | [PoomSmart](https://twitter.com/poomsmart) | 1.8.9 | [✔︎](https://github.com/PoomSmart/YouPiP) |
+| **YTUHD** | [PoomSmart](https://twitter.com/poomsmart) | 1.5.5 | [✔︎](https://github.com/PoomSmart/YTUHD) |
+| **YouPiP** | [PoomSmart](https://twitter.com/poomsmart) | 1.8.14 | [✔︎](https://github.com/PoomSmart/YouPiP) |
| **IAmYouTube** | [PoomSmart](https://twitter.com/poomsmart) | 1.3.0 | [✔︎](https://github.com/PoomSmart/IAmYouTube) |
-| **YTABConfig** | [PoomSmart](https://twitter.com/poomsmart) | 1.7.2 | [✔︎](https://github.com/PoomSmart/YTABConfig) |
+| **YTABConfig** | [PoomSmart](https://twitter.com/poomsmart) | 1.7.3 | [✔︎](https://github.com/PoomSmart/YTABConfig) |
| **YTReExplore** | [PoomSmart](https://twitter.com/poomsmart) | 1.0.2 | [✔︎](https://github.com/PoomSmart/YTReExplore) |
| **NoYTPremium** | [PoomSmart](https://twitter.com/poomsmart) | 1.0.4 | [✔︎](https://github.com/PoomSmart/NoYTPremium) |
| **YTNoPaidPromo** | [PoomSmart](https://twitter.com/poomsmart) | 1.0.0 | [✔︎](https://github.com/PoomSmart/YTNoPaidPromo) |
| **YouRememberCaption** | [PoomSmart](https://twitter.com/poomsmart) | 1.0.0 | [✔︎](https://poomsmart.github.io/repo/depictions/youremembercaption.html) |
-| **Return YouTube Dislike** | [PoomSmart](https://twitter.com/poomsmart) | 1.11.11 | [✔︎](https://github.com/PoomSmart/Return-YouTube-Dislikes) |
-| **YouMute** | [PoomSmart](https://twitter.com/poomsmart) | 1.2.1-3 | [✔︎](https://github.com/PoomSmart/YouMute) |
+| **Return YouTube Dislike** | [PoomSmart](https://twitter.com/poomsmart) | 1.12.7 | [✔︎](https://github.com/PoomSmart/Return-YouTube-Dislikes) |
+| **YouMute** | [PoomSmart](https://twitter.com/poomsmart) | 1.2.3 | [✔︎](https://github.com/PoomSmart/YouMute) |
| **YouQuality** | [PoomSmart](https://twitter.com/poomsmart) | 1.2.1 | [✔︎](https://github.com/PoomSmart/YouQuality) |
-| **YTVideoOverlay** | [PoomSmart](https://twitter.com/poomsmart) | 1.1.6 | [✔︎](https://github.com/PoomSmart/YTVideoOverlay) |
-| **YTHoldForSpeed** | [joshuaseltzer](https://github.com/joshuaseltzer) | 1.2.0 | [✔︎](https://github.com/joshuaseltzer/YTHoldForSpeed) |
+| **YouTube-X** | [PoomSmart](https://twitter.com/poomsmart) | 1.7.3 | [✔︎](https://github.com/PoomSmart/YouTube-X) |
+| **YTVideoOverlay** | [PoomSmart](https://twitter.com/poomsmart) | 1.2.0 | [✔︎](https://github.com/PoomSmart/YTVideoOverlay) |
+| **YTHoldForSpeed** | [joshuaseltzer](https://github.com/joshuaseltzer) | 1.2.1 | [✔︎](https://github.com/joshuaseltzer/YTHoldForSpeed) |
| **LowContrastMode** | [arichornlover](https://github.com/arichornlover) | 1.5.2 | [✔︎](https://github.com/arichornlover/YTLowContrastMode) |
| **YouTimeStamp** | [arichornlover](https://github.com/arichornlover) | 1.0.1 | [✔︎](https://github.com/arichornlover/YouTimeStamp) |
@@ -332,7 +335,7 @@
| MiRO92 | uYou 3.0 | v18.06.6 - v18.18.2 | iOS 14.0 - iOS 15.8.2 |
| MiRO92 | uYou 3.0.1 | v18.19.1 - v18.41.5 | iOS 14.0 - iOS 17.5.1 |
| MiRO92 | uYou 3.0.2 / 3.0.3 | v19.06.2 - v19.15.1 | iOS 14.0 - iOS 17.5.1 |
-| MiRO92 | uYou 3.0.4 | v19.06.2 - latest | iOS 14.0 - 17.5.1 |
+| MiRO92 | uYou 3.0.4 | v19.06.2 - v19.22.6 | iOS 14.0 - 17.5.1 |
# Building
@@ -343,7 +346,7 @@ or [qnblackcat/Building - Wiki](https://github.com/qnblackcat/uYouPlus/wiki/Buil
See [Installation - Wiki](https://github.com/qnblackcat/uYouPlus/wiki/Installation).
-# Donations
+# Support the developers
@@ -370,18 +373,19 @@ See [Installation - Wiki](https://github.com/qnblackcat/uYouPlus/wiki/Installati
# Wiki
-See [arichornlover - Wiki](https://github.com/arichornlover/uYouenhanced/wiki/) or [qnblackcat - Wiki](https://github.com/qnblackcat/uYouPlus/wiki/)
+See [arichornlover - Wiki](https://github.com/arichornlover/uYouEnhanced/wiki/) or [qnblackcat - Wiki](https://github.com/qnblackcat/uYouPlus/wiki/)
## Lightweight Alternative - YTLitePlus
Read more
-- Change from uYouEnhanced to YTLitePlus (optional)
-Hello, this is here to showcase this tweak. I have been seeing the YTLitePlus tweak on Reddit for quite some time now and decided to join in. Before you download the tweak, you should take a look at the pros and cons below to learn more about the tweak.
+# Switch from uYouEnhanced to YTLitePlus (optional)
+
+Hello, this is here to showcase this tweak. I have been seeing the posts about the YTLitePlus tweak on Reddit for quite some time now and decided to add it here. Before you download or check out the tweak, you should take a look at the pros and cons below to learn more about YTLitePlus.
-https://github.com/Balackburn/YTLitePlus/releases
+https://github.com/YTLitePlus/YTLitePlus/releases
**Pros**
@@ -389,9 +393,9 @@ https://github.com/Balackburn/YTLitePlus/releases
- YTLitePlus provides more features in YTLite & YTLitePlus Sections in Settings that uYouPlus/uYouEnhanced may not have.
-- YTLitePlus includes a lightweight version of the App Version Spoofer, making it easier to use.
+- YTLitePlus includes a lightweight and simplified version of the App Version Spoofer, making it easier to use.
-- YTLitePlus does not cause your device to overheat, unlike uYouEnhanced.
+- YTLitePlus does not cause your device to overheat, unlike uYouPlus/uYouEnhanced.
- YTLitePlus provides faster video & audio downloading than uYouPlus/uYouEnhanced.
@@ -399,5 +403,5 @@ https://github.com/Balackburn/YTLitePlus/releases
- Video quality on WiFi option is not available in YTLitePlus.
-- Reordering the pivot bar tabs such as ‘Home‘, ‘Shorts‘, ‘Explore‘, ‘Trending‘, Create‘, ‘Subscriptions‘ & ‘You‘ is not available in YTLitePlus.
+- Reordering the pivot bar tabs such as `Home`, `Shorts`, `Explore`, `Trending`, `Create`, `Subscriptions` & `You` is not available in YTLitePlus.
From 35e97ea8dd167062f66eda71c5da7fd490e143e0 Mon Sep 17 00:00:00 2001
From: "aric3435 (INACTIVE)" <78001398+arichornlover@users.noreply.github.com>
Date: Thu, 10 Oct 2024 00:40:33 -0500
Subject: [PATCH 5/5] Updated a lot of uYouEnhanced Code. (v19.40.4-3.0.4)
This release also includes all of the new changes from qnblackcat/uYouPlus.
and the App Version Spoofer has finally been updated again!
---
Sources/AppIconOptionsController.m | 107 +--
Sources/BigYTMiniPlayer.xm | 2 +-
Sources/LowContrastMode.xm | 52 +-
Sources/SettingsKeys.h | 9 +-
Sources/YTMiniPlayerEnabler.x.bak | 2 +-
Sources/YTNoHoverCards.x.bak | 2 +-
Sources/YTNoPaidPromo.x.bak | 6 +-
Sources/YTReExplore.x | 2 +-
Sources/uYouPlus.h | 117 ++++
Sources/uYouPlus.xm | 476 ++++++++------
Sources/uYouPlusPatches.h | 1 +
Sources/uYouPlusPatches.xm | 4 +-
Sources/uYouPlusSettings.xm | 876 ++++++++++++++-----------
Sources/uYouPlusVersionSpoofer.xm | 838 +++++++++++++++--------
Sources/update-submodules-template.txt | 6 +
15 files changed, 1523 insertions(+), 977 deletions(-)
diff --git a/Sources/AppIconOptionsController.m b/Sources/AppIconOptionsController.m
index d09c3698f9..c080407901 100644
--- a/Sources/AppIconOptionsController.m
+++ b/Sources/AppIconOptionsController.m
@@ -2,11 +2,9 @@
#import
@interface AppIconOptionsController ()
-
@property (strong, nonatomic) UITableView *tableView;
@property (strong, nonatomic) NSArray *appIcons;
@property (assign, nonatomic) NSInteger selectedIconIndex;
-
@end
@implementation AppIconOptionsController
@@ -15,8 +13,6 @@ - (void)viewDidLoad {
[super viewDidLoad];
self.title = @"Change App Icon";
- [self.navigationController.navigationBar setTitleTextAttributes:@{NSFontAttributeName: [UIFont fontWithName:@"YTSans-Bold" size:22], NSForegroundColorAttributeName: [UIColor whiteColor]}];
-
self.selectedIconIndex = -1;
self.tableView = [[UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStylePlain];
@@ -25,28 +21,11 @@ - (void)viewDidLoad {
[self.view addSubview:self.tableView];
self.backButton = [UIButton buttonWithType:UIButtonTypeCustom];
- NSBundle *backIcon = [NSBundle bundleWithPath:[[NSBundle mainBundle] pathForResource:@"uYouPlus" ofType:@"bundle"]];
- UIImage *backImage = [UIImage imageNamed:@"Back.png" inBundle:backIcon compatibleWithTraitCollection:nil];
- backImage = [self resizeImage:backImage newSize:CGSizeMake(24, 24)];
- backImage = [backImage imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
- [self.backButton setTintColor:[UIColor whiteColor]];
- [self.backButton setImage:backImage forState:UIControlStateNormal];
+ [self.backButton setImage:[UIImage customBackButtonImage] forState:UIControlStateNormal];
[self.backButton addTarget:self action:@selector(back) forControlEvents:UIControlEventTouchUpInside];
- [self.backButton setFrame:CGRectMake(0, 0, 24, 24)];
UIBarButtonItem *customBackButton = [[UIBarButtonItem alloc] initWithCustomView:self.backButton];
self.navigationItem.leftBarButtonItem = customBackButton;
- UIColor *buttonColor = [UIColor colorWithRed:203.0/255.0 green:22.0/255.0 blue:51.0/255.0 alpha:1.0];
- UIImage *resetImage = [UIImage systemImageNamed:@"arrow.clockwise.circle.fill"];
- UIBarButtonItem *resetButton = [[UIBarButtonItem alloc] initWithImage:resetImage style:UIBarButtonItemStylePlain target:self action:@selector(resetIcon)];
- resetButton.tintColor = buttonColor;
-
- UIImage *saveImage = [UIImage systemImageNamed:@"square.and.arrow.up.fill"];
- UIBarButtonItem *saveButton = [[UIBarButtonItem alloc] initWithImage:saveImage style:UIBarButtonItemStylePlain target:self action:@selector(saveIcon)];
- saveButton.tintColor = buttonColor;
-
- self.navigationItem.rightBarButtonItems = @[saveButton, resetButton];
-
NSString *path = [[NSBundle mainBundle] pathForResource:@"uYouPlus" ofType:@"bundle"];
NSBundle *bundle = [NSBundle bundleWithPath:path];
self.appIcons = [bundle pathsForResourcesOfType:@"png" inDirectory:@"AppIcons"];
@@ -77,14 +56,8 @@ - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(N
cell.imageView.image = iconImage;
cell.imageView.layer.cornerRadius = 10.0;
cell.imageView.clipsToBounds = YES;
- cell.imageView.frame = CGRectMake(10, 10, 40, 40);
- cell.textLabel.frame = CGRectMake(60, 10, self.view.frame.size.width - 70, 40);
- if (indexPath.row == self.selectedIconIndex) {
- cell.accessoryType = UITableViewCellAccessoryCheckmark;
- } else {
- cell.accessoryType = UITableViewCellAccessoryNone;
- }
+ cell.accessoryType = (indexPath.row == self.selectedIconIndex) ? UITableViewCellAccessoryCheckmark : UITableViewCellAccessoryNone;
return cell;
}
@@ -97,11 +70,6 @@ - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath
}
- (void)resetIcon {
- NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"Info" ofType:@"plist"];
- NSMutableDictionary *infoDict = [NSMutableDictionary dictionaryWithContentsOfFile:plistPath];
- [infoDict removeObjectForKey:@"ALTAppIcon"];
- [infoDict writeToFile:plistPath atomically:YES];
-
[[UIApplication sharedApplication] setAlternateIconName:nil completionHandler:^(NSError * _Nullable error) {
if (error) {
NSLog(@"Error resetting icon: %@", error.localizedDescription);
@@ -109,70 +77,37 @@ - (void)resetIcon {
} else {
NSLog(@"Icon reset successfully");
[self showAlertWithTitle:@"Success" message:@"Icon reset successfully"];
- dispatch_async(dispatch_get_main_queue(), ^{
- [self.tableView reloadData];
- });
+ [self.tableView reloadData];
}
}];
}
- (void)saveIcon {
- if (![UIApplication sharedApplication].supportsAlternateIcons) {
- NSLog(@"Alternate icons are not supported on this device.");
+ if (self.selectedIconIndex < 0) {
+ [self showAlertWithTitle:@"Error" message:@"No icon selected"];
return;
}
- dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
- NSString *selectedIcon = self.selectedIconIndex >= 0 ? self.appIcons[self.selectedIconIndex] : nil;
- if (selectedIcon) {
- NSString *iconName = [selectedIcon.lastPathComponent stringByDeletingPathExtension];
-
- NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"Info" ofType:@"plist"];
- NSMutableDictionary *infoDict = [NSMutableDictionary dictionaryWithContentsOfFile:plistPath];
- [infoDict setObject:iconName forKey:@"ALTAppIcon"];
- [infoDict writeToFile:plistPath atomically:YES];
-
- [[UIApplication sharedApplication] setAlternateIconName:iconName completionHandler:^(NSError * _Nullable error) {
- if (error) {
- NSLog(@"Error setting alternate icon: %@", error.localizedDescription);
- [self showAlertWithTitle:@"Error" message:@"Failed to set alternate icon"];
- } else {
- NSLog(@"Alternate icon set successfully");
- [self showAlertWithTitle:@"Success" message:@"Alternate icon set successfully"];
- dispatch_async(dispatch_get_main_queue(), ^{
- [self.tableView reloadData];
- });
- }
- }];
- } else {
- NSLog(@"Selected icon path is nil");
- }
- });
-}
-- (UIImage *)resizeImage:(UIImage *)image toSize:(CGSize)size {
- UIGraphicsBeginImageContextWithOptions(size, NO, [UIScreen mainScreen].scale);
- [image drawInRect:CGRectMake(0, 0, size.width, size.height)];
- UIImage *resizedImage = UIGraphicsGetImageFromCurrentImageContext();
- UIGraphicsEndImageContext();
-
- return resizedImage;
-}
+ NSString *selectedIcon = self.appIcons[self.selectedIconIndex];
+ NSString *iconName = [selectedIcon.lastPathComponent stringByDeletingPathExtension];
-- (UIImage *)resizeImage:(UIImage *)image newSize:(CGSize)newSize {
- UIGraphicsBeginImageContextWithOptions(newSize, NO, [UIScreen mainScreen].scale);
- [image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
- UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
- UIGraphicsEndImageContext();
- return newImage;
+ [[UIApplication sharedApplication] setAlternateIconName:iconName completionHandler:^(NSError * _Nullable error) {
+ if (error) {
+ NSLog(@"Error setting alternate icon: %@", error.localizedDescription);
+ [self showAlertWithTitle:@"Error" message:@"Failed to set alternate icon"];
+ } else {
+ NSLog(@"Alternate icon set successfully");
+ [self showAlertWithTitle:@"Success" message:@"Alternate icon set successfully"];
+ [self.tableView reloadData];
+ }
+ }];
}
- (void)showAlertWithTitle:(NSString *)title message:(NSString *)message {
- dispatch_async(dispatch_get_main_queue(), ^{
- UIAlertController *alert = [UIAlertController alertControllerWithTitle:title message:message preferredStyle:UIAlertControllerStyleAlert];
- UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:nil];
- [alert addAction:okAction];
- [self presentViewController:alert animated:YES completion:nil];
- });
+ UIAlertController *alert = [UIAlertController alertControllerWithTitle:title message:message preferredStyle:UIAlertControllerStyleAlert];
+ UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:nil];
+ [alert addAction:okAction];
+ [self presentViewController:alert animated:YES completion:nil];
}
- (void)back {
diff --git a/Sources/BigYTMiniPlayer.xm b/Sources/BigYTMiniPlayer.xm
index d364521ae4..896460d0eb 100644
--- a/Sources/BigYTMiniPlayer.xm
+++ b/Sources/BigYTMiniPlayer.xm
@@ -25,7 +25,7 @@
%end
%ctor {
- if (IS_ENABLED(@"bigYTMiniPlayer_enabled") && (UIDevice.currentDevice.userInterfaceIdiom != UIUserInterfaceIdiomPad)) {
+ if (IS_ENABLED(kBigYTMiniPlayer) && (UIDevice.currentDevice.userInterfaceIdiom != UIUserInterfaceIdiomPad)) {
%init(BigYTMiniPlayer);
}
}
diff --git a/Sources/LowContrastMode.xm b/Sources/LowContrastMode.xm
index 72e7a4e7a9..0e4c94f30a 100644
--- a/Sources/LowContrastMode.xm
+++ b/Sources/LowContrastMode.xm
@@ -10,10 +10,13 @@ static BOOL lowContrastMode() {
static BOOL customContrastMode() {
return IS_ENABLED(@"lowContrastMode_enabled") && contrastMode() == 1;
}
+// static UIColor *whiteTextColor() {
+// return [UIColor whiteColor];
+// }
UIColor *lcmHexColor;
-%group gLowContrastMode // Low Contrast Mode v1.5.2 (Compatible with only YouTube v17.33.2-v17.38.10)
+%group gLowContrastMode // Low Contrast Mode v1.6.0 BETA (Compatible with only YouTube v17.33.2-v17.38.10)
%hook UIColor
+ (UIColor *)whiteColor { // Dark Theme Color
return [UIColor colorWithRed: 0.56 green: 0.56 blue: 0.56 alpha: 1.00];
@@ -54,39 +57,51 @@ UIColor *lcmHexColor;
%end
%hook YTCommonColorPalette
- (UIColor *)textPrimary {
+ NSLog(@"LowContrastMode: textPrimary called");
return self.pageStyle == 1 ? [UIColor whiteColor] : %orig;
}
- (UIColor *)textSecondary {
+ NSLog(@"LowContrastMode: textSecondary called");
return self.pageStyle == 1 ? [UIColor whiteColor] : %orig;
}
- (UIColor *)overlayTextPrimary {
+ NSLog(@"LowContrastMode: overlayTextPrimary called");
return self.pageStyle == 1 ? [UIColor whiteColor] : %orig;
}
- (UIColor *)overlayTextSecondary {
+ NSLog(@"LowContrastMode: overlayTextSecondary called");
return self.pageStyle == 1 ? [UIColor whiteColor] : %orig;
}
- (UIColor *)iconActive {
+ NSLog(@"LowContrastMode: iconActive called");
return self.pageStyle == 1 ? [UIColor whiteColor] : %orig;
}
- (UIColor *)iconActiveOther {
+ NSLog(@"LowContrastMode: iconActiveOther called");
return self.pageStyle == 1 ? [UIColor whiteColor] : %orig;
}
- (UIColor *)brandIconActive {
+ NSLog(@"LowContrastMode: brandIconActive called");
return self.pageStyle == 1 ? [UIColor whiteColor] : %orig;
}
- (UIColor *)staticBrandWhite {
+ NSLog(@"LowContrastMode: staticBrandWhite called");
return self.pageStyle == 1 ? [UIColor whiteColor] : %orig;
}
- (UIColor *)overlayIconActiveOther {
+ NSLog(@"LowContrastMode: overlayIconActiveOther called");
return self.pageStyle == 1 ? [UIColor whiteColor] : %orig;
}
- (UIColor *)overlayIconInactive {
+ NSLog(@"LowContrastMode: overlayIconInactive called");
return self.pageStyle == 1 ? [[UIColor whiteColor] colorWithAlphaComponent:0.7] : %orig;
}
- (UIColor *)overlayIconDisabled {
+ NSLog(@"LowContrastMode: overlayIconDisabled called");
return self.pageStyle == 1 ? [[UIColor whiteColor] colorWithAlphaComponent:0.3] : %orig;
}
- (UIColor *)overlayFilledButtonActive {
+ NSLog(@"LowContrastMode: overlayFilledButtonActive called");
return self.pageStyle == 1 ? [[UIColor whiteColor] colorWithAlphaComponent:0.2] : %orig;
}
%end
@@ -246,12 +261,21 @@ UIColor *lcmHexColor;
[modifiedAttributes setObject:[UIColor whiteColor] forKey:NSForegroundColorAttributeName];
%orig(modifiedAttributes, state);
}
+- (void)setCustomTitleTextAttributes:(NSDictionary *)attributes forState:(UIControlState)state {
+ NSMutableDictionary *customAttributes = [NSMutableDictionary dictionaryWithDictionary:attributes];
+ [customAttributes setObject:[UIColor whiteColor] forKey:NSForegroundColorAttributeName];
+ %orig(customAttributes, state);
+}
%end
%hook UIButton
- (void)setTitleColor:(UIColor *)color forState:(UIControlState)state {
color = [UIColor whiteColor];
%orig(color, state);
}
+- (void)setCustomTitleColor:(UIColor *)color forState:(UIControlState)state {
+ color = [UIColor whiteColor];
+ %orig(color, state);
+}
%end
%hook UIBarButtonItem
- (void)setTitleTextAttributes:(NSDictionary *)attributes forState:(UIControlState)state {
@@ -259,6 +283,11 @@ UIColor *lcmHexColor;
[modifiedAttributes setObject:[UIColor whiteColor] forKey:NSForegroundColorAttributeName];
%orig(modifiedAttributes, state);
}
+- (void)setCustomTitleTextAttributes:(NSDictionary *)attributes forState:(UIControlState)state {
+ NSMutableDictionary *customAttributes = [NSMutableDictionary dictionaryWithDictionary:attributes];
+ [customAttributes setObject:[UIColor whiteColor] forKey:NSForegroundColorAttributeName];
+ %orig(customAttributes, state);
+}
%end
%hook NSAttributedString
- (instancetype)initWithString:(NSString *)str attributes:(NSDictionary *)attrs {
@@ -550,7 +579,18 @@ UIColor *lcmHexColor;
%end
%hook CATextLayer
- (void)setTextColor:(CGColorRef)textColor {
- %orig([UIColor whiteColor].CGColor);
+ %orig([[UIColor whiteColor] CGColor]);
+}
+%end
+%hook _ASDisplayView
+- (void)setAttributedText:(NSAttributedString *)attributedText {
+ NSMutableAttributedString *newAttributedString = [attributedText mutableCopy];
+ [newAttributedString addAttribute:NSForegroundColorAttributeName value:[UIColor whiteColor] range:NSMakeRange(0, newAttributedString.length)];
+ %orig(newAttributedString);
+}
+- (void)setTextColor:(UIColor *)textColor {
+ textColor = [UIColor whiteColor];
+ %orig(textColor);
}
%end
%hook ASTextNode
@@ -563,20 +603,20 @@ UIColor *lcmHexColor;
%end
%hook ASTextFieldNode
- (void)setTextColor:(UIColor *)textColor {
- %orig([UIColor whiteColor]);
+ %orig([UIColor whiteColor]);
}
%end
%hook ASTextView
- (void)setTextColor:(UIColor *)textColor {
- %orig([UIColor whiteColor]);
+ %orig([UIColor whiteColor]);
}
%end
%hook ASButtonNode
- (void)setTextColor:(UIColor *)textColor {
- %orig([UIColor whiteColor]);
+ %orig([UIColor whiteColor]);
}
%end
-%hook UIControl // snackbar fix for lcm
+%hook UIControl
- (UIColor *)backgroundColor {
return [UIColor blackColor];
}
diff --git a/Sources/SettingsKeys.h b/Sources/SettingsKeys.h
index 07274bd1d2..0a74fac11e 100644
--- a/Sources/SettingsKeys.h
+++ b/Sources/SettingsKeys.h
@@ -1,16 +1,11 @@
#import "uYouPlus.h"
+#import "uYouPlusSettings.h"
// Keys for "Copy settings" button (for: uYouEnhanced)
// In alphabetical order for tweaks after uYouEnhanced
NSArray *NSUserDefaultsCopyKeys = @[
// uYouEnhanced - gathered using get_keys.py
- @"autoHideHomeBar_enabled", @"bigYTMiniPlayer_enabled", @"centerYouTubeLogo_enabled", @"classicVideoPlayer_enabled", @"disableAmbientMode_enabled", @"disableAnimatedYouTubeLogo_enabled", @"disableChapterSkip_enabled", @"disableCollapseButton_enabled", @"disableFullscreenButton_enabled", @"disableHints_enabled",
- @"disableLiveChatSection_enabled", @"disableManageAllHistorySection_enabled", @"disableModernButtons_enabled", @"disableModernFlags_enabled", @"disableNotificationsSection_enabled", @"disablePrivacySection_enabled", @"disablePullToFull_enabled", @"disableRemainingTime_enabled", @"disableResumeToShorts_enabled",@"disableRoundedHints_enabled", @"disableTryNewFeaturesSection_enabled", @"disableVideoQualityPreferencesSection_enabled", @"disableAccountSection_enabled",
- @"doubleTapToSeek_disabled", @"enableShareButton_enabled", @"enableSaveToButton_enabled", @"enableVersionSpoofer_enabled", @"fixLowContrastMode_enabled", @"flex_enabled", @"hideAutoplaySwitch_enabled", @"hideBuySuperThanks_enabled", @"hideCC_enabled", @"hideChannelHeaderLinks_enabled", @"hideChannelWatermark_enabled",
- @"hideChipBar_enabled", @"hideClipButton_enabled", @"hideCommentSection_enabled", @"hideCommunityPosts_enabled", @"hideConnectButton_enabled", @"hideDownloadButton_enabled", @"hideDoubleTapToSeekOverlay_enabled", @"hideFullscreenActions_enabled", @"hideHeatwaves_enabled", @"hideHomeTab_enabled", @"hideHoverCards_enabled", @"hideHUD_enabled", @"hideModernFlags_enabled", @"hidePaidPromotionCard_enabled", @"hidePlayNextInQueue_enabled",
- @"hidePreviewCommentSection_enabled", @"hidePreviousAndNextButton_enabled", @"hideRemixButton_enabled", @"hideReportButton_enabled", @"hideRightPanel_enabled", @"hideShareButton_enabled", @"hideSponsorBlockButton_enabled", @"hideSubcriptions_enabled", @"hideSubscriptionsNotificationBadge_enabled", @"hideThanksButton_enabled", @"hideVideoPlayerShadowOverlayButtons_enabled", @"hideVideoTitle_enabled", @"hideYouTubeLogo_enabled",
- @"lowContrastMode_enabled", @"newSettingsUI_enabled", @"noRelatedWatchNexts_enabled", @"noSuggestedVideo_enabled", @"noVideosInFullscreen_enabled",
- @"pinchToZoom_enabled", @"portraitFullscreen_enabled", @"redProgressBar_enabled", @"redSubscribeButton_enabled", @"reExplore_enabled", @"shortsQualityPicker_enabled", @"slideToSeek_enabled", @"snapToChapter_enabled", @"stockVolumeHUD_enabled", @"stickNavigationBar_enabled", @"uYouAdBlockingWorkaround_enabled", @"uYouAdBlockingWorkaroundLite_enabled", @"ytMiniPlayer_enabled", @"ytNoModernUI_enabled", @"ytStartupAnimation_enabled",
+ kReplaceCopyandPasteButtons, kAppTheme, kOLEDKeyboard, kPortraitFullscreen, kFullscreenToTheRight, kSlideToSeek, kYTTapToSeek, kDoubleTapToSeek, kSnapToChapter, kPinchToZoom, kYTMiniPlayer, kStockVolumeHUD, kReplaceYTDownloadWithuYou, kDisablePullToFull, kDisableChapterSkip, kAlwaysShowRemainingTime, kDisableRemainingTime, kEnableShareButton, kEnableSaveToButton, kHideYTMusicButton, kHideAutoplaySwitch, kHideCC, kHideVideoTitle, kDisableCollapseButton, kDisableFullscreenButton, kHideHUD, kHidePaidPromotionCard, kHideChannelWatermark, kHideVideoPlayerShadowOverlayButtons, kHidePreviousAndNextButton, kRedProgressBar, kHideHoverCards, kHideRightPanel, kHideFullscreenActions, kHideSuggestedVideo, kHideHeatwaves, kHideDoubleTapToSeekOverlay, kHideOverlayDarkBackground, kDisableAmbientMode, kHideVideosInFullscreen, kHideRelatedWatchNexts, kHideBuySuperThanks, kHideSubscriptions, kShortsQualityPicker, kRedSubscribeButton, kHideButtonContainers, kHideConnectButton, kHideShareButton, kHideRemixButton, kHideThanksButton, kHideDownloadButton, kHideClipButton, kHideSaveToPlaylistButton, kHideReportButton, kHidePreviewCommentSection, kHideCommentSection, kDisableAccountSection, kDisableAutoplaySection, kDisableTryNewFeaturesSection, kDisableVideoQualityPreferencesSection, kDisableNotificationsSection, kDisableManageAllHistorySection, kDisableYourDataInYouTubeSection, kDisablePrivacySection, kDisableLiveChatSection, kHidePremiumPromos, kHideHomeTab, kLowContrastMode, kClassicVideoPlayer, kFixLowContrastMode, kDisableModernButtons, kDisableRoundedHints, kDisableModernFlags, kYTNoModernUI, kEnableVersionSpoofer, kGoogleSignInPatch, kAdBlockWorkaroundLite, kAdBlockWorkaround, kYouTabFakePremium, kDisableAnimatedYouTubeLogo, kCenterYouTubeLogo, kHideYouTubeLogo, kYTStartupAnimation, kDisableHints, kStickNavigationBar, kHideiSponsorBlockButton, kHideChipBar, kHidePlayNextInQueue, kHideCommunityPosts, kHideChannelHeaderLinks, kiPhoneLayout, kBigYTMiniPlayer, kReExplore, kAutoHideHomeBar, kHideSubscriptionsNotificationBadge, kFixCasting, kNewSettingsUI, kFlex, kGoogleSigninFix,
// uYou - https://github.com/MiRO92/uYou-for-YouTube
@"showedWelcomeVC", @"hideShortsTab", @"hideCreateTab", @"hideCastButton", @"relatedVideosAtTheEndOfYTVideos", @"removeYouTubeAds", @"backgroundPlayback", @"disableAgeRestriction", @"iPadLayout", @"noSuggestedVideoAtEnd", @"shortsProgressBar", @"hideShortsCells", @"removeShortsCell", @"startupPage",
// DEMC - https://github.com/therealFoxster/DontEatMyContent/blob/master/Tweak.h
diff --git a/Sources/YTMiniPlayerEnabler.x.bak b/Sources/YTMiniPlayerEnabler.x.bak
index 79b8a64303..703e862520 100644
--- a/Sources/YTMiniPlayerEnabler.x.bak
+++ b/Sources/YTMiniPlayerEnabler.x.bak
@@ -3,7 +3,7 @@
// YTMiniPlayerEnabler: https://github.com/level3tjg/YTMiniplayerEnabler/
%hook YTWatchMiniBarViewController
- (void)updateMiniBarPlayerStateFromRenderer {
- if (IS_ENABLED(@"ytMiniPlayer_enabled")) {}
+ if (IS_ENABLED(kYTMiniPlayer)) {}
else { return %orig; }
}
%end
diff --git a/Sources/YTNoHoverCards.x.bak b/Sources/YTNoHoverCards.x.bak
index 012ed6d1e9..1197ac7217 100644
--- a/Sources/YTNoHoverCards.x.bak
+++ b/Sources/YTNoHoverCards.x.bak
@@ -3,7 +3,7 @@
// YTNoHoverCards: https://github.com/level3tjg/YTNoHoverCards
%hook YTCreatorEndscreenView
- (void)setHidden:(BOOL)hidden {
- if (IS_ENABLED(@"hideHoverCards_enabled"))
+ if (IS_ENABLED(kHideHoverCards))
hidden = YES;
%orig;
}
diff --git a/Sources/YTNoPaidPromo.x.bak b/Sources/YTNoPaidPromo.x.bak
index 46825e0e8a..9b1ba89a8f 100644
--- a/Sources/YTNoPaidPromo.x.bak
+++ b/Sources/YTNoPaidPromo.x.bak
@@ -5,18 +5,18 @@
// YTNoPaidPromo: https://github.com/PoomSmart/YTNoPaidPromo
%hook YTMainAppVideoPlayerOverlayViewController
- (void)setPaidContentWithPlayerData:(id)data {
- if (IS_ENABLED(@"hidePaidPromotionCard_enabled")) {}
+ if (IS_ENABLED(kHidePaidPromotionCard)) {}
else { return %orig; }
}
- (void)playerOverlayProvider:(YTPlayerOverlayProvider *)provider didInsertPlayerOverlay:(YTPlayerOverlay *)overlay {
- if ([[overlay overlayIdentifier] isEqualToString:@"player_overlay_paid_content"] && IS_ENABLED(@"hidePaidPromotionCard_enabled")) return;
+ if ([[overlay overlayIdentifier] isEqualToString:@"player_overlay_paid_content"] && IS_ENABLED(kHidePaidPromotionCard)) return;
%orig;
}
%end
%hook YTInlineMutedPlaybackPlayerOverlayViewController
- (void)setPaidContentWithPlayerData:(id)data {
- if (IS_ENABLED(@"hidePaidPromotionCard_enabled")) {}
+ if (IS_ENABLED(kHidePaidPromotionCard)) {}
else { return %orig; }
}
%end
diff --git a/Sources/YTReExplore.x b/Sources/YTReExplore.x
index 070f426640..34f17c5f1c 100644
--- a/Sources/YTReExplore.x
+++ b/Sources/YTReExplore.x
@@ -38,7 +38,7 @@ static void replaceTab(YTIGuideResponse *response) {
%end
%ctor {
- if (IS_ENABLED(@"reExplore_enabled")) {
+ if (IS_ENABLED(kReExplore)) {
%init(YTReExplore);
}
}
diff --git a/Sources/uYouPlus.h b/Sources/uYouPlus.h
index b70c04d47d..325240feec 100644
--- a/Sources/uYouPlus.h
+++ b/Sources/uYouPlus.h
@@ -12,6 +12,9 @@
#import
#import
#import
+#import
+#import
+#import
#import
#import
#import
@@ -62,6 +65,117 @@
#define DEFAULT_RATE 1.0f // YTSpeed
#define LOWCONTRASTMODE_CUTOFF_VERSION @"17.38.10" // LowContrastMode (v17.33.2-17.38.10)
+// Keys
+// Copy/Paste Settings
+static NSString *const kReplaceCopyandPasteButtons = @"replaceCopyandPasteButtons_enabled";
+// App appearance
+static NSString *const kAppTheme = @"appTheme";
+static NSString *const kOLEDKeyboard = @"oledKeyBoard_enabled";
+// Video player
+static NSString *const kPortraitFullscreen = @"portraitFullscreen_enabled";
+static NSString *const kFullscreenToTheRight = @"fullscreenToTheRight_enabled";
+static NSString *const kSlideToSeek = @"slideToSeek_enabled";
+static NSString *const kYTTapToSeek = @"YTTapToSeek_enabled";
+static NSString *const kDoubleTapToSeek = @"doubleTapToSeek_enabled";
+static NSString *const kSnapToChapter = @"snapToChapter_enabled";
+static NSString *const kPinchToZoom = @"pinchToZoom_enabled";
+static NSString *const kYTMiniPlayer = @"ytMiniPlayer_enabled";
+static NSString *const kStockVolumeHUD = @"stockVolumeHUD_enabled";
+static NSString *const kReplaceYTDownloadWithuYou = @"kReplaceYTDownloadWithuYou_enabled";
+static NSString *const kDisablePullToFull = @"disablePullToFull_enabled";
+static NSString *const kDisableChapterSkip = @"disableChapterSkip_enabled";
+static NSString *const kAlwaysShowRemainingTime = @"alwaysShowRemainingTime_enabled";
+static NSString *const kDisableRemainingTime = @"disableRemainingTime_enabled";
+// Video controls overlay
+static NSString *const kEnableShareButton = @"enableShareButton_enabled";
+static NSString *const kEnableSaveToButton = @"enableSaveToButton_enabled";
+static NSString *const kHideYTMusicButton = @"hideYTMusicButton_enabled";
+static NSString *const kHideAutoplaySwitch = @"hideAutoplaySwitch_enabled";
+static NSString *const kHideCC = @"hideCC_enabled";
+static NSString *const kHideVideoTitle = @"hideVideoTitle_enabled";
+static NSString *const kDisableCollapseButton = @"disableCollapseButton_enabled";
+static NSString *const kDisableFullscreenButton = @"disableFullscreenButton_enabled";
+static NSString *const kHideHUD = @"hideHUD_enabled";
+static NSString *const kHidePaidPromotionCard = @"hidePaidPromotionCard_enabled";
+static NSString *const kHideChannelWatermark = @"hideChannelWatermark_enabled";
+static NSString *const kHideVideoPlayerShadowOverlayButtons = @"hideVideoPlayerShadowOverlayButtons_enabled";
+static NSString *const kHidePreviousAndNextButton = @"hidePreviousAndNextButton_enabled";
+static NSString *const kRedProgressBar = @"redProgressBar_enabled";
+static NSString *const kHideHoverCards = @"hideHoverCards_enabled";
+static NSString *const kHideRightPanel = @"hideRightPanel_enabled";
+static NSString *const kHideFullscreenActions = @"hideFullscreenActions_enabled";
+static NSString *const kHideSuggestedVideo = @"hideSuggestedVideo_enabled";
+static NSString *const kHideHeatwaves = @"hideHeatwaves_enabled";
+static NSString *const kHideDoubleTapToSeekOverlay = @"hideDoubleTapToSeekOverlay_enabled";
+static NSString *const kHideOverlayDarkBackground = @"hideOverlayDarkBackground_enabled";
+static NSString *const kDisableAmbientMode = @"disableAmbientMode_enabled";
+static NSString *const kHideVideosInFullscreen = @"hideVideosInFullscreen_enabled";
+static NSString *const kHideRelatedWatchNexts = @"hideRelatedWatchNexts_enabled";
+// Shorts control overlay
+static NSString *const kHideBuySuperThanks = @"hideBuySuperThanks_enabled";
+static NSString *const kHideSubscriptions = @"hideSubscriptions_enabled";
+static NSString *const kShortsQualityPicker = @"shortsQualityPicker_enabled";
+// Video player buttons
+static NSString *const kRedSubscribeButton = @"redSubscribeButton_enabled";
+static NSString *const kHideButtonContainers = @"hideButtonContainers_enabled";
+static NSString *const kHideConnectButton = @"hideConnectButton_enabled";
+static NSString *const kHideShareButton = @"hideShareButton_enabled";
+static NSString *const kHideRemixButton = @"hideRemixButton_enabled";
+static NSString *const kHideThanksButton = @"hideRemixButton_enabled";
+static NSString *const kHideDownloadButton = @"hideDownloadButton_enabled";
+static NSString *const kHideClipButton = @"hideClipButton_enabled";
+static NSString *const kHideSaveToPlaylistButton = @"hideSaveToPlaylistButton_enabled";
+static NSString *const kHideReportButton = @"hideReportButton_enabled";
+static NSString *const kHidePreviewCommentSection = @"hidePreviewCommentSection_enabled";
+static NSString *const kHideCommentSection = @"hideCommentSection_enabled";
+// App settings overlay
+static NSString *const kDisableAccountSection = @"disableAccountSection_enabled";
+static NSString *const kDisableAutoplaySection = @"disableAutoplaySection_enabled";
+static NSString *const kDisableTryNewFeaturesSection = @"disableTryNewFeaturesSection_enabled";
+static NSString *const kDisableVideoQualityPreferencesSection = @"disableVideoQualityPreferencesSection_enabled";
+static NSString *const kDisableNotificationsSection = @"disableNotificationsSection_enabled";
+static NSString *const kDisableManageAllHistorySection = @"disableManageAllHistorySection_enabled";
+static NSString *const kDisableYourDataInYouTubeSection = @"disableYourDataInYouTubeSection_enabled";
+static NSString *const kDisablePrivacySection = @"disablePrivacySection_enabled";
+static NSString *const kDisableLiveChatSection = @"disableLiveChatSection_enabled";
+static NSString *const kHidePremiumPromos = @"hidePremiumPromos_enabled";
+// UI Interface
+static NSString *const kHideHomeTab = @"hideHomeTab_enabled";
+static NSString *const kLowContrastMode = @"lowContrastMode_enabled";
+static NSString *const kClassicVideoPlayer = @"classicVideoPlayer_enabled";
+static NSString *const kFixLowContrastMode = @"fixLowContrastMode_enabled";
+static NSString *const kDisableModernButtons = @"disableModernButtons_enabled";
+static NSString *const kDisableRoundedHints = @"disableRoundedHints_enabled";
+static NSString *const kDisableModernFlags = @"disableModernFlags_enabled";
+static NSString *const kYTNoModernUI = @"ytNoModernUI_enabled";
+static NSString *const kEnableVersionSpoofer = @"enableVersionSpoofer_enabled";
+// Miscellaneous
+static NSString *const kGoogleSignInPatch = @"googleSignInPatch_enabled";
+static NSString *const kAdBlockWorkaroundLite = @"adBlockWorkaroundLite_enabled";
+static NSString *const kAdBlockWorkaround = @"adBlockWorkaround_enabled";
+static NSString *const kYouTabFakePremium = @"youTabFakePremium_enabled";
+static NSString *const kDisableAnimatedYouTubeLogo = @"disableAnimatedYouTubeLogo_enabled";
+static NSString *const kCenterYouTubeLogo = @"centerYouTubeLogo_enabled";
+static NSString *const kHideYouTubeLogo = @"hideYouTubeLogo_enabled";
+static NSString *const kYTStartupAnimation = @"ytStartupAnimation_enabled";
+static NSString *const kDisableHints = @"disableHints_enabled";
+static NSString *const kStickNavigationBar = @"stickNavigationBar_enabled";
+static NSString *const kHideiSponsorBlockButton = @"hideiSponsorBlockButton_enabled";
+static NSString *const kHideChipBar = @"hideChipBar_enabled";
+static NSString *const kHidePlayNextInQueue = @"hidePlayNextInQueue_enabled";
+static NSString *const kHideCommunityPosts = @"hideCommunityPosts_enabled";
+static NSString *const kHideChannelHeaderLinks = @"hideChannelHeaderLinks_enabled";
+static NSString *const kiPhoneLayout = @"iPhoneLayout_enabled";
+static NSString *const kBigYTMiniPlayer = @"bigYTMiniPlayer_enabled";
+static NSString *const kReExplore = @"reExplore_enabled";
+static NSString *const kAutoHideHomeBar = @"autoHideHomeBar_enabled";
+static NSString *const kHideSubscriptionsNotificationBadge = @"hideSubscriptionsNotificationBadge_enabled";
+static NSString *const kFixCasting = @"fixCasting_enabled";
+static NSString *const kNewSettingsUI = @"newSettingsUI_enabled";
+static NSString *const kFlex = @"flex_enabled";
+// unused (uYouEnhanced)
+static NSString *const kGoogleSigninFix = @"googleSigninFix_enabled";
+
// Always show remaining time in video player - @bhackel
// Header has been moved to https://github.com/PoomSmart/YouTubeHeader/blob/main/YTPlayerBarController.h
// Header has been moved to https://github.com/PoomSmart/YouTubeHeader/blob/main/YTInlinePlayerBarContainerView.h
@@ -167,6 +281,9 @@
@interface YTPlaybackButton : UIControl
@end
+@interface HelperVC : UIViewController
+@end
+
@interface YTPlaylistHeaderViewController : UIViewController
@property UIButton *downloadsButton;
@end
diff --git a/Sources/uYouPlus.xm b/Sources/uYouPlus.xm
index ab46f6843d..66b60f1905 100644
--- a/Sources/uYouPlus.xm
+++ b/Sources/uYouPlus.xm
@@ -1,4 +1,5 @@
#import "uYouPlus.h"
+#import "uYouPlusPatches.h"
// Tweak's bundle for Localizations support - @PoomSmart - https://github.com/PoomSmart/YouPiP/commit/aea2473f64c75d73cab713e1e2d5d0a77675024f
NSBundle *uYouPlusBundle() {
@@ -16,6 +17,142 @@ NSBundle *uYouPlusBundle() {
NSBundle *tweakBundle = uYouPlusBundle();
//
+// LEGACY VERSION ⚠️
+// Hide the (Connect / Thanks / Save / Report) Buttons under the Video Player - 17.33.2 and up - @arichornlover (inspired by @PoomSmart's version)
+%hook _ASDisplayView
+- (void)layoutSubviews {
+ %orig;
+ BOOL hideConnectButton = IS_ENABLED(@"hideConnectButton_enabled");
+ BOOL hideThanksButton = IS_ENABLED(@"hideThanksButton_enabled");
+ BOOL hideSaveToPlaylistButton = IS_ENABLED(@"hideSaveToPlaylistButton_enabled");
+ BOOL hideReportButton = IS_ENABLED(@"hideReportButton_enabled");
+
+ for (UIView *subview in self.subviews) {
+ if ([subview.accessibilityLabel isEqualToString:@"connect account"]) {
+ subview.hidden = hideConnectButton;
+ } else if ([subview.accessibilityLabel isEqualToString:@"Thanks"]) {
+ subview.hidden = hideThanksButton;
+ } else if ([subview.accessibilityLabel isEqualToString:@"Save to playlist"]) {
+ subview.hidden = hideSaveToPlaylistButton;
+ } else if ([subview.accessibilityLabel isEqualToString:@"Report"]) {
+ subview.hidden = hideReportButton;
+ }
+ }
+}
+%end
+
+// UPDATED VERSION
+// Hide the (Connect / Share / Remix / Thanks / Download / Clip / Save / Report) Buttons under the Video Player - 17.33.2 and up - @PoomSmart (inspired by @arichornlover) - METHOD BROKE Server-Side on May 14th 2024
+static BOOL findCell(ASNodeController *nodeController, NSArray *identifiers) {
+ for (id child in [nodeController children]) {
+ NSLog(@"Child: %@", [child description]);
+
+ if ([child isKindOfClass:%c(ELMNodeController)]) {
+ NSArray *elmChildren = [(ELMNodeController * _Nullable)child children];
+ for (ELMComponent *elmChild in elmChildren) {
+ for (NSString *identifier in identifiers) {
+ if ([[elmChild description] containsString:identifier]) {
+ NSLog(@"Found identifier: %@", identifier);
+ return YES;
+ }
+ }
+ }
+ }
+
+ if ([child isKindOfClass:%c(ASNodeController)]) {
+ ASDisplayNode *childNode = ((ASNodeController * _Nullable)child).node; // ELMContainerNode
+ NSArray *yogaChildren = childNode.yogaChildren;
+ for (ASDisplayNode *displayNode in yogaChildren) {
+ NSLog(@"Yoga Child: %@", displayNode.accessibilityIdentifier);
+
+ if ([identifiers containsObject:displayNode.accessibilityIdentifier]) {
+ NSLog(@"Found identifier: %@", displayNode.accessibilityIdentifier);
+ return YES;
+ }
+
+ if (findCell(child, identifiers)) {
+ return YES;
+ }
+ }
+ }
+ }
+ return NO;
+}
+
+%hook ASCollectionView // This stopped working on May 14th 2024 due to a Server-Side Change from YouTube.
+- (CGSize)sizeForElement:(ASCollectionElement * _Nullable)element {
+ if ([self.accessibilityIdentifier isEqualToString:@"id.video.scrollable_action_bar"]) {
+ ASCellNode *node = [element node];
+ ASNodeController *nodeController = [node controller];
+
+ if (IS_ENABLED(@"hideShareButton_enabled") && findCell(nodeController, @[@"id.video.share.button"])) {
+ return CGSizeZero;
+ }
+
+ if (IS_ENABLED(@"hideRemixButton_enabled") && findCell(nodeController, @[@"id.video.remix.button"])) {
+ return CGSizeZero;
+ }
+
+ if (IS_ENABLED(@"hideThanksButton_enabled") && findCell(nodeController, @[@"Thanks"])) {
+ return CGSizeZero;
+ }
+
+ if (IS_ENABLED(@"hideClipButton_enabled") && findCell(nodeController, @[@"clip_button.eml"])) {
+ return CGSizeZero;
+ }
+
+ if (IS_ENABLED(@"hideDownloadButton_enabled") && findCell(nodeController, @[@"id.ui.add_to.offline.button"])) {
+ return CGSizeZero;
+ }
+
+ if (IS_ENABLED(@"hideCommentSection_enabled") && findCell(nodeController, @[@"id.ui.carousel_header"])) {
+ return CGSizeZero;
+ }
+ }
+ return %orig;
+}
+%end
+
+// Replace YouTube's download with uYou's
+YTMainAppControlsOverlayView *controlsOverlayView;
+%hook YTMainAppControlsOverlayView
+- (id)initWithDelegate:(id)arg1 {
+ controlsOverlayView = %orig;
+ return controlsOverlayView;
+}
+%end
+%hook YTElementsDefaultSheetController
++ (void)showSheetController:(id)arg1 showCommand:(id)arg2 commandContext:(id)arg3 handler:(id)arg4 {
+ if (IS_ENABLED(kReplaceYTDownloadWithuYou) && [arg2 isKindOfClass:%c(ELMPBShowActionSheetCommand)]) {
+ ELMPBShowActionSheetCommand *showCommand = (ELMPBShowActionSheetCommand *)arg2;
+ NSArray *listOptions = [showCommand listOptionArray];
+ for (ELMPBElement *element in listOptions) {
+ ELMPBProperties *properties = [element properties];
+ ELMPBIdentifierProperties *identifierProperties = [properties firstSubmessage];
+ // 19.30.2
+ if ([identifierProperties respondsToSelector:@selector(identifier)]) {
+ NSString *identifier = [identifierProperties identifier];
+ if ([identifier containsString:@"offline_upsell_dialog"]) {
+ if ([controlsOverlayView respondsToSelector:@selector(uYou)]) {
+ [controlsOverlayView uYou];
+ }
+ return;
+ }
+ }
+ // 19.20.2
+ NSString *description = [identifierProperties description];
+ if ([description containsString:@"offline_upsell_dialog"]) {
+ if ([controlsOverlayView respondsToSelector:@selector(uYou)]) {
+ [controlsOverlayView uYou];
+ }
+ return;
+ }
+ }
+ }
+ %orig;
+}
+%end
+
# pragma mark - Other hooks
// Activate FLEX
@@ -24,7 +161,7 @@ NSBundle *tweakBundle = uYouPlusBundle();
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
BOOL didFinishLaunching = %orig;
- if (IS_ENABLED(@"flex_enabled")) {
+ if (IS_ENABLED(kFlex)) {
[[%c(FLEXManager) performSelector:@selector(sharedManager)] performSelector:@selector(showExplorer)];
}
@@ -32,7 +169,7 @@ NSBundle *tweakBundle = uYouPlusBundle();
}
- (void)appWillResignActive:(id)arg1 {
%orig;
- if (IS_ENABLED(@"flex_enabled")) {
+ if (IS_ENABLED(kFlex)) {
[[%c(FLEXManager) performSelector:@selector(sharedManager)] performSelector:@selector(showExplorer)];
}
}
@@ -77,7 +214,7 @@ NSBundle *tweakBundle = uYouPlusBundle();
}
%end
-// uYou AdBlock Workaround LITE (This Version will only remove ads from Videos/Shorts!) - @PoomSmart
+// uYou AdBlock Workaround LITE (This Version will only remove ads from only Videos/Shorts!) - @PoomSmart
%group uYouAdBlockingWorkaroundLite
%hook YTHotConfig
- (BOOL)disableAfmaIdfaCollection { return NO; }
@@ -244,6 +381,27 @@ static NSMutableArray *filteredArray(NSArray *filteredArray(NSArray *filteredArray(NSArray *filteredArray(NSArray *filteredArray(NSArray *identifiers) {
- for (id child in [nodeController children]) {
- if ([child isKindOfClass:%c(ELMNodeController)]) {
- NSArray *elmChildren = [(ELMNodeController * _Nullable)child children];
- for (ELMComponent *elmChild in elmChildren) {
- for (NSString *identifier in identifiers) {
- if ([[elmChild description] containsString:identifier])
- return YES;
- }
- }
- }
-
- if ([child isKindOfClass:%c(ASNodeController)]) {
- ASDisplayNode *childNode = ((ASNodeController * _Nullable)child).node; // ELMContainerNode
- NSArray *yogaChildren = childNode.yogaChildren;
- for (ASDisplayNode *displayNode in yogaChildren) {
- if ([identifiers containsObject:displayNode.accessibilityIdentifier])
- return YES;
- }
-
- return findCell(child, identifiers);
- }
-
- return NO;
- }
- return NO;
-}
-
-%hook ASCollectionView // This stopped working on May 14th 2024 due to a Server-Side Change from YouTube.
-
-- (CGSize)sizeForElement:(ASCollectionElement * _Nullable)element {
- if ([self.accessibilityIdentifier isEqualToString:@"id.video.scrollable_action_bar"]) {
- ASCellNode *node = [element node];
- ASNodeController *nodeController = [node controller];
- if (IS_ENABLED(@"hideShareButton_enabled") && findCell(nodeController, @[@"id.video.share.button"])) {
- return CGSizeZero;
- }
-
- if (IS_ENABLED(@"hideRemixButton_enabled") && findCell(nodeController, @[@"id.video.remix.button"])) {
- return CGSizeZero;
- }
-
- if (IS_ENABLED(@"hideThanksButton_enabled") && findCell(nodeController, @[@"Thanks"])) {
- return CGSizeZero;
- }
-
- if (IS_ENABLED(@"hideClipButton_enabled") && findCell(nodeController, @[@"clip_button.eml"])) {
- return CGSizeZero;
- }
-
- if (IS_ENABLED(@"hideDownloadButton_enabled") && findCell(nodeController, @[@"id.ui.add_to.offline.button"])) {
- return CGSizeZero;
- }
-
- if (IS_ENABLED(@"hideCommentSection_enabled") && findCell(nodeController, @[@"id.ui.carousel_header"])) {
- return CGSizeZero;
- }
- }
- return %orig;
-}
-
-%end
-
// App Settings Overlay Options
%group gDisableAccountSection
%hook YTSettingsSectionItemManager
@@ -1520,7 +1588,7 @@ static BOOL findCell(ASNodeController *nodeController, NSArray *ide
%end
%end
-// Auto-Hide Home Bar - @arichornlover
+// Auto-Hide Home Bar
%group gAutoHideHomeBar
%hook UIViewController
- (BOOL)prefersHomeIndicatorAutoHidden {
@@ -1532,11 +1600,11 @@ static BOOL findCell(ASNodeController *nodeController, NSArray *ide
// YT startup animation
%hook YTColdConfig
- (BOOL)mainAppCoreClientIosEnableStartupAnimation {
- return IS_ENABLED(@"ytStartupAnimation_enabled") ? YES : NO;
+ return IS_ENABLED(kYTStartupAnimation) ? YES : NO;
}
%end
-// Disable hints - https://github.com/LillieH001/YouTube-Reborn/blob/v4/
+// Disable hints
%group gDisableHints
%hook YTSettings
- (BOOL)areHintsDisabled {
@@ -1589,7 +1657,7 @@ static BOOL findCell(ASNodeController *nodeController, NSArray *ide
// Remove “Play next in queue” from the menu (@PoomSmart) - qnblackcat/uYouPlus#1138
%hook YTMenuItemVisibilityHandler
- (BOOL)shouldShowServiceItemRenderer:(YTIMenuConditionalServiceItemRenderer *)renderer {
- return IS_ENABLED(@"hidePlayNextInQueue_enabled") && renderer.icon.iconType == 251 && renderer.secondaryIcon.iconType == 741 ? NO : %orig;
+ return IS_ENABLED(kHidePlayNextInQueue) && renderer.icon.iconType == 251 && renderer.secondaryIcon.iconType == 741 ? NO : %orig;
}
%end
@@ -1629,7 +1697,7 @@ static BOOL findCell(ASNodeController *nodeController, NSArray *ide
%end
%end
-// iPhone Layout - @LillieH1000 & @arichornlover
+// iPhone Layout - @arichornlover
%group giPhoneLayout
%hook UIDevice
- (UIUserInterfaceIdiom)userInterfaceIdiom {
@@ -1689,165 +1757,170 @@ static BOOL findCell(ASNodeController *nodeController, NSArray *ide
// dlopen([[NSString stringWithFormat:@"%@/Frameworks/uYou.dylib", [[NSBundle mainBundle] bundlePath]] UTF8String], RTLD_LAZY);
%init;
- if (IS_ENABLED(@"hideYouTubeLogo_enabled")) {
+/*
+ if (IS_ENABLED(kSettingsStyle_enabled)) {
+ %init(gSettingsStyle);
+ }
+*/
+ if (IS_ENABLED(kHideYouTubeLogo)) {
%init(gHideYouTubeLogo);
}
- if (IS_ENABLED(@"centerYouTubeLogo_enabled")) {
+ if (IS_ENABLED(kCenterYouTubeLogo)) {
%init(gCenterYouTubeLogo);
}
- if (IS_ENABLED(@"hideSubscriptionsNotificationBadge_enabled")) {
+ if (IS_ENABLED(kHideSubscriptionsNotificationBadge)) {
%init(gHideSubscriptionsNotificationBadge);
}
- if (IS_ENABLED(@"hidePreviousAndNextButton_enabled")) {
+ if (IS_ENABLED(kHidePreviousAndNextButton)) {
%init(gHidePreviousAndNextButton);
}
- if (IS_ENABLED(@"hideOverlayDarkBackground_enabled")) {
+ if (IS_ENABLED(kHideOverlayDarkBackground)) {
%init(gHideOverlayDarkBackground);
}
- if (IS_ENABLED(@"hideVideoPlayerShadowOverlayButtons_enabled")) {
+ if (IS_ENABLED(kHideVideoPlayerShadowOverlayButtons)) {
%init(gHideVideoPlayerShadowOverlayButtons);
}
- if (IS_ENABLED(@"disableHints_enabled")) {
+ if (IS_ENABLED(kDisableHints)) {
%init(gDisableHints);
}
- if (IS_ENABLED(@"redProgressBar_enabled")) {
+ if (IS_ENABLED(kRedProgressBar)) {
%init(gRedProgressBar);
}
- if (IS_ENABLED(@"stickNavigationBar_enabled")) {
+ if (IS_ENABLED(kStickNavigationBar)) {
%init(gStickNavigationBar);
}
- if (IS_ENABLED(@"hideChipBar_enabled")) {
+ if (IS_ENABLED(kHideChipBar)) {
%init(gHideChipBar);
}
- if (IS_ENABLED(@"portraitFullscreen_enabled")) {
+ if (IS_ENABLED(kPortraitFullscreen)) {
%init(gPortraitFullscreen);
}
- if (IS_ENABLED(@"fullscreenToTheRight_enabled")) {
+ if (IS_ENABLED(kFullscreenToTheRight)) {
%init(gFullscreenToTheRight);
}
- if (IS_ENABLED(@"disableFullscreenButton_enabled")) {
+ if (IS_ENABLED(kDisableFullscreenButton)) {
%init(gHideFullscreenButton);
}
- if (IS_ENABLED(@"hideFullscreenActions_enabled")) {
+ if (IS_ENABLED(kHideFullscreenActions)) {
%init(hideFullscreenActions);
}
- if (IS_ENABLED(@"iPhoneLayout_enabled") && (UIDevice.currentDevice.userInterfaceIdiom == UIUserInterfaceIdiomPad)) {
+ if (IS_ENABLED(kiPhoneLayout) && (UIDevice.currentDevice.userInterfaceIdiom == UIUserInterfaceIdiomPad)) {
%init(giPhoneLayout);
}
- if (IS_ENABLED(@"stockVolumeHUD_enabled")) {
+ if (IS_ENABLED(kStockVolumeHUD)) {
%init(gStockVolumeHUD);
}
- if (IS_ENABLED(@"hideHeatwaves_enabled")) {
+ if (IS_ENABLED(kHideHeatwaves)) {
%init(gHideHeatwaves);
}
- if (IS_ENABLED(@"noRelatedWatchNexts_enabled")) {
+ if (IS_ENABLED(kHideRelatedWatchNexts)) {
%init(gNoRelatedWatchNexts);
}
- if (IS_ENABLED(@"noVideosInFullscreen_enabled")) {
+ if (IS_ENABLED(kHideVideosInFullscreen)) {
%init(gNoVideosInFullscreen);
}
- if (IS_ENABLED(@"classicVideoPlayer_enabled")) {
+ if (IS_ENABLED(kClassicVideoPlayer)) {
%init(gClassicVideoPlayer);
}
- if (IS_ENABLED(@"fixLowContrastMode_enabled")) {
+ if (IS_ENABLED(kFixLowContrastMode)) {
%init(gFixLowContrastMode);
}
- if (IS_ENABLED(@"disableModernButtons_enabled")) {
+ if (IS_ENABLED(kDisableModernButtons)) {
%init(gDisableModernButtons);
}
- if (IS_ENABLED(@"disableRoundedHints_enabled")) {
+ if (IS_ENABLED(kDisableRoundedHints)) {
%init(gDisableRoundedHints);
}
- if (IS_ENABLED(@"disableModernFlags_enabled")) {
+ if (IS_ENABLED(kDisableModernFlags)) {
%init(gDisableModernFlags);
}
- if (IS_ENABLED(@"disableAmbientMode_enabled")) {
+ if (IS_ENABLED(kDisableAmbientMode)) {
%init(gDisableAmbientMode);
}
- if (IS_ENABLED(@"disableAccountSection_enabled")) {
+ if (IS_ENABLED(kDisableAccountSection)) {
%init(gDisableAccountSection);
}
- if (IS_ENABLED(@"disableAutoplaySection_enabled")) {
+ if (IS_ENABLED(kDisableAutoplaySection)) {
%init(gDisableAutoplaySection);
}
- if (IS_ENABLED(@"disableTryNewFeaturesSection_enabled")) {
+ if (IS_ENABLED(kDisableTryNewFeaturesSection)) {
%init(gDisableTryNewFeaturesSection);
}
- if (IS_ENABLED(@"disableVideoQualityPreferencesSection_enabled")) {
+ if (IS_ENABLED(kDisableVideoQualityPreferencesSection)) {
%init(gDisableVideoQualityPreferencesSection);
}
- if (IS_ENABLED(@"disableNotificationsSection_enabled")) {
+ if (IS_ENABLED(kDisableNotificationsSection)) {
%init(gDisableNotificationsSection);
}
- if (IS_ENABLED(@"disableManageAllHistorySection_enabled")) {
+ if (IS_ENABLED(kDisableManageAllHistorySection)) {
%init(gDisableManageAllHistorySection);
}
- if (IS_ENABLED(@"disableYourDataInYouTubeSection_enabled")) {
+ if (IS_ENABLED(kDisableYourDataInYouTubeSection)) {
%init(gDisableYourDataInYouTubeSection);
}
- if (IS_ENABLED(@"disablePrivacySection_enabled")) {
+ if (IS_ENABLED(kDisablePrivacySection)) {
%init(gDisablePrivacySection);
}
- if (IS_ENABLED(@"disableLiveChatSection_enabled")) {
+ if (IS_ENABLED(kDisableLiveChatSection)) {
%init(gDisableLiveChatSection);
}
- if (IS_ENABLED(@"YTTapToSeek_enabled")) {
+ if (IS_ENABLED(kYTTapToSeek)) {
%init(gYTTapToSeek);
}
- if (IS_ENABLED(@"hidePremiumPromos_enabled")) {
+ if (IS_ENABLED(kHidePremiumPromos)) {
%init(gHidePremiumPromos);
}
- if (IS_ENABLED(@"youTabFakePremium_enabled")) {
+ if (IS_ENABLED(kYouTabFakePremium)) {
%init(gFakePremium);
}
- if (IS_ENABLED(@"disablePullToFull_enabled")) {
+ if (IS_ENABLED(kDisablePullToFull)) {
%init(gDisablePullToFull);
}
- if (IS_ENABLED(@"uYouAdBlockingWorkaroundLite_enabled")) {
+ if (IS_ENABLED(kAdBlockWorkaroundLite)) {
%init(uYouAdBlockingWorkaroundLite);
}
- if (IS_ENABLED(@"uYouAdBlockingWorkaround_enabled")) {
+ if (IS_ENABLED(kAdBlockWorkaround)) {
%init(uYouAdBlockingWorkaround);
}
- if (IS_ENABLED(@"hideHomeTab_enabled")) {
+ if (IS_ENABLED(kHideHomeTab)) {
%init(gHideHomeTab);
}
- if (IS_ENABLED(@"autoHideHomeBar_enabled")) {
+ if (IS_ENABLED(kAutoHideHomeBar)) {
%init(gAutoHideHomeBar);
}
- if (IS_ENABLED(@"hideDoubleTapToSeekOverlay_enabled")) {
+ if (IS_ENABLED(kHideDoubleTapToSeekOverlay)) {
%init(gHideDoubleTapToSeekOverlay);
}
- if (IS_ENABLED(@"shortsQualityPicker_enabled")) {
+ if (IS_ENABLED(kShortsQualityPicker)) {
%init(gShortsQualityPicker);
}
- if (IS_ENABLED(@"fixCasting_enabled")) {
+ if (IS_ENABLED(kFixCasting)) {
%init(gFixCasting);
}
- // YTNoModernUI - @arichorn
- BOOL ytNoModernUIEnabled = IS_ENABLED(@"ytNoModernUI_enabled");
+ // YTNoModernUI - @arichornlover
+ BOOL ytNoModernUIEnabled = IS_ENABLED(kYTNoModernUI);
if (ytNoModernUIEnabled) {
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
- [userDefaults setBool:NO forKey:@"enableVersionSpoofer_enabled"];
+ [userDefaults setBool:NO forKey:kEnableVersionSpoofer];
} else {
- BOOL enableVersionSpooferEnabled = IS_ENABLED(@"enableVersionSpoofer_enabled");
+ BOOL enableVersionSpooferEnabled = IS_ENABLED(kEnableVersionSpoofer);
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
- [userDefaults setBool:enableVersionSpooferEnabled forKey:@"enableVersionSpoofer_enabled"];
+ [userDefaults setBool:enableVersionSpooferEnabled forKey:kEnableVersionSpoofer];
}
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
- [userDefaults setBool:ytNoModernUIEnabled ? ytNoModernUIEnabled : [userDefaults boolForKey:@"fixLowContrastMode_enabled"] forKey:@"fixLowContrastMode_enabled"];
- [userDefaults setBool:ytNoModernUIEnabled ? ytNoModernUIEnabled : [userDefaults boolForKey:@"disableModernButtons_enabled"] forKey:@"disableModernButtons_enabled"];
- [userDefaults setBool:ytNoModernUIEnabled ? ytNoModernUIEnabled : [userDefaults boolForKey:@"disableRoundedHints_enabled"] forKey:@"disableRoundedHints_enabled"];
- [userDefaults setBool:ytNoModernUIEnabled ? ytNoModernUIEnabled : [userDefaults boolForKey:@"disableModernFlags_enabled"] forKey:@"disableModernFlags_enabled"];
- [userDefaults setBool:ytNoModernUIEnabled ? ytNoModernUIEnabled : [userDefaults boolForKey:@"disableAmbientMode_enabled"] forKey:@"disableAmbientMode_enabled"];
- [userDefaults setBool:ytNoModernUIEnabled ? ytNoModernUIEnabled : [userDefaults boolForKey:@"redProgressBar_enabled"] forKey:@"redProgressBar_enabled"];
+ [userDefaults setBool:ytNoModernUIEnabled ? ytNoModernUIEnabled : [userDefaults boolForKey:kFixLowContrastMode] forKey:kFixLowContrastMode];
+ [userDefaults setBool:ytNoModernUIEnabled ? ytNoModernUIEnabled : [userDefaults boolForKey:kDisableModernButtons] forKey:kDisableModernButtons];
+ [userDefaults setBool:ytNoModernUIEnabled ? ytNoModernUIEnabled : [userDefaults boolForKey:kDisableRoundedHints] forKey:kDisableRoundedHints];
+ [userDefaults setBool:ytNoModernUIEnabled ? ytNoModernUIEnabled : [userDefaults boolForKey:kDisableModernFlags] forKey:kDisableModernFlags];
+ [userDefaults setBool:ytNoModernUIEnabled ? ytNoModernUIEnabled : [userDefaults boolForKey:kDisableAmbientMode] forKey:kDisableAmbientMode];
+ [userDefaults setBool:ytNoModernUIEnabled ? ytNoModernUIEnabled : [userDefaults boolForKey:kRedProgressBar] forKey:kRedProgressBar];
// Change the default value of some options
NSArray *allKeys = [[[NSUserDefaults standardUserDefaults] dictionaryRepresentation] allKeys];
- if (![allKeys containsObject:@"hidePlayNextInQueue_enabled"]) {
- [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"hidePlayNextInQueue_enabled"];
+ if (![allKeys containsObject:kHidePlayNextInQueue]) {
+ [[NSUserDefaults standardUserDefaults] setBool:YES forKey:kHidePlayNextInQueue];
}
if (![allKeys containsObject:@"relatedVideosAtTheEndOfYTVideos"]) {
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"relatedVideosAtTheEndOfYTVideos"];
@@ -1861,14 +1934,17 @@ static BOOL findCell(ASNodeController *nodeController, NSArray *ide
if (![allKeys containsObject:@"YouPiPEnabled"]) {
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"YouPiPEnabled"];
}
- if (![allKeys containsObject:@"uYouAdBlockingWorkaroundLite_enabled"]) {
- [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"uYouAdBlockingWorkaroundLite_enabled"];
- [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"uYouAdBlockingWorkaround_enabled"];
+ if (![allKeys containsObject:kReplaceYTDownloadWithuYou]) {
+ [[NSUserDefaults standardUserDefaults] setBool:YES forKey:kReplaceYTDownloadWithuYou];
+ }
+ if (![allKeys containsObject:kAdBlockWorkaroundLite]) {
+ [[NSUserDefaults standardUserDefaults] setBool:YES forKey:kAdBlockWorkaroundLite];
+ [[NSUserDefaults standardUserDefaults] setBool:NO forKey:kAdBlockWorkaround];
[[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"removeYouTubeAds"];
}
- if (![allKeys containsObject:@"uYouAdBlockingWorkaround_enabled"]) {
- [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"uYouAdBlockingWorkaroundLite_enabled"];
- [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"uYouAdBlockingWorkaround_enabled"];
+ if (![allKeys containsObject:kAdBlockWorkaround]) {
+ [[NSUserDefaults standardUserDefaults] setBool:NO forKey:kAdBlockWorkaroundLite];
+ [[NSUserDefaults standardUserDefaults] setBool:YES forKey:kAdBlockWorkaround];
[[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"removeYouTubeAds"];
}
// Broken uYou 3.0.3 setting: No Suggested Videos at The Video End
@@ -1887,10 +1963,10 @@ static BOOL findCell(ASNodeController *nodeController, NSArray *ide
}
// Set video casting fix default to enabled
if (![allKeys containsObject:@"fixCasting_enabled"]) {
- [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"fixCasting_enabled"];
+ [[NSUserDefaults standardUserDefaults] setBool:YES forKey:kFixCasting];
}
// Set new grouped settings UI to default enabled
if (![allKeys containsObject:@"newSettingsUI_enabled"]) {
- [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"newSettingsUI_enabled"];
+ [[NSUserDefaults standardUserDefaults] setBool:YES forKey:kNewSettingsUI];
}
}
diff --git a/Sources/uYouPlusPatches.h b/Sources/uYouPlusPatches.h
index 59af3b316c..ee279b9b74 100644
--- a/Sources/uYouPlusPatches.h
+++ b/Sources/uYouPlusPatches.h
@@ -75,6 +75,7 @@
@interface ELMPBShowActionSheetCommand : GPBMessage
@property (nonatomic, strong, readwrite) ELMPBCommand *onAppear;
@property (nonatomic, assign, readwrite) BOOL hasOnAppear;
+- (id)listOptionArray;
@end
@interface ELMContext : NSObject
diff --git a/Sources/uYouPlusPatches.xm b/Sources/uYouPlusPatches.xm
index a62276ac20..51c811202e 100644
--- a/Sources/uYouPlusPatches.xm
+++ b/Sources/uYouPlusPatches.xm
@@ -392,11 +392,11 @@ static void refreshUYouAppearance() {
%ctor {
%init;
- if (IS_ENABLED(@"googleSignInPatch_enabled")) {
+ if (IS_ENABLED(kGoogleSignInPatch)) {
%init(gGoogleSignInPatch);
}
/*
- if (IS_ENABLED(@"youtubeNativeShare_enabled")) {
+ if (IS_ENABLED(kYouTubeNativeShare)) {
%init(gYouTubeNativeShare);
}
*/
diff --git a/Sources/uYouPlusSettings.xm b/Sources/uYouPlusSettings.xm
index 3f565c8920..d7f0667108 100644
--- a/Sources/uYouPlusSettings.xm
+++ b/Sources/uYouPlusSettings.xm
@@ -10,36 +10,28 @@
#define SECTION_HEADER(s) [sectionItems addObject:[%c(YTSettingsSectionItem) itemWithTitle:@"\t" titleDescription:[s uppercaseString] accessibilityIdentifier:nil detailTextBlock:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger sectionItemIndex) { return NO; }]]
-// Basic Switch Item
-#define SWITCH_ITEM(t, d, k) \
- [sectionItems addObject:[YTSettingsSectionItemClass \
- switchItemWithTitle:t \
- titleDescription:d \
+// Basic Switch
+#define SWITCH(title, description, key, ...) \
+ [sectionItems addObject:[%c(YTSettingsSectionItem) \
+ switchItemWithTitle:title \
+ titleDescription:description \
accessibilityIdentifier:nil \
- switchOn:IS_ENABLED(k) \
- switchBlock:^BOOL (YTSettingsCell *cell, BOOL enable) { \
- [[NSUserDefaults standardUserDefaults] setBool:enable forKey:k]; \
+ switchOn:IS_ENABLED(key) \
+ switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { \
+ [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:key]; \
+ __VA_ARGS__; \
return YES; \
} \
- settingItemId:0]]
+ settingItemId:0 \
+ ]]
-// Switch Item with Restart popup
-#define SWITCH_ITEM2(t, d, k) \
- [sectionItems addObject:[YTSettingsSectionItemClass \
- switchItemWithTitle:t \
- titleDescription:d \
- accessibilityIdentifier:nil \
- switchOn:IS_ENABLED(k) \
- switchBlock:^BOOL (YTSettingsCell *cell, BOOL enable) { \
- [[NSUserDefaults standardUserDefaults] setBool:enable forKey:k]; \
- SHOW_RELAUNCH_YT_SNACKBAR; \
- return YES; \
- } \
- settingItemId:0]]
+// Switch with Restart popup (SHOW_RELAUNCH_YT_SNACKBAR;)
+#define SWITCH2(title, description, key) \
+ SWITCH(title, description, key, SHOW_RELAUNCH_YT_SNACKBAR)
-// Switch Item with customizable code
-#define SWITCH_ITEM3(title, description, key, code) \
- [sectionItems addObject:[YTSettingsSectionItemClass \
+// Switch with customizable code
+#define SWITCH3(title, description, key, code) \
+ [sectionItems addObject:[%c(YTSettingsSectionItem) \
switchItemWithTitle:title \
titleDescription:description \
accessibilityIdentifier:nil \
@@ -49,8 +41,8 @@
} \
settingItemId:0]]
-/** Example SWITCH_ITEM3 Usage
-SWITCH_ITEM3(
+/** Example SWITCH3 Usage
+SWITCH3(
LOC(@"Your title here"),
LOC(@"Your description here"),
@"yourKey_enabled",
@@ -182,12 +174,12 @@ extern NSBundle *uYouPlusBundle();
# pragma mark - Copy and Paste Settings
YTSettingsSectionItem *copySettings = [%c(YTSettingsSectionItem)
- itemWithTitle:IS_ENABLED(@"replaceCopyandPasteButtons_enabled") ? LOC(@"EXPORT_SETTINGS") : LOC(@"COPY_SETTINGS")
- titleDescription:IS_ENABLED(@"replaceCopyandPasteButtons_enabled") ? LOC(@"EXPORT_SETTINGS_DESC") : LOC(@"COPY_SETTINGS_DESC")
+ itemWithTitle:IS_ENABLED(kReplaceCopyandPasteButtons) ? LOC(@"EXPORT_SETTINGS") : LOC(@"COPY_SETTINGS")
+ titleDescription:IS_ENABLED(kReplaceCopyandPasteButtons) ? LOC(@"EXPORT_SETTINGS_DESC") : LOC(@"COPY_SETTINGS_DESC")
accessibilityIdentifier:nil
detailTextBlock:nil
selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
- if (IS_ENABLED(@"replaceCopyandPasteButtons_enabled")) {
+ if (IS_ENABLED(kReplaceCopyandPasteButtons)) {
// Export Settings functionality
NSURL *tempFileURL = [NSURL fileURLWithPath:[NSTemporaryDirectory() stringByAppendingPathComponent:@"uYouEnhancedSettings.txt"]];
NSMutableString *settingsString = [NSMutableString string];
@@ -233,8 +225,8 @@ extern NSBundle *uYouPlusBundle();
[sectionItems addObject:copySettings];
YTSettingsSectionItem *pasteSettings = [%c(YTSettingsSectionItem)
- itemWithTitle:IS_ENABLED(@"replaceCopyandPasteButtons_enabled") ? LOC(@"IMPORT_SETTINGS") : LOC(@"PASTE_SETTINGS")
- titleDescription:IS_ENABLED(@"replaceCopyandPasteButtons_enabled") ? LOC(@"IMPORT_SETTINGS_DESC") : LOC(@"PASTE_SETTINGS_DESC")
+ itemWithTitle:IS_ENABLED(kReplaceCopyandPasteButtons) ? LOC(@"IMPORT_SETTINGS") : LOC(@"PASTE_SETTINGS")
+ titleDescription:IS_ENABLED(kReplaceCopyandPasteButtons) ? LOC(@"IMPORT_SETTINGS_DESC") : LOC(@"PASTE_SETTINGS_DESC")
accessibilityIdentifier:nil
detailTextBlock:nil
selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
@@ -278,7 +270,7 @@ extern NSBundle *uYouPlusBundle();
];
[sectionItems addObject:pasteSettings];
- SWITCH_ITEM(LOC(@"REPLACE_COPY_AND_PASTE_BUTTONS"), LOC(@"REPLACE_COPY_AND_PASTE_BUTTONS_DESC"), @"replaceCopyandPasteButtons_enabled");
+ SWITCH(LOC(@"REPLACE_COPY_AND_PASTE_BUTTONS"), LOC(@"REPLACE_COPY_AND_PASTE_BUTTONS_DESC"), kReplaceCopyandPasteButtons);
YTSettingsSectionItem *exitYT = [%c(YTSettingsSectionItem)
itemWithTitle:LOC(@"QUIT_YOUTUBE")
@@ -358,7 +350,7 @@ extern NSBundle *uYouPlusBundle();
checkmarkItemWithTitle:LOC(@"DEFAULT_THEME")
titleDescription:LOC(@"DEFAULT_THEME_DESC")
selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
- [[NSUserDefaults standardUserDefaults] setInteger:0 forKey:@"appTheme"];
+ [[NSUserDefaults standardUserDefaults] setInteger:0 forKey:kAppTheme];
[settingsViewController reloadData];
SHOW_RELAUNCH_YT_SNACKBAR;
return YES;
@@ -368,7 +360,7 @@ extern NSBundle *uYouPlusBundle();
checkmarkItemWithTitle:LOC(@"OLD_DARK_THEME")
titleDescription:LOC(@"OLD_DARK_THEME_DESC")
selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
- [[NSUserDefaults standardUserDefaults] setInteger:1 forKey:@"appTheme"];
+ [[NSUserDefaults standardUserDefaults] setInteger:1 forKey:kAppTheme];
[settingsViewController reloadData];
SHOW_RELAUNCH_YT_SNACKBAR;
return YES;
@@ -378,7 +370,7 @@ extern NSBundle *uYouPlusBundle();
checkmarkItemWithTitle:LOC(@"OLED_DARK_THEME")
titleDescription:LOC(@"OLED_DARK_THEME_DESC")
selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
- [[NSUserDefaults standardUserDefaults] setInteger:2 forKey:@"appTheme"];
+ [[NSUserDefaults standardUserDefaults] setInteger:2 forKey:kAppTheme];
[settingsViewController reloadData];
SHOW_RELAUNCH_YT_SNACKBAR;
return YES;
@@ -388,7 +380,7 @@ extern NSBundle *uYouPlusBundle();
checkmarkItemWithTitle:LOC(@"CUSTOM_DARK_THEME")
titleDescription:LOC(@"In order to use Custom Themes, go to uYouEnhanced Essential Menu, you will need to press Custom Theme Color and than change the colors.")
selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
- [[NSUserDefaults standardUserDefaults] setInteger:3 forKey:@"appTheme"];
+ [[NSUserDefaults standardUserDefaults] setInteger:3 forKey:kAppTheme];
[settingsViewController reloadData];
SHOW_RELAUNCH_YT_SNACKBAR;
return YES;
@@ -398,9 +390,9 @@ extern NSBundle *uYouPlusBundle();
switchItemWithTitle:LOC(@"OLED_KEYBOARD")
titleDescription:LOC(@"OLED_KEYBOARD_DESC")
accessibilityIdentifier:nil
- switchOn:IS_ENABLED(@"oledKeyBoard_enabled")
+ switchOn:IS_ENABLED(kOLEDKeyboard)
switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) {
- [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"oledKeyBoard_enabled"];
+ [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:kOLEDKeyboard];
SHOW_RELAUNCH_YT_SNACKBAR;
return YES;
}
@@ -422,104 +414,51 @@ extern NSBundle *uYouPlusBundle();
# pragma mark - Video player options
SECTION_HEADER(LOC(@"VIDEO_PLAYER_OPTIONS"));
- SWITCH_ITEM3(
- LOC(@"ENABLE_PORTRAIT_FULLSCREEN"),
- LOC(@"ENABLE_PORTRAIT_FULLSCREEN_DESC"),
- @"portraitFullscreen_enabled",
- ({
- if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
- [[NSUserDefaults standardUserDefaults] setBool:enable forKey:@"portraitFullscreen_enabled"];
- SHOW_RELAUNCH_YT_SNACKBAR;
- return YES;
- } else {
- UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"Incompatibile" message:@"This Option is Incompatible on an iPad Device." preferredStyle:UIAlertControllerStyleAlert];
- UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:nil];
- [alert addAction:okAction];
- [settingsViewController presentViewController:alert animated:YES completion:nil];
- return NO;
- }
- });
- );
- SWITCH_ITEM3(
- LOC(@"FULLSCREEN_TO_THE_RIGHT"),
- LOC(@"FULLSCREEN_TO_THE_RIGHT_DESC"),
- @"fullscreenToTheRight_enabled",
- ({
- if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
- [[NSUserDefaults standardUserDefaults] setBool:enable forKey:@"fullscreenToTheRight_enabled"];
- SHOW_RELAUNCH_YT_SNACKBAR;
- return YES;
- } else {
- UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"Incompatibile" message:@"This Option is Incompatible on an iPad Device." preferredStyle:UIAlertControllerStyleAlert];
- UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:nil];
- [alert addAction:okAction];
- [settingsViewController presentViewController:alert animated:YES completion:nil];
- return NO;
- }
- });
- );
- SWITCH_ITEM2(LOC(@"SLIDE_TO_SEEK"), LOC(@"SLIDE_TO_SEEK_DESC"), @"slideToSeek_enabled");
- SWITCH_ITEM2(LOC(@"ENABLE_TAP_TO_SEEK"), LOC(@"ENABLE_TAP_TO_SEEK_DESC"), @"YTTapToSeek_enabled");
- SWITCH_ITEM(LOC(@"DISABLE_DOUBLE_TAP_TO_SEEK"), LOC(@"DISABLE_DOUBLE_TAP_TO_SEEK_DESC"), @"doubleTapToSeek_disabled");
- SWITCH_ITEM(LOC(@"SNAP_TO_CHAPTER"), LOC(@"SNAP_TO_CHAPTER_DESC"), @"snapToChapter_enabled");
- SWITCH_ITEM2(LOC(@"PINCH_TO_ZOOM"), LOC(@"PINCH_TO_ZOOM_DESC"), @"pinchToZoom_enabled");
- SWITCH_ITEM(LOC(@"YT_MINIPLAYER"), LOC(@"YT_MINIPLAYER_DESC"), @"ytMiniPlayer_enabled");
- SWITCH_ITEM2(LOC(@"STOCK_VOLUME_HUD"), LOC(@"STOCK_VOLUME_HUD_DESC"), @"stockVolumeHUD_enabled");
- SWITCH_ITEM2(LOC(@"DISABLE_PULL_TO_FULLSCREEN_GESTURE"), LOC(@"ENABLE_PORTRAIT_FULLSCREEN_DESC"), @"disablePullToFull_enabled");
- SWITCH_ITEM(LOC(@"DISABLE_DOUBLE_TAP_TO_SKIP_CHAPTER"), LOC(@"DISABLE_DOUBLE_TAP_TO_SKIP_CHAPTER_DESC"), @"disableChapterSkip_enabled");
- SWITCH_ITEM(LOC(@"ALWAYS_USE_REMAINING_TIME"), LOC(@"ALWAYS_USE_REMAINING_TIME_DESC"), @"alwaysShowRemainingTime_enabled");
- SWITCH_ITEM(LOC(@"DISABLE_TOGGLE_TIME_REMAINING"), LOC(@"DISABLE_TOGGLE_TIME_REMAINING_DESC"), @"disableRemainingTime_enabled");
+ SWITCH2(LOC(@"ENABLE_PORTRAIT_FULLSCREEN"), LOC(@"ENABLE_PORTRAIT_FULLSCREEN_DESC"), kPortraitFullscreen);
+ SWITCH2(LOC(@"FULLSCREEN_TO_THE_RIGHT"), LOC(@"FULLSCREEN_TO_THE_RIGHT_DESC"), kFullscreenToTheRight);
+ SWITCH2(LOC(@"SLIDE_TO_SEEK"), LOC(@"SLIDE_TO_SEEK_DESC"), kSlideToSeek);
+ SWITCH2(LOC(@"ENABLE_TAP_TO_SEEK"), LOC(@"ENABLE_TAP_TO_SEEK_DESC"), kYTTapToSeek);
+ SWITCH(LOC(@"DISABLE_DOUBLE_TAP_TO_SEEK"), LOC(@"DISABLE_DOUBLE_TAP_TO_SEEK_DESC"), kDoubleTapToSeek);
+ SWITCH(LOC(@"SNAP_TO_CHAPTER"), LOC(@"SNAP_TO_CHAPTER_DESC"), kSnapToChapter);
+ SWITCH2(LOC(@"PINCH_TO_ZOOM"), LOC(@"PINCH_TO_ZOOM_DESC"), kPinchToZoom);
+ SWITCH(LOC(@"YT_MINIPLAYER"), LOC(@"YT_MINIPLAYER_DESC"), kYTMiniPlayer);
+ SWITCH2(LOC(@"STOCK_VOLUME_HUD"), LOC(@"STOCK_VOLUME_HUD_DESC"), kStockVolumeHUD);
+ SWITCH(LOC(@"REPLACE_YT_DOWNLOAD_WITH_UYOU"), LOC(@"REPLACE_YT_DOWNLOAD_WITH_UYOU_DESC"), kReplaceYTDownloadWithuYou);
+ SWITCH2(LOC(@"DISABLE_PULL_TO_FULLSCREEN_GESTURE"), LOC(@"ENABLE_PORTRAIT_FULLSCREEN_DESC"), kDisablePullToFull);
+ SWITCH(LOC(@"DISABLE_DOUBLE_TAP_TO_SKIP_CHAPTER"), LOC(@"DISABLE_DOUBLE_TAP_TO_SKIP_CHAPTER_DESC"), kDisableChapterSkip);
+ SWITCH(LOC(@"ALWAYS_USE_REMAINING_TIME"), LOC(@"ALWAYS_USE_REMAINING_TIME_DESC"), kAlwaysShowRemainingTime);
+ SWITCH(LOC(@"DISABLE_TOGGLE_TIME_REMAINING"), LOC(@"DISABLE_TOGGLE_TIME_REMAINING_DESC"), kDisableRemainingTime);
# pragma mark - Video controls overlay options
SECTION_HEADER(LOC(@"VIDEO_CONTROLS_OVERLAY_OPTIONS"));
- SWITCH_ITEM(LOC(@"ENABLE_SHARE_BUTTON"), LOC(@"ENABLE_SHARE_BUTTON_DESC"), @"enableShareButton_enabled");
- SWITCH_ITEM(LOC(@"ENABLE_SAVE_TO_PLAYLIST_BUTTON"), LOC(@"ENABLE_SAVE_TO_PLAYLIST_BUTTON_DESC"), @"enableSaveToButton_enabled");
- SWITCH_ITEM(LOC(@"HIDE_YTMUSIC_BUTTON"), LOC(@"HIDE_YTMUSIC_BUTTON_DESC"), @"hideYTMusicButton_enabled");
- SWITCH_ITEM(LOC(@"HIDE_AUTOPLAY_SWITCH"), LOC(@"HIDE_AUTOPLAY_SWITCH_DESC"), @"hideAutoplaySwitch_enabled");
- SWITCH_ITEM(LOC(@"HIDE_SUBTITLES_BUTTON"), LOC(@"HIDE_SUBTITLES_BUTTON_DESC"), @"hideCC_enabled");
- SWITCH_ITEM(LOC(@"HIDE_VIDEO_TITLE_IN_FULLSCREEN"), LOC(@"HIDE_VIDEO_TITLE_IN_FULLSCREEN_DESC"), @"hideVideoTitle_enabled");
- SWITCH_ITEM(LOC(@"HIDE_COLLAPSE_BUTTON"), LOC(@"HIDE_COLLAPSE_BUTTON_DESC"), @"disableCollapseButton_enabled");
- SWITCH_ITEM(LOC(@"HIDE_FULLSCREEN_BUTTON"), LOC(@"HIDE_FULLSCREEN_BUTTON_DESC"), @"disableFullscreenButton_enabled");
- SWITCH_ITEM(LOC(@"HIDE_HUD_MESSAGES"), LOC(@"HIDE_HUD_MESSAGES_DESC"), @"hideHUD_enabled");
- SWITCH_ITEM(LOC(@"HIDE_PAID_PROMOTION_CARDS"), LOC(@"HIDE_PAID_PROMOTION_CARDS_DESC"), @"hidePaidPromotionCard_enabled");
- SWITCH_ITEM2(LOC(@"HIDE_CHANNEL_WATERMARK"), LOC(@"HIDE_CHANNEL_WATERMARK_DESC"), @"hideChannelWatermark_enabled");
- SWITCH_ITEM2(LOC(@"HIDE_SHADOW_OVERLAY_BUTTONS"), LOC(@"HIDE_SHADOW_OVERLAY_BUTTONS_DESC"), @"hideVideoPlayerShadowOverlayButtons_enabled");
- SWITCH_ITEM2(LOC(@"HIDE_PREVIOUS_AND_NEXT_BUTTON"), LOC(@"HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC"), @"hidePreviousAndNextButton_enabled");
- SWITCH_ITEM2(LOC(@"RED_PROGRESS_BAR"), LOC(@"RED_PROGRESS_BAR_DESC"), @"redProgressBar_enabled");
- SWITCH_ITEM(LOC(@"HIDE_HOVER_CARD"), LOC(@"HIDE_HOVER_CARD_DESC"), @"hideHoverCards_enabled");
- SWITCH_ITEM2(LOC(@"HIDE_RIGHT_PANEL"), LOC(@"HIDE_RIGHT_PANEL_DESC"), @"hideRightPanel_enabled");
- SWITCH_ITEM3(
- LOC(@"HIDE_FULLSCREEN_ACTION_BUTTONS"),
- LOC(@"HIDE_FULLSCREEN_ACTION_BUTTONS_DESC"),
- @"hideFullscreenActions_enabled",
- ({
- if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
- // Show alert if the option is not compatible with iPad
- UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"iPad Compatibility Issue" message:@"This option is only compatible with iPhone devices." preferredStyle:UIAlertControllerStyleAlert];
- UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:nil];
- [alert addAction:okAction];
- [settingsViewController presentViewController:alert animated:YES completion:nil];
- return NO;
- } else {
- // Normal Behavior (iPhone)
- [[NSUserDefaults standardUserDefaults] setBool:enable forKey:@"hideFullscreenActions_enabled"];
- [settingsViewController reloadData];
- SHOW_RELAUNCH_YT_SNACKBAR;
- return YES;
- }
- });
- );
- SWITCH_ITEM2(LOC(@"HIDE_SUGGESTED_VIDEO"), LOC(@"HIDE_SUGGESTED_VIDEO_DESC"), @"noSuggestedVideo_enabled");
- SWITCH_ITEM2(LOC(@"HIDE_HEATWAVES_BAR"), LOC(@"HIDE_HEATWAVES_BAR_DESC"), @"hideHeatwaves_enabled");
- SWITCH_ITEM2(LOC(@"HIDE_DOUBLE_TAP_TO_SEEK_OVERLAY"), LOC(@"HIDE_DOUBLE_TAP_TO_SEEK_OVERLAY_DESC"), @"hideDoubleTapToSeekOverlay_enabled");
- SWITCH_ITEM2(LOC(@"HIDE_DARK_OVERLAY_BACKGROUND"), LOC(@"HIDE_DARK_OVERLAY_BACKGROUND_DESC"), @"hideOverlayDarkBackground_enabled");
- SWITCH_ITEM2(LOC(@"HIDE_AMBIENT_MODE_IN_FULLSCREEN"), LOC(@"HIDE_AMBIENT_MODE_IN_FULLSCREEN_DESC"), @"disableAmbientMode_enabled");
- SWITCH_ITEM2(LOC(@"HIDE_SUGGESTED_VIDEOS_IN_FULLSCREEN"), LOC(@"HIDE_SUGGESTED_VIDEOS_IN_FULLSCREEN_DESC"), @"noVideosInFullscreen_enabled");
- SWITCH_ITEM3(
+ SWITCH(LOC(@"ENABLE_SHARE_BUTTON"), LOC(@"ENABLE_SHARE_BUTTON_DESC"), kEnableShareButton);
+ SWITCH(LOC(@"ENABLE_SAVE_TO_PLAYLIST_BUTTON"), LOC(@"ENABLE_SAVE_TO_PLAYLIST_BUTTON_DESC"), kEnableSaveToButton);
+ SWITCH(LOC(@"HIDE_YTMUSIC_BUTTON"), LOC(@"HIDE_YTMUSIC_BUTTON_DESC"), kHideYTMusicButton);
+ SWITCH(LOC(@"HIDE_AUTOPLAY_SWITCH"), LOC(@"HIDE_AUTOPLAY_SWITCH_DESC"), kHideAutoplaySwitch);
+ SWITCH(LOC(@"HIDE_SUBTITLES_BUTTON"), LOC(@"HIDE_SUBTITLES_BUTTON_DESC"), kHideCC);
+ SWITCH(LOC(@"HIDE_VIDEO_TITLE_IN_FULLSCREEN"), LOC(@"HIDE_VIDEO_TITLE_IN_FULLSCREEN_DESC"), kHideVideoTitle);
+ SWITCH(LOC(@"HIDE_COLLAPSE_BUTTON"), LOC(@"HIDE_COLLAPSE_BUTTON_DESC"), kDisableCollapseButton);
+ SWITCH(LOC(@"HIDE_FULLSCREEN_BUTTON"), LOC(@"HIDE_FULLSCREEN_BUTTON_DESC"), kDisableFullscreenButton);
+ SWITCH(LOC(@"HIDE_HUD_MESSAGES"), LOC(@"HIDE_HUD_MESSAGES_DESC"), kHideHUD);
+ SWITCH(LOC(@"HIDE_PAID_PROMOTION_CARDS"), LOC(@"HIDE_PAID_PROMOTION_CARDS_DESC"), kHidePaidPromotionCard);
+ SWITCH2(LOC(@"HIDE_CHANNEL_WATERMARK"), LOC(@"HIDE_CHANNEL_WATERMARK_DESC"), kHideChannelWatermark);
+ SWITCH2(LOC(@"HIDE_SHADOW_OVERLAY_BUTTONS"), LOC(@"HIDE_SHADOW_OVERLAY_BUTTONS_DESC"), kHideVideoPlayerShadowOverlayButtons);
+ SWITCH2(LOC(@"HIDE_PREVIOUS_AND_NEXT_BUTTON"), LOC(@"HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC"), kHidePreviousAndNextButton);
+ SWITCH2(LOC(@"RED_PROGRESS_BAR"), LOC(@"RED_PROGRESS_BAR_DESC"), kRedProgressBar);
+ SWITCH(LOC(@"HIDE_HOVER_CARD"), LOC(@"HIDE_HOVER_CARD_DESC"), kHideHoverCards);
+ SWITCH2(LOC(@"HIDE_RIGHT_PANEL"), LOC(@"HIDE_RIGHT_PANEL_DESC"), kHideRightPanel);
+ SWITCH2(LOC(@"HIDE_FULLSCREEN_ACTION_BUTTONS"), LOC(@"HIDE_FULLSCREEN_ACTION_BUTTONS_DESC"), kHideFullscreenActions);
+ SWITCH2(LOC(@"HIDE_SUGGESTED_VIDEO"), LOC(@"HIDE_SUGGESTED_VIDEO_DESC"), kHideSuggestedVideo);
+ SWITCH2(LOC(@"HIDE_HEATWAVES_BAR"), LOC(@"HIDE_HEATWAVES_BAR_DESC"), kHideHeatwaves);
+ SWITCH2(LOC(@"HIDE_DOUBLE_TAP_TO_SEEK_OVERLAY"), LOC(@"HIDE_DOUBLE_TAP_TO_SEEK_OVERLAY_DESC"), kHideDoubleTapToSeekOverlay);
+ SWITCH2(LOC(@"HIDE_DARK_OVERLAY_BACKGROUND"), LOC(@"HIDE_DARK_OVERLAY_BACKGROUND_DESC"), kHideOverlayDarkBackground);
+ SWITCH2(LOC(@"HIDE_AMBIENT_MODE_IN_FULLSCREEN"), LOC(@"HIDE_AMBIENT_MODE_IN_FULLSCREEN_DESC"), kDisableAmbientMode);
+ SWITCH2(LOC(@"HIDE_SUGGESTED_VIDEOS_IN_FULLSCREEN"), LOC(@"HIDE_SUGGESTED_VIDEOS_IN_FULLSCREEN_DESC"), kHideVideosInFullscreen);
+ SWITCH3(
LOC(@"HIDE_ALL_VIDEOS_UNDER_PLAYER"),
LOC(@"HIDE_ALL_VIDEOS_UNDER_PLAYER_DESC"),
- @"noRelatedWatchNexts_enabled",
+ kHideRelatedWatchNexts,
({
if (enable) {
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad && UIDeviceOrientationIsLandscape([UIDevice currentDevice].orientation)) {
@@ -528,12 +467,12 @@ extern NSBundle *uYouPlusBundle();
[alert addAction:okAction];
[settingsViewController presentViewController:alert animated:YES completion:nil];
}
- [[NSUserDefaults standardUserDefaults] setBool:enable forKey:@"noRelatedWatchNexts_enabled"];
+ [[NSUserDefaults standardUserDefaults] setBool:enable forKey:kHideRelatedWatchNexts];
[settingsViewController reloadData];
SHOW_RELAUNCH_YT_SNACKBAR;
return YES;
}
- [[NSUserDefaults standardUserDefaults] setBool:enable forKey:@"noRelatedWatchNexts_enabled"];
+ [[NSUserDefaults standardUserDefaults] setBool:enable forKey:kHideRelatedWatchNexts];
[settingsViewController reloadData];
SHOW_RELAUNCH_YT_SNACKBAR;
return YES;
@@ -543,54 +482,54 @@ extern NSBundle *uYouPlusBundle();
# pragma mark - Shorts controls overlay options
SECTION_HEADER(LOC(@"SHORTS_CONTROLS_OVERLAY_OPTIONS"));
- SWITCH_ITEM(LOC(@"HIDE_SUPER_THANKS"), LOC(@"HIDE_SUPER_THANKS_DESC"), @"hideBuySuperThanks_enabled");
- SWITCH_ITEM(LOC(@"HIDE_SUBCRIPTIONS"), LOC(@"HIDE_SUBCRIPTIONS_DESC"), @"hideSubcriptions_enabled");
- // SWITCH_ITEM(LOC(@"DISABLE_RESUME_TO_SHORTS"), LOC(@"DISABLE_RESUME_TO_SHORTS_DESC"), @"disableResumeToShorts_enabled");
- SWITCH_ITEM2(LOC(@"SHORTS_QUALITY_PICKER"), LOC(@"SHORTS_QUALITY_PICKER_DESC"), @"shortsQualityPicker_enabled");
+ SWITCH(LOC(@"HIDE_SUPER_THANKS"), LOC(@"HIDE_SUPER_THANKS_DESC"), kHideBuySuperThanks);
+ SWITCH(LOC(@"HIDE_SUBCRIPTIONS"), LOC(@"HIDE_SUBCRIPTIONS_DESC"), kHideSubscriptions);
+ // SWITCH(LOC(@"DISABLE_RESUME_TO_SHORTS"), LOC(@"DISABLE_RESUME_TO_SHORTS_DESC"), kDisableResumeToShorts);
+ SWITCH2(LOC(@"SHORTS_QUALITY_PICKER"), LOC(@"SHORTS_QUALITY_PICKER_DESC"), kShortsQualityPicker);
# pragma mark - Video player button options
SECTION_HEADER(LOC(@"VIDEO_PLAYER_BUTTON_OPTIONS"));
// (the options "Red Subscribe Button" and "Hide Button Containers under player" are currently not working, would most likely result in effecting the whole entire app.)
//
-// SWITCH_ITEM(LOC(@"RED_SUBSCRIBE_BUTTON"), LOC(@"RED_SUBSCRIBE_BUTTON_DESC"), @"redSubscribeButton_enabled");
-// SWITCH_ITEM2(LOC(@"HIDE_BUTTON_CONTAINERS_UNDER_PLAYER"), LOC(@"HIDE_BUTTON_CONTAINERS_UNDER_PLAYER_DESC"), @"hideButtonContainers_enabled");
- SWITCH_ITEM(LOC(@"HIDE_CONNECT_BUTTON"), LOC(@"HIDE_CONNECT_BUTTON_DESC"), @"hideConnectButton_enabled");
- SWITCH_ITEM(LOC(@"HIDE_SHARE_BUTTON"), LOC(@"HIDE_SHARE_BUTTON_DESC"), @"hideShareButton_enabled");
- SWITCH_ITEM(LOC(@"HIDE_REMIX_BUTTON"), LOC(@"HIDE_REMIX_BUTTON_DESC"), @"hideRemixButton_enabled");
- SWITCH_ITEM(LOC(@"HIDE_THANKS_BUTTON"), LOC(@"HIDE_THANKS_BUTTON_DESC"), @"hideThanksButton_enabled");
- SWITCH_ITEM(LOC(@"HIDE_DOWNLOAD_BUTTON"), LOC(@"HIDE_DOWNLOAD_BUTTON_DESC"), @"hideDownloadButton_enabled");
- SWITCH_ITEM(LOC(@"HIDE_CLIP_BUTTON"), LOC(@"HIDE_CLIP_BUTTON_DESC"), @"hideClipButton_enabled");
- SWITCH_ITEM(LOC(@"HIDE_SAVE_BUTTON"), LOC(@"HIDE_SAVE_BUTTON_DESC"), @"hideSaveToPlaylistButton_enabled");
- SWITCH_ITEM(LOC(@"HIDE_REPORT_BUTTON"), LOC(@"HIDE_REPORT_BUTTON_DESC"), @"hideReportButton_enabled");
- SWITCH_ITEM(LOC(@"HIDE_COMMENT_PREVIEWS_UNDER_PLAYER"), LOC(@"HIDE_COMMENT_PREVIEWS_UNDER_PLAYER_DESC"), @"hidePreviewCommentSection_enabled");
- SWITCH_ITEM(LOC(@"HIDE_COMMENT_SECTION_BUTTON"), LOC(@"HIDE_COMMENT_SECTION_BUTTON_DESC"), @"hideCommentSection_enabled");
+// SWITCH(LOC(@"RED_SUBSCRIBE_BUTTON"), LOC(@"RED_SUBSCRIBE_BUTTON_DESC"), kRedSubscribeButton);
+// SWITCH2(LOC(@"HIDE_BUTTON_CONTAINERS_UNDER_PLAYER"), LOC(@"HIDE_BUTTON_CONTAINERS_UNDER_PLAYER_DESC"), kHideButtonContainers);
+ SWITCH(LOC(@"HIDE_CONNECT_BUTTON"), LOC(@"HIDE_CONNECT_BUTTON_DESC"), kHideConnectButton);
+ SWITCH(LOC(@"HIDE_SHARE_BUTTON"), LOC(@"HIDE_SHARE_BUTTON_DESC"), kHideShareButton);
+ SWITCH(LOC(@"HIDE_REMIX_BUTTON"), LOC(@"HIDE_REMIX_BUTTON_DESC"), kHideRemixButton);
+ SWITCH(LOC(@"HIDE_THANKS_BUTTON"), LOC(@"HIDE_THANKS_BUTTON_DESC"), kHideThanksButton);
+ SWITCH(LOC(@"HIDE_DOWNLOAD_BUTTON"), LOC(@"HIDE_DOWNLOAD_BUTTON_DESC"), kHideDownloadButton);
+ SWITCH(LOC(@"HIDE_CLIP_BUTTON"), LOC(@"HIDE_CLIP_BUTTON_DESC"), kHideClipButton);
+ SWITCH(LOC(@"HIDE_SAVE_BUTTON"), LOC(@"HIDE_SAVE_BUTTON_DESC"), kHideSaveToPlaylistButton);
+ SWITCH(LOC(@"HIDE_REPORT_BUTTON"), LOC(@"HIDE_REPORT_BUTTON_DESC"), kHideReportButton);
+ SWITCH(LOC(@"HIDE_COMMENT_PREVIEWS_UNDER_PLAYER"), LOC(@"HIDE_COMMENT_PREVIEWS_UNDER_PLAYER_DESC"), kHidePreviewCommentSection);
+ SWITCH(LOC(@"HIDE_COMMENT_SECTION_BUTTON"), LOC(@"HIDE_COMMENT_SECTION_BUTTON_DESC"), kHideCommentSection);
# pragma mark - App settings overlay options
SECTION_HEADER(LOC(@"App Settings Overlay Options"));
- SWITCH_ITEM2(LOC(@"HIDE_ACCOUNT_SECTION"), LOC(@"RESTART_REQUIRED"), @"disableAccountSection_enabled");
-// SWITCH_ITEM2(LOC(@"Hide `DontEatMyContent` Section"), LOC(@"RESTART_REQUIRED"), @"disableDontEatMyContentSection_enabled");
-// SWITCH_ITEM2(LOC(@"Hide `YouTube Return Dislike` Section"), LOC(@"RESTART_REQUIRED"), @"disableReturnYouTubeDislikeSection_enabled");
-// SWITCH_ITEM2(LOC(@"Hide `YouPiP` Section"), LOC(@"RESTART_REQUIRED"), @"disableYouPiPSection_enabled");
- SWITCH_ITEM2(LOC(@"HIDE_AUTOPLAY_SECTION"), LOC(@"RESTART_REQUIRED"), @"disableAutoplaySection_enabled");
- SWITCH_ITEM2(LOC(@"HIDE_TRY_NEW_FEATURES_SECTION"), LOC(@"RESTART_REQUIRED"), @"disableTryNewFeaturesSection_enabled");
- SWITCH_ITEM2(LOC(@"HIDE_VIDEO_QUALITY_PREFERENCES_SECTION"), LOC(@"RESTART_REQUIRED"), @"disableVideoQualityPreferencesSection_enabled");
- SWITCH_ITEM2(LOC(@"HIDE_NOTIFICATIONS_SECTION"), LOC(@"RESTART_REQUIRED"), @"disableNotificationsSection_enabled");
- SWITCH_ITEM2(LOC(@"HIDE_MANAGE_ALL_HISTORY_SECTION"), LOC(@"RESTART_REQUIRED"), @"disableManageAllHistorySection_enabled");
- SWITCH_ITEM2(LOC(@"HIDE_YOUR_DATA_IN_YOUTUBE_SECTION"), LOC(@"RESTART_REQUIRED"), @"disableYourDataInYouTubeSection_enabled");
- SWITCH_ITEM2(LOC(@"HIDE_PRIVACY_SECTION"), LOC(@"RESTART_REQUIRED"), @"disablePrivacySection_enabled");
- SWITCH_ITEM2(LOC(@"HIDE_LIVE_CHAT_SECTION"), LOC(@"RESTART_REQUIRED"), @"disableLiveChatSection_enabled");
- SWITCH_ITEM2(LOC(@"HIDE_GET_YOUTUBE_PREMIUM_SECTION"), LOC(@"RESTART_REQUIRED"), @"hidePremiumPromos_enabled");
+ SWITCH2(LOC(@"HIDE_ACCOUNT_SECTION"), LOC(@"RESTART_REQUIRED"), kDisableAccountSection);
+// SWITCH2(LOC(@"Hide `DontEatMyContent` Section"), LOC(@"RESTART_REQUIRED"), kDisableDontEatMyContentSection);
+// SWITCH2(LOC(@"Hide `YouTube Return Dislike` Section"), LOC(@"RESTART_REQUIRED"), kDisableReturnYouTubeDislikeSection);
+// SWITCH2(LOC(@"Hide `YouPiP` Section"), LOC(@"RESTART_REQUIRED"), kDisableYouPiPSection);
+ SWITCH2(LOC(@"HIDE_AUTOPLAY_SECTION"), LOC(@"RESTART_REQUIRED"), kDisableAutoplaySection);
+ SWITCH2(LOC(@"HIDE_TRY_NEW_FEATURES_SECTION"), LOC(@"RESTART_REQUIRED"), kDisableTryNewFeaturesSection);
+ SWITCH2(LOC(@"HIDE_VIDEO_QUALITY_PREFERENCES_SECTION"), LOC(@"RESTART_REQUIRED"), kDisableVideoQualityPreferencesSection);
+ SWITCH2(LOC(@"HIDE_NOTIFICATIONS_SECTION"), LOC(@"RESTART_REQUIRED"), kDisableNotificationsSection);
+ SWITCH2(LOC(@"HIDE_MANAGE_ALL_HISTORY_SECTION"), LOC(@"RESTART_REQUIRED"), kDisableManageAllHistorySection);
+ SWITCH2(LOC(@"HIDE_YOUR_DATA_IN_YOUTUBE_SECTION"), LOC(@"RESTART_REQUIRED"), kDisableYourDataInYouTubeSection);
+ SWITCH2(LOC(@"HIDE_PRIVACY_SECTION"), LOC(@"RESTART_REQUIRED"), kDisablePrivacySection);
+ SWITCH2(LOC(@"HIDE_LIVE_CHAT_SECTION"), LOC(@"RESTART_REQUIRED"), kDisableLiveChatSection);
+ SWITCH2(LOC(@"HIDE_GET_YOUTUBE_PREMIUM_SECTION"), LOC(@"RESTART_REQUIRED"), kHidePremiumPromos);
# pragma mark - UI interface options
SECTION_HEADER(LOC(@"UI_INTERFACE_OPTIONS"));
- SWITCH_ITEM2(LOC(@"HIDE_HOME_TAB"), LOC(@""), @"hideHomeTab_enabled");
- SWITCH_ITEM3(
+ SWITCH2(LOC(@"HIDE_HOME_TAB"), LOC(@"RESTART_REQUIRED"), kHideHomeTab);
+ SWITCH3(
LOC(@"LOW_CONTRAST_MODE"),
LOC(@"LOW_CONTRAST_MODE_DESC"),
- @"lowContrastMode_enabled",
+ kLowContrastMode,
({
if (enable) {
Class YTVersionUtilsClass = %c(YTVersionUtils);
@@ -617,7 +556,7 @@ extern NSBundle *uYouPlusBundle();
return NO;
}
}
- [[NSUserDefaults standardUserDefaults] setBool:enable forKey:@"lowContrastMode_enabled"];
+ [[NSUserDefaults standardUserDefaults] setBool:enable forKey:kLowContrastMode];
[settingsViewController reloadData];
SHOW_RELAUNCH_YT_SNACKBAR;
return YES;
@@ -667,15 +606,15 @@ extern NSBundle *uYouPlusBundle();
}
];
[sectionItems addObject:lowContrastModeButton];
- SWITCH_ITEM2(LOC(@"CLASSIC_VIDEO_PLAYER"), LOC(@"CLASSIC_VIDEO_PLAYER_DESC"), @"classicVideoPlayer_enabled");
- SWITCH_ITEM2(LOC(@"FIX_LOWCONTRASTMODE"), LOC(@"FIX_LOWCONTRASTMODE_DESC"), @"fixLowContrastMode_enabled");
- SWITCH_ITEM2(LOC(@"DISABLE_MODERN_BUTTONS"), LOC(@"DISABLE_MODERN_BUTTONS_DESC"), @"disableModernButtons_enabled");
- SWITCH_ITEM2(LOC(@"DISABLE_ROUNDED_CORNERS_ON_HINTS"), LOC(@"DISABLE_ROUNDED_CORNERS_ON_HINTS_DESC"), @"disableRoundedHints_enabled");
- SWITCH_ITEM2(LOC(@"DISABLE_MODERN_FLAGS"), LOC(@"DISABLE_MODERN_FLAGS_DESC"), @"disableModernFlags_enabled");
- SWITCH_ITEM3(
+ SWITCH2(LOC(@"CLASSIC_VIDEO_PLAYER"), LOC(@"CLASSIC_VIDEO_PLAYER_DESC"), kClassicVideoPlayer);
+ SWITCH2(LOC(@"FIX_LOWCONTRASTMODE"), LOC(@"FIX_LOWCONTRASTMODE_DESC"), kFixLowContrastMode);
+ SWITCH2(LOC(@"DISABLE_MODERN_BUTTONS"), LOC(@"DISABLE_MODERN_BUTTONS_DESC"), kDisableModernButtons);
+ SWITCH2(LOC(@"DISABLE_ROUNDED_CORNERS_ON_HINTS"), LOC(@"DISABLE_ROUNDED_CORNERS_ON_HINTS_DESC"), kDisableRoundedHints);
+ SWITCH2(LOC(@"DISABLE_MODERN_FLAGS"), LOC(@"DISABLE_MODERN_FLAGS_DESC"), kDisableModernFlags);
+ SWITCH3(
LOC(@"YTNOMODERNUI"),
LOC(@"YTNOMODERNUI_DESC"),
- @"ytNoModernUI_enabled",
+ kYTNoModernUI,
({
if (enable) {
UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"Warning" message:@"This will force-enable other settings on restart. To disable them, you must turn this setting off." preferredStyle:UIAlertControllerStyleAlert];
@@ -683,13 +622,13 @@ extern NSBundle *uYouPlusBundle();
[alert addAction:okAction];
[settingsViewController presentViewController:alert animated:YES completion:nil];
}
- [[NSUserDefaults standardUserDefaults] setBool:enable forKey:@"ytNoModernUI_enabled"];
+ [[NSUserDefaults standardUserDefaults] setBool:enable forKey:kYTNoModernUI];
[settingsViewController reloadData];
SHOW_RELAUNCH_YT_SNACKBAR;
return YES;
});
);
- SWITCH_ITEM2(LOC(@"ENABLE_APP_VERSION_SPOOFER"), LOC(@"ENABLE_APP_VERSION_SPOOFER_DESC"), @"enableVersionSpoofer_enabled");
+ SWITCH2(LOC(@"ENABLE_APP_VERSION_SPOOFER"), LOC(@"ENABLE_APP_VERSION_SPOOFER_DESC"), kEnableVersionSpoofer);
YTSettingsSectionItem *versionSpoofer = [%c(YTSettingsSectionItem)
itemWithTitle:LOC(@"VERSION_SPOOFER_SELECTOR")
@@ -697,665 +636,826 @@ extern NSBundle *uYouPlusBundle();
detailTextBlock:^NSString *() {
switch (appVersionSpoofer()) {
case 1:
- return @"v19.20.2";
+ return @"v19.39.1";
case 2:
- return @"v19.19.7";
+ return @"v19.38.2";
case 3:
- return @"v19.19.5";
+ return @"v19.37.2";
case 4:
- return @"v19.18.2";
+ return @"v19.36.1";
case 5:
- return @"v19.17.2";
+ return @"v19.35.3";
case 6:
- return @"v19.16.3";
+ return @"v19.34.2";
case 7:
- return @"v19.15.1";
+ return @"v19.33.2";
case 8:
- return @"v19.14.3";
+ return @"v19.32.8";
case 9:
- return @"v19.14.2";
+ return @"v19.32.6";
case 10:
- return @"v19.13.1";
+ return @"v19.31.4";
case 11:
- return @"v19.12.3";
+ return @"v19.30.2";
case 12:
- return @"v19.10.7";
+ return @"v19.29.1";
case 13:
- return @"v19.10.6";
+ return @"v19.28.1";
case 14:
- return @"v19.10.5";
+ return @"v19.26.5";
case 15:
- return @"v19.09.4";
+ return @"v19.25.4";
case 16:
- return @"v19.09.3";
+ return @"v19.25.3";
case 17:
- return @"v19.08.2";
+ return @"v19.24.3";
case 18:
- return @"v19.07.5";
+ return @"v19.24.2";
case 19:
- return @"v19.07.4";
+ return @"v19.23.3";
case 20:
- return @"v19.06.2";
+ return @"v19.22.6";
case 21:
- return @"v19.05.5";
+ return @"v19.22.3";
case 22:
- return @"v19.05.3";
+ return @"v19.21.3";
case 23:
- return @"v19.04.3";
+ return @"v19.21.2";
case 24:
- return @"v19.03.2";
+ return @"v19.20.2";
case 25:
- return @"v19.02.1";
+ return @"v19.19.7";
case 26:
- return @"v19.01.1";
+ return @"v19.19.5";
case 27:
- return @"v18.49.3";
+ return @"v19.18.2";
case 28:
- return @"v18.48.3";
+ return @"v19.17.2";
case 29:
- return @"v18.46.3";
+ return @"v19.16.3";
case 30:
- return @"v18.45.2";
+ return @"v19.15.1";
case 31:
- return @"v18.44.3";
+ return @"v19.14.3";
case 32:
- return @"v18.43.4";
+ return @"v19.14.2";
case 33:
- return @"v18.41.5";
+ return @"v19.13.1";
case 34:
- return @"v18.41.3";
+ return @"v19.12.3";
case 35:
- return @"v18.41.2";
+ return @"v19.10.7";
case 36:
- return @"v18.40.1";
+ return @"v19.10.6";
case 37:
- return @"v18.39.1";
+ return @"v19.10.5";
case 38:
- return @"v18.38.2";
+ return @"v19.09.4";
case 39:
- return @"v18.35.4";
+ return @"v19.09.3";
case 40:
- return @"v18.34.5";
+ return @"v19.08.2";
case 41:
- return @"v18.33.3";
+ return @"v19.07.5";
case 42:
- return @"v18.33.2";
+ return @"v19.07.4";
case 43:
- return @"v18.32.2";
+ return @"v19.06.2";
case 44:
- return @"v18.31.3";
+ return @"v19.05.5";
case 45:
- return @"v18.30.7";
+ return @"v19.05.3";
case 46:
- return @"v18.30.6";
+ return @"v19.04.3";
case 47:
- return @"v18.29.1";
+ return @"v19.03.2";
case 48:
- return @"v18.28.3";
+ return @"v19.02.1";
case 49:
- return @"v18.27.3";
+ return @"v19.01.1";
case 50:
- return @"v18.25.1";
+ return @"v18.49.3";
case 51:
- return @"v18.23.3";
+ return @"v18.48.3";
case 52:
- return @"v18.22.9";
+ return @"v18.46.3";
case 53:
- return @"v18.21.3";
+ return @"v18.45.2";
case 54:
- return @"v18.20.3";
+ return @"v18.44.3";
case 55:
- return @"v18.19.1";
+ return @"v18.43.4";
case 56:
- return @"v18.18.2";
+ return @"v18.41.5";
case 57:
- return @"v18.17.2";
+ return @"v18.41.3";
case 58:
- return @"v18.16.2";
+ return @"v18.41.2";
case 59:
- return @"v18.15.1";
+ return @"v18.40.1";
case 60:
- return @"v18.14.1";
+ return @"v18.39.1";
case 61:
- return @"v18.13.4";
+ return @"v18.38.2";
case 62:
- return @"v18.12.2";
+ return @"v18.35.4";
case 63:
- return @"v18.11.2";
+ return @"v18.34.5";
case 64:
- return @"v18.10.1";
+ return @"v18.33.3";
case 65:
- return @"v18.09.4";
+ return @"v18.33.2";
case 66:
- return @"v18.08.1";
+ return @"v18.32.2";
case 67:
- return @"v18.07.5";
+ return @"v18.31.3";
case 68:
- return @"v18.05.2";
+ return @"v18.30.7";
case 69:
- return @"v18.04.3";
+ return @"v18.30.6";
case 70:
- return @"v18.03.3";
+ return @"v18.29.1";
case 71:
- return @"v18.02.03";
+ return @"v18.28.3";
case 72:
- return @"v18.01.6";
+ return @"v18.27.3";
case 73:
- return @"v18.01.4";
+ return @"v18.25.1";
case 74:
- return @"v18.01.2";
+ return @"v18.23.3";
case 75:
- return @"v17.49.6";
+ return @"v18.22.9";
case 76:
- return @"v17.49.4";
+ return @"v18.21.3";
case 77:
- return @"v17.46.4";
+ return @"v18.20.3";
case 78:
- return @"v17.45.1";
+ return @"v18.19.1";
case 79:
- return @"v17.44.4";
+ return @"v18.18.2";
case 80:
- return @"v17.43.1";
+ return @"v18.17.2";
case 81:
- return @"v17.42.7";
+ return @"v18.16.2";
case 82:
- return @"v17.42.6";
+ return @"v18.15.1";
case 83:
- return @"v17.41.2";
+ return @"v18.14.1";
case 84:
- return @"v17.40.5";
+ return @"v18.13.4";
case 85:
- return @"v17.39.4";
+ return @"v18.12.2";
case 86:
- return @"v17.38.10";
+ return @"v18.11.2";
case 87:
- return @"v17.38.9";
+ return @"v18.10.1";
case 88:
- return @"v17.37.2";
+ return @"v18.09.4";
case 89:
- return @"v17.36.4";
+ return @"v18.08.1";
case 90:
- return @"v17.36.3";
+ return @"v18.07.5";
case 91:
- return @"v17.35.3";
+ return @"v18.05.2";
case 92:
- return @"v17.34.3";
+ return @"v18.04.3";
case 93:
+ return @"v18.03.3";
+ case 94:
+ return @"v18.02.03";
+ case 95:
+ return @"v18.01.6";
+ case 96:
+ return @"v18.01.4";
+ case 97:
+ return @"v18.01.2";
+ case 98:
+ return @"v17.49.6";
+ case 99:
+ return @"v17.49.4";
+ case 100:
+ return @"v17.46.4";
+ case 101:
+ return @"v17.45.1";
+ case 102:
+ return @"v17.44.4";
+ case 103:
+ return @"v17.43.1";
+ case 104:
+ return @"v17.42.7";
+ case 105:
+ return @"v17.42.6";
+ case 106:
+ return @"v17.41.2";
+ case 107:
+ return @"v17.40.5";
+ case 108:
+ return @"v17.39.4";
+ case 109:
+ return @"v17.38.10";
+ case 110:
+ return @"v17.38.9";
+ case 111:
+ return @"v17.37.2";
+ case 112:
+ return @"v17.36.4";
+ case 113:
+ return @"v17.36.3";
+ case 114:
+ return @"v17.35.3";
+ case 115:
+ return @"v17.34.3";
+ case 116:
return @"v17.33.2";
case 0:
default:
- return @"v19.21.2";
+ return @"v19.40.4";
}
}
selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
NSArray *rows = @[
- [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v19.21.2" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v19.40.4" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:0 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
- [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v19.20.2" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v19.39.1" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:1 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
- [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v19.19.7" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v19.38.2" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:2 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
- [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v19.19.5" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v19.37.2" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:3 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
- [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v19.18.2" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v19.36.1" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:4 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
- [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v19.17.2" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v19.35.3" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:5 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
- [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v19.16.3" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v19.34.2" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:6 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
- [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v19.15.1" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v19.33.2" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:7 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
- [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v19.14.3" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v19.32.8" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:8 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
- [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v19.14.2" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v19.32.6" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:9 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
- [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v19.13.1" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v19.31.4" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:10 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
- [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v19.12.3" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v19.30.2" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:11 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
- [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v19.10.7" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v19.29.1" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:12 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
- [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v19.10.6" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v19.28.1" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:13 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
- [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v19.10.5" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v19.26.5" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:14 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
- [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v19.09.4" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v19.25.4" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:15 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
- [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v19.09.3" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v19.25.3" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:16 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
- [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v19.08.2" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v19.24.3" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:17 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
- [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v19.07.5" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v19.24.2" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:18 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
- [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v19.07.4" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v19.23.3" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:19 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
- [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v19.06.2" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v19.22.6" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:20 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
- [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v19.05.5" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v19.22.3" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:21 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
- [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v19.05.3" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v19.21.3" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:22 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
- [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v19.04.3" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v19.21.2" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:23 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
- [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v19.03.2" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v19.20.2" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:24 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
- [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v19.02.1" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v19.19.7" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:25 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
- [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v19.01.1" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v19.19.5" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:26 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
- [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v18.49.3" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v19.18.2" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:27 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
- [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v18.48.3" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v19.17.2" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:28 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
- [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v18.46.3" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v19.16.3" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:29 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
- [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v18.45.2" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v19.15.1" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:30 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
- [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v18.44.3" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v19.14.3" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:31 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
- [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v18.43.4" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v19.14.2" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:32 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
- [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v18.41.5" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v19.13.1" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:33 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
- [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v18.41.3" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v19.12.3" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:34 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
- [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v18.41.2" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v19.10.7" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:35 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
- [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v18.40.1" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v19.10.6" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:36 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
- [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v18.39.1" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v19.10.5" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:37 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
- [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v18.38.2" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v19.09.4" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:38 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
- [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v18.35.4" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v19.09.3" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:39 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
- [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v18.34.5" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v19.08.2" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:40 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
- [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v18.33.3" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v19.07.5" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:41 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
- [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v18.33.2" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v19.07.4" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:42 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
- [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v18.32.2" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v19.06.2" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:43 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
- [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v18.31.3" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v19.05.5" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:44 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
- [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v18.30.7" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v19.05.3" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:45 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
- [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v18.30.6" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v19.04.3" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:46 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
- [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v18.29.1" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v19.03.2" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:47 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
- [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v18.28.3" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v19.02.1" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:48 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
- [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v18.27.3" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v19.01.1" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:49 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
- [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v18.25.1" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v18.49.3" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:50 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
- [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v18.23.3" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v18.48.3" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:51 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
- [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v18.22.9" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v18.46.3" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:52 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
- [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v18.21.3" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v18.45.2" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:53 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
- [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v18.20.3" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v18.44.3" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:54 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
- [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v18.19.1" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v18.43.4" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:55 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
- [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v18.18.2" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v18.41.5" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:56 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
- [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v18.17.2" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v18.41.3" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:57 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
- [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v18.16.2" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v18.41.2" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
[[NSUserDefaults standardUserDefaults] setInteger:58 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
+ return YES;
+ }],
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v18.40.1" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [[NSUserDefaults standardUserDefaults] setInteger:59 forKey:@"versionSpoofer"];
+ [settingsViewController reloadData];
+ return YES;
+ }],
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v18.39.1" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [[NSUserDefaults standardUserDefaults] setInteger:60 forKey:@"versionSpoofer"];
+ [settingsViewController reloadData];
+ return YES;
+ }],
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v18.38.2" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [[NSUserDefaults standardUserDefaults] setInteger:61 forKey:@"versionSpoofer"];
+ [settingsViewController reloadData];
+ return YES;
+ }],
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v18.35.4" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [[NSUserDefaults standardUserDefaults] setInteger:62 forKey:@"versionSpoofer"];
+ [settingsViewController reloadData];
+ return YES;
+ }],
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v18.34.5" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [[NSUserDefaults standardUserDefaults] setInteger:63 forKey:@"versionSpoofer"];
+ [settingsViewController reloadData];
+ return YES;
+ }],
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v18.33.3" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [[NSUserDefaults standardUserDefaults] setInteger:64 forKey:@"versionSpoofer"];
+ [settingsViewController reloadData];
+ return YES;
+ }],
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v18.33.2" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [[NSUserDefaults standardUserDefaults] setInteger:65 forKey:@"versionSpoofer"];
+ [settingsViewController reloadData];
+ return YES;
+ }],
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v18.32.2" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [[NSUserDefaults standardUserDefaults] setInteger:66 forKey:@"versionSpoofer"];
+ [settingsViewController reloadData];
+ return YES;
+ }],
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v18.31.3" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [[NSUserDefaults standardUserDefaults] setInteger:67 forKey:@"versionSpoofer"];
+ [settingsViewController reloadData];
+ return YES;
+ }],
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v18.30.7" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [[NSUserDefaults standardUserDefaults] setInteger:68 forKey:@"versionSpoofer"];
+ [settingsViewController reloadData];
+ return YES;
+ }],
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v18.30.6" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [[NSUserDefaults standardUserDefaults] setInteger:69 forKey:@"versionSpoofer"];
+ [settingsViewController reloadData];
+ return YES;
+ }],
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v18.29.1" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [[NSUserDefaults standardUserDefaults] setInteger:70 forKey:@"versionSpoofer"];
+ [settingsViewController reloadData];
+ return YES;
+ }],
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v18.28.3" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [[NSUserDefaults standardUserDefaults] setInteger:71 forKey:@"versionSpoofer"];
+ [settingsViewController reloadData];
+ return YES;
+ }],
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v18.27.3" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [[NSUserDefaults standardUserDefaults] setInteger:72 forKey:@"versionSpoofer"];
+ [settingsViewController reloadData];
+ return YES;
+ }],
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v18.25.1" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [[NSUserDefaults standardUserDefaults] setInteger:73 forKey:@"versionSpoofer"];
+ [settingsViewController reloadData];
+ return YES;
+ }],
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v18.23.3" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [[NSUserDefaults standardUserDefaults] setInteger:74 forKey:@"versionSpoofer"];
+ [settingsViewController reloadData];
+ return YES;
+ }],
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v18.22.9" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [[NSUserDefaults standardUserDefaults] setInteger:75 forKey:@"versionSpoofer"];
+ [settingsViewController reloadData];
+ return YES;
+ }],
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v18.21.3" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [[NSUserDefaults standardUserDefaults] setInteger:76 forKey:@"versionSpoofer"];
+ [settingsViewController reloadData];
+ return YES;
+ }],
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v18.20.3" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [[NSUserDefaults standardUserDefaults] setInteger:77 forKey:@"versionSpoofer"];
+ [settingsViewController reloadData];
+ return YES;
+ }],
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v18.19.1" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [[NSUserDefaults standardUserDefaults] setInteger:78 forKey:@"versionSpoofer"];
+ [settingsViewController reloadData];
+ return YES;
+ }],
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v18.18.2" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [[NSUserDefaults standardUserDefaults] setInteger:79 forKey:@"versionSpoofer"];
+ [settingsViewController reloadData];
+ return YES;
+ }],
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v18.17.2" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [[NSUserDefaults standardUserDefaults] setInteger:80 forKey:@"versionSpoofer"];
+ [settingsViewController reloadData];
+ return YES;
+ }],
+ [YTSettingsSectionItemClass checkmarkItemWithTitle:@"v18.16.2" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ [[NSUserDefaults standardUserDefaults] setInteger:81 forKey:@"versionSpoofer"];
+ [settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:@"v18.15.1" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
- [[NSUserDefaults standardUserDefaults] setInteger:59 forKey:@"versionSpoofer"];
+ [[NSUserDefaults standardUserDefaults] setInteger:82 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:@"v18.14.1" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
- [[NSUserDefaults standardUserDefaults] setInteger:60 forKey:@"versionSpoofer"];
+ [[NSUserDefaults standardUserDefaults] setInteger:83 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:@"v18.13.4" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
- [[NSUserDefaults standardUserDefaults] setInteger:61 forKey:@"versionSpoofer"];
+ [[NSUserDefaults standardUserDefaults] setInteger:84 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:@"v18.12.2" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
- [[NSUserDefaults standardUserDefaults] setInteger:62 forKey:@"versionSpoofer"];
+ [[NSUserDefaults standardUserDefaults] setInteger:85 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:@"v18.11.2" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
- [[NSUserDefaults standardUserDefaults] setInteger:63 forKey:@"versionSpoofer"];
+ [[NSUserDefaults standardUserDefaults] setInteger:86 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:@"v18.10.1" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
- [[NSUserDefaults standardUserDefaults] setInteger:64 forKey:@"versionSpoofer"];
+ [[NSUserDefaults standardUserDefaults] setInteger:87 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:@"v18.09.4" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
- [[NSUserDefaults standardUserDefaults] setInteger:65 forKey:@"versionSpoofer"];
+ [[NSUserDefaults standardUserDefaults] setInteger:88 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:@"v18.08.1" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
- [[NSUserDefaults standardUserDefaults] setInteger:66 forKey:@"versionSpoofer"];
+ [[NSUserDefaults standardUserDefaults] setInteger:89 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:@"v18.07.5" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
- [[NSUserDefaults standardUserDefaults] setInteger:67 forKey:@"versionSpoofer"];
+ [[NSUserDefaults standardUserDefaults] setInteger:90 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:@"v18.05.2" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
- [[NSUserDefaults standardUserDefaults] setInteger:68 forKey:@"versionSpoofer"];
+ [[NSUserDefaults standardUserDefaults] setInteger:91 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:@"v18.04.3" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
- [[NSUserDefaults standardUserDefaults] setInteger:69 forKey:@"versionSpoofer"];
+ [[NSUserDefaults standardUserDefaults] setInteger:92 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:@"v18.03.3" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
- [[NSUserDefaults standardUserDefaults] setInteger:70 forKey:@"versionSpoofer"];
+ [[NSUserDefaults standardUserDefaults] setInteger:93 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:@"v18.02.03" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
- [[NSUserDefaults standardUserDefaults] setInteger:71 forKey:@"versionSpoofer"];
+ [[NSUserDefaults standardUserDefaults] setInteger:94 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:@"v18.01.6" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
- [[NSUserDefaults standardUserDefaults] setInteger:72 forKey:@"versionSpoofer"];
+ [[NSUserDefaults standardUserDefaults] setInteger:95 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:@"v18.01.4" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
- [[NSUserDefaults standardUserDefaults] setInteger:73 forKey:@"versionSpoofer"];
+ [[NSUserDefaults standardUserDefaults] setInteger:96 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:@"v18.01.2" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
- [[NSUserDefaults standardUserDefaults] setInteger:74 forKey:@"versionSpoofer"];
+ [[NSUserDefaults standardUserDefaults] setInteger:97 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:@"v17.49.6" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
- [[NSUserDefaults standardUserDefaults] setInteger:75 forKey:@"versionSpoofer"];
+ [[NSUserDefaults standardUserDefaults] setInteger:98 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:@"v17.49.4" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
- [[NSUserDefaults standardUserDefaults] setInteger:76 forKey:@"versionSpoofer"];
+ [[NSUserDefaults standardUserDefaults] setInteger:99 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:@"v17.46.4" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
- [[NSUserDefaults standardUserDefaults] setInteger:77 forKey:@"versionSpoofer"];
+ [[NSUserDefaults standardUserDefaults] setInteger:100 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:@"v17.45.1" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
- [[NSUserDefaults standardUserDefaults] setInteger:78 forKey:@"versionSpoofer"];
+ [[NSUserDefaults standardUserDefaults] setInteger:101 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:@"v17.44.4" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
- [[NSUserDefaults standardUserDefaults] setInteger:79 forKey:@"versionSpoofer"];
+ [[NSUserDefaults standardUserDefaults] setInteger:102 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:@"v17.43.1" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
- [[NSUserDefaults standardUserDefaults] setInteger:80 forKey:@"versionSpoofer"];
+ [[NSUserDefaults standardUserDefaults] setInteger:103 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:@"v17.42.7" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
- [[NSUserDefaults standardUserDefaults] setInteger:81 forKey:@"versionSpoofer"];
+ [[NSUserDefaults standardUserDefaults] setInteger:104 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:@"v17.42.6" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
- [[NSUserDefaults standardUserDefaults] setInteger:82 forKey:@"versionSpoofer"];
+ [[NSUserDefaults standardUserDefaults] setInteger:105 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:@"v17.41.2" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
- [[NSUserDefaults standardUserDefaults] setInteger:83 forKey:@"versionSpoofer"];
+ [[NSUserDefaults standardUserDefaults] setInteger:106 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:@"v17.40.5" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
- [[NSUserDefaults standardUserDefaults] setInteger:84 forKey:@"versionSpoofer"];
+ [[NSUserDefaults standardUserDefaults] setInteger:107 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:@"v17.39.4" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
- [[NSUserDefaults standardUserDefaults] setInteger:85 forKey:@"versionSpoofer"];
+ [[NSUserDefaults standardUserDefaults] setInteger:108 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:@"v17.38.10" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
- [[NSUserDefaults standardUserDefaults] setInteger:86 forKey:@"versionSpoofer"];
+ [[NSUserDefaults standardUserDefaults] setInteger:109 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:@"v17.38.9" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
- [[NSUserDefaults standardUserDefaults] setInteger:87 forKey:@"versionSpoofer"];
+ [[NSUserDefaults standardUserDefaults] setInteger:110 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:@"v17.37.3" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
- [[NSUserDefaults standardUserDefaults] setInteger:88 forKey:@"versionSpoofer"];
+ [[NSUserDefaults standardUserDefaults] setInteger:111 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:@"v17.36.4" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
- [[NSUserDefaults standardUserDefaults] setInteger:89 forKey:@"versionSpoofer"];
+ [[NSUserDefaults standardUserDefaults] setInteger:112 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:@"v17.36.3" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
- [[NSUserDefaults standardUserDefaults] setInteger:90 forKey:@"versionSpoofer"];
+ [[NSUserDefaults standardUserDefaults] setInteger:113 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:@"v17.35.3" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
- [[NSUserDefaults standardUserDefaults] setInteger:91 forKey:@"versionSpoofer"];
+ [[NSUserDefaults standardUserDefaults] setInteger:114 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:@"v17.34.3" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
- [[NSUserDefaults standardUserDefaults] setInteger:92 forKey:@"versionSpoofer"];
+ [[NSUserDefaults standardUserDefaults] setInteger:115 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}],
[YTSettingsSectionItemClass checkmarkItemWithTitle:@"v17.33.2" titleDescription:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
- [[NSUserDefaults standardUserDefaults] setInteger:93 forKey:@"versionSpoofer"];
+ [[NSUserDefaults standardUserDefaults] setInteger:116 forKey:@"versionSpoofer"];
[settingsViewController reloadData];
return YES;
}]
@@ -1370,13 +1470,13 @@ extern NSBundle *uYouPlusBundle();
# pragma mark - Miscellaneous
SECTION_HEADER(LOC(@"MISCELLANEOUS"));
- SWITCH_ITEM2(LOC(@"YouTube Sign-In Patch"), LOC(@"When enabled, it will allow you to sign in on the YouTube App when sideloaded.\nUnwanted Side Effects: Most Icons in the app will be Invisible & Notifications might not work."), @"googleSignInPatch_enabled");
- SWITCH_ITEM2(LOC(@"ADBLOCK_WORKAROUND_LITE"), LOC(@"ADBLOCK_WORKAROUND_LITE_DESC"), @"uYouAdBlockingWorkaroundLite_enabled");
- SWITCH_ITEM2(LOC(@"ADBLOCK_WORKAROUND"), LOC(@"ADBLOCK_WORKAROUND_DESC"), @"uYouAdBlockingWorkaround_enabled");
- SWITCH_ITEM3(
+ SWITCH2(LOC(@"YouTube Sign-In Patch"), LOC(@"When enabled, it will allow you to sign in on the YouTube App when sideloaded.\nUnwanted Side Effects: Most Icons in the app will be Invisible & Notifications might not work."), kGoogleSignInPatch);
+ SWITCH2(LOC(@"ADBLOCK_WORKAROUND_LITE"), LOC(@"ADBLOCK_WORKAROUND_LITE_DESC"), kAdBlockWorkaroundLite);
+ SWITCH2(LOC(@"ADBLOCK_WORKAROUND"), LOC(@"ADBLOCK_WORKAROUND_DESC"), kAdBlockWorkaround);
+ SWITCH3(
LOC(@"FAKE_PREMIUM"),
LOC(@"FAKE_PREMIUM_DESC"),
- @"youTabFakePremium_enabled",
+ kYouTabFakePremium,
({
// Get the current version (including spoofed versions)
Class YTVersionUtilsClass = %c(YTVersionUtils);
@@ -1390,33 +1490,33 @@ extern NSBundle *uYouPlusBundle();
[settingsViewController presentViewController:alert animated:YES completion:nil];
}
// Enable the "Disable Animated YouTube Logo" setting
- [[NSUserDefaults standardUserDefaults] setBool:enable forKey:@"disableAnimatedYouTubeLogo_enabled"];
+ [[NSUserDefaults standardUserDefaults] setBool:enable forKey:kDisableAnimatedYouTubeLogo];
// Refresh data and show the relaunch popup
- [[NSUserDefaults standardUserDefaults] setBool:enable forKey:@"youTabFakePremium_enabled"];
+ [[NSUserDefaults standardUserDefaults] setBool:enable forKey:kYouTabFakePremium];
[settingsViewController reloadData];
SHOW_RELAUNCH_YT_SNACKBAR;
return YES;
});
);
- SWITCH_ITEM(LOC(@"DISABLE_ANIMATED_YOUTUBE_LOGO"), nil, @"disableAnimatedYouTubeLogo_enabled");
-// SWITCH_ITEM(LOC(@"CENTER_YOUTUBE_LOGO"), LOC(@"CENTER_YOUTUBE_LOGO_DESC"), @"centerYouTubeLogo_enabled");
- SWITCH_ITEM(LOC(@"HIDE_YOUTUBE_LOGO"), LOC(@"HIDE_YOUTUBE_LOGO_DESC"), @"hideYouTubeLogo_enabled");
- SWITCH_ITEM2(LOC(@"ENABLE_YT_STARTUP_ANIMATION"), LOC(@"ENABLE_YT_STARTUP_ANIMATION_DESC"), @"ytStartupAnimation_enabled");
- SWITCH_ITEM(LOC(@"DISABLE_HINTS"), LOC(@"DISABLE_HINTS_DESC"), @"disableHints_enabled");
- SWITCH_ITEM(LOC(@"STICK_NAVIGATION_BAR"), LOC(@"STICK_NAVIGATION_BAR_DESC"), @"stickNavigationBar_enabled");
- SWITCH_ITEM2(LOC(@"HIDE_ISPONSORBLOCK"), nil, @"hideSponsorBlockButton_enabled");
- SWITCH_ITEM(LOC(@"HIDE_CHIP_BAR"), LOC(@"HIDE_CHIP_BAR_DESC"), @"hideChipBar_enabled");
- SWITCH_ITEM(LOC(@"HIDE_PLAY_NEXT_IN_QUEUE"), LOC(@"HIDE_PLAY_NEXT_IN_QUEUE_DESC"), @"hidePlayNextInQueue_enabled");
- SWITCH_ITEM2(LOC(@"HIDE_COMMUNITY_POSTS"), LOC(@"HIDE_COMMUNITY_POSTS_DESC"), @"hideCommunityPosts_enabled");
- SWITCH_ITEM2(LOC(@"HIDE_HEADER_LINKS_UNDER_PROFILE"), LOC(@"HIDE_HEADER_LINKS_UNDER_PROFILE_DESC"), @"hideChannelHeaderLinks_enabled");
- SWITCH_ITEM2(LOC(@"IPHONE_LAYOUT"), LOC(@"IPHONE_LAYOUT_DESC"), @"iPhoneLayout_enabled");
- SWITCH_ITEM2(LOC(@"NEW_MINIPLAYER_STYLE"), LOC(@"NEW_MINIPLAYER_STYLE_DESC"), @"bigYTMiniPlayer_enabled");
- SWITCH_ITEM2(LOC(@"YT_RE_EXPLORE"), LOC(@"YT_RE_EXPLORE_DESC"), @"reExplore_enabled");
- SWITCH_ITEM2(LOC(@"AUTO_HIDE_HOME_INDICATOR"), LOC(@"AUTO_HIDE_HOME_INDICATOR_DESC"), @"autoHideHomeBar_enabled");
- SWITCH_ITEM2(LOC(@"HIDE_INDICATORS"), LOC(@"HIDE_INDICATORS_DESC"), @"hideSubscriptionsNotificationBadge_enabled");
- SWITCH_ITEM2(LOC(@"FIX_CASTING"), LOC(@"FIX_CASTING_DESC"), @"fixCasting_enabled");
- SWITCH_ITEM2(LOC(@"NEW_SETTINGS_UI"), LOC(@"NEW_SETTINGS_UI_DESC"), @"newSettingsUI_enabled");
- SWITCH_ITEM(LOC(@"ENABLE_FLEX"), LOC(@"ENABLE_FLEX_DESC"), @"flex_enabled");
+ SWITCH(LOC(@"DISABLE_ANIMATED_YOUTUBE_LOGO"), nil, kDisableAnimatedYouTubeLogo);
+// SWITCH(LOC(@"CENTER_YOUTUBE_LOGO"), LOC(@"CENTER_YOUTUBE_LOGO_DESC"), kCenterYouTubeLogo);
+ SWITCH(LOC(@"HIDE_YOUTUBE_LOGO"), LOC(@"HIDE_YOUTUBE_LOGO_DESC"), kHideYouTubeLogo);
+ SWITCH2(LOC(@"ENABLE_YT_STARTUP_ANIMATION"), LOC(@"ENABLE_YT_STARTUP_ANIMATION_DESC"), kYTStartupAnimation);
+ SWITCH(LOC(@"DISABLE_HINTS"), LOC(@"DISABLE_HINTS_DESC"), kDisableHints);
+ SWITCH(LOC(@"STICK_NAVIGATION_BAR"), LOC(@"STICK_NAVIGATION_BAR_DESC"), kStickNavigationBar);
+ SWITCH2(LOC(@"HIDE_ISPONSORBLOCK"), nil, kHideiSponsorBlockButton);
+ SWITCH(LOC(@"HIDE_CHIP_BAR"), LOC(@"HIDE_CHIP_BAR_DESC"), kHideChipBar);
+ SWITCH(LOC(@"HIDE_PLAY_NEXT_IN_QUEUE"), LOC(@"HIDE_PLAY_NEXT_IN_QUEUE_DESC"), kHidePlayNextInQueue);
+ SWITCH2(LOC(@"HIDE_COMMUNITY_POSTS"), LOC(@"HIDE_COMMUNITY_POSTS_DESC"), kHideCommunityPosts);
+ SWITCH2(LOC(@"HIDE_HEADER_LINKS_UNDER_PROFILE"), LOC(@"HIDE_HEADER_LINKS_UNDER_PROFILE_DESC"), kHideChannelHeaderLinks);
+ SWITCH2(LOC(@"IPHONE_LAYOUT"), LOC(@"IPHONE_LAYOUT_DESC"), kiPhoneLayout);
+ SWITCH2(LOC(@"NEW_MINIPLAYER_STYLE"), LOC(@"NEW_MINIPLAYER_STYLE_DESC"), kBigYTMiniPlayer);
+ SWITCH2(LOC(@"YT_RE_EXPLORE"), LOC(@"YT_RE_EXPLORE_DESC"), kReExplore);
+ SWITCH2(LOC(@"AUTO_HIDE_HOME_INDICATOR"), LOC(@"AUTO_HIDE_HOME_INDICATOR_DESC"), kAutoHideHomeBar);
+ SWITCH2(LOC(@"HIDE_INDICATORS"), LOC(@"HIDE_INDICATORS_DESC"), kHideSubscriptionsNotificationBadge);
+ SWITCH2(LOC(@"FIX_CASTING"), LOC(@"FIX_CASTING_DESC"), kFixCasting);
+ SWITCH2(LOC(@"NEW_SETTINGS_UI"), LOC(@"NEW_SETTINGS_UI_DESC"), kNewSettingsUI);
+ SWITCH(LOC(@"ENABLE_FLEX"), LOC(@"ENABLE_FLEX_DESC"), kFlex);
if ([settingsViewController respondsToSelector:@selector(setSectionItems:forCategory:title:icon:titleDescription:headerHidden:)])
[settingsViewController setSectionItems:sectionItems forCategory:uYouPlusSection title:@"uYouEnhanced" icon:nil titleDescription:LOC(@"TITLE DESCRIPTION") headerHidden:YES];
diff --git a/Sources/uYouPlusVersionSpoofer.xm b/Sources/uYouPlusVersionSpoofer.xm
index 209e7b203d..af95d3e60f 100644
--- a/Sources/uYouPlusVersionSpoofer.xm
+++ b/Sources/uYouPlusVersionSpoofer.xm
@@ -286,567 +286,774 @@ static BOOL version92() {
static BOOL version93() {
return IS_ENABLED(@"enableVersionSpoofer_enabled") && appVersionSpoofer() == 93;
}
+static BOOL version94() {
+ return IS_ENABLED(@"enableVersionSpoofer_enabled") && appVersionSpoofer() == 94;
+}
+static BOOL version95() {
+ return IS_ENABLED(@"enableVersionSpoofer_enabled") && appVersionSpoofer() == 95;
+}
+static BOOL version96() {
+ return IS_ENABLED(@"enableVersionSpoofer_enabled") && appVersionSpoofer() == 96;
+}
+static BOOL version97() {
+ return IS_ENABLED(@"enableVersionSpoofer_enabled") && appVersionSpoofer() == 97;
+}
+static BOOL version98() {
+ return IS_ENABLED(@"enableVersionSpoofer_enabled") && appVersionSpoofer() == 98;
+}
+static BOOL version99() {
+ return IS_ENABLED(@"enableVersionSpoofer_enabled") && appVersionSpoofer() == 99;
+}
+static BOOL version100() {
+ return IS_ENABLED(@"enableVersionSpoofer_enabled") && appVersionSpoofer() == 100;
+}
+static BOOL version101() {
+ return IS_ENABLED(@"enableVersionSpoofer_enabled") && appVersionSpoofer() == 101;
+}
+static BOOL version102() {
+ return IS_ENABLED(@"enableVersionSpoofer_enabled") && appVersionSpoofer() == 102;
+}
+static BOOL version103() {
+ return IS_ENABLED(@"enableVersionSpoofer_enabled") && appVersionSpoofer() == 103;
+}
+static BOOL version104() {
+ return IS_ENABLED(@"enableVersionSpoofer_enabled") && appVersionSpoofer() == 104;
+}
+static BOOL version105() {
+ return IS_ENABLED(@"enableVersionSpoofer_enabled") && appVersionSpoofer() == 105;
+}
+static BOOL version106() {
+ return IS_ENABLED(@"enableVersionSpoofer_enabled") && appVersionSpoofer() == 106;
+}
+static BOOL version107() {
+ return IS_ENABLED(@"enableVersionSpoofer_enabled") && appVersionSpoofer() == 107;
+}
+static BOOL version108() {
+ return IS_ENABLED(@"enableVersionSpoofer_enabled") && appVersionSpoofer() == 108;
+}
+static BOOL version109() {
+ return IS_ENABLED(@"enableVersionSpoofer_enabled") && appVersionSpoofer() == 109;
+}
+static BOOL version110() {
+ return IS_ENABLED(@"enableVersionSpoofer_enabled") && appVersionSpoofer() == 110;
+}
+static BOOL version111() {
+ return IS_ENABLED(@"enableVersionSpoofer_enabled") && appVersionSpoofer() == 111;
+}
+static BOOL version112() {
+ return IS_ENABLED(@"enableVersionSpoofer_enabled") && appVersionSpoofer() == 112;
+}
+static BOOL version113() {
+ return IS_ENABLED(@"enableVersionSpoofer_enabled") && appVersionSpoofer() == 113;
+}
+static BOOL version114() {
+ return IS_ENABLED(@"enableVersionSpoofer_enabled") && appVersionSpoofer() == 114;
+}
+static BOOL version115() {
+ return IS_ENABLED(@"enableVersionSpoofer_enabled") && appVersionSpoofer() == 115;
+}
+static BOOL version116() {
+ return IS_ENABLED(@"enableVersionSpoofer_enabled") && appVersionSpoofer() == 116;
+}
%group gVersion0
-%hook YTVersionUtils // 0
-+ (NSString *)appVersion { return @"19.21.2"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"19.40.4"; }
%end
%end
%group gVersion1
-%hook YTVersionUtils // 1
-+ (NSString *)appVersion { return @"19.20.2"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"19.39.1"; }
%end
%end
%group gVersion2
-%hook YTVersionUtils // 2
-+ (NSString *)appVersion { return @"19.19.7"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"19.38.2"; }
%end
%end
%group gVersion3
-%hook YTVersionUtils // 3
-+ (NSString *)appVersion { return @"19.19.5"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"19.37.2"; }
%end
%end
%group gVersion4
-%hook YTVersionUtils // 4
-+ (NSString *)appVersion { return @"19.18.2"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"19.36.1"; }
%end
%end
%group gVersion5
-%hook YTVersionUtils // 5
-+ (NSString *)appVersion { return @"19.17.2"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"19.35.3"; }
%end
%end
%group gVersion6
-%hook YTVersionUtils // 6
-+ (NSString *)appVersion { return @"19.16.3"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"19.34.2"; }
%end
%end
%group gVersion7
-%hook YTVersionUtils // 7
-+ (NSString *)appVersion { return @"19.15.1"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"19.33.2"; }
%end
%end
%group gVersion8
-%hook YTVersionUtils // 8
-+ (NSString *)appVersion { return @"19.14.3"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"19.32.8"; }
%end
%end
%group gVersion9
-%hook YTVersionUtils // 9
-+ (NSString *)appVersion { return @"19.14.2"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"19.32.6"; }
%end
%end
%group gVersion10
-%hook YTVersionUtils // 10
-+ (NSString *)appVersion { return @"19.13.1"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"19.31.4"; }
%end
%end
%group gVersion11
-%hook YTVersionUtils // 11
-+ (NSString *)appVersion { return @"19.12.3"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"19.30.2"; }
%end
%end
%group gVersion12
-%hook YTVersionUtils // 12
-+ (NSString *)appVersion { return @"19.10.7"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"19.29.1"; }
%end
%end
%group gVersion13
-%hook YTVersionUtils // 13
-+ (NSString *)appVersion { return @"19.10.6"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"19.28.1"; }
%end
%end
%group gVersion14
-%hook YTVersionUtils // 14
-+ (NSString *)appVersion { return @"19.10.5"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"19.26.5"; }
%end
%end
%group gVersion15
-%hook YTVersionUtils // 15
-+ (NSString *)appVersion { return @"19.09.4"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"19.25.4"; }
%end
%end
%group gVersion16
-%hook YTVersionUtils // 16
-+ (NSString *)appVersion { return @"19.09.3"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"19.25.3"; }
%end
%end
%group gVersion17
-%hook YTVersionUtils // 17
-+ (NSString *)appVersion { return @"19.08.2"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"19.24.3"; }
%end
%end
%group gVersion18
-%hook YTVersionUtils // 18
-+ (NSString *)appVersion { return @"19.07.5"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"19.24.2"; }
%end
%end
%group gVersion19
-%hook YTVersionUtils // 19
-+ (NSString *)appVersion { return @"19.07.4"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"19.23.3"; }
%end
%end
%group gVersion20
-%hook YTVersionUtils // 20
-+ (NSString *)appVersion { return @"19.06.2"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"19.22.6"; }
%end
%end
%group gVersion21
-%hook YTVersionUtils // 21
-+ (NSString *)appVersion { return @"19.05.5"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"19.22.3"; }
%end
%end
%group gVersion22
-%hook YTVersionUtils // 22
-+ (NSString *)appVersion { return @"19.05.3"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"19.21.3"; }
%end
%end
%group gVersion23
-%hook YTVersionUtils // 23
-+ (NSString *)appVersion { return @"19.04.3"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"19.21.2"; }
%end
%end
%group gVersion24
-%hook YTVersionUtils // 24
-+ (NSString *)appVersion { return @"19.03.2"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"19.20.2"; }
%end
%end
%group gVersion25
-%hook YTVersionUtils // 25
-+ (NSString *)appVersion { return @"19.02.1"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"19.19.7"; }
%end
%end
%group gVersion26
-%hook YTVersionUtils // 26
-+ (NSString *)appVersion { return @"19.01.1"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"19.19.5"; }
%end
%end
%group gVersion27
-%hook YTVersionUtils // 27
-+ (NSString *)appVersion { return @"18.49.3"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"19.18.2"; }
%end
%end
%group gVersion28
-%hook YTVersionUtils // 28
-+ (NSString *)appVersion { return @"18.48.3"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"19.17.2"; }
%end
%end
%group gVersion29
-%hook YTVersionUtils // 29
-+ (NSString *)appVersion { return @"18.46.3"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"19.16.3"; }
%end
%end
%group gVersion30
-%hook YTVersionUtils // 30
-+ (NSString *)appVersion { return @"18.45.2"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"19.15.1"; }
%end
%end
%group gVersion31
-%hook YTVersionUtils // 31
-+ (NSString *)appVersion { return @"18.44.3"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"19.14.3"; }
%end
%end
%group gVersion32
-%hook YTVersionUtils // 32
-+ (NSString *)appVersion { return @"18.43.4"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"19.14.2"; }
%end
%end
%group gVersion33
-%hook YTVersionUtils // 33
-+ (NSString *)appVersion { return @"18.41.5"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"19.13.1"; }
%end
%end
%group gVersion34
-%hook YTVersionUtils // 34
-+ (NSString *)appVersion { return @"18.41.3"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"19.12.3"; }
%end
%end
%group gVersion35
-%hook YTVersionUtils // 35
-+ (NSString *)appVersion { return @"18.41.2"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"19.10.7"; }
%end
%end
%group gVersion36
-%hook YTVersionUtils // 36
-+ (NSString *)appVersion { return @"18.40.1"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"19.10.6"; }
%end
%end
%group gVersion37
-%hook YTVersionUtils // 37
-+ (NSString *)appVersion { return @"18.39.1"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"19.10.5"; }
%end
%end
%group gVersion38
-%hook YTVersionUtils // 38
-+ (NSString *)appVersion { return @"18.38.2"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"19.09.4"; }
%end
%end
%group gVersion39
-%hook YTVersionUtils // 39
-+ (NSString *)appVersion { return @"18.35.4"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"19.09.3"; }
%end
%end
%group gVersion40
-%hook YTVersionUtils // 40
-+ (NSString *)appVersion { return @"18.34.5"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"19.08.2"; }
%end
%end
%group gVersion41
-%hook YTVersionUtils // 41
-+ (NSString *)appVersion { return @"18.33.3"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"19.07.5"; }
%end
%end
%group gVersion42
-%hook YTVersionUtils // 42
-+ (NSString *)appVersion { return @"18.33.2"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"19.07.4"; }
%end
%end
%group gVersion43
-%hook YTVersionUtils // 43
-+ (NSString *)appVersion { return @"18.32.2"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"19.06.2"; }
%end
%end
%group gVersion44
-%hook YTVersionUtils // 44
-+ (NSString *)appVersion { return @"18.31.3"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"19.05.5"; }
%end
%end
%group gVersion45
-%hook YTVersionUtils // 45
-+ (NSString *)appVersion { return @"18.30.7"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"19.05.3"; }
%end
%end
%group gVersion46
-%hook YTVersionUtils // 46
-+ (NSString *)appVersion { return @"18.30.6"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"19.04.3"; }
%end
%end
%group gVersion47
-%hook YTVersionUtils // 47
-+ (NSString *)appVersion { return @"18.29.1"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"19.03.2"; }
%end
%end
%group gVersion48
-%hook YTVersionUtils // 48
-+ (NSString *)appVersion { return @"18.28.3"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"19.02.1"; }
%end
%end
%group gVersion49
-%hook YTVersionUtils // 49
-+ (NSString *)appVersion { return @"18.27.3"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"19.01.1"; }
%end
%end
%group gVersion50
-%hook YTVersionUtils // 50
-+ (NSString *)appVersion { return @"18.25.1"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"18.49.3"; }
%end
%end
%group gVersion51
-%hook YTVersionUtils // 51
-+ (NSString *)appVersion { return @"18.23.3"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"18.48.3"; }
%end
%end
%group gVersion52
-%hook YTVersionUtils // 52
-+ (NSString *)appVersion { return @"18.22.9"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"18.46.3"; }
%end
%end
%group gVersion53
-%hook YTVersionUtils // 53
-+ (NSString *)appVersion { return @"18.21.3"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"18.45.2"; }
%end
%end
%group gVersion54
-%hook YTVersionUtils // 54
-+ (NSString *)appVersion { return @"18.20.3"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"18.44.3"; }
%end
%end
%group gVersion55
-%hook YTVersionUtils // 55
-+ (NSString *)appVersion { return @"18.19.1"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"18.43.4"; }
%end
%end
%group gVersion56
-%hook YTVersionUtils // 56
-+ (NSString *)appVersion { return @"18.18.2"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"18.41.5"; }
%end
%end
%group gVersion57
-%hook YTVersionUtils // 57
-+ (NSString *)appVersion { return @"18.17.2"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"18.41.3"; }
%end
%end
%group gVersion58
-%hook YTVersionUtils // 58
-+ (NSString *)appVersion { return @"18.16.2"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"18.41.2"; }
%end
%end
%group gVersion59
-%hook YTVersionUtils // 59
-+ (NSString *)appVersion { return @"18.15.1"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"18.40.1"; }
%end
%end
%group gVersion60
-%hook YTVersionUtils // 60
-+ (NSString *)appVersion { return @"18.14.1"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"18.39.1"; }
%end
%end
%group gVersion61
-%hook YTVersionUtils // 61
-+ (NSString *)appVersion { return @"18.13.4"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"18.38.2"; }
%end
%end
%group gVersion62
-%hook YTVersionUtils // 62
-+ (NSString *)appVersion { return @"18.12.2"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"18.35.4"; }
%end
%end
%group gVersion63
-%hook YTVersionUtils // 63
-+ (NSString *)appVersion { return @"18.11.2"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"18.34.5"; }
%end
%end
%group gVersion64
-%hook YTVersionUtils // 64
-+ (NSString *)appVersion { return @"18.10.1"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"18.33.3"; }
%end
%end
%group gVersion65
-%hook YTVersionUtils // 65
-+ (NSString *)appVersion { return @"18.09.4"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"18.33.2"; }
%end
%end
%group gVersion66
-%hook YTVersionUtils // 66
-+ (NSString *)appVersion { return @"18.08.1"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"18.32.2"; }
%end
%end
%group gVersion67
-%hook YTVersionUtils // 67
-+ (NSString *)appVersion { return @"18.07.5"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"18.31.3"; }
%end
%end
%group gVersion68
-%hook YTVersionUtils // 68
-+ (NSString *)appVersion { return @"18.05.2"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"18.30.7"; }
%end
%end
%group gVersion69
-%hook YTVersionUtils // 69
-+ (NSString *)appVersion { return @"18.04.3"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"18.30.6"; }
%end
%end
%group gVersion70
-%hook YTVersionUtils // 70
-+ (NSString *)appVersion { return @"18.03.3"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"18.29.1"; }
%end
%end
%group gVersion71
-%hook YTVersionUtils // 71
-+ (NSString *)appVersion { return @"18.02.03"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"18.28.3"; }
%end
%end
%group gVersion72
-%hook YTVersionUtils // 72
-+ (NSString *)appVersion { return @"18.01.6"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"18.27.3"; }
%end
%end
%group gVersion73
-%hook YTVersionUtils // 73
-+ (NSString *)appVersion { return @"18.01.4"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"18.25.1"; }
%end
%end
%group gVersion74
-%hook YTVersionUtils // 74
-+ (NSString *)appVersion { return @"18.01.2"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"18.23.3"; }
%end
%end
%group gVersion75
-%hook YTVersionUtils // 75
-+ (NSString *)appVersion { return @"17.49.6"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"18.22.9"; }
%end
%end
%group gVersion76
-%hook YTVersionUtils // 76
-+ (NSString *)appVersion { return @"17.49.4"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"18.21.3"; }
%end
%end
%group gVersion77
-%hook YTVersionUtils // 77
-+ (NSString *)appVersion { return @"17.46.4"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"18.20.3"; }
%end
%end
%group gVersion78
-%hook YTVersionUtils // 78
-+ (NSString *)appVersion { return @"17.45.1"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"18.19.1"; }
%end
%end
%group gVersion79
-%hook YTVersionUtils // 79
-+ (NSString *)appVersion { return @"17.44.4"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"18.18.2"; }
%end
%end
%group gVersion80
-%hook YTVersionUtils // 80
-+ (NSString *)appVersion { return @"17.43.1"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"18.17.2"; }
%end
%end
%group gVersion81
-%hook YTVersionUtils // 81
-+ (NSString *)appVersion { return @"17.42.7"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"18.16.2"; }
%end
%end
%group gVersion82
-%hook YTVersionUtils // 82
-+ (NSString *)appVersion { return @"17.42.6"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"18.15.1"; }
%end
%end
%group gVersion83
-%hook YTVersionUtils // 83
-+ (NSString *)appVersion { return @"17.41.2"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"18.14.1"; }
%end
%end
%group gVersion84
-%hook YTVersionUtils // 84
-+ (NSString *)appVersion { return @"17.40.5"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"18.13.4"; }
%end
%end
%group gVersion85
-%hook YTVersionUtils // 85
-+ (NSString *)appVersion { return @"17.39.4"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"18.12.2"; }
%end
%end
%group gVersion86
-%hook YTVersionUtils // 86
-+ (NSString *)appVersion { return @"17.38.10"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"18.11.2"; }
%end
%end
%group gVersion87
-%hook YTVersionUtils // 87
-+ (NSString *)appVersion { return @"17.38.9"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"18.10.1"; }
%end
%end
%group gVersion88
-%hook YTVersionUtils // 88
-+ (NSString *)appVersion { return @"17.37.3"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"18.09.4"; }
%end
%end
%group gVersion89
-%hook YTVersionUtils // 89
-+ (NSString *)appVersion { return @"17.36.4"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"18.08.1"; }
%end
%end
%group gVersion90
-%hook YTVersionUtils // 90
-+ (NSString *)appVersion { return @"17.36.3"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"18.07.5"; }
%end
%end
%group gVersion91
-%hook YTVersionUtils // 91
-+ (NSString *)appVersion { return @"17.35.3"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"18.05.2"; }
%end
%end
%group gVersion92
-%hook YTVersionUtils // 92
-+ (NSString *)appVersion { return @"17.34.3"; }
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"18.04.3"; }
%end
%end
%group gVersion93
-%hook YTVersionUtils // 93
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"18.03.3"; }
+%end
+%end
+
+%group gVersion94
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"18.02.03"; }
+%end
+%end
+
+%group gVersion95
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"18.01.6"; }
+%end
+%end
+
+%group gVersion96
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"18.01.4"; }
+%end
+%end
+
+%group gVersion97
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"18.01.2"; }
+%end
+%end
+
+%group gVersion98
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"17.49.6"; }
+%end
+%end
+
+%group gVersion99
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"17.49.4"; }
+%end
+%end
+
+%group gVersion100
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"17.46.4"; }
+%end
+%end
+
+%group gVersion101
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"17.45.1"; }
+%end
+%end
+
+%group gVersion102
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"17.44.4"; }
+%end
+%end
+
+%group gVersion103
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"17.43.1"; }
+%end
+%end
+
+%group gVersion104
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"17.42.7"; }
+%end
+%end
+
+%group gVersion105
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"17.42.6"; }
+%end
+%end
+
+%group gVersion106
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"17.41.2"; }
+%end
+%end
+
+%group gVersion107
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"17.40.5"; }
+%end
+%end
+
+%group gVersion108
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"17.39.4"; }
+%end
+%end
+
+%group gVersion109
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"17.38.10"; }
+%end
+%end
+
+%group gVersion110
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"17.38.9"; }
+%end
+%end
+
+%group gVersion111
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"17.37.3"; }
+%end
+%end
+
+%group gVersion112
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"17.36.4"; }
+%end
+%end
+
+%group gVersion113
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"17.36.3"; }
+%end
+%end
+
+%group gVersion114
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"17.35.3"; }
+%end
+%end
+
+%group gVersion115
+%hook YTVersionUtils
++ (NSString *)appVersion { return @"17.34.3"; }
+%end
+%end
+
+%group gVersion116
+%hook YTVersionUtils
+ (NSString *)appVersion { return @"17.33.2"; }
%end
%end
@@ -854,286 +1061,355 @@ static BOOL version93() {
# pragma mark - ctor
%ctor {
%init;
- if (version0()) { // 0
+ if (version0()) {
%init(gVersion0);
}
- if (version1()) { // 1
+ if (version1()) {
%init(gVersion1);
}
- if (version2()) { // 2
+ if (version2()) {
%init(gVersion2);
}
- if (version3()) { // 3
+ if (version3()) {
%init(gVersion3);
}
- if (version4()) { // 4
+ if (version4()) {
%init(gVersion4);
}
- if (version5()) { // 5
+ if (version5()) {
%init(gVersion5);
}
- if (version6()) { // 6
+ if (version6()) {
%init(gVersion6);
}
- if (version7()) { // 7
+ if (version7()) {
%init(gVersion7);
}
- if (version8()) { // 8
+ if (version8()) {
%init(gVersion8);
}
- if (version9()) { // 9
+ if (version9()) {
%init(gVersion9);
}
- if (version10()) { // 10
+ if (version10()) {
%init(gVersion10);
}
- if (version11()) { // 11
+ if (version11()) {
%init(gVersion11);
}
- if (version12()) { // 12
+ if (version12()) {
%init(gVersion12);
}
- if (version13()) { // 13
+ if (version13()) {
%init(gVersion13);
}
- if (version14()) { // 14
+ if (version14()) {
%init(gVersion14);
}
- if (version15()) { // 15
+ if (version15()) {
%init(gVersion15);
}
- if (version16()) { // 16
+ if (version16()) {
%init(gVersion16);
}
- if (version17()) { // 17
+ if (version17()) {
%init(gVersion17);
}
- if (version18()) { // 18
+ if (version18()) {
%init(gVersion18);
}
- if (version19()) { // 19
+ if (version19()) {
%init(gVersion19);
}
- if (version20()) { // 20
+ if (version20()) {
%init(gVersion20);
}
- if (version21()) { // 21
+ if (version21()) {
%init(gVersion21);
}
- if (version22()) { // 22
+ if (version22()) {
%init(gVersion22);
}
- if (version23()) { // 23
+ if (version23()) {
%init(gVersion23);
}
- if (version24()) { // 24
+ if (version24()) {
%init(gVersion24);
}
- if (version25()) { // 25
+ if (version25()) {
%init(gVersion25);
}
- if (version26()) { // 26
+ if (version26()) {
%init(gVersion26);
}
- if (version27()) { // 27
+ if (version27()) {
%init(gVersion27);
}
- if (version28()) { // 28
+ if (version28()) {
%init(gVersion28);
}
- if (version29()) { // 29
+ if (version29()) {
%init(gVersion29);
}
- if (version30()) { // 30
+ if (version30()) {
%init(gVersion30);
}
- if (version31()) { // 31
+ if (version31()) {
%init(gVersion31);
}
- if (version32()) { // 32
+ if (version32()) {
%init(gVersion32);
}
- if (version33()) { // 33
+ if (version33()) {
%init(gVersion33);
}
- if (version34()) { // 34
+ if (version34()) {
%init(gVersion34);
}
- if (version35()) { // 35
+ if (version35()) {
%init(gVersion35);
}
- if (version36()) { // 36
+ if (version36()) {
%init(gVersion36);
}
- if (version37()) { // 37
+ if (version37()) {
%init(gVersion37);
}
- if (version38()) { // 38
+ if (version38()) {
%init(gVersion38);
}
- if (version39()) { // 39
+ if (version39()) {
%init(gVersion39);
}
- if (version40()) { // 40
+ if (version40()) {
%init(gVersion40);
}
- if (version41()) { // 41
+ if (version41()) {
%init(gVersion41);
}
- if (version42()) { // 42
+ if (version42()) {
%init(gVersion42);
}
- if (version43()) { // 43
+ if (version43()) {
%init(gVersion43);
}
- if (version44()) { // 44
+ if (version44()) {
%init(gVersion44);
}
- if (version45()) { // 45
+ if (version45()) {
%init(gVersion45);
}
- if (version46()) { // 46
+ if (version46()) {
%init(gVersion46);
}
- if (version47()) { // 47
+ if (version47()) {
%init(gVersion47);
}
- if (version48()) { // 48
+ if (version48()) {
%init(gVersion48);
}
- if (version49()) { // 49
+ if (version49()) {
%init(gVersion49);
}
- if (version50()) { // 50
+ if (version50()) {
%init(gVersion50);
}
- if (version51()) { // 51
+ if (version51()) {
%init(gVersion51);
}
- if (version52()) { // 52
+ if (version52()) {
%init(gVersion52);
}
- if (version53()) { // 53
+ if (version53()) {
%init(gVersion53);
}
- if (version54()) { // 54
+ if (version54()) {
%init(gVersion54);
}
- if (version55()) { // 55
+ if (version55()) {
%init(gVersion55);
}
- if (version56()) { // 56
+ if (version56()) {
%init(gVersion56);
}
- if (version57()) { // 57
+ if (version57()) {
%init(gVersion57);
}
- if (version58()) { // 58
+ if (version58()) {
%init(gVersion58);
}
- if (version59()) { // 59
+ if (version59()) {
%init(gVersion59);
}
- if (version60()) { // 60
+ if (version60()) {
%init(gVersion60);
}
- if (version61()) { // 61
+ if (version61()) {
%init(gVersion61);
}
- if (version62()) { // 62
+ if (version62()) {
%init(gVersion62);
}
- if (version63()) { // 63
+ if (version63()) {
%init(gVersion63);
}
- if (version64()) { // 64
+ if (version64()) {
%init(gVersion64);
}
- if (version65()) { // 65
+ if (version65()) {
%init(gVersion65);
}
- if (version66()) { // 66
+ if (version66()) {
%init(gVersion66);
}
- if (version67()) { // 67
+ if (version67()) {
%init(gVersion67);
}
- if (version68()) { // 68
+ if (version68()) {
%init(gVersion68);
}
- if (version69()) { // 69
+ if (version69()) {
%init(gVersion69);
}
- if (version70()) { // 70
+ if (version70()) {
%init(gVersion70);
}
- if (version71()) { // 71
+ if (version71()) {
%init(gVersion71);
}
- if (version72()) { // 72
+ if (version72()) {
%init(gVersion72);
}
- if (version73()) { // 73
+ if (version73()) {
%init(gVersion73);
}
- if (version74()) { // 74
+ if (version74()) {
%init(gVersion74);
}
- if (version75()) { // 75
+ if (version75()) {
%init(gVersion75);
}
- if (version76()) { // 76
+ if (version76()) {
%init(gVersion76);
}
- if (version77()) { // 77
+ if (version77()) {
%init(gVersion77);
}
- if (version78()) { // 78
+ if (version78()) {
%init(gVersion78);
}
- if (version79()) { // 79
+ if (version79()) {
%init(gVersion79);
}
- if (version80()) { // 80
+ if (version80()) {
%init(gVersion80);
}
- if (version81()) { // 81
+ if (version81()) {
%init(gVersion81);
}
- if (version82()) { // 82
+ if (version82()) {
%init(gVersion82);
}
- if (version83()) { // 83
+ if (version83()) {
%init(gVersion83);
}
- if (version84()) { // 84
+ if (version84()) {
%init(gVersion84);
}
- if (version85()) { // 85
+ if (version85()) {
%init(gVersion85);
}
- if (version86()) { // 86
+ if (version86()) {
%init(gVersion86);
}
- if (version87()) { // 87
+ if (version87()) {
%init(gVersion87);
}
- if (version88()) { // 88
+ if (version88()) {
%init(gVersion88);
}
- if (version89()) { // 89
+ if (version89()) {
%init(gVersion89);
}
- if (version90()) { // 90
+ if (version90()) {
%init(gVersion90);
}
- if (version91()) { // 91
+ if (version91()) {
%init(gVersion91);
}
- if (version92()) { // 92
+ if (version92()) {
%init(gVersion92);
}
- if (version93()) { // 93
+ if (version93()) {
%init(gVersion93);
}
+ if (version94()) {
+ %init(gVersion94);
+ }
+ if (version95()) {
+ %init(gVersion95);
+ }
+ if (version96()) {
+ %init(gVersion96);
+ }
+ if (version97()) {
+ %init(gVersion97);
+ }
+ if (version98()) {
+ %init(gVersion98);
+ }
+ if (version99()) {
+ %init(gVersion99);
+ }
+ if (version100()) {
+ %init(gVersion100);
+ }
+ if (version101()) {
+ %init(gVersion101);
+ }
+ if (version102()) {
+ %init(gVersion102);
+ }
+ if (version103()) {
+ %init(gVersion103);
+ }
+ if (version104()) {
+ %init(gVersion104);
+ }
+ if (version105()) {
+ %init(gVersion105);
+ }
+ if (version106()) {
+ %init(gVersion106);
+ }
+ if (version107()) {
+ %init(gVersion107);
+ }
+ if (version108()) {
+ %init(gVersion108);
+ }
+ if (version109()) {
+ %init(gVersion109);
+ }
+ if (version110()) {
+ %init(gVersion110);
+ }
+ if (version111()) {
+ %init(gVersion111);
+ }
+ if (version112()) {
+ %init(gVersion112);
+ }
+ if (version113()) {
+ %init(gVersion113);
+ }
+ if (version114()) {
+ %init(gVersion114);
+ }
+ if (version115()) {
+ %init(gVersion115);
+ }
+ if (version116()) {
+ %init(gVersion116);
+ }
}
diff --git a/Sources/update-submodules-template.txt b/Sources/update-submodules-template.txt
index 5b6e316e8e..dfc90a2c87 100644
--- a/Sources/update-submodules-template.txt
+++ b/Sources/update-submodules-template.txt
@@ -24,6 +24,7 @@ jobs:
git submodule add https://github.com/arichornloverALT/YTHoldForSpeed.git Tweaks/YTHoldForSpeed
git submodule add https://github.com/arichornloverALT/YouGroupSettings.git Tweaks/YouGroupSettings
git submodule add https://github.com/arichornloverALT/YouTimeStamp.git Tweaks/YouTimeStamp
+ git submodule add https://github.com/bhackel/YouLoop.git Tweaks/YouLoop
git submodule add https://github.com/protocolbuffers/protobuf.git Tweaks/protobuf
git add .
git commit -m "added uYouEnhanced submodules"
@@ -65,6 +66,8 @@ jobs:
git add .
git submodule update --init --recursive --remote Tweaks/YouMute
git add .
+ git submodule update --init --recursive --remote Tweaks/YouLoop
+ git add .
git submodule update --init --recursive --remote Tweaks/YouPiP
git add .
git submodule update --init --recursive --remote Tweaks/YouQuality
@@ -87,6 +90,7 @@ jobs:
ln -s ../Tweaks/uYouLocalization/layout/Library/Application\ Support/uYouLocalization.bundle uYouLocalization.bundle
ln -s ../Tweaks/YTHoldForSpeed/layout/Library/Application\ Support/YTHoldForSpeed.bundle YTHoldForSpeed.bundle
ln -s ../Tweaks/YouGroupSettings/layout/Library/Application\ Support/YouGroupSettings.bundle YouGroupSettings.bundle
+ ln -s ../Tweaks/YouLoop/layout/Library/Application\ Support/YouLoop.bundle YouLoop.bundle
ln -s ../Tweaks/YouTimeStamp/layout/Library/Application\ Support/YouTimeStamp.bundle YouTimeStamp.bundle
git add .
git commit -m "Added bundles"
@@ -97,9 +101,11 @@ jobs:
# - name: Delete .bundle files
# run: |
# cd Bundles
+# rm -f MrBeastify.bundle
# rm -f uYouLocalization.bundle
# rm -f YTHoldForSpeed.bundle
# rm -f YouGroupSettings.bundle
+# rm -f YouLoop.bundle
# rm -f YouTimeStamp.bundle
# git add .
# git commit -m "Deleted bundles"