mirror of
https://github.com/YTLitePlus/YTLitePlus.git
synced 2026-03-11 13:05:33 +00:00
* Dynamic versioning, remove duplicate features, fix build references
- Replace hardcoded YTLITE_VERSION=5.0.1 with dynamic GitHub API fetch in Makefile
- Add fallback error if API fetch fails in Makefile
- Update buildapp.yml to use dynamic version fetching with jq
- Replace all hardcoded 5.0.1 references with env vars in buildapp.yml
- Add jq to workflow dependencies
- Remove duplicate tweaks from INJECT_DYLIBS and SUBPROJECTS (iSponsorBlock,
YTHoldForSpeed, YouLoop, YouMute, YouQuality, YouSpeed)
- Remove git submodules for removed tweaks
- Remove SponsorBlock button hiding code from YTLitePlus.xm
- Remove iSponsorBlock first-run setup from YTLitePlus.xm
- Remove SponsorBlockSettingsController/ViewController hooks from Themes.xm
- Remove hideSponsorBlockButton setting from Settings.xm
- Update iSponsorBlock text references in Settings.xm
- Remove SponsorBlock class declarations from YTLitePlus.h
- Remove duplicate overlay keys from SettingsKeys.h
Co-authored-by: Balackburn <93828569+Balackburn@users.noreply.github.com>
* All changes verified and complete
Co-authored-by: Balackburn <93828569+Balackburn@users.noreply.github.com>
* Remove accidentally committed codeql artifact, add to .gitignore
Co-authored-by: Balackburn <93828569+Balackburn@users.noreply.github.com>
* Update build workflow and remove duplicate features from README
Workflow changes:
- Bump actions/cache from v4.2.0 to v5.0.2
- Bump actions/checkout from v4.2.2 to v6.0.1
- Bump softprops/action-gh-release from v2 to v2.5.0
- Update theos ref to latest commit (13c2237)
- Add THEOS env to Fix Compiling step
- Update default SDK version from 17.5 to 18.6
- Change SDK repo from aricloverALT to aricloverEXTRA
- Remove Checkout Main step (not needed for building)
- Remove unnecessary ${{ github.workspace }} paths
- Change YouTube extension repo from CokePokes to BillyCurtis
Other changes:
- Update Makefile default SDK references to 18.6
- Update .gitmodules Extensions URL
- Remove duplicate features from README (YouMute, iSponsorBlock,
YTSpeed, YTHoldForSpeed, YouQuality) and fix numbering
Co-authored-by: Balackburn <93828569+Balackburn@users.noreply.github.com>
* Add back repo checkout step without path prefix
The checkout step is still needed to get the source code,
but without path: main so it checks out to workspace root.
This is consistent with the removal of all main/ path prefixes.
Co-authored-by: Balackburn <93828569+Balackburn@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Balackburn <93828569+Balackburn@users.noreply.github.com>
822 lines
25 KiB
Text
822 lines
25 KiB
Text
#import "../YTLitePlus.h"
|
|
|
|
static BOOL isDarkMode() {
|
|
return ([[NSUserDefaults standardUserDefaults] integerForKey:@"page_style"] == 1);
|
|
}
|
|
static BOOL oldDarkTheme() {
|
|
return ([[NSUserDefaults standardUserDefaults] integerForKey:@"appTheme"] == 1);
|
|
}
|
|
|
|
// Themes.xm - Theme Options
|
|
// Old dark theme (gray)
|
|
%group gOldDarkTheme
|
|
UIColor *customColor = [UIColor colorWithRed:0.129 green:0.129 blue:0.129 alpha:1.0];
|
|
%hook YTCommonColorPalette
|
|
- (UIColor *)background1 {
|
|
return self.pageStyle == 1 ? customColor : %orig;
|
|
}
|
|
- (UIColor *)background2 {
|
|
return self.pageStyle == 1 ? customColor : %orig;
|
|
}
|
|
- (UIColor *)background3 {
|
|
return self.pageStyle == 1 ? customColor : %orig;
|
|
}
|
|
- (UIColor *)brandBackgroundSolid {
|
|
return self.pageStyle == 1 ? customColor : %orig;
|
|
}
|
|
- (UIColor *)brandBackgroundPrimary {
|
|
return self.pageStyle == 1 ? customColor : %orig;
|
|
}
|
|
- (UIColor *)brandBackgroundSecondary {
|
|
return self.pageStyle == 1 ? [customColor colorWithAlphaComponent:0.9] : %orig;
|
|
}
|
|
- (UIColor *)raisedBackground {
|
|
return self.pageStyle == 1 ? customColor : %orig;
|
|
}
|
|
- (UIColor *)staticBrandBlack {
|
|
return self.pageStyle == 1 ? customColor : %orig;
|
|
}
|
|
- (UIColor *)generalBackgroundA {
|
|
return self.pageStyle == 1 ? customColor : %orig;
|
|
}
|
|
- (UIColor *)generalBackgroundB {
|
|
return self.pageStyle == 1 ? customColor : %orig;
|
|
}
|
|
- (UIColor *)baseBackground {
|
|
return self.pageStyle == 1 ? customColor : %orig;
|
|
}
|
|
- (UIColor *)menuBackground {
|
|
return self.pageStyle == 1 ? customColor : %orig;
|
|
}
|
|
%end
|
|
%hook YTAsyncCollectionView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
if ([self.nextResponder isKindOfClass:NSClassFromString(@"YTRelatedVideosCollectionViewController")]) {
|
|
color = [UIColor clearColor];
|
|
} else if ([self.nextResponder isKindOfClass:NSClassFromString(@"YTFullscreenMetadataHighlightsCollectionViewController")]) {
|
|
color = [UIColor clearColor];
|
|
} else {
|
|
return isDarkMode() ? %orig(customColor) : %orig;
|
|
}
|
|
%orig;
|
|
}
|
|
- (UIColor *)darkBackgroundColor {
|
|
return isDarkMode() ? customColor : %orig;
|
|
}
|
|
- (void)setDarkBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig(customColor) : %orig;
|
|
}
|
|
- (void)layoutSubviews {
|
|
%orig();
|
|
if ([self.nextResponder isKindOfClass:NSClassFromString(@"YTWatchNextResultsViewController")]) {
|
|
if (isDarkMode()) {
|
|
self.subviews[0].subviews[0].backgroundColor = customColor;
|
|
}
|
|
}
|
|
}
|
|
%end
|
|
|
|
// Hide separators
|
|
%hook YTCollectionSeparatorView
|
|
- (void)setHidden:(BOOL)arg1 {
|
|
%orig(YES);
|
|
}
|
|
%end
|
|
|
|
%hook ASScrollView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig(customColor) : %orig;
|
|
}
|
|
%end
|
|
|
|
%hook YTPivotBarView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig(customColor) : %orig;
|
|
}
|
|
%end
|
|
%hook YTHeaderView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig(customColor) : %orig;
|
|
}
|
|
%end
|
|
%hook YTSubheaderContainerView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig(customColor) : %orig;
|
|
}
|
|
%end
|
|
%hook YTAppView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig(customColor) : %orig;
|
|
}
|
|
%end
|
|
%hook YTCollectionView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig(customColor) : %orig;
|
|
}
|
|
%end
|
|
%hook YTChannelListSubMenuView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig(customColor) : %orig;
|
|
}
|
|
%end
|
|
%hook YTSettingsCell
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig(customColor) : %orig;
|
|
}
|
|
%end
|
|
%hook YTSlideForActionsView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig(customColor) : %orig;
|
|
}
|
|
%end
|
|
%hook YTPageView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig(customColor) : %orig;
|
|
}
|
|
%end
|
|
%hook YTWatchView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig(customColor) : %orig;
|
|
}
|
|
%end
|
|
%hook YTPlaylistMiniBarView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig(customColor) : %orig;
|
|
}
|
|
%end
|
|
%hook YTEngagementPanelView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig(customColor) : %orig;
|
|
}
|
|
%end
|
|
%hook YTEngagementPanelHeaderView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig(customColor) : %orig;
|
|
}
|
|
%end
|
|
%hook YTPlaylistPanelControlsView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig(customColor) : %orig;
|
|
}
|
|
%end
|
|
%hook YTHorizontalCardListView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig(customColor) : %orig;
|
|
}
|
|
%end
|
|
%hook YTWatchMiniBarView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig(customColor) : %orig;
|
|
}
|
|
%end
|
|
%hook YTCreateCommentAccessoryView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig(customColor) : %orig;
|
|
}
|
|
%end
|
|
%hook YTCreateCommentTextView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig(customColor) : %orig;
|
|
}
|
|
%end
|
|
%hook YTSearchView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig(customColor) : %orig;
|
|
}
|
|
%end
|
|
%hook YTSearchBoxView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig(customColor) : %orig;
|
|
}
|
|
%end
|
|
%hook YTTabTitlesView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig(customColor) : %orig;
|
|
}
|
|
%end
|
|
%hook YTPrivacyTosFooterView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig(customColor) : %orig;
|
|
}
|
|
%end
|
|
%hook YTOfflineStorageUsageView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig(customColor) : %orig;
|
|
}
|
|
%end
|
|
%hook YTInlineSignInView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig(customColor) : %orig;
|
|
}
|
|
%end
|
|
%hook YTFeedChannelFilterHeaderView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig(customColor) : %orig;
|
|
}
|
|
%end
|
|
%hook YCHLiveChatView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig(customColor) : %orig;
|
|
}
|
|
%end
|
|
%hook YCHLiveChatActionPanelView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig(customColor) : %orig;
|
|
}
|
|
%end
|
|
%hook YTEmojiTextView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig(customColor) : %orig;
|
|
}
|
|
%end
|
|
%hook YTTopAlignedView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig(customColor) : %orig;
|
|
}
|
|
- (void)layoutSubviews {
|
|
%orig();
|
|
if (isDarkMode()) {
|
|
MSHookIvar<YTTopAlignedView *>(self, "_contentView").backgroundColor = customColor;
|
|
}
|
|
}
|
|
%end
|
|
%hook GOODialogView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig(customColor) : %orig;
|
|
}
|
|
%end
|
|
%hook YTNavigationBar
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig(customColor) : %orig;
|
|
}
|
|
- (void)setBarTintColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig(customColor) : %orig;
|
|
}
|
|
%end
|
|
%hook YTChannelMobileHeaderView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig(customColor) : %orig;
|
|
}
|
|
%end
|
|
%hook YTChannelSubMenuView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig(customColor) : %orig;
|
|
}
|
|
%end
|
|
%hook YTWrapperSplitView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig(customColor) : %orig;
|
|
}
|
|
%end
|
|
%hook YTReelShelfCell
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig(customColor) : %orig;
|
|
}
|
|
%end
|
|
%hook YTReelShelfItemView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig(customColor) : %orig;
|
|
}
|
|
%end
|
|
%hook YTReelShelfView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig(customColor) : %orig;
|
|
}
|
|
%end
|
|
%hook YTCommentView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig(customColor) : %orig;
|
|
}
|
|
%end
|
|
%hook YTChannelListSubMenuAvatarView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig(customColor) : %orig;
|
|
}
|
|
%end
|
|
%hook YTSearchBarView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig(customColor) : %orig;
|
|
}
|
|
%end
|
|
%hook YTDialogContainerScrollView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig(customColor) : %orig;
|
|
}
|
|
%end
|
|
%hook YTShareTitleView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig(customColor) : %orig;
|
|
}
|
|
%end
|
|
%hook YTShareBusyView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig(customColor) : %orig;
|
|
}
|
|
%end
|
|
%hook YTELMView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig(customColor) : %orig;
|
|
}
|
|
%end
|
|
%hook YTActionSheetHeaderView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig(customColor) : %orig;
|
|
}
|
|
%end
|
|
%hook YTShareMainView
|
|
- (void)layoutSubviews {
|
|
%orig();
|
|
if (isDarkMode()) {
|
|
MSHookIvar<YTQTMButton *>(self, "_cancelButton").backgroundColor = customColor;
|
|
MSHookIvar<UIControl *>(self, "_safeArea").backgroundColor = customColor;
|
|
}
|
|
}
|
|
%end
|
|
%hook _ASDisplayView
|
|
- (void)layoutSubviews {
|
|
%orig;
|
|
if (isDarkMode()) {
|
|
UIResponder *responder = [self nextResponder];
|
|
while (responder != nil) {
|
|
if ([responder isKindOfClass:NSClassFromString(@"YTActionSheetDialogViewController")]) {
|
|
self.backgroundColor = customColor;
|
|
}
|
|
if ([responder isKindOfClass:NSClassFromString(@"YTPanelLoadingStrategyViewController")]) {
|
|
self.backgroundColor = customColor;
|
|
}
|
|
if ([responder isKindOfClass:NSClassFromString(@"YTTabHeaderElementsViewController")]) {
|
|
self.backgroundColor = customColor;
|
|
}
|
|
if ([responder isKindOfClass:NSClassFromString(@"YTEditSheetControllerElementsContentViewController")]) {
|
|
self.backgroundColor = customColor;
|
|
}
|
|
responder = [responder nextResponder];
|
|
}
|
|
}
|
|
}
|
|
- (void)didMoveToWindow {
|
|
%orig;
|
|
if (isDarkMode()) {
|
|
if ([self.nextResponder isKindOfClass:%c(ASScrollView)]) { self.backgroundColor = [UIColor clearColor]; }
|
|
if ([self.accessibilityIdentifier isEqualToString:@"eml.cvr"]) { self.backgroundColor = customColor; }
|
|
if ([self.accessibilityIdentifier isEqualToString:@"rich_header"]) { self.backgroundColor = customColor; }
|
|
if ([self.accessibilityIdentifier isEqualToString:@"id.ui.comment_cell"]) { self.backgroundColor = customColor; }
|
|
if ([self.accessibilityIdentifier isEqualToString:@"id.ui.cancel.button"]) { self.superview.backgroundColor = [UIColor clearColor]; }
|
|
if ([self.accessibilityIdentifier isEqualToString:@"id.elements.components.comment_composer"]) { self.backgroundColor = customColor; }
|
|
if ([self.accessibilityIdentifier isEqualToString:@"id.elements.components.filter_chip_bar"]) { self.backgroundColor = customColor; }
|
|
if ([self.accessibilityIdentifier isEqualToString:@"id.elements.components.video_list_entry"]) { self.backgroundColor = customColor; }
|
|
if ([self.accessibilityIdentifier isEqualToString:@"id.comment.guidelines_text"]) { self.superview.backgroundColor = customColor; }
|
|
if ([self.accessibilityIdentifier isEqualToString:@"id.comment.channel_guidelines_bottom_sheet_container"]) { self.backgroundColor = customColor; }
|
|
if ([self.accessibilityIdentifier isEqualToString:@"id.comment.channel_guidelines_entry_banner_container"]) { self.backgroundColor = customColor; }
|
|
if ([self.accessibilityIdentifier isEqualToString:@"id.comment.comment_group_detail_container"]) { self.backgroundColor = [UIColor clearColor]; }
|
|
}
|
|
}
|
|
%end
|
|
%hook YTCinematicContainerView
|
|
- (void)setHidden:(BOOL)arg1 {
|
|
%orig(YES);
|
|
}
|
|
%end
|
|
%end
|
|
|
|
// OLED dark mode by @BandarHL and modified by @arichorn
|
|
/*
|
|
%group gOLED
|
|
%hook YTCommonColorPalette
|
|
- (UIColor *)background1 {
|
|
return self.pageStyle == 1 ? [UIColor blackColor] : %orig;
|
|
}
|
|
- (UIColor *)background2 {
|
|
return self.pageStyle == 1 ? [UIColor blackColor] : %orig;
|
|
}
|
|
- (UIColor *)background3 {
|
|
return self.pageStyle == 1 ? [UIColor blackColor] : %orig;
|
|
}
|
|
- (UIColor *)brandBackgroundSolid {
|
|
return self.pageStyle == 1 ? [UIColor blackColor] : %orig;
|
|
}
|
|
- (UIColor *)brandBackgroundPrimary {
|
|
return self.pageStyle == 1 ? [UIColor blackColor] : %orig;
|
|
}
|
|
- (UIColor *)brandBackgroundSecondary {
|
|
return self.pageStyle == 1 ? [[UIColor blackColor] colorWithAlphaComponent:0.9] : %orig;
|
|
}
|
|
- (UIColor *)raisedBackground {
|
|
return self.pageStyle == 1 ? [UIColor blackColor] : %orig;
|
|
}
|
|
- (UIColor *)staticBrandBlack {
|
|
return self.pageStyle == 1 ? [UIColor blackColor] : %orig;
|
|
}
|
|
- (UIColor *)generalBackgroundA {
|
|
return self.pageStyle == 1 ? [UIColor blackColor] : %orig;
|
|
}
|
|
- (UIColor *)generalBackgroundB {
|
|
return self.pageStyle == 1 ? [UIColor blackColor] : %orig;
|
|
}
|
|
- (UIColor *)baseBackground {
|
|
return self.pageStyle == 1 ? [UIColor blackColor] : %orig;
|
|
}
|
|
- (UIColor *)menuBackground {
|
|
return self.pageStyle == 1 ? [UIColor blackColor] : %orig;
|
|
}
|
|
%end
|
|
%hook SponsorBlockSettingsController
|
|
- (void)viewDidLoad {
|
|
if (self.traitCollection.userInterfaceStyle == UIUserInterfaceStyleDark) {
|
|
%orig;
|
|
self.tableView.backgroundColor = [UIColor blackColor];
|
|
} else { return %orig; }
|
|
}
|
|
%end
|
|
%hook SponsorBlockViewController
|
|
- (void)viewDidLoad {
|
|
if (self.traitCollection.userInterfaceStyle == UIUserInterfaceStyleDark) {
|
|
%orig;
|
|
self.view.backgroundColor = [UIColor blackColor];
|
|
} else { return %orig; }
|
|
}
|
|
%end
|
|
%hook YTAsyncCollectionView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
if ([self.nextResponder isKindOfClass:NSClassFromString(@"YTRelatedVideosCollectionViewController")]) {
|
|
color = [UIColor clearColor];
|
|
} else if ([self.nextResponder isKindOfClass:NSClassFromString(@"YTFullscreenMetadataHighlightsCollectionViewController")]) {
|
|
color = [UIColor clearColor];
|
|
} else {
|
|
return isDarkMode() ? %orig([UIColor blackColor]) : %orig;
|
|
}
|
|
%orig;
|
|
}
|
|
- (UIColor *)darkBackgroundColor {
|
|
return isDarkMode() ? [UIColor blackColor] : %orig;
|
|
}
|
|
- (void)setDarkBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig([UIColor blackColor]) : %orig;
|
|
}
|
|
- (void)layoutSubviews {
|
|
%orig();
|
|
if ([self.nextResponder isKindOfClass:NSClassFromString(@"YTWatchNextResultsViewController")]) {
|
|
if (isDarkMode()) {
|
|
self.subviews[0].subviews[0].backgroundColor = [UIColor blackColor];
|
|
}
|
|
}
|
|
}
|
|
%end
|
|
|
|
// Hide separators
|
|
%hook YTCollectionSeparatorView
|
|
- (void)setHidden:(BOOL)arg1 {
|
|
%orig(YES);
|
|
}
|
|
%end
|
|
|
|
%hook YTPivotBarView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig([UIColor blackColor]) : %orig;
|
|
}
|
|
%end
|
|
|
|
%hook ASScrollView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig([UIColor blackColor]) : %orig;
|
|
}
|
|
%end
|
|
|
|
%hook YTHeaderView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig([UIColor blackColor]) : %orig;
|
|
}
|
|
%end
|
|
%hook YTSubheaderContainerView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig([UIColor blackColor]) : %orig;
|
|
}
|
|
%end
|
|
%hook YTAppView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig([UIColor blackColor]) : %orig;
|
|
}
|
|
%end
|
|
%hook YTCollectionView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig([UIColor blackColor]) : %orig;
|
|
}
|
|
%end
|
|
%hook YTChannelListSubMenuView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig([UIColor blackColor]) : %orig;
|
|
}
|
|
%end
|
|
%hook YTSettingsCell
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig([UIColor blackColor]) : %orig;
|
|
}
|
|
%end
|
|
%hook YTSlideForActionsView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig([UIColor blackColor]) : %orig;
|
|
}
|
|
%end
|
|
%hook YTPageView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig([UIColor blackColor]) : %orig;
|
|
}
|
|
%end
|
|
%hook YTWatchView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig([UIColor blackColor]) : %orig;
|
|
}
|
|
%end
|
|
%hook YTPlaylistMiniBarView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig([UIColor blackColor]) : %orig;
|
|
}
|
|
%end
|
|
%hook YTEngagementPanelView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig([UIColor blackColor]) : %orig;
|
|
}
|
|
%end
|
|
%hook YTEngagementPanelHeaderView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig([UIColor blackColor]) : %orig;
|
|
}
|
|
%end
|
|
%hook YTPlaylistPanelControlsView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig([UIColor blackColor]) : %orig;
|
|
}
|
|
%end
|
|
%hook YTHorizontalCardListView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig([UIColor blackColor]) : %orig;
|
|
}
|
|
%end
|
|
%hook YTWatchMiniBarView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig([UIColor blackColor]) : %orig;
|
|
}
|
|
%end
|
|
%hook YTCreateCommentAccessoryView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig([UIColor blackColor]) : %orig;
|
|
}
|
|
%end
|
|
%hook YTCreateCommentTextView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig([UIColor blackColor]) : %orig;
|
|
}
|
|
%end
|
|
%hook YTSearchView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig([UIColor blackColor]) : %orig;
|
|
}
|
|
%end
|
|
%hook YTSearchBoxView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig([UIColor blackColor]) : %orig;
|
|
}
|
|
%end
|
|
%hook YTTabTitlesView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig([UIColor blackColor]) : %orig;
|
|
}
|
|
%end
|
|
%hook YTPrivacyTosFooterView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig([UIColor blackColor]) : %orig;
|
|
}
|
|
%end
|
|
%hook YTOfflineStorageUsageView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig([UIColor blackColor]) : %orig;
|
|
}
|
|
%end
|
|
%hook YTInlineSignInView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig([UIColor blackColor]) : %orig;
|
|
}
|
|
%end
|
|
%hook YTFeedChannelFilterHeaderView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig([UIColor blackColor]) : %orig;
|
|
}
|
|
%end
|
|
%hook YCHLiveChatView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig([UIColor blackColor]) : %orig;
|
|
}
|
|
%end
|
|
%hook YCHLiveChatActionPanelView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig([UIColor blackColor]) : %orig;
|
|
}
|
|
%end
|
|
%hook YTEmojiTextView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig([UIColor blackColor]) : %orig;
|
|
}
|
|
%end
|
|
%hook YTTopAlignedView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig([UIColor blackColor]) : %orig;
|
|
}
|
|
- (void)layoutSubviews {
|
|
%orig();
|
|
if (isDarkMode()) {
|
|
MSHookIvar<YTTopAlignedView *>(self, "_contentView").backgroundColor = [UIColor blackColor];
|
|
}
|
|
}
|
|
%end
|
|
%hook GOODialogView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig([UIColor blackColor]) : %orig;
|
|
}
|
|
%end
|
|
%hook YTNavigationBar
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig([UIColor blackColor]) : %orig;
|
|
}
|
|
- (void)setBarTintColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig([UIColor blackColor]) : %orig;
|
|
}
|
|
%end
|
|
%hook YTChannelMobileHeaderView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig([UIColor blackColor]) : %orig;
|
|
}
|
|
%end
|
|
%hook YTChannelSubMenuView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig([UIColor blackColor]) : %orig;
|
|
}
|
|
%end
|
|
%hook YTWrapperSplitView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig([UIColor blackColor]) : %orig;
|
|
}
|
|
%end
|
|
%hook YTReelShelfCell
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig([UIColor blackColor]) : %orig;
|
|
}
|
|
%end
|
|
%hook YTReelShelfItemView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig([UIColor blackColor]) : %orig;
|
|
}
|
|
%end
|
|
%hook YTReelShelfView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig([UIColor blackColor]) : %orig;
|
|
}
|
|
%end
|
|
%hook YTCommentView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig([UIColor blackColor]) : %orig;
|
|
}
|
|
%end
|
|
%hook YTChannelListSubMenuAvatarView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig([UIColor blackColor]) : %orig;
|
|
}
|
|
%end
|
|
%hook YTSearchBarView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig([UIColor blackColor]) : %orig;
|
|
}
|
|
%end
|
|
%hook YTDialogContainerScrollView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig([UIColor blackColor]) : %orig;
|
|
}
|
|
%end
|
|
%hook YTShareTitleView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig([UIColor blackColor]) : %orig;
|
|
}
|
|
%end
|
|
%hook YTShareBusyView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig([UIColor blackColor]) : %orig;
|
|
}
|
|
%end
|
|
%hook YTELMView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig([UIColor blackColor]) : %orig;
|
|
}
|
|
%end
|
|
%hook YTActionSheetHeaderView
|
|
- (void)setBackgroundColor:(UIColor *)color {
|
|
return isDarkMode() ? %orig([UIColor blackColor]) : %orig;
|
|
}
|
|
%end
|
|
%hook YTShareMainView
|
|
- (void)layoutSubviews {
|
|
%orig();
|
|
if (isDarkMode()) {
|
|
MSHookIvar<YTQTMButton *>(self, "_cancelButton").backgroundColor = [UIColor blackColor];
|
|
MSHookIvar<UIControl *>(self, "_safeArea").backgroundColor = [UIColor blackColor];
|
|
}
|
|
}
|
|
%end
|
|
%hook _ASDisplayView
|
|
- (void)layoutSubviews {
|
|
%orig;
|
|
if (isDarkMode()) {
|
|
UIResponder *responder = [self nextResponder];
|
|
while (responder != nil) {
|
|
if ([responder isKindOfClass:NSClassFromString(@"YTActionSheetDialogViewController")]) {
|
|
self.backgroundColor = [UIColor blackColor];
|
|
}
|
|
if ([responder isKindOfClass:NSClassFromString(@"YTPanelLoadingStrategyViewController")]) {
|
|
self.backgroundColor = [UIColor blackColor];
|
|
}
|
|
if ([responder isKindOfClass:NSClassFromString(@"YTTabHeaderElementsViewController")]) {
|
|
self.backgroundColor = [UIColor blackColor];
|
|
}
|
|
if ([responder isKindOfClass:NSClassFromString(@"YTEditSheetControllerElementsContentViewController")]) {
|
|
self.backgroundColor = [UIColor blackColor];
|
|
}
|
|
responder = [responder nextResponder];
|
|
}
|
|
}
|
|
}
|
|
- (void)didMoveToWindow {
|
|
%orig;
|
|
if (isDarkMode()) {
|
|
if ([self.nextResponder isKindOfClass:%c(ASScrollView)]) { self.backgroundColor = [UIColor clearColor]; }
|
|
if ([self.accessibilityIdentifier isEqualToString:@"eml.cvr"]) { self.backgroundColor = [UIColor blackColor]; }
|
|
if ([self.accessibilityIdentifier isEqualToString:@"rich_header"]) { self.backgroundColor = [UIColor blackColor]; }
|
|
if ([self.accessibilityIdentifier isEqualToString:@"id.ui.comment_cell"]) { self.backgroundColor = [UIColor blackColor]; }
|
|
if ([self.accessibilityIdentifier isEqualToString:@"id.ui.cancel.button"]) { self.superview.backgroundColor = [UIColor clearColor]; }
|
|
if ([self.accessibilityIdentifier isEqualToString:@"id.elements.components.comment_composer"]) { self.backgroundColor = [UIColor blackColor]; }
|
|
if ([self.accessibilityIdentifier isEqualToString:@"id.elements.components.filter_chip_bar"]) { self.backgroundColor = [UIColor blackColor]; }
|
|
if ([self.accessibilityIdentifier isEqualToString:@"id.elements.components.video_list_entry"]) { self.backgroundColor = [UIColor blackColor]; }
|
|
if ([self.accessibilityIdentifier isEqualToString:@"id.comment.guidelines_text"]) { self.superview.backgroundColor = [UIColor blackColor]; }
|
|
if ([self.accessibilityIdentifier isEqualToString:@"id.comment.channel_guidelines_bottom_sheet_container"]) { self.backgroundColor = [UIColor blackColor]; }
|
|
if ([self.accessibilityIdentifier isEqualToString:@"id.comment.channel_guidelines_entry_banner_container"]) { self.backgroundColor = [UIColor blackColor]; }
|
|
if ([self.accessibilityIdentifier isEqualToString:@"id.comment.comment_group_detail_container"]) { self.backgroundColor = [UIColor clearColor]; }
|
|
}
|
|
}
|
|
%end
|
|
%hook YTCinematicContainerView
|
|
- (void)setHidden:(BOOL)arg1 {
|
|
%orig(YES);
|
|
}
|
|
%end
|
|
%end
|
|
*/
|
|
|
|
// OLED keyboard by @ichitaso <3 - http://gist.github.com/ichitaso/935100fd53a26f18a9060f7195a1be0e
|
|
%group gOLEDKB
|
|
%hook TUIEmojiSearchView
|
|
- (void)didMoveToWindow {
|
|
%orig;
|
|
self.backgroundColor = [UIColor blackColor];
|
|
}
|
|
%end
|
|
|
|
%hook UIPredictionViewController
|
|
- (void)loadView {
|
|
%orig;
|
|
[self.view setBackgroundColor:[UIColor blackColor]];
|
|
}
|
|
%end
|
|
|
|
%hook UICandidateViewController
|
|
- (void)loadView {
|
|
%orig;
|
|
[self.view setBackgroundColor:[UIColor blackColor]];
|
|
}
|
|
%end
|
|
|
|
%hook UIKeyboardDockView
|
|
- (void)didMoveToWindow {
|
|
%orig;
|
|
self.backgroundColor = [UIColor blackColor];
|
|
}
|
|
%end
|
|
|
|
%hook UIKeyboardLayoutStar
|
|
- (void)didMoveToWindow {
|
|
%orig;
|
|
self.backgroundColor = [UIColor blackColor];
|
|
}
|
|
%end
|
|
|
|
%hook UIKBRenderConfig // Prediction text color
|
|
- (void)setLightKeyboard:(BOOL)arg1 { %orig(NO); }
|
|
%end
|
|
%end
|
|
|
|
# pragma mark - ctor
|
|
%ctor {
|
|
%init;
|
|
if (IsEnabled(@"oledKeyBoard_enabled")) {
|
|
%init(gOLEDKB);
|
|
}
|
|
if (oldDarkTheme()) {
|
|
%init(gOldDarkTheme);
|
|
}
|
|
}
|