Compare commits
39
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fa87084000 | ||
|
|
0b30adb3f4 | ||
|
|
349a49eb93 | ||
|
|
57ed260959 | ||
|
|
9b03cac475 | ||
|
|
0a6179a4b7 | ||
|
|
9e37aaed11 | ||
|
|
691d7d3078 | ||
|
|
915bb7efb3 | ||
|
|
d8151344ae | ||
|
|
163dac3e81 | ||
|
|
3383edbb05 | ||
|
|
c2efac035c | ||
|
|
0fad665452 | ||
|
|
1b554d0994 | ||
|
|
87575119b8 | ||
|
|
90468a2b69 | ||
|
|
29c7f279ae | ||
|
|
e870be2f52 | ||
|
|
772cc2af2e | ||
|
|
9e3065fac6 | ||
|
|
5db4a43777 | ||
|
|
7ab7b499d7 | ||
|
|
c922424d53 | ||
|
|
f1b540af8b | ||
|
|
9afaddb2e0 | ||
|
|
b7f6c21353 | ||
|
|
8e4293f7a1 | ||
|
|
573dfa1d67 | ||
|
|
5d2cc93f56 | ||
|
|
42959eb9fb | ||
|
|
aa139dffa8 | ||
|
|
6520ae2d53 | ||
|
|
4bfb78634f | ||
|
|
78fbf1dc6b | ||
|
|
3dcf4f290f | ||
|
|
85ddb15d38 | ||
|
|
5948dac548 | ||
|
|
070647ecd5 |
@@ -0,0 +1,112 @@
|
||||
# Original idea by @ISnackable. Thanks to him for handling the hardest parts!
|
||||
# https://github.com/ISnackable/CercubePlus/blob/main/.github/workflows/Build.yml
|
||||
|
||||
name: Build uYouPlus Artifact
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
uyou_version:
|
||||
description: "The version of uYou"
|
||||
default: "2.1"
|
||||
required: false
|
||||
type: string
|
||||
decrypted_youtube_url:
|
||||
description: "The direct URL to the decrypted YouTube ipa"
|
||||
default: ""
|
||||
required: true
|
||||
type: string
|
||||
youtube_version:
|
||||
description: "The version of YouTube"
|
||||
default: ""
|
||||
required: true
|
||||
type: string
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
build:
|
||||
name: Build uYouPlus
|
||||
runs-on: macos-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout Main
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
path: main
|
||||
submodules: recursive
|
||||
|
||||
- name: Install Dependencies
|
||||
run: brew install ldid dpkg
|
||||
|
||||
- name: Setup Theos
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
repository: theos/theos
|
||||
ref: master
|
||||
path: theos
|
||||
submodules: recursive
|
||||
|
||||
- name: Download iOS 15 SDK
|
||||
run: |
|
||||
curl -LO https://github.com/chrisharper22/sdks/archive/main.zip
|
||||
TMP=$(mktemp -d)
|
||||
unzip -qq main.zip -d $TMP
|
||||
mv $TMP/sdks-main/*.sdk $THEOS/sdks
|
||||
rm -r main.zip $TMP
|
||||
env:
|
||||
THEOS: ${{ github.workspace }}/theos
|
||||
|
||||
- name: Setup Theos Jailed
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
repository: kabiroberai/theos-jailed
|
||||
ref: master
|
||||
path: theos-jailed
|
||||
submodules: recursive
|
||||
|
||||
- name: Install Theos Jailed
|
||||
run: |
|
||||
./theos-jailed/install
|
||||
env:
|
||||
THEOS: ${{ github.workspace }}/theos
|
||||
|
||||
- name: Download Dylibs
|
||||
run: |
|
||||
curl "https://raw.githubusercontent.com/Muirey03/RemoteLog/master/RemoteLog.h" --output "$THEOS/include/RemoteLog.h"
|
||||
curl "https://miro92.com/repo/debs/com.miro.uyou_${{ env.UYOU_VERSION }}_iphoneos-arm.deb" --output "./main/Tweaks/uYou/com.miro.uyou_${{ env.UYOU_VERSION }}_iphoneos-arm.deb"
|
||||
wget "$YOUTUBE_URL" --no-verbose -O ./main/YouTube.ipa
|
||||
dpkg-deb -x "./main/Tweaks/uYou/com.miro.uyou_${{ env.UYOU_VERSION }}_iphoneos-arm.deb" ./main/Tweaks/uYou/
|
||||
unzip -q ./main/YouTube.ipa -d ./main/tmp
|
||||
rm -rf ./main/tmp/Payload/YouTube.app/PlugIns/*
|
||||
cp -R ./main/Extensions/*.appex ./main/tmp/Payload/YouTube.app/PlugIns
|
||||
|
||||
env:
|
||||
THEOS: ${{ github.workspace }}/theos
|
||||
UYOU_VERSION: ${{ github.event.inputs.uyou_version }}
|
||||
YOUTUBE_URL: ${{ github.event.inputs.decrypted_youtube_url }}
|
||||
|
||||
- name: Fix compiling && Build Package
|
||||
id: build_package
|
||||
run: |
|
||||
cd ${{ github.workspace }}/main
|
||||
(cd ${{ github.workspace }}/main/Tweaks/YouPiP && sed -i '' "14s#.*#YouPiP_FRAMEWORKS = AVKit AVFoundation UIKit#g" ./Makefile)
|
||||
make package FINALPACKAGE=1
|
||||
(mv "packages/$(ls -t packages | head -n1)" "packages/uYouPlus_${{ env.YOUTUBE_VERSION }}_${{ env.UYOU_VERSION }}.ipa")
|
||||
echo "::set-output name=package::$(ls -t packages | head -n1)"
|
||||
env:
|
||||
THEOS: ${{ github.workspace }}/theos
|
||||
UYOU_VERSION: ${{ github.event.inputs.uyou_version }}
|
||||
YOUTUBE_VERSION: ${{ github.event.inputs.youtube_version }}
|
||||
|
||||
- name: Upload Artifact
|
||||
uses: actions/upload-artifact@v3
|
||||
env:
|
||||
UYOU_VERSION: ${{ github.event.inputs.uyou_version }}
|
||||
YOUTUBE_VERSION: ${{ github.event.inputs.youtube_version }}
|
||||
with:
|
||||
name: uYouPlus_${{ env.YOUTUBE_VERSION }}_${{ env.UYOU_VERSION }}
|
||||
path: ${{ github.workspace }}/main/packages/${{ steps.build_package.outputs.package }}
|
||||
if-no-files-found: error
|
||||
@@ -0,0 +1,129 @@
|
||||
# Original idea by @ISnackable. Thanks to him for handling the hardest parts!
|
||||
# https://github.com/ISnackable/CercubePlus/blob/main/.github/workflows/Build.yml
|
||||
# This workflow is not for you. Please use the “Build uYouPlus Artifact” workflow!
|
||||
|
||||
name: Build and Release uYouPlus (draft)
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
uyou_version:
|
||||
description: "The version of uYou"
|
||||
default: "2.1"
|
||||
required: false
|
||||
type: string
|
||||
decrypted_youtube_url:
|
||||
description: "The direct URL to the decrypted YouTube ipa"
|
||||
default: ""
|
||||
required: true
|
||||
type: string
|
||||
youtube_version:
|
||||
description: "The version of YouTube"
|
||||
default: ""
|
||||
required: true
|
||||
type: string
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
build:
|
||||
name: Build uYouPlus
|
||||
runs-on: macos-latest
|
||||
|
||||
steps:
|
||||
- name: Set Env
|
||||
run: echo "workspace=$GITHUB_WORKSPACE" >> $GITHUB_ENV
|
||||
|
||||
- name: Checkout Main
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
path: main
|
||||
submodules: recursive
|
||||
|
||||
- name: Install Dependencies
|
||||
run: brew install ldid dpkg
|
||||
|
||||
- name: Setup Theos
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
repository: theos/theos
|
||||
ref: master
|
||||
path: theos
|
||||
submodules: recursive
|
||||
|
||||
- name: Download iOS 15 SDK
|
||||
run: |
|
||||
curl -LO https://github.com/chrisharper22/sdks/archive/main.zip
|
||||
TMP=$(mktemp -d)
|
||||
unzip -qq main.zip -d $TMP
|
||||
mv $TMP/sdks-main/*.sdk $THEOS/sdks
|
||||
rm -r main.zip $TMP
|
||||
env:
|
||||
THEOS: ${{ env.workspace }}/theos
|
||||
|
||||
- name: Setup Theos Jailed
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
repository: kabiroberai/theos-jailed
|
||||
ref: master
|
||||
path: theos-jailed
|
||||
submodules: recursive
|
||||
|
||||
- name: Install Theos Jailed
|
||||
run: |
|
||||
./theos-jailed/install
|
||||
env:
|
||||
THEOS: ${{ env.workspace }}/theos
|
||||
|
||||
- name: Download uYou && YouTube ipa
|
||||
run: |
|
||||
curl "https://raw.githubusercontent.com/Muirey03/RemoteLog/master/RemoteLog.h" --output "$THEOS/include/RemoteLog.h"
|
||||
curl "https://miro92.com/repo/debs/com.miro.uyou_${{ env.UYOU_VERSION }}_iphoneos-arm.deb" --output "./main/Tweaks/uYou/com.miro.uyou_${{ env.UYOU_VERSION }}_iphoneos-arm.deb"
|
||||
wget "$YOUTUBE_URL" --no-verbose -O ./main/YouTube.ipa
|
||||
dpkg-deb -x "./main/Tweaks/uYou/com.miro.uyou_${{ env.UYOU_VERSION }}_iphoneos-arm.deb" ./main/Tweaks/uYou/
|
||||
unzip -q ./main/YouTube.ipa -d ./main/tmp
|
||||
rm -rf ./main/tmp/Payload/YouTube.app/PlugIns/*
|
||||
cp -R ./main/Extensions/*.appex ./main/tmp/Payload/YouTube.app/PlugIns
|
||||
|
||||
env:
|
||||
THEOS: ${{ env.workspace }}/theos
|
||||
UYOU_VERSION: ${{ github.event.inputs.uyou_version }}
|
||||
YOUTUBE_URL: ${{ github.event.inputs.decrypted_youtube_url }}
|
||||
YOUTUBE_VERSION: ${{ github.event.inputs.youtube_version }}
|
||||
|
||||
- name: Fix compiling && Build Package
|
||||
id: build_package
|
||||
run: |
|
||||
cd ${{ env.workspace }}/main
|
||||
(cd ${{ env.workspace }}/main/Tweaks/YouPiP && sed -i '' "14s#.*#YouPiP_FRAMEWORKS = AVKit AVFoundation UIKit#g" ./Makefile)
|
||||
make package FINALPACKAGE=1
|
||||
echo "::set-output name=package::$(ls -t packages | head -n1)"
|
||||
env:
|
||||
THEOS: ${{ env.workspace }}/theos
|
||||
|
||||
- name: Create Release
|
||||
id: create_release
|
||||
uses: actions/create-release@v1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
UYOU_VERSION: ${{ github.event.inputs.uyou_version }}
|
||||
YOUTUBE_VERSION: ${{ github.event.inputs.youtube_version }}
|
||||
with:
|
||||
tag_name: v${{ env.YOUTUBE_VERSION }}-${{ env.UYOU_VERSION }}-(${{ github.run_number }})
|
||||
release_name: v${{ env.YOUTUBE_VERSION }}-${{ env.UYOU_VERSION }}-(${{ github.run_number }})
|
||||
draft: true
|
||||
prerelease: false
|
||||
|
||||
- name: Upload Release Asset
|
||||
uses: actions/upload-release-asset@v1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
UYOU_VERSION: ${{ github.event.inputs.uyou_version }}
|
||||
YOUTUBE_VERSION: ${{ github.event.inputs.youtube_version }}
|
||||
with:
|
||||
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
||||
asset_path: ${{ env.workspace }}/main/packages/${{ steps.build_package.outputs.package }}
|
||||
asset_name: uYouPlus_${{ env.YOUTUBE_VERSION }}_${{ env.UYOU_VERSION }}.ipa
|
||||
asset_content_type: application/vnd.debian.binary-package
|
||||
+4
-4
@@ -1,7 +1,7 @@
|
||||
.theos
|
||||
.DS_Store
|
||||
packages
|
||||
obj
|
||||
tmp
|
||||
packages/
|
||||
tmp/
|
||||
Tweaks/uYou/*
|
||||
!Tweaks/uYou/.gitkeep
|
||||
!Tweaks/uYou/.gitkeep
|
||||
Resources/
|
||||
@@ -1,5 +1,9 @@
|
||||
#import "Tweaks/YouTubeHeader/YTPlayerViewController.h"
|
||||
|
||||
#define LOC(x) [tweakBundle localizedStringForKey:x value:nil table:nil]
|
||||
#define YT_BUNDLE_ID @"com.google.ios.youtube"
|
||||
#define YT_NAME @"YouTube"
|
||||
|
||||
// IAmYouTube
|
||||
@interface SSOConfiguration : NSObject
|
||||
@end
|
||||
@@ -8,10 +12,13 @@
|
||||
@interface YTMainAppControlsOverlayView: UIView
|
||||
@end
|
||||
|
||||
@interface YTPlaylistHeaderViewController : UIViewController
|
||||
@property (nonatomic, strong, readwrite) UIView *downloadsButton;
|
||||
@interface YTTransportControlsButtonView : UIView
|
||||
@end
|
||||
|
||||
// @interface YTPlaylistHeaderViewController : UIViewController
|
||||
// @property (nonatomic, strong, readwrite) UIView *downloadsButton;
|
||||
// @end
|
||||
|
||||
// BigYTMiniPlayer
|
||||
@interface YTMainAppVideoPlayerOverlayView : UIView
|
||||
- (UIViewController *)_viewControllerForAncestor;
|
||||
@@ -38,14 +45,17 @@
|
||||
@interface UIKeyboardDockView : UIView
|
||||
@end
|
||||
|
||||
@interface UICandidateViewController : UIViewController
|
||||
@end
|
||||
|
||||
@interface UIPredictionViewController : UIViewController
|
||||
@interface _ASDisplayView : UIView
|
||||
@end
|
||||
|
||||
@interface SponsorBlockSettingsController : UITableViewController
|
||||
@end
|
||||
|
||||
@interface _ASDisplayView : UIView
|
||||
@interface SponsorBlockViewController : UIViewController
|
||||
@end
|
||||
|
||||
@interface UICandidateViewController : UIViewController
|
||||
@end
|
||||
|
||||
@interface UIPredictionViewController : UIViewController
|
||||
@end
|
||||
@@ -1,6 +1,4 @@
|
||||
uYouPlus_INJECT_DYLIBS = Tweaks/uYou/Library/MobileSubstrate/DynamicLibraries/uYou.dylib .theos/obj/libcolorpicker.dylib .theos/obj/iSponsorBlock.dylib .theos/obj/YTUHD.dylib .theos/obj/YouPiP.dylib .theos/obj/YouTubeDislikesReturn.dylib .theos/obj/YoutubeSpeed.dylib
|
||||
|
||||
TARGET = iphone:clang:latest:12.0
|
||||
TARGET = iphone:clang:latest:13.0
|
||||
uYouPlus_USE_FLEX = 0
|
||||
uYouPlus_USE_FISHHOOK = 0
|
||||
ARCHS = arm64
|
||||
@@ -12,8 +10,10 @@ TWEAK_NAME = uYouPlus
|
||||
DISPLAY_NAME = YouTube
|
||||
BUNDLE_ID = com.google.ios.youtube
|
||||
|
||||
uYouPlus_INJECT_DYLIBS = Tweaks/uYou/Library/MobileSubstrate/DynamicLibraries/uYou.dylib .theos/obj/libcolorpicker.dylib .theos/obj/iSponsorBlock.dylib .theos/obj/YTUHD.dylib .theos/obj/YouPiP.dylib .theos/obj/YouTubeDislikesReturn.dylib .theos/obj/YoutubeSpeed.dylib
|
||||
uYouPlus_FILES = uYouPlus.xm Settings.xm
|
||||
uYouPlus_IPA = ./tmp/Payload/YouTube.app
|
||||
uYouPlus_FRAMEWORKS = UIKit
|
||||
|
||||
include $(THEOS)/makefiles/common.mk
|
||||
include $(THEOS_MAKE_PATH)/tweak.mk
|
||||
@@ -21,11 +21,12 @@ SUBPROJECTS += Tweaks/Alderis Tweaks/iSponsorBlock Tweaks/YTUHD Tweaks/YouPiP Tw
|
||||
include $(THEOS_MAKE_PATH)/aggregate.mk
|
||||
|
||||
before-package::
|
||||
@tput setaf 4 && echo -e "==> \033[1mMoving tweak's bundle to Resources/...\033[0m"
|
||||
@echo -e "==> \033[1mMoving tweak's bundle to Resources/...\033[0m"
|
||||
@mkdir -p Resources/Frameworks/Alderis.framework && find .theos/obj/install/Library/Frameworks/Alderis.framework -maxdepth 1 -type f -exec cp {} Resources/Frameworks/Alderis.framework/ \;
|
||||
@cp -R Tweaks/YouPiP/layout/Library/Application\ Support/YouPiP.bundle Resources/
|
||||
@cp -R Tweaks/iSponsorBlock/layout/Library/Application\ Support/iSponsorBlock.bundle Resources/
|
||||
@cp -R Tweaks/uYou/Library/Application\ Support/uYouBundle.bundle Resources/
|
||||
@tput setaf 5 && echo -e "==> \033[1mChanging the installation path of dylibs...\033[0m"
|
||||
@cp -R lang/uYouPlus.bundle Resources/
|
||||
@echo -e "==> \033[1mChanging the installation path of dylibs...\033[0m"
|
||||
@codesign --remove-signature .theos/obj/iSponsorBlock.dylib && install_name_tool -change /usr/lib/libcolorpicker.dylib @rpath/libcolorpicker.dylib .theos/obj/iSponsorBlock.dylib
|
||||
@codesign --remove-signature .theos/obj/libcolorpicker.dylib && install_name_tool -change /Library/Frameworks/Alderis.framework/Alderis @rpath/Alderis.framework/Alderis .theos/obj/libcolorpicker.dylib
|
||||
|
||||
@@ -78,16 +78,16 @@
|
||||
|
||||
- My official AtlStore repo: https://qnblackcat.github.io/AltStore/
|
||||
|
||||
- [Open in AltStore (v17.22.3-2.1)](https://tinyurl.com/4v5933pu) - It will take a while to install because AltStore needs to download the IPA.
|
||||
- [Open in AltStore (v17.23.6-2.1)](https://tinyurl.com/5upjtvbv) - It will take a while to install because AltStore needs to download the IPA.
|
||||
|
||||
- Version info: _(last update: June 06)_
|
||||
- Version info: _(last update: June 14)_
|
||||
|
||||
<details>
|
||||
<summary>Expand</summary>
|
||||
|
||||
| **Tweaks/App** | **Version** | **Open source** |
|
||||
| :------------: | :----------:| :-------------: |
|
||||
| **YouTube** | 17.22.3 | ✖︎ |
|
||||
| **YouTube** | 17.23.6 | ✖︎ |
|
||||
| [uYou](https://github.com/MiRO92/uYou-for-YouTube) | 2.1 | ✖︎ |
|
||||
| [Open in YouTube](https://github.com/CokePokes/YoutubeExtensions/) | 1.2 | ✖︎ |
|
||||
| **Return YouTube Dislike** | 1.6.5 | [✔︎](https://github.com/PoomSmart/Return-YouTube-Dislikes) |
|
||||
@@ -100,7 +100,7 @@
|
||||
| **YTNoHoverCards** | 0.0.3 | [✔︎](https://github.com/level3tjg/YTNoHoverCards) |
|
||||
| **YTSystemAppearance** | 1.0.0 | [✔︎](https://poomsmart.github.io/repo/depictions/ytsystemappearance.html) |
|
||||
| **YTUHD** | 1.2.7 | [✔︎](https://github.com/PoomSmart/YTUHD) |
|
||||
| **YouPiP** | 1.7.1 | [✔︎](https://github.com/PoomSmart/YouPiP) |
|
||||
| **YouPiP** | 1.7.3 | [✔︎](https://github.com/PoomSmart/YouPiP) |
|
||||
| **IAmYouTube** | 1.2.0 | [✔︎](https://github.com/PoomSmart/IAmYouTube) |
|
||||
| **YTSpeed** | 1.0.1 | [✔︎](https://github.com/Lyvendia/YTSpeed) |
|
||||
| **YTAutoFullScreen** | 1.0.3 | [✔︎](https://github.com/PoomSmart/YTAutoFullScreen/) |
|
||||
|
||||
+27
-23
@@ -1,6 +1,7 @@
|
||||
#import "Tweaks/YouTubeHeader/YTSettingsViewController.h"
|
||||
#import "Tweaks/YouTubeHeader/YTSettingsSectionItem.h"
|
||||
#import "Tweaks/YouTubeHeader/YTSettingsSectionItemManager.h"
|
||||
#import "Header.h"
|
||||
|
||||
@interface YTSettingsSectionItemManager (YouPiP)
|
||||
- (void)updateuYouPlusSectionWithEntry:(id)entry;
|
||||
@@ -8,12 +9,13 @@
|
||||
|
||||
static const NSInteger uYouPlusSection = 500;
|
||||
|
||||
extern NSBundle *uYouPlusBundle();
|
||||
extern BOOL hideHUD();
|
||||
extern BOOL oled();
|
||||
extern BOOL oledKB();
|
||||
extern BOOL autoFullScreen();
|
||||
extern BOOL noHoverCard();
|
||||
extern BOOL ReExplore();
|
||||
extern BOOL hideHoverCard();
|
||||
extern BOOL reExplore();
|
||||
extern BOOL bigYTMiniPlayer();
|
||||
extern BOOL hideCC();
|
||||
extern BOOL hideAutoplaySwitch();
|
||||
@@ -34,10 +36,12 @@ extern BOOL hidePreviousAndNextButton();
|
||||
%end
|
||||
|
||||
%hook YTSettingsSectionItemManager
|
||||
%new - (void)updateuYouPlusSectionWithEntry:(id)entry {
|
||||
%new
|
||||
- (void)updateuYouPlusSectionWithEntry:(id)entry {
|
||||
YTSettingsViewController *delegate = [self valueForKey:@"_dataDelegate"];
|
||||
NSBundle *tweakBundle = uYouPlusBundle();
|
||||
|
||||
YTSettingsSectionItem *hidePreviousAndNextButton = [[%c(YTSettingsSectionItem) alloc] initWithTitle:@"Hide Previous and Next button" titleDescription:@"Hide Previous and Next button in video controls overlay."];
|
||||
YTSettingsSectionItem *hidePreviousAndNextButton = [[%c(YTSettingsSectionItem) alloc] initWithTitle:LOC(@"HIDE_PREVIOUS_AND_NEXT_BUTTON") titleDescription:LOC(@"HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC")];
|
||||
hidePreviousAndNextButton.hasSwitch = YES;
|
||||
hidePreviousAndNextButton.switchVisible = YES;
|
||||
hidePreviousAndNextButton.on = [[NSUserDefaults standardUserDefaults] boolForKey:@"hidePreviousAndNextButton_enabled"];
|
||||
@@ -46,7 +50,7 @@ extern BOOL hidePreviousAndNextButton();
|
||||
return YES;
|
||||
};
|
||||
|
||||
YTSettingsSectionItem *ytMiniPlayer = [[%c(YTSettingsSectionItem) alloc] initWithTitle:@"Enable the Miniplayer for all YouTube videos" titleDescription:@"Kid videos for example."];
|
||||
YTSettingsSectionItem *ytMiniPlayer = [[%c(YTSettingsSectionItem) alloc] initWithTitle:LOC(@"YT_MINIPLAYER") titleDescription:LOC(@"YT_MINIPLAYER_DESC")];
|
||||
ytMiniPlayer.hasSwitch = YES;
|
||||
ytMiniPlayer.switchVisible = YES;
|
||||
ytMiniPlayer.on = [[NSUserDefaults standardUserDefaults] boolForKey:@"ytMiniPlayer_enabled"];
|
||||
@@ -55,7 +59,7 @@ extern BOOL hidePreviousAndNextButton();
|
||||
return YES;
|
||||
};
|
||||
|
||||
YTSettingsSectionItem *castConfirm = [[%c(YTSettingsSectionItem) alloc] initWithTitle:@"Confirm alert before casting (YTCastConfirm)" titleDescription:@"Show a confirm alert before casting to prevent accidentally hijacking TV."];
|
||||
YTSettingsSectionItem *castConfirm = [[%c(YTSettingsSectionItem) alloc] initWithTitle:LOC(@"CAST_CONFIRM") titleDescription:LOC(@"CAST_CONFIRM_DESC")];
|
||||
castConfirm.hasSwitch = YES;
|
||||
castConfirm.switchVisible = YES;
|
||||
castConfirm.on = [[NSUserDefaults standardUserDefaults] boolForKey:@"castConfirm_enabled"];
|
||||
@@ -64,16 +68,16 @@ extern BOOL hidePreviousAndNextButton();
|
||||
return YES;
|
||||
};
|
||||
|
||||
YTSettingsSectionItem *hoverCardItem = [[%c(YTSettingsSectionItem) alloc] initWithTitle:@"Hide End screens hover cards (YTNoHoverCards)" titleDescription:@"Hide creator End screens (thumbnails) at the end of videos."];
|
||||
hoverCardItem.hasSwitch = YES;
|
||||
hoverCardItem.switchVisible = YES;
|
||||
hoverCardItem.on = [[NSUserDefaults standardUserDefaults] boolForKey:@"hover_cards_enabled"];
|
||||
hoverCardItem.switchBlock = ^BOOL (YTSettingsCell *cell, BOOL enabled) {
|
||||
[[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"hover_cards_enabled"];
|
||||
YTSettingsSectionItem *hideHoverCard = [[%c(YTSettingsSectionItem) alloc] initWithTitle:LOC(@"HIDE_HOVER_CARD") titleDescription:LOC(@"HIDE_HOVER_CARD_DESC")];
|
||||
hideHoverCard.hasSwitch = YES;
|
||||
hideHoverCard.switchVisible = YES;
|
||||
hideHoverCard.on = [[NSUserDefaults standardUserDefaults] boolForKey:@"hideHoverCards_enabled"];
|
||||
hideHoverCard.switchBlock = ^BOOL (YTSettingsCell *cell, BOOL enabled) {
|
||||
[[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"hideHoverCards_enabled"];
|
||||
return YES;
|
||||
};
|
||||
|
||||
YTSettingsSectionItem *bigYTMiniPlayer = [[%c(YTSettingsSectionItem) alloc] initWithTitle:@"New miniplayer bar style (BigYTMiniPlayer)" titleDescription:@"App restart is required."];
|
||||
YTSettingsSectionItem *bigYTMiniPlayer = [[%c(YTSettingsSectionItem) alloc] initWithTitle:LOC(@"NEW_MINIPLAYER_STYLE") titleDescription:LOC(@"NEW_MINIPLAYER_STYLE_DESC")];
|
||||
bigYTMiniPlayer.hasSwitch = YES;
|
||||
bigYTMiniPlayer.switchVisible = YES;
|
||||
bigYTMiniPlayer.on = [[NSUserDefaults standardUserDefaults] boolForKey:@"bigYTMiniPlayer_enabled"];
|
||||
@@ -82,7 +86,7 @@ extern BOOL hidePreviousAndNextButton();
|
||||
return YES;
|
||||
};
|
||||
|
||||
YTSettingsSectionItem *reExplore = [[%c(YTSettingsSectionItem) alloc] initWithTitle:@"Replace Shorts tab with Explore tab (YTReExplore)" titleDescription:@"App restart is required."];
|
||||
YTSettingsSectionItem *reExplore = [[%c(YTSettingsSectionItem) alloc] initWithTitle:LOC(@"YT_RE_EXPLORE") titleDescription:LOC(@"YT_RE_EXPLORE_DESC")];
|
||||
reExplore.hasSwitch = YES;
|
||||
reExplore.switchVisible = YES;
|
||||
reExplore.on = [[NSUserDefaults standardUserDefaults] boolForKey:@"reExplore_enabled"];
|
||||
@@ -91,7 +95,7 @@ extern BOOL hidePreviousAndNextButton();
|
||||
return YES;
|
||||
};
|
||||
|
||||
YTSettingsSectionItem *hideCC = [[%c(YTSettingsSectionItem) alloc] initWithTitle:@"Hide Subtitles button" titleDescription:@"Hide the Subtitles button in video controls overlay. "];
|
||||
YTSettingsSectionItem *hideCC = [[%c(YTSettingsSectionItem) alloc] initWithTitle:LOC(@"HIDE_SUBTITLES_BUTTON") titleDescription:LOC(@"HIDE_SUBTITLES_BUTTON_DESC")];
|
||||
hideCC.hasSwitch = YES;
|
||||
hideCC.switchVisible = YES;
|
||||
hideCC.on = [[NSUserDefaults standardUserDefaults] boolForKey:@"hideCC_enabled"];
|
||||
@@ -100,7 +104,7 @@ extern BOOL hidePreviousAndNextButton();
|
||||
return YES;
|
||||
};
|
||||
|
||||
YTSettingsSectionItem *hideAutoplaySwitch = [[%c(YTSettingsSectionItem) alloc] initWithTitle:@"Hide Autoplay switch" titleDescription:@"Hide the Autoplay switch button in video controls overlay."];
|
||||
YTSettingsSectionItem *hideAutoplaySwitch = [[%c(YTSettingsSectionItem) alloc] initWithTitle:LOC(@"HIDE_AUTOPLAY_SWITCH") titleDescription:LOC(@"HIDE_AUTOPLAY_SWITCH_DESC")];
|
||||
hideAutoplaySwitch.hasSwitch = YES;
|
||||
hideAutoplaySwitch.switchVisible = YES;
|
||||
hideAutoplaySwitch.on = [[NSUserDefaults standardUserDefaults] boolForKey:@"hideAutoplaySwitch_enabled"];
|
||||
@@ -109,16 +113,16 @@ extern BOOL hidePreviousAndNextButton();
|
||||
return YES;
|
||||
};
|
||||
|
||||
YTSettingsSectionItem *autoFull = [[%c(YTSettingsSectionItem) alloc] initWithTitle:@"Auto Full Screen (YTAutoFullScreen)" titleDescription:@"Autoplay videos at full screen."];
|
||||
YTSettingsSectionItem *autoFull = [[%c(YTSettingsSectionItem) alloc] initWithTitle:LOC(@"AUTO_FULLSCREEN") titleDescription:LOC(@"AUTO_FULLSCREEN_DESC")];
|
||||
autoFull.hasSwitch = YES;
|
||||
autoFull.switchVisible = YES;
|
||||
autoFull.on = [[NSUserDefaults standardUserDefaults] boolForKey:@"autofull_enabled"];
|
||||
autoFull.on = [[NSUserDefaults standardUserDefaults] boolForKey:@"autoFull_enabled"];
|
||||
autoFull.switchBlock = ^BOOL (YTSettingsCell *cell, BOOL enabled) {
|
||||
[[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"autofull_enabled"];
|
||||
[[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"autoFull_enabled"];
|
||||
return YES;
|
||||
};
|
||||
|
||||
YTSettingsSectionItem *hideHUD = [[%c(YTSettingsSectionItem) alloc] initWithTitle:@"Hide HUD Messages" titleDescription:@"Example: CC is turned on/off, Video loop is on,..."];
|
||||
YTSettingsSectionItem *hideHUD = [[%c(YTSettingsSectionItem) alloc] initWithTitle:LOC(@"HIDE_HUD_MESSAGES") titleDescription:LOC(@"HIDE_HUD_MESSAGES_DESC")];
|
||||
hideHUD.hasSwitch = YES;
|
||||
hideHUD.switchVisible = YES;
|
||||
hideHUD.on = [[NSUserDefaults standardUserDefaults] boolForKey:@"hideHUD_enabled"];
|
||||
@@ -127,7 +131,7 @@ extern BOOL hidePreviousAndNextButton();
|
||||
return YES;
|
||||
};
|
||||
|
||||
YTSettingsSectionItem *oledDarkMode = [[%c(YTSettingsSectionItem) alloc] initWithTitle:@"OLED Dark mode (Experimental)" titleDescription:@"App restart might be needed after switching between Light/Dark theme to fully apply changes. In case OLED Dark mode doesn't work: just switch between Light/Dark theme, then restart the app."];
|
||||
YTSettingsSectionItem *oledDarkMode = [[%c(YTSettingsSectionItem) alloc] initWithTitle:LOC(@"OLED_DARKMODE") titleDescription:LOC(@"OLED_DARKMODE_DESC")];
|
||||
oledDarkMode.hasSwitch = YES;
|
||||
oledDarkMode.switchVisible = YES;
|
||||
oledDarkMode.on = [[NSUserDefaults standardUserDefaults] boolForKey:@"oled_enabled"];
|
||||
@@ -136,7 +140,7 @@ extern BOOL hidePreviousAndNextButton();
|
||||
return YES;
|
||||
};
|
||||
|
||||
YTSettingsSectionItem *oledKeyBoard = [[%c(YTSettingsSectionItem) alloc] initWithTitle:@"OLED Keyboard (Experimental)" titleDescription:@"Might not working properly in some cases. App restart is required."];
|
||||
YTSettingsSectionItem *oledKeyBoard = [[%c(YTSettingsSectionItem) alloc] initWithTitle:LOC(@"OLED_KEYBOARD") titleDescription:LOC(@"OLED_KEYBOARD_DESC")];
|
||||
oledKeyBoard.hasSwitch = YES;
|
||||
oledKeyBoard.switchVisible = YES;
|
||||
oledKeyBoard.on = [[NSUserDefaults standardUserDefaults] boolForKey:@"oledKeyBoard_enabled"];
|
||||
@@ -145,7 +149,7 @@ extern BOOL hidePreviousAndNextButton();
|
||||
return YES;
|
||||
};
|
||||
|
||||
NSMutableArray <YTSettingsSectionItem *> *sectionItems = [NSMutableArray arrayWithArray:@[autoFull, castConfirm, ytMiniPlayer, hideAutoplaySwitch, hideCC, hideHUD, hidePreviousAndNextButton, hoverCardItem, bigYTMiniPlayer, oledKeyBoard, oledDarkMode,reExplore]];
|
||||
NSMutableArray <YTSettingsSectionItem *> *sectionItems = [NSMutableArray arrayWithArray:@[autoFull, castConfirm, ytMiniPlayer, hideAutoplaySwitch, hideCC, hideHUD, hidePreviousAndNextButton, hideHoverCard, bigYTMiniPlayer, oledDarkMode, oledKeyBoard, reExplore]];
|
||||
[delegate setSectionItems:sectionItems forCategory:uYouPlusSection title:@"uYouPlus" titleDescription:nil headerHidden:NO];
|
||||
}
|
||||
|
||||
|
||||
+1
-1
Submodule Tweaks/Alderis updated: 2c4304d844...978ca5c483
+1
-1
Submodule Tweaks/YouPiP updated: ebafa880c1...7000428368
@@ -0,0 +1,43 @@
|
||||
// Settings
|
||||
|
||||
"HIDE_PREVIOUS_AND_NEXT_BUTTON" = "Hide Previous and Next button";
|
||||
"HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = "Hide Previous and Next button in video controls overlay.";
|
||||
|
||||
"YT_MINIPLAYER" = "Enable the Miniplayer for all YouTube videos";
|
||||
"YT_MINIPLAYER_DESC" = "Kid videos for example.";
|
||||
|
||||
"CAST_CONFIRM" = "Confirm alert before casting (YTCastConfirm)";
|
||||
"CAST_CONFIRM_DESC" = "Show a confirm alert before casting to prevent accidentally hijacking TV.";
|
||||
|
||||
"HIDE_HOVER_CARD" = "Hide End screens hover cards (YTNoHoverCards)";
|
||||
"HIDE_HOVER_CARD_DESC" = "Hide creator End screens (thumbnails) at the end of videos.";
|
||||
|
||||
"NEW_MINIPLAYER_STYLE" = "New miniplayer bar style (BigYTMiniPlayer)";
|
||||
"NEW_MINIPLAYER_STYLE_DESC" = "App restart is required.";
|
||||
|
||||
"YT_RE_EXPLORE" = "Replace Shorts tab with Explore tab (YTReExplore)";
|
||||
"YT_RE_EXPLORE_DESC" = "App restart is required.";
|
||||
|
||||
"HIDE_SUBTITLES_BUTTON" = "Hide Subtitles button";
|
||||
"HIDE_SUBTITLES_BUTTON_DESC" = "Hide the Subtitles button in video controls overlay.";
|
||||
|
||||
"HIDE_AUTOPLAY_SWITCH" = "Hide Autoplay switch";
|
||||
"HIDE_AUTOPLAY_SWITCH_DESC" = "Hide the Autoplay switch in video controls overlay.";
|
||||
|
||||
"AUTO_FULLSCREEN" = "Auto Full Screen (YTAutoFullScreen)";
|
||||
"AUTO_FULLSCREEN_DESC" = "Autoplay videos at full screen.";
|
||||
|
||||
"HIDE_HUD_MESSAGES" = "Hide HUD Messages";
|
||||
"HIDE_HUD_MESSAGES_DESC" = "Example: CC is turned on/off, Video loop is on,...";
|
||||
|
||||
"OLED_DARKMODE" = "OLED Dark mode (Experimental)";
|
||||
"OLED_DARKMODE_DESC" = "Might not working correctly in some cases. App restart is required after you enable/disable this option.";
|
||||
|
||||
"OLED_KEYBOARD" = "OLED Keyboard (Experimental)";
|
||||
"OLED_KEYBOARD_DESC" = "Might not working correctly in some cases. App restart is required.";
|
||||
|
||||
// YTCastConfirm
|
||||
"CASTING" = "Castings";
|
||||
"MSG_ARE_YOU_SURE" = "Are you sure you want to start casting?";
|
||||
"MSG_YES" = "Yes";
|
||||
"MSG_CANCEL" = "Cancel";
|
||||
@@ -0,0 +1,43 @@
|
||||
// Settings
|
||||
|
||||
"HIDE_PREVIOUS_AND_NEXT_BUTTON" = "Masquer les boutons Précédent et Suivant";
|
||||
"HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = "Masquer les boutons Précédent et Suivant dans la superposition des contrôles vidéo";
|
||||
|
||||
"YT_MINIPLAYER" = "Activer le mini-lecteur pour toutes les vidéos YouTube";
|
||||
"YT_MINIPLAYER_DESC" = "Vidéos pour enfants par exemple";
|
||||
|
||||
"CAST_CONFIRM" = "Confirmer l'alerte avant le casting (YTCastConfirm)";
|
||||
"CAST_CONFIRM_DESC" = "Afficher une alerte de confirmation avant le casting pour éviter de déclancher accidentellement la télévision";
|
||||
|
||||
"HIDE_HOVER_CARD" = "Masquer les cartes de survol des écrans de fin (YTNoHoverCards)";
|
||||
"HIDE_HOVER_CARD_DESC" = "Masquer les écrans de fin (vignettes) des créateurs à la fin des vidéos";
|
||||
|
||||
"NEW_MINIPLAYER_STYLE" = "Nouveau style de barre de mini-lecteur (BigYTMiniPlayer)";
|
||||
"NEW_MINIPLAYER_STYLE_DESC" = "Un redémarrage de l'application est nécessaire";
|
||||
|
||||
"YT_RE_EXPLORE" = "Remplacer l'onglet Shorts par l'onglet Explorer (YTReExplore)";
|
||||
"YT_RE_EXPLORE_DESC" = "Un redémarrage de l'application est nécessaire";
|
||||
|
||||
"HIDE_SUBTITLES_BUTTON" = "Bouton de masquage des sous-titres";
|
||||
"HIDE_SUBTITLES_BUTTON_DESC" = "Masquer le bouton des sous-titres dans la superposition des contrôles vidéo";
|
||||
|
||||
"HIDE_AUTOPLAY_SWITCH" = "Masquer l'interrupteur de lecture automatique";
|
||||
"HIDE_AUTOPLAY_SWITCH_DESC" = "Masquer le bouton de lecture automatique dans la superposition des contrôles vidéo";
|
||||
|
||||
"AUTO_FULLSCREEN" = "Plein écran automatique (YTAutoFullScreen)";
|
||||
"AUTO_FULLSCREEN_DESC" = "Lecture automatique des vidéos en plein écran";
|
||||
|
||||
"HIDE_HUD_MESSAGES" = "Masquer les messages de l'ATH";
|
||||
"HIDE_HUD_MESSAGES_DESC" = "Exemple : Les sous-titres sont activés/désactivés, la boucle vidéo est activée,...";
|
||||
|
||||
"OLED_DARKMODE" = "Mode sombre OLED (Expérimental)";
|
||||
"OLED_DARKMODE_DESC" = "Peut ne pas fonctionner correctement dans certains cas. Un redémarrage de l'application est nécessaire après avoir activé/désactivé cette option.";
|
||||
|
||||
"OLED_KEYBOARD" = "Clavier OLED (Expérimental)";
|
||||
"OLED_KEYBOARD_DESC" = "Peut ne pas fonctionner correctement dans certains cas. Un redémarrage de l'application est nécessaire.";
|
||||
|
||||
// YTCastConfirm
|
||||
"CASTING" = "Castings";
|
||||
"MSG_ARE_YOU_SURE" = "Êtes-vous sûr de vouloir commencer le casting ?";
|
||||
"MSG_YES" = "Oui";
|
||||
"MSG_CANCEL" = "Annuler";
|
||||
@@ -0,0 +1,43 @@
|
||||
// Settings
|
||||
|
||||
"HIDE_PREVIOUS_AND_NEXT_BUTTON" = "Κρύψτε το προηγούμενο και το επόμενο κουμπί";
|
||||
"HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = "Κρύψτε το προηγούμενο και το επόμενο κουμπί κατά την αναπαραγωγή βίντεο.";
|
||||
|
||||
"YT_MINIPLAYER" = "Ενεργοποιήστε το miniplayer για όλα τα βίντεο του YouTube";
|
||||
"YT_MINIPLAYER_DESC" = "Τα παιδικά βίντεο για παράδειγμα.";
|
||||
|
||||
"CAST_CONFIRM" = "Επιβεβαιωτικό μήνυμα πριν γίνει Cast(YTCastConfirm)";
|
||||
"CAST_CONFIRM_DESC" = "Να φανεί ένα επιβεβαιωτικό μήνυμα πριν γίνει cast για να αποτρεπτεί η καταλάθως σύνδεση στην τηλεόραση.";
|
||||
|
||||
"HIDE_HOVER_CARD" = "Κρύψτε τις τελικές καρτέλες (YTNoHoverCards)";
|
||||
"HIDE_HOVER_CARD_DESC" = "Κρύψτε τις τελικές καρτέλες από τους δημιουργούς (thumbnails) στο τέλος των βίντεο.";
|
||||
|
||||
"NEW_MINIPLAYER_STYLE" = "Καινούργιο miniplayer θέμα στην μπάρα (BigYTMiniPlayer)";
|
||||
"NEW_MINIPLAYER_STYLE_DESC" = "Απαιτείται επανεκκίνηση της εφαρμογής.";
|
||||
|
||||
"YT_RE_EXPLORE" = "Αντικατάσταση της καρτέλας Shorts με την καρτέλα Explore (YTReExplore)";
|
||||
"YT_RE_EXPLORE_DESC" = "Απαιτείται επανεκκίνηση της εφαρμογής.";
|
||||
|
||||
"HIDE_SUBTITLES_BUTTON" = "Κρύψτε το κουμπί των Υπότιτλων";
|
||||
"HIDE_SUBTITLES_BUTTON_DESC" = "Κρύψτε το κουμπί των Υπότιτλων κατά την αναπαραγωγή βίντεο.";
|
||||
|
||||
"HIDE_AUTOPLAY_SWITCH" = "Κρύψτε τον διακόπτη της αυτόματης αναπαραγωγής";
|
||||
"HIDE_AUTOPLAY_SWITCH_DESC" = "Κρύψτε τον διακόπτη της αυτόματης αναπαραγωγής κατά την αναπαραγωγή βίντεο";
|
||||
|
||||
"AUTO_FULLSCREEN" = "Αυτόματη αναπαραγωγή σε πλήρη οθόνη (YTAutoFullScreen)";
|
||||
"AUTO_FULLSCREEN_DESC" = "Αυτόματη αναπαραγωγή των βίντεο σε πλήρη οθόνη.";
|
||||
|
||||
"HIDE_HUD_MESSAGES" = "Κρύψτε τα μηνύματα του HUD";
|
||||
"HIDE_HUD_MESSAGES_DESC" = "Παράδειγμα: Οι Υπότιτλοι απενεργοποιήθηκαν/ενεργοποιήθηκαν...";
|
||||
|
||||
"OLED_DARKMODE" = "OLED Μαύρο θέμα (Experimental)";
|
||||
"OLED_DARKMODE_DESC" = "Μπορεί να μην δουλέψει σε κάποιες περιπτώσεις. Απαιτείται επανεκκίνηση της εφαρμογής αφού το ενεργοποιήσετε/απενεργοποιήσετε.";
|
||||
|
||||
"OLED_KEYBOARD" = "OLED πληκτρολόγιο (Experimental)";
|
||||
"OLED_KEYBOARD_DESC" = "Μπορεί να μην δουλέψει σε κάποιες περιπτώσεις. Απαιτείται επανεκκίνηση της εφαρμογής.";
|
||||
|
||||
// YTCastConfirm
|
||||
"CASTING" = "Μετάδοση";
|
||||
"MSG_ARE_YOU_SURE" = "Είστε σίγουροι ότι θέλενε να ξεκινήσετε την μετάδοση;";
|
||||
"MSG_YES" = "Ναι";
|
||||
"MSG_CANCEL" = "Ακύρωση";
|
||||
@@ -0,0 +1,43 @@
|
||||
/* uYouPlusSettings */
|
||||
|
||||
"HIDE_PREVIOUS_AND_NEXT_BUTTON" = "Скрыть «Пред.» и «След.»";
|
||||
"HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = "Убирает кнопки переключения видео «Следующий» и «Предыдущий» с плеера.";
|
||||
|
||||
"YT_MINIPLAYER" = "Мини-плеер для всех видео";
|
||||
"YT_MINIPLAYER_DESC" = "Принудительно активирует мини-плеер для всех видео, включая видео, предназначенное для детей.";
|
||||
|
||||
"CAST_CONFIRM" = "Подтверждение «Трансляции» (YTCastConfirm)";
|
||||
"CAST_CONFIRM_DESC" = "Спрашивать подтверждение перед началом трансляции во избежание случайных подключений к ТВ.";
|
||||
|
||||
"HIDE_HOVER_CARD" = "Скрыть рекомендации (YTNoHoverCards)";
|
||||
"HIDE_HOVER_CARD_DESC" = "Скрывает эскизы, отображаемые по окончанию видеоролика.";
|
||||
|
||||
"NEW_MINIPLAYER_STYLE" = "Мини-плеер в стиле iPad (BigYTMiniPlayer)";
|
||||
"NEW_MINIPLAYER_STYLE_DESC" = "Потребуется перезагрузка.";
|
||||
|
||||
"YT_RE_EXPLORE" = "Вкладка «Навигация» вместо «Shorts»";
|
||||
"YT_RE_EXPLORE_DESC" = "Потребуется перезагрузка.";
|
||||
|
||||
"HIDE_SUBTITLES_BUTTON" = "Скрыть «Субтитры»";
|
||||
"HIDE_SUBTITLES_BUTTON_DESC" = "Скрывает кнопку субтитров с оверлея плеера.";
|
||||
|
||||
"HIDE_AUTOPLAY_SWITCH" = "Скрыть «Автовоспроизведение»";
|
||||
"HIDE_AUTOPLAY_SWITCH_DESC" = "Убирает тумблер «Автовоспроизведение» с оверлея плеера.";
|
||||
|
||||
"AUTO_FULLSCREEN" = "Полноэкранный режим (YTAutoFullScreen)";
|
||||
"AUTO_FULLSCREEN_DESC" = "Автоматически открывает ролики в полноэкранном режиме.";
|
||||
|
||||
"HIDE_HUD_MESSAGES" = "Скрыть сообщения плеера";
|
||||
"HIDE_HUD_MESSAGES_DESC" = "Скрывает надписи YouTube, появляющиеся поверх видео.";
|
||||
|
||||
"OLED_DARKMODE" = "Темный режим для OLED (Бета)";
|
||||
"OLED_DARKMODE_DESC" = "Понадобится перезагрузка при смене цветовой темы приложения. Если OLED-тема не включится, попробуйте переключиться не светлый режим и обратно, а затем перезагрузить приложение.";
|
||||
|
||||
"OLED_KEYBOARD" = "OLED-клавиатура (Бета)";
|
||||
"OLED_KEYBOARD_DESC" = "Возможно, на некоторых устройствах будет работать криво. Потребуется перезагрузка.";
|
||||
|
||||
/* YTCastConfirm */
|
||||
"CASTING" = "Трансляция";
|
||||
"MSG_ARE_YOU_SURE" = "Начать трансляцию экрана?";
|
||||
"MSG_YES" = "Да";
|
||||
"MSG_CANCEL" = "Отмена";
|
||||
@@ -0,0 +1,52 @@
|
||||
// How to translate uYouPlus to your languate:
|
||||
//
|
||||
// 1. Fork uYouPlus repo
|
||||
// 2. Rename the temple.lproj folder to your <lang_code>.lproj id. For example: ru.lproj for Russia
|
||||
// 3. Translate each line below after each =
|
||||
// 4. Open a Pull Request
|
||||
//
|
||||
// If your language already exists then feel free to check it and/or improve it!
|
||||
//
|
||||
// Settings
|
||||
|
||||
"HIDE_PREVIOUS_AND_NEXT_BUTTON" = "Hide Previous and Next button";
|
||||
"HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = "Hide Previous and Next button in video controls overlay.";
|
||||
|
||||
"YT_MINIPLAYER" = "Enable the Miniplayer for all YouTube videos";
|
||||
"YT_MINIPLAYER_DESC" = "Kid videos for example.";
|
||||
|
||||
"CAST_CONFIRM" = "Confirm alert before casting (YTCastConfirm)";
|
||||
"CAST_CONFIRM_DESC" = "Show a confirm alert before casting to prevent accidentally hijacking TV.";
|
||||
|
||||
"HIDE_HOVER_CARD" = "Hide End screens hover cards (YTNoHoverCards)";
|
||||
"HIDE_HOVER_CARD_DESC" = "Hide creator End screens (thumbnails) at the end of videos.";
|
||||
|
||||
"NEW_MINIPLAYER_STYLE" = "New miniplayer bar style (BigYTMiniPlayer)";
|
||||
"NEW_MINIPLAYER_STYLE_DESC" = "App restart is required.";
|
||||
|
||||
"YT_RE_EXPLORE" = "Replace Shorts tab with Explore tab (YTReExplore)";
|
||||
"YT_RE_EXPLORE_DESC" = "App restart is required.";
|
||||
|
||||
"HIDE_SUBTITLES_BUTTON" = "Hide Subtitles button";
|
||||
"HIDE_SUBTITLES_BUTTON_DESC" = "Hide the Subtitles button in video controls overlay.";
|
||||
|
||||
"HIDE_AUTOPLAY_SWITCH" = "Hide Autoplay switch";
|
||||
"HIDE_AUTOPLAY_SWITCH_DESC" = "Hide the Autoplay switch in video controls overlay.";
|
||||
|
||||
"AUTO_FULLSCREEN" = "Auto Full Screen (YTAutoFullScreen)";
|
||||
"AUTO_FULLSCREEN_DESC" = "Autoplay videos at full screen.";
|
||||
|
||||
"HIDE_HUD_MESSAGES" = "Hide HUD Messages";
|
||||
"HIDE_HUD_MESSAGES_DESC" = "Example: CC is turned on/off, Video loop is on,...";
|
||||
|
||||
"OLED_DARKMODE" = "OLED Dark mode (Experimental)";
|
||||
"OLED_DARKMODE_DESC" = "Might not working correctly in some cases. App restart is required after you enable/disable this option.";
|
||||
|
||||
"OLED_KEYBOARD" = "OLED Keyboard (Experimental)";
|
||||
"OLED_KEYBOARD_DESC" = "Might not working correctly in some cases. App restart is required.";
|
||||
|
||||
// YTCastConfirm
|
||||
"CASTING" = "Castings";
|
||||
"MSG_ARE_YOU_SURE" = "Are you sure you want to start casting?";
|
||||
"MSG_YES" = "Yes";
|
||||
"MSG_CANCEL" = "Cancel";
|
||||
@@ -0,0 +1,43 @@
|
||||
// Settings
|
||||
|
||||
"HIDE_PREVIOUS_AND_NEXT_BUTTON" = "Ẩn nút Next và nút Previous";
|
||||
"HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = "Ẩn nút Next và nút Previous trong trình phát video.";
|
||||
|
||||
"YT_MINIPLAYER" = "Cho phép trình phát thu nhỏ chạy với mọi video";
|
||||
"YT_MINIPLAYER_DESC" = "Ví dụ: Video cho trẻ em.";
|
||||
|
||||
"CAST_CONFIRM" = "Xác nhận trước khi cast video (YTCastConfirm)";
|
||||
"CAST_CONFIRM_DESC" = "Hiện hộp thoại xác nhận trước khi cast video sang TV để ngăn việc vô tình làm gián đoạn TV.";
|
||||
|
||||
"HIDE_HOVER_CARD" = "Ẩn video dạng thumbnails (YTNoHoverCards)";
|
||||
"HIDE_HOVER_CARD_DESC" = "Ẩn các video dạng thu nhỏ (thumbnails) xuất hiện ở gần cuối video.";
|
||||
|
||||
"NEW_MINIPLAYER_STYLE" = "Giao diện trình phát thu nhỏ kiểu mới (BigYTMiniPlayer)";
|
||||
"NEW_MINIPLAYER_STYLE_DESC" = "Cần khởi động lại ứng dụng.";
|
||||
|
||||
"YT_RE_EXPLORE" = "Thay thế tab Shorts bằng tab Khám phá (YTReExplore)";
|
||||
"YT_RE_EXPLORE_DESC" = "Cần khởi động lại ứng dụng.";
|
||||
|
||||
"HIDE_SUBTITLES_BUTTON" = "Ẩn nút bật Phụ đề";
|
||||
"HIDE_SUBTITLES_BUTTON_DESC" = "Ẩn nút bật phụ đề trong trình phát video.";
|
||||
|
||||
"HIDE_AUTOPLAY_SWITCH" = "Ẩn công tắc Tự động phát";
|
||||
"HIDE_AUTOPLAY_SWITCH_DESC" = "Ẩn công tắc Tự động phát trong trình phát video.";
|
||||
|
||||
"AUTO_FULLSCREEN" = "Tự động toàn màn hình (YTAutoFullScreen)";
|
||||
"AUTO_FULLSCREEN_DESC" = "Tự động phát video ở chế độ toàn màn hình.";
|
||||
|
||||
"HIDE_HUD_MESSAGES" = "Ẩn tin nhắn HUD";
|
||||
"HIDE_HUD_MESSAGES_DESC" = "Ví dụ: Đã bật/tắt phụ đề, Tính năng phát video lặp lại đang bật,...";
|
||||
|
||||
"OLED_DARKMODE" = "Chế độ tối OLED (Thử nghiệm)";
|
||||
"OLED_DARKMODE_DESC" = "Cần khởi động lại ứng dụng nếu bạn bật/tắt tính năng này, nhưng không cần khởi động lại ứng dụng nếu chuyển giữa chế độ Sáng và chế độ Tối.";
|
||||
|
||||
"OLED_KEYBOARD" = "Bàn phím OLED (Thử nghiệm)";
|
||||
"OLED_KEYBOARD_DESC" = "Tính năng này có thể không hoạt động tốt trong một vài trường hợp. Cần khởi động lại ứng dụng.";
|
||||
|
||||
// YTCastConfirm
|
||||
"CASTING" = "Truyền video";
|
||||
"MSG_ARE_YOU_SURE" = "Bạn có muốn bắt đầu truyền video không?";
|
||||
"MSG_YES" = "Có";
|
||||
"MSG_CANCEL" = "Không";
|
||||
+113
-100
@@ -12,10 +12,21 @@
|
||||
#import "Tweaks/YouTubeHeader/YTIPivotBarRenderer.h"
|
||||
#import "Tweaks/YouTubeHeader/YTIBrowseRequest.h"
|
||||
#import "Tweaks/YouTubeHeader/YTCommonColorPalette.h"
|
||||
#import "Tweaks/YouTubeHeader/ASCollectionView.h"
|
||||
|
||||
#define YT_BUNDLE_ID @"com.google.ios.youtube"
|
||||
#define YT_NAME @"YouTube"
|
||||
// Tweak's bundle for Localizations support - @PoomSmart - https://github.com/PoomSmart/YouPiP/commit/aea2473f64c75d73cab713e1e2d5d0a77675024f
|
||||
NSBundle *uYouPlusBundle() {
|
||||
static NSBundle *bundle = nil;
|
||||
static dispatch_once_t onceToken;
|
||||
dispatch_once(&onceToken, ^{
|
||||
NSString *tweakBundlePath = [[NSBundle mainBundle] pathForResource:@"uYouPlus" ofType:@"bundle"];
|
||||
bundle = [NSBundle bundleWithPath:tweakBundlePath];
|
||||
});
|
||||
return bundle;
|
||||
}
|
||||
NSBundle *tweakBundle = uYouPlusBundle();
|
||||
|
||||
//
|
||||
BOOL hideHUD() {
|
||||
return [[NSUserDefaults standardUserDefaults] boolForKey:@"hideHUD_enabled"];
|
||||
}
|
||||
@@ -29,12 +40,12 @@ BOOL isDarkMode() {
|
||||
return ([[NSUserDefaults standardUserDefaults] integerForKey:@"page_style"] == 1);
|
||||
}
|
||||
BOOL autoFullScreen() {
|
||||
return [[NSUserDefaults standardUserDefaults] boolForKey:@"autofull_enabled"];
|
||||
return [[NSUserDefaults standardUserDefaults] boolForKey:@"autoFull_enabled"];
|
||||
}
|
||||
BOOL noHoverCard() {
|
||||
return [[NSUserDefaults standardUserDefaults] boolForKey:@"hover_cards_enabled"];
|
||||
BOOL hideHoverCard() {
|
||||
return [[NSUserDefaults standardUserDefaults] boolForKey:@"hideHoverCards_enabled"];
|
||||
}
|
||||
BOOL ReExplore() {
|
||||
BOOL reExplore() {
|
||||
return [[NSUserDefaults standardUserDefaults] boolForKey:@"reExplore_enabled"];
|
||||
}
|
||||
BOOL bigYTMiniPlayer() {
|
||||
@@ -56,7 +67,7 @@ BOOL ytMiniPlayer() {
|
||||
return [[NSUserDefaults standardUserDefaults] boolForKey:@"ytMiniPlayer_enabled"];
|
||||
}
|
||||
|
||||
// Tweaks
|
||||
# pragma mark - Tweaks
|
||||
// YTMiniPlayerEnabler: https://github.com/level3tjg/YTMiniplayerEnabler/
|
||||
%hook YTWatchMiniBarViewController
|
||||
- (void)updateMiniBarPlayerStateFromRenderer {
|
||||
@@ -65,23 +76,25 @@ BOOL ytMiniPlayer() {
|
||||
}
|
||||
%end
|
||||
|
||||
// Hide CC / Autoplay switch
|
||||
// Hide CC / Autoplay switch / Next & Previous button
|
||||
%hook YTMainAppControlsOverlayView
|
||||
- (void)setClosedCaptionsOrSubtitlesButtonAvailable:(BOOL)arg1 { // hide CC?!
|
||||
- (void)setClosedCaptionsOrSubtitlesButtonAvailable:(BOOL)arg1 { // hide CC button
|
||||
if (hideCC()) { return %orig(NO); }
|
||||
else { return %orig; }
|
||||
}
|
||||
- (void)setAutoplaySwitchButtonRenderer:(id)arg1 {
|
||||
- (void)setAutoplaySwitchButtonRenderer:(id)arg1 { // hide Autoplay
|
||||
if (hideAutoplaySwitch()) {}
|
||||
else { return %orig; }
|
||||
}
|
||||
- (void)layoutSubviews {
|
||||
if (hidePreviousAndNextButton()) {
|
||||
- (void)layoutSubviews { // hide Next & Previous button
|
||||
%orig;
|
||||
if (hidePreviousAndNextButton()) {
|
||||
MSHookIvar<YTMainAppControlsOverlayView *>(self, "_nextButton").hidden = YES;
|
||||
MSHookIvar<YTMainAppControlsOverlayView *>(self, "_previousButton").hidden = YES;
|
||||
%orig;
|
||||
MSHookIvar<YTMainAppControlsOverlayView *>(self, "_previousButton").hidden = YES;
|
||||
// YouTube love beta testing :/
|
||||
MSHookIvar<YTTransportControlsButtonView *>(self, "_nextButtonView").hidden = YES;
|
||||
MSHookIvar<YTTransportControlsButtonView *>(self, "_previousButtonView").hidden = YES;
|
||||
}
|
||||
return %orig;
|
||||
}
|
||||
%end
|
||||
|
||||
@@ -109,7 +122,7 @@ BOOL ytMiniPlayer() {
|
||||
// YTNoHoverCards: https://github.com/level3tjg/YTNoHoverCards
|
||||
%hook YTCreatorEndscreenView
|
||||
- (void)setHidden:(BOOL)hidden {
|
||||
if (noHoverCard())
|
||||
if (hideHoverCard())
|
||||
hidden = YES;
|
||||
%orig;
|
||||
}
|
||||
@@ -119,15 +132,15 @@ BOOL ytMiniPlayer() {
|
||||
%hook MDXPlaybackRouteButtonController
|
||||
- (void)didPressButton:(id)arg1 {
|
||||
if (castConfirm()) {
|
||||
UIAlertController* alertController = [%c(UIAlertController) alertControllerWithTitle:@"Casting"
|
||||
message:@"Are you sure you want to start casting?"
|
||||
UIAlertController* alertController = [%c(UIAlertController) alertControllerWithTitle:LOC(@"CASTING")
|
||||
message:LOC(@"MSG_ARE_YOU_SURE")
|
||||
preferredStyle:UIAlertControllerStyleAlert];
|
||||
UIAlertAction* defaultAction = [%c(UIAlertAction) actionWithTitle:@"Yes" style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) {
|
||||
UIAlertAction* defaultAction = [%c(UIAlertAction) actionWithTitle:LOC(@"MSG_YES") style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) {
|
||||
%orig;
|
||||
}];
|
||||
|
||||
UIAlertAction* noButton = [%c(UIAlertAction)
|
||||
actionWithTitle:@"Cancel"
|
||||
actionWithTitle:LOC(@"MSG_CANCEL")
|
||||
style:UIAlertActionStyleDefault
|
||||
handler: ^(UIAlertAction * action) {
|
||||
return;
|
||||
@@ -148,7 +161,6 @@ BOOL ytMiniPlayer() {
|
||||
}
|
||||
[rootViewController presentViewController:alertController animated:YES completion:nil];
|
||||
} else { return %orig; }
|
||||
|
||||
}
|
||||
%end
|
||||
|
||||
@@ -210,7 +222,9 @@ BOOL ytMiniPlayer() {
|
||||
- (BOOL)shouldEnablePlayerBar { return YES; }
|
||||
%end
|
||||
|
||||
// Hide the download playlist button of uYou cuz it's broken
|
||||
/*
|
||||
// Hide the download playlist button of uYou cuz it's broken ?!
|
||||
// Why aren't you working?? :/
|
||||
%hook YTPlaylistHeaderViewController
|
||||
- (void)viewDidLoad {
|
||||
%orig;
|
||||
@@ -218,7 +232,16 @@ BOOL ytMiniPlayer() {
|
||||
}
|
||||
%end
|
||||
|
||||
// IAmYouTube - https://github.com/PoomSmart/IAmYouTube/
|
||||
// Workaround for issue #54
|
||||
%hook YTMainAppVideoPlayerOverlayViewController
|
||||
- (void)updateRelatedVideos {
|
||||
if ([[NSUserDefaults standardUserDefaults] boolForKey:@"relatedVideosAtTheEndOfYTVideos"] == NO) {}
|
||||
else { return %orig; }
|
||||
}
|
||||
%end
|
||||
*/
|
||||
|
||||
# pragma mark - IAmYouTube - https://github.com/PoomSmart/IAmYouTube/
|
||||
%hook YTVersionUtils
|
||||
+ (NSString *)appName { return YT_NAME; }
|
||||
+ (NSString *)appID { return YT_BUNDLE_ID; }
|
||||
@@ -273,15 +296,8 @@ BOOL ytMiniPlayer() {
|
||||
}
|
||||
%end
|
||||
|
||||
// Workaround for issue #54
|
||||
// %hook YTMainAppVideoPlayerOverlayViewController
|
||||
// - (void)updateRelatedVideos {
|
||||
// if ([[NSUserDefaults standardUserDefaults] boolForKey:@"relatedVideosAtTheEndOfYTVideos"] == NO) {}
|
||||
// else { return %orig; }
|
||||
// }
|
||||
// %end
|
||||
# pragma mark - OLED dark mode by BandarHL
|
||||
|
||||
// OLED dark mode by BandarHL
|
||||
UIColor* oledColor = [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:1.0];
|
||||
|
||||
%group gOLED
|
||||
@@ -341,50 +357,23 @@ UIColor* oledColor = [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:1.0];
|
||||
%hook ASScrollView
|
||||
- (void)didMoveToWindow {
|
||||
if (isDarkMode()) {
|
||||
self.backgroundColor = oledColor;
|
||||
%orig;
|
||||
self.backgroundColor = oledColor;
|
||||
}
|
||||
}
|
||||
%end
|
||||
|
||||
// uYou's page
|
||||
%hook DownloadedVC
|
||||
- (UIColor *)ytBackgroundColor {
|
||||
if (isDarkMode()) {
|
||||
return oledColor;
|
||||
// Your videos
|
||||
%hook ASCollectionView
|
||||
- (void)didMoveToWindow {
|
||||
if (isDarkMode() && [self.nextResponder isKindOfClass:%c(_ASDisplayView)]) {
|
||||
%orig;
|
||||
self.superview.backgroundColor = [UIColor clearColor];
|
||||
}
|
||||
return %orig;
|
||||
}
|
||||
%end
|
||||
|
||||
%hook DownloadsPagerVC
|
||||
- (UIColor *)ytBackgroundColor {
|
||||
if (isDarkMode()) {
|
||||
return oledColor;
|
||||
}
|
||||
return %orig;
|
||||
}
|
||||
%end
|
||||
|
||||
%hook DownloadingVC
|
||||
- (UIColor *)ytBackgroundColor {
|
||||
if (isDarkMode()) {
|
||||
return oledColor;
|
||||
}
|
||||
return %orig;
|
||||
}
|
||||
%end
|
||||
|
||||
%hook PlayerVC
|
||||
- (UIColor *)ytBackgroundColor {
|
||||
if (isDarkMode()) {
|
||||
return oledColor;
|
||||
}
|
||||
return %orig;
|
||||
}
|
||||
%end
|
||||
|
||||
// SponsorBlock settings
|
||||
// iSponsorBlock
|
||||
%hook SponsorBlockSettingsController
|
||||
- (void)viewDidLoad {
|
||||
if (self.traitCollection.userInterfaceStyle == UIUserInterfaceStyleDark) {
|
||||
@@ -394,7 +383,16 @@ UIColor* oledColor = [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:1.0];
|
||||
}
|
||||
%end
|
||||
|
||||
// YT player
|
||||
%hook SponsorBlockViewController
|
||||
- (void)viewDidLoad {
|
||||
if (self.traitCollection.userInterfaceStyle == UIUserInterfaceStyleDark) {
|
||||
%orig;
|
||||
self.view.backgroundColor = oledColor;
|
||||
} else { return %orig; }
|
||||
}
|
||||
%end
|
||||
|
||||
// YT Miniplayer
|
||||
%hook YTWatchMiniBarView
|
||||
- (void)setBackgroundColor:(UIColor *)color {
|
||||
if (isDarkMode()) {
|
||||
@@ -408,26 +406,36 @@ UIColor* oledColor = [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:1.0];
|
||||
%hook YTSearchBarView
|
||||
- (void)setBackgroundColor:(UIColor *)color {
|
||||
if (isDarkMode()) {
|
||||
return %orig (oledColor);
|
||||
return %orig(oledColor);
|
||||
}
|
||||
return %orig;
|
||||
}
|
||||
%end
|
||||
|
||||
// History Search view
|
||||
%hook YTSearchBoxView
|
||||
- (void)setBackgroundColor:(UIColor *)color {
|
||||
if (isDarkMode()) {
|
||||
return %orig (oledColor);
|
||||
return %orig(oledColor);
|
||||
}
|
||||
return %orig;
|
||||
}
|
||||
%end
|
||||
|
||||
// Comment view
|
||||
%hook YTCreateCommentAccessoryView // community reply comment
|
||||
%hook YTCommentView
|
||||
- (void)setBackgroundColor:(UIColor *)color {
|
||||
if (isDarkMode()) {
|
||||
return %orig (oledColor);
|
||||
return %orig(oledColor);
|
||||
}
|
||||
return %orig;
|
||||
}
|
||||
%end
|
||||
|
||||
%hook YTCreateCommentAccessoryView
|
||||
- (void)setBackgroundColor:(UIColor *)color {
|
||||
if (isDarkMode()) {
|
||||
return %orig(oledColor);
|
||||
}
|
||||
return %orig;
|
||||
}
|
||||
@@ -436,59 +444,61 @@ UIColor* oledColor = [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:1.0];
|
||||
%hook YTCreateCommentTextView
|
||||
- (void)setBackgroundColor:(UIColor *)color {
|
||||
if (isDarkMode()) {
|
||||
return %orig (oledColor);
|
||||
return %orig(oledColor);
|
||||
}
|
||||
return %orig;
|
||||
}
|
||||
- (void)setTextColor:(UIColor *)color { // fix black text in #Shorts video's comment
|
||||
if (isDarkMode()) {
|
||||
return %orig ([UIColor whiteColor]);
|
||||
return %orig([UIColor whiteColor]);
|
||||
}
|
||||
return %orig;
|
||||
}
|
||||
%end
|
||||
|
||||
%hook _ASDisplayView // comment reply under videos
|
||||
- (void)didMoveToWindow {
|
||||
if (isDarkMode() && [self.accessibilityIdentifier isEqualToString:@"id.elements.components.comment_composer"]) {
|
||||
%orig;
|
||||
self.backgroundColor = oledColor;
|
||||
}
|
||||
}
|
||||
%end
|
||||
|
||||
%hook YTFormattedStringLabel // YT is werid...
|
||||
- (void)setBackgroundColor:(UIColor *)color {
|
||||
if (isDarkMode()) {
|
||||
return %orig ([UIColor clearColor]);
|
||||
return %orig([UIColor clearColor]);
|
||||
}
|
||||
return %orig;
|
||||
}
|
||||
%end
|
||||
|
||||
%hook YCHLiveChatActionPanelView // live chat comment
|
||||
// Live chat comment
|
||||
%hook YCHLiveChatActionPanelView
|
||||
- (void)setBackgroundColor:(UIColor *)color {
|
||||
if (isDarkMode()) {
|
||||
return %orig (oledColor);
|
||||
return %orig(oledColor);
|
||||
}
|
||||
return %orig;
|
||||
}
|
||||
%end
|
||||
|
||||
%hook YTEmojiTextView // live chat comment
|
||||
%hook YTEmojiTextView
|
||||
- (void)setBackgroundColor:(UIColor *)color {
|
||||
if (isDarkMode()) {
|
||||
return %orig (oledColor);
|
||||
return %orig(oledColor);
|
||||
}
|
||||
return %orig;
|
||||
}
|
||||
%end
|
||||
|
||||
// Separation lines
|
||||
%hook YTCollectionSeparatorView
|
||||
// Nasty stuff :/
|
||||
%hook _ASDisplayView
|
||||
- (void)didMoveToWindow {
|
||||
if (isDarkMode()) {}
|
||||
else { return %orig; }
|
||||
%orig;
|
||||
if (isDarkMode()) {
|
||||
if ([self.accessibilityIdentifier isEqualToString:@"id.elements.components.comment_composer"]) { self.backgroundColor = oledColor; }
|
||||
if ([self.accessibilityIdentifier isEqualToString:@"id.elements.components.video_list_entry"]) { self.backgroundColor = oledColor; }
|
||||
if ([self.accessibilityIdentifier isEqualToString:@"id.elements.components.filter_chip_bar"]) { self.backgroundColor = oledColor; }
|
||||
if ([self.accessibilityIdentifier isEqualToString:@"id.ui.comment_cell"]) { self.backgroundColor = oledColor; }
|
||||
if ([self.accessibilityIdentifier isEqualToString:@"eml.cvr"]) { self.backgroundColor = oledColor; }
|
||||
if ([self.accessibilityIdentifier isEqualToString:@"rich_header"]) { self.backgroundColor = oledColor; }
|
||||
if ([self.accessibilityIdentifier isEqualToString:@"id.comment.channel_guidelines_bottom_sheet_container"]) { self.backgroundColor = oledColor; }
|
||||
if ([self.accessibilityIdentifier isEqualToString:@"id.comment.channel_guidelines_entry_banner_container"]) { self.backgroundColor = oledColor; }
|
||||
if ([self.accessibilityIdentifier isEqualToString:@"id.comment.guidelines_text"]) { self.superview.backgroundColor = oledColor; }
|
||||
}
|
||||
}
|
||||
%end
|
||||
|
||||
@@ -496,7 +506,7 @@ UIColor* oledColor = [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:1.0];
|
||||
%hook ASWAppSwitchingSheetHeaderView
|
||||
- (void)setBackgroundColor:(UIColor *)color {
|
||||
if (isDarkMode()) {
|
||||
return %orig (oledColor);
|
||||
return %orig(oledColor);
|
||||
}
|
||||
}
|
||||
%end
|
||||
@@ -504,7 +514,7 @@ UIColor* oledColor = [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:1.0];
|
||||
%hook ASWAppSwitchingSheetFooterView
|
||||
- (void)setBackgroundColor:(UIColor *)color {
|
||||
if (isDarkMode()) {
|
||||
return %orig (oledColor);
|
||||
return %orig(oledColor);
|
||||
}
|
||||
}
|
||||
%end
|
||||
@@ -512,14 +522,16 @@ UIColor* oledColor = [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:1.0];
|
||||
%hook ASWAppSwitcherCollectionViewCell
|
||||
- (void)didMoveToWindow {
|
||||
if (isDarkMode()) {
|
||||
%orig;
|
||||
self.subviews[1].backgroundColor = oledColor;
|
||||
%orig;
|
||||
self.superview.backgroundColor = oledColor;
|
||||
}
|
||||
}
|
||||
%end
|
||||
%end
|
||||
|
||||
%group gOLEDKB // OLED keyboard by @ichitaso <3 - http://gist.github.com/ichitaso/935100fd53a26f18a9060f7195a1be0e
|
||||
# pragma mark - OLED keyboard by @ichitaso <3 - http://gist.github.com/ichitaso/935100fd53a26f18a9060f7195a1be0e
|
||||
%group gOLEDKB
|
||||
%hook UIPredictionViewController
|
||||
- (void)loadView {
|
||||
%orig;
|
||||
@@ -536,15 +548,15 @@ UIColor* oledColor = [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:1.0];
|
||||
|
||||
%hook UIKeyboardDockView
|
||||
- (void)didMoveToWindow {
|
||||
self.backgroundColor = oledColor;
|
||||
%orig;
|
||||
self.backgroundColor = oledColor;
|
||||
}
|
||||
%end
|
||||
|
||||
%hook UIKeyboardLayoutStar
|
||||
- (void)didMoveToWindow {
|
||||
self.backgroundColor = oledColor;
|
||||
%orig;
|
||||
self.backgroundColor = oledColor;
|
||||
}
|
||||
%end
|
||||
|
||||
@@ -607,11 +619,12 @@ static void replaceTab(YTIGuideResponse *response) {
|
||||
if([[self _viewControllerForAncestor].parentViewController.parentViewController isKindOfClass:%c(YTWatchMiniBarViewController)]) {
|
||||
return NO;
|
||||
}
|
||||
return %orig;
|
||||
return %orig;
|
||||
}
|
||||
%end
|
||||
%end
|
||||
|
||||
# pragma mark - ctor
|
||||
%ctor {
|
||||
%init;
|
||||
if (oled()) {
|
||||
@@ -620,10 +633,10 @@ static void replaceTab(YTIGuideResponse *response) {
|
||||
if (oledKB()) {
|
||||
%init(gOLEDKB);
|
||||
}
|
||||
if (ReExplore()) {
|
||||
if (reExplore()) {
|
||||
%init(gReExplore);
|
||||
}
|
||||
if (bigYTMiniPlayer() && (UIDevice.currentDevice.userInterfaceIdiom != UIUserInterfaceIdiomPad)) {
|
||||
%init(Main);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user