Compare commits

...
Author SHA1 Message Date
qnblackcat bc286ef74f v17.42.7-2.1 2022-10-29 00:08:42 +07:00
qnblackcat fc6132d261 update YTShortsProgress 2022-10-28 22:55:32 +07:00
qnblackcat f560be0b66 speed improvement 2022-10-28 19:05:01 +07:00
Nguyễn Đạt 2d7f2b7d2a Merge pull request #620 from qnblackcat/3272866751
[Auto-generated] Submodule Updates 3272866751
2022-10-28 16:13:43 +07:00
github-actions df01ad4d48 updating submodules 2022-10-28 09:13:05 +00:00
level3tjg 5a76a9336b Fix uYou theme bug (#617) 2022-10-27 12:42:06 -04:00
Nguyễn Đạt 9a1c8c218d Merge pull request #615 from qnblackcat/3272866751
[Auto-generated] Submodule Updates 3272866751
2022-10-27 17:33:05 +07:00
github-actions a1cf67d8fe updating submodules 2022-10-27 10:32:44 +00:00
qnblackcat c5fc18b755 typos 2022-10-26 21:16:51 +07:00
Nguyễn Đạt 42e3977f36 Merge pull request #614 from qnblackcat/3272866751
[Auto-generated] Submodule Updates 3272866751
2022-10-26 20:47:34 +07:00
github-actions e50c308ec4 updating submodules 2022-10-26 13:46:47 +00:00
qnblackcat c7e24c47e2 add some A/B flags 2022-10-23 01:01:48 +07:00
qnblackcat 9aa506b264 use iOS 15.5 SDK 2022-10-22 21:24:07 +07:00
Nguyễn Đạt bd4fd45cf3 Merge pull request #602 from qnblackcat/3272866751
[Auto-generated] Submodule Updates 3272866751
2022-10-22 21:11:18 +07:00
github-actions 6b0b2133bd updating submodules 2022-10-22 14:09:24 +00:00
Nguyễn Đạt db1f9b6bc6 Merge pull request #594 from arichorn/main-testing
uYouPlusSection Search Bar Support
2022-10-22 21:07:52 +07:00
Nguyễn Đạt 0c62646af2 Merge pull request #601 from qnblackcat/3272866751
[Auto-generated] Submodule Updates 3272866751
2022-10-22 07:40:47 +07:00
github-actions 96517062e1 updating submodules 2022-10-22 00:40:21 +00:00
Nguyễn Đạt a2441bfbc5 Merge pull request #599 from ErSpieltHD/patch-1
VERSION_CHECK
2022-10-22 07:36:20 +07:00
ErSpieltHD e15f540ab0 VERSION_CHECK 2022-10-21 22:41:41 +02:00
Nguyễn Đạt a3877ab91c Merge pull request #598 from matt911/main
Added Romanian localization
2022-10-21 23:52:56 +07:00
Nguyễn Đạt d3c7347d31 Merge pull request #597 from darkbrow/main
Update Korean translation
2022-10-21 23:52:45 +07:00
Nguyễn Đạt 6f4e2a3623 Merge pull request #593 from gototheskinny/main
Turkish translation added
2022-10-21 23:52:35 +07:00
matt911 6981ae9a18 Add Romanian localization 2022-10-21 18:04:41 +03:00
matt911 70e17b3ce0 Revert "Create Localizable.strings"
This reverts commit 46163626ed.
2022-10-21 18:01:46 +03:00
matt911 46163626ed Create Localizable.strings 2022-10-21 17:59:55 +03:00
Jinbong 6b3ddf2915 Update Korean translation 2022-10-21 16:06:09 +09:00
Aric eefb554631 Improvements on Shorts Bar 2022-10-20 22:42:51 -05:00
Aric 12a3290350 Added Settings Search Bar 2022-10-19 15:46:57 -05:00
gototheskinny b5b1e44d46 Turkish translation 2022-10-19 22:28:35 +03:00
qnblackcat 4362a638fe v17.41.2-2.1 2022-10-19 22:05:35 +07:00
qnblackcat b4094e0c07 update uYouPlus.xm 2022-10-19 22:05:17 +07:00
18 changed files with 255 additions and 62 deletions
+15 -4
View File
@@ -23,7 +23,7 @@ on:
type: string type: string
create_release: create_release:
description: "Create a draft release" description: "Create a draft release"
default: false default: true
required: false required: false
type: boolean type: boolean
@@ -55,8 +55,18 @@ jobs:
ref: master ref: master
path: theos path: theos
submodules: recursive submodules: recursive
- name: Caching
id: SDK
uses: actions/cache@v3.0.11
env:
cache-name: iOS-15.5-SDK
with:
path: theos/sdks/
key: ${{ env.cache-name }}
- name: Download iOS 15.5 SDK - name: Download iOS 15.5 SDK
if: steps.SDK.outputs.cache-hit != 'true'
run: | run: |
svn checkout -q https://github.com/chrisharper22/sdks/trunk/iPhoneOS15.5.sdk svn checkout -q https://github.com/chrisharper22/sdks/trunk/iPhoneOS15.5.sdk
mv *.sdk $THEOS/sdks mv *.sdk $THEOS/sdks
@@ -95,6 +105,7 @@ jobs:
- name: Fix compiling && Build Package - name: Fix compiling && Build Package
id: build_package id: build_package
run: | run: |
(echo 'THEOS_IGNORE_PARALLEL_BUILDING_NOTICE = yes' >> ~/.theosrc)
cd ${{ github.workspace }}/main cd ${{ github.workspace }}/main
(cd ${{ github.workspace }}/main/Tweaks/YouPiP && sed -i '' "14s/$/ AVFoundation UIKit/" Makefile) (cd ${{ github.workspace }}/main/Tweaks/YouPiP && sed -i '' "14s/$/ AVFoundation UIKit/" Makefile)
(cd ${{ github.workspace }}/main/Tweaks/YTABConfig && sed -i '' "12s#.*#YTABConfig_FRAMEWORKS = UIKit#g" Makefile) (cd ${{ github.workspace }}/main/Tweaks/YTABConfig && sed -i '' "12s#.*#YTABConfig_FRAMEWORKS = UIKit#g" Makefile)
@@ -112,7 +123,7 @@ jobs:
UYOU_VERSION: ${{ inputs.uyou_version }} UYOU_VERSION: ${{ inputs.uyou_version }}
YOUTUBE_VERSION: ${{ inputs.youtube_version }} YOUTUBE_VERSION: ${{ inputs.youtube_version }}
with: with:
name: uYouPlus_${{ env.YOUTUBE_VERSION }}_${{ env.UYOU_VERSION }} name: uYouPlus_${{ env.YOUTUBE_VERSION }}_${{ env.UYOU_VERSION }}
path: ${{ github.workspace }}/main/packages/${{ steps.build_package.outputs.package }} path: ${{ github.workspace }}/main/packages/${{ steps.build_package.outputs.package }}
if-no-files-found: error if-no-files-found: error
@@ -128,4 +139,4 @@ jobs:
tag_name: v${{ env.YOUTUBE_VERSION }}-${{ env.UYOU_VERSION }}-(${{ github.run_number }}) tag_name: v${{ env.YOUTUBE_VERSION }}-${{ env.UYOU_VERSION }}-(${{ github.run_number }})
name: v${{ env.YOUTUBE_VERSION }}-${{ env.UYOU_VERSION }}-(${{ github.run_number }}) name: v${{ env.YOUTUBE_VERSION }}-${{ env.UYOU_VERSION }}-(${{ github.run_number }})
files: ./main/packages/*.ipa files: ./main/packages/*.ipa
draft: ${{ env.DRAFT }} draft: ${{ env.DRAFT }}
+7
View File
@@ -1,3 +1,4 @@
#import "Tweaks/YouTubeHeader/YTAppDelegate.h"
#import "Tweaks/YouTubeHeader/YTPlayerViewController.h" #import "Tweaks/YouTubeHeader/YTPlayerViewController.h"
#define LOC(x) [tweakBundle localizedStringForKey:x value:nil table:nil] #define LOC(x) [tweakBundle localizedStringForKey:x value:nil table:nil]
@@ -101,6 +102,12 @@ void center();
- (id)activeVideo; - (id)activeVideo;
@end @end
// uYou theme fix
@interface YTAppDelegate ()
@property(nonatomic, strong) id downloadsVC;
@end
// BigYTMiniPlayer // BigYTMiniPlayer
@interface YTMainAppVideoPlayerOverlayView : UIView @interface YTMainAppVideoPlayerOverlayView : UIView
- (UIViewController *)_viewControllerForAncestor; - (UIViewController *)_viewControllerForAncestor;
+2 -2
View File
@@ -1,11 +1,11 @@
TARGET = iphone:clang:latest:13.0 TARGET = iphone:clang:15.5:14.0
uYouPlus_USE_FLEX = 0 uYouPlus_USE_FLEX = 0
uYouPlus_USE_FISHHOOK = 0 uYouPlus_USE_FISHHOOK = 0
ARCHS = arm64 ARCHS = arm64
MODULES = jailed MODULES = jailed
FINALPACKAGE = 1 FINALPACKAGE = 1
CODESIGN_IPA = 0 CODESIGN_IPA = 0
PACKAGE_VERSION = 17.40.5_2.1 PACKAGE_VERSION = 17.42.7_2.1
TWEAK_NAME = uYouPlus TWEAK_NAME = uYouPlus
DISPLAY_NAME = YouTube DISPLAY_NAME = YouTube
+13 -11
View File
@@ -66,9 +66,11 @@
12. **YTMiniplayerEnabler**: enable Miniplayer for all YouTube videos. 12. **YTMiniplayerEnabler**: enable Miniplayer for all YouTube videos.
13. **DontEatMyContent**: Prevent the notch/Dynamic Island from munching on 2:1 video content in YouTube. 13. **DontEatMyContent**: prevent the notch/Dynamic Island from munching on 2:1 video content in YouTube.
14. **YTShortsProgress**: Always enable progress bar and scrubbing in YouTube Shorts (iPhone only). 14. **YTShortsProgress**: always enable progress bar and scrubbing in YouTube Shorts (iPhone only).
15. **YTABConfig**: allow user to control over YouTube A/B testing flags.
</details> </details>
@@ -80,22 +82,22 @@
# Download # Download
- **uYouPlus** (or you can call it uYou+) requires iOS or iPadOS 13.0 or later. The latest version of **uYouPlus** can be found in the [Release tab](https://github.com/qnblackcat/uYouPlus/releases). - **uYouPlus** (or you can call it uYou+) requires iOS or iPadOS 14.0 or later. The latest version of **uYouPlus** can be found in the [Release tab](https://github.com/qnblackcat/uYouPlus/releases/latest).
- For AltStore user: - For AltStore user:
- My official AltStore repo: https://qnblackcat.github.io/AltStore/ - My official AltStore repo: https://qnblackcat.github.io/AltStore/
- [Open in AltStore (v17.40.5-2.1)](https://tinyurl.com/mr6r7z7r) - It will take a while to install because AltStore needs to download the IPA. - [Open in AltStore (v17.42.7-2.1)](https://tinyurl.com/4j5nyb6z) - It will take a while to install because AltStore needs to download the IPA.
- Version info: _(last update: Oct 16)_ - Version info: _(last update: Oct 28)_
<details> <details>
<summary>Expand</summary> <summary>Expand</summary>
| **Tweaks/App** | **Developer** | **Version** | **Open source** | | **Tweaks/App** | **Developer** | **Version** | **Open source** |
| - | - | :-: | :-: | | - | - | :-: | :-: |
| **YouTube** | Google Inc | 17.40.5 | ✖︎ | | **YouTube** | Google Inc | 17.42.7 | ✖︎ |
| [uYou](https://github.com/MiRO92/uYou-for-YouTube) | [MiRO92](https://twitter.com/miro92) | 2.1 | ✖︎ | | [uYou](https://github.com/MiRO92/uYou-for-YouTube) | [MiRO92](https://twitter.com/miro92) | 2.1 | ✖︎ |
| [Open in YouTube](https://github.com/CokePokes/YoutubeExtensions) | [CokePokes](https://github.com/CokePokes) | 1.2 | ✖︎ | | [Open in YouTube](https://github.com/CokePokes/YoutubeExtensions) | [CokePokes](https://github.com/CokePokes) | 1.2 | ✖︎ |
| **iSponsorBlock** | [Galactic-Dev](https://github.com/Galactic-Dev) | 1.0-15 | [✔︎](https://github.com/Galactic-Dev/iSponsorBlock) | | **iSponsorBlock** | [Galactic-Dev](https://github.com/Galactic-Dev) | 1.0-15 | [✔︎](https://github.com/Galactic-Dev/iSponsorBlock) |
@@ -106,17 +108,17 @@
| **YTSpeed** | [Lyvendia](https://github.com/Lyvendia) | 1.0.1 | [✔︎](https://github.com/Lyvendia/YTSpeed) | | **YTSpeed** | [Lyvendia](https://github.com/Lyvendia) | 1.0.1 | [✔︎](https://github.com/Lyvendia/YTSpeed) |
| **YTCastConfirm** | [JamieBerghmans](https://github.com/JamieBerghmans) | 1.0.0 | [✔︎](https://github.com/JamieBerghmans/YTCastConfirm) | | **YTCastConfirm** | [JamieBerghmans](https://github.com/JamieBerghmans) | 1.0.0 | [✔︎](https://github.com/JamieBerghmans/YTCastConfirm) |
| **Alderis Color Picker** | [HASHBANG Productions](https://github.com/hbang) | 1.2| [✔︎](https://github.com/hbang/Alderis) | | **Alderis Color Picker** | [HASHBANG Productions](https://github.com/hbang) | 1.2| [✔︎](https://github.com/hbang/Alderis) |
| **YTUHD** | [PoomSmart](https://twitter.com/poomsmart) | 1.3.2 | [✔︎](https://github.com/PoomSmart/YTUHD) | | **YTUHD** | [PoomSmart](https://twitter.com/poomsmart) | 1.3.4 | [✔︎](https://github.com/PoomSmart/YTUHD) |
| **YouPiP** | [PoomSmart](https://twitter.com/poomsmart) | 1.7.12 | [✔︎](https://github.com/PoomSmart/YouPiP) | | **YouPiP** | [PoomSmart](https://twitter.com/poomsmart) | 1.7.14 | [✔︎](https://github.com/PoomSmart/YouPiP) |
| **IAmYouTube** | [PoomSmart](https://twitter.com/poomsmart) | 1.2.0 | [✔︎](https://github.com/PoomSmart/IAmYouTube) | | **IAmYouTube** | [PoomSmart](https://twitter.com/poomsmart) | 1.2.0 | [✔︎](https://github.com/PoomSmart/IAmYouTube) |
| **YTABConfig** | [PoomSmart](https://twitter.com/poomsmart) | 1.4.2 | [✔︎](https://github.com/PoomSmart/YTABConfig) |
| **YTReExplore** | [PoomSmart](https://twitter.com/poomsmart) | 1.0.2 | [✔︎](https://github.com/PoomSmart/YTReExplore) | | **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) | | **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) | | **YTNoPaidPromo** | [PoomSmart](https://twitter.com/poomsmart) | 1.0.0 | [✔︎](https://github.com/PoomSmart/YTNoPaidPromo) |
| **YTAutoFullScreen** | [PoomSmart](https://twitter.com/poomsmart) | 1.0.3 | [✔︎](https://github.com/PoomSmart/YTAutoFullScreen) | | **YTAutoFullScreen** | [PoomSmart](https://twitter.com/poomsmart) | 1.0.3 | [✔︎](https://github.com/PoomSmart/YTAutoFullScreen) |
| **YTShortsProgress** | [PoomSmart](https://twitter.com/poomsmart) | 1.0.0 | [✔︎](https://github.com/PoomSmart/YTShortsProgress) | | **YTShortsProgress** | [PoomSmart](https://twitter.com/poomsmart) | 1.0.2 | [✔︎](https://github.com/PoomSmart/YTShortsProgress) |
| **YouRememberCaption** | [PoomSmart](https://twitter.com/poomsmart) | 1.0.0 | [✔︎](https://poomsmart.github.io/repo/depictions/youremembercaption.html) | | **YouRememberCaption** | [PoomSmart](https://twitter.com/poomsmart) | 1.0.0 | [✔︎](https://poomsmart.github.io/repo/depictions/youremembercaption.html) |
| **YTClassicVideoQuality** | [PoomSmart](https://twitter.com/poomsmart) | 1.0.1 | [✔︎](https://github.com/PoomSmart/YTClassicVideoQuality) | | **Return YouTube Dislike** | [PoomSmart](https://twitter.com/poomsmart) | 1.7.3 | [✔︎](https://github.com/PoomSmart/Return-YouTube-Dislikes) |
| **Return YouTube Dislike** | [PoomSmart](https://twitter.com/poomsmart) | 1.7.1 | [✔︎](https://github.com/PoomSmart/Return-YouTube-Dislikes) |
| **YTNoCheckLocalNetwork** | [PoomSmart](https://twitter.com/poomsmart) | 1.0.2 | [✔︎](https://poomsmart.github.io/repo/depictions/ytnochecklocalnetwork.html) | | **YTNoCheckLocalNetwork** | [PoomSmart](https://twitter.com/poomsmart) | 1.0.2 | [✔︎](https://poomsmart.github.io/repo/depictions/ytnochecklocalnetwork.html) |
</details> </details>
+21
View File
@@ -1,4 +1,5 @@
#import "Tweaks/YouTubeHeader/YTSettingsViewController.h" #import "Tweaks/YouTubeHeader/YTSettingsViewController.h"
#import "Tweaks/YouTubeHeader/YTSearchableSettingsViewController.h"
#import "Tweaks/YouTubeHeader/YTSettingsSectionItem.h" #import "Tweaks/YouTubeHeader/YTSettingsSectionItem.h"
#import "Tweaks/YouTubeHeader/YTSettingsSectionItemManager.h" #import "Tweaks/YouTubeHeader/YTSettingsSectionItemManager.h"
#import "Tweaks/YouTubeHeader/YTUIUtils.h" #import "Tweaks/YouTubeHeader/YTUIUtils.h"
@@ -40,6 +41,26 @@ extern BOOL dontEatMyContent();
} }
%end %end
%hook YTSettingsViewController
- (void)loadWithModel:(id)model fromView:(UIView *)view {
%orig;
if ([[self valueForKey:@"_detailsCategoryID"] integerValue] == uYouPlusSection)
MSHookIvar<BOOL>(self, "_shouldShowSearchBar") = YES;
}
- (void)setSectionControllers {
%orig;
if (MSHookIvar<BOOL>(self, "_shouldShowSearchBar")) {
YTSettingsSectionController *settingsSectionController = [self settingsSectionControllers][[self valueForKey:@"_detailsCategoryID"]];
YTSearchableSettingsViewController *searchableVC = [self valueForKey:@"_searchableSettingsViewController"];
if (settingsSectionController)
[searchableVC storeCollectionViewSections:@[settingsSectionController]];
}
}
%end
%hook YTSettingsSectionItemManager %hook YTSettingsSectionItemManager
%new %new
- (void)updateuYouPlusSectionWithEntry:(id)entry { - (void)updateuYouPlusSectionWithEntry:(id)entry {
@@ -1,8 +1,8 @@
// Settings // Settings
"VERSION" = "uYouPlus's version: %@"; "VERSION" = "uYouPlus-Version: %@";
"VERSION_CHECK" = "Tap to check for update!"; "VERSION_CHECK" = "Tippen, um nach Updates zu suchen!";
"DONT_EAT_MY_CONTENT" = "Kerbe/Insel bei 2:1-Videoinhalten berücksichtigen (DontEatMyContent)"; "DONT_EAT_MY_CONTENT" = "Kerbe/dynamische Insel bei 2:1-Videoinhalten berücksichtigen (DontEatMyContent)";
"DONT_EAT_MY_CONTENT_DESC" = "Verhindert, dass die Notch/Dynamic Island 2:1-Videoinhalte überdeckt. App-Neustart erforderlich!"; "DONT_EAT_MY_CONTENT_DESC" = "Verhindert, dass die Notch/Dynamic Island 2:1-Videoinhalte überdeckt. App-Neustart erforderlich!";
"REPLACE_PREVIOUS_NEXT_BUTTON" = "Vor- und Zurücktasten ersetzen"; "REPLACE_PREVIOUS_NEXT_BUTTON" = "Vor- und Zurücktasten ersetzen";
@@ -1,29 +1,29 @@
// Settings // Settings
"VERSION" = "uYouPlus's version: %@"; "VERSION" = "uYouPlus's version: %@";
"VERSION_CHECK" = "Tap to check for update!"; "VERSION_CHECK" = "Tap to check for updates!";
"DONT_EAT_MY_CONTENT" = "Prevent Notch/Island on 2:1 Video Content (DontEatMyContent)"; "DONT_EAT_MY_CONTENT" = "Prevent Notch/Island on 2:1 Video Content (DontEatMyContent)";
"DONT_EAT_MY_CONTENT_DESC" = "Prevent the notch/Dynamic Island from munching on 2:1 video content in YouTube. App restart is required."; "DONT_EAT_MY_CONTENT_DESC" = "Prevent the notch/Dynamic Island from munching on 2:1 video content in YouTube. App restart is required.";
"REPLACE_PREVIOUS_NEXT_BUTTON" = "Replace Previous and Next Button"; "REPLACE_PREVIOUS_NEXT_BUTTON" = "Replace Previous and Next button";
"REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "Replace Previous and Next Button with Fast forward and Rewind button. App restart is required."; "REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "Replace the Previous and Next button with the Fast forward and Rewind button. App restart is required.";
"FIX_GOOGLE_SIGNIN" = "Fix Google Sign in (for TrollStore user only)"; "FIX_GOOGLE_SIGNIN" = "Fix Google Sign in (for TrollStore user only)";
"FIX_GOOGLE_SIGNIN_DESC" = "Turn on this option only when you can't sign in with your Google account and the app was installed via TrollStore. If you can log in normally, keep it disabled. App restart is required."; "FIX_GOOGLE_SIGNIN_DESC" = "Only turn on this option when you can't sign in with your Google account and the app was installed via TrollStore. If you can log in normally, keep it disabled. App restart is required.";
"HIDE_PREVIOUS_AND_NEXT_BUTTON" = "Hide Previous and Next button"; "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."; "HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = "Hide the Previous and Next button in video controls overlay.";
"YT_MINIPLAYER" = "Enable the Miniplayer for all YouTube videos"; "YT_MINIPLAYER" = "Enable the mini player for all YouTube videos";
"YT_MINIPLAYER_DESC" = "Kid videos for example."; "YT_MINIPLAYER_DESC" = "Kid videos for example.";
"CAST_CONFIRM" = "Confirm alert before casting (YTCastConfirm)"; "CAST_CONFIRM" = "Confirm alert before casting (YTCastConfirm)";
"CAST_CONFIRM_DESC" = "Show a confirm alert before casting to prevent accidentally hijacking TV."; "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" = "Hide End screens hover cards (YTNoHoverCards)";
"HIDE_HOVER_CARD_DESC" = "Hide creator End screens (thumbnails) at the end of videos."; "HIDE_HOVER_CARD_DESC" = "Hide the creator End screens (thumbnails) at the end of videos.";
"NEW_MINIPLAYER_STYLE" = "New miniplayer bar style (BigYTMiniPlayer)"; "NEW_MINIPLAYER_STYLE" = "New mini player bar style (BigYTMiniPlayer)";
"NEW_MINIPLAYER_STYLE_DESC" = "App restart is required."; "NEW_MINIPLAYER_STYLE_DESC" = "App restart is required.";
"YT_RE_EXPLORE" = "Replace Shorts tab with Explore tab (YTReExplore)"; "YT_RE_EXPLORE" = "Replace Shorts tab with Explore tab (YTReExplore)";
@@ -42,10 +42,10 @@
"HIDE_HUD_MESSAGES_DESC" = "Example: CC is turned on/off, Video loop is on,..."; "HIDE_HUD_MESSAGES_DESC" = "Example: CC is turned on/off, Video loop is on,...";
"OLED_DARKMODE" = "OLED Dark mode (Experimental)"; "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_DARKMODE_DESC" = "Might not work correctly in some cases. App restart is required after you enable/disable this option.";
"OLED_KEYBOARD" = "OLED Keyboard (Experimental)"; "OLED_KEYBOARD" = "OLED Keyboard (Experimental)";
"OLED_KEYBOARD_DESC" = "Might not working correctly in some cases. App restart is required."; "OLED_KEYBOARD_DESC" = "Might not work correctly in some cases. App restart is required.";
"HIDE_PAID_PROMOTION_CARDS" = "Hide Paid Promotion banner"; "HIDE_PAID_PROMOTION_CARDS" = "Hide Paid Promotion banner";
"HIDE_PAID_PROMOTION_CARDS_DESC" = "Hide the 'Includes Paid Promotions' banner in some videos."; "HIDE_PAID_PROMOTION_CARDS_DESC" = "Hide the 'Includes Paid Promotions' banner in some videos.";
@@ -1,6 +1,6 @@
// Settings // Settings
"VERSION" = "uYouPlus's version: %@"; "VERSION" = "uYouPlus 버전: %@";
"VERSION_CHECK" = "Tap to check for update!"; "VERSION_CHECK" = "업데이트하려면 탭하세요!";
"DONT_EAT_MY_CONTENT" = "노치/아일랜드 영역이 2:1 비율 비디오를 가리지 않게 함 (DontEatMyContent)"; "DONT_EAT_MY_CONTENT" = "노치/아일랜드 영역이 2:1 비율 비디오를 가리지 않게 함 (DontEatMyContent)";
"DONT_EAT_MY_CONTENT_DESC" = "노치/다이내믹 아일랜드 영역이 유튜브의 2:1 비율 영상 일부를 가리는 것을 막아줍니다. 앱을 다시 시작해야 합니다."; "DONT_EAT_MY_CONTENT_DESC" = "노치/다이내믹 아일랜드 영역이 유튜브의 2:1 비율 영상 일부를 가리는 것을 막아줍니다. 앱을 다시 시작해야 합니다.";
@@ -0,0 +1,57 @@
// Settings
"VERSION" = "Versiune uYouPlus: %@";
"VERSION_CHECK" = "Căutare actualizări";
"DONT_EAT_MY_CONTENT" = "Previne apariția Notch/Island pe content video 2:1 (DontEatMyContent)";
"DONT_EAT_MY_CONTENT_DESC" = "Previne tăierea conținutului video 2:1 de către Notch/Dynamic Island . Este necesară repornirea aplicației.";
"REPLACE_PREVIOUS_NEXT_BUTTON" = "Înlocuire butoane Înainte/Înapoi";
"REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "Înlocuiește butoanele Înainte/Înapoi cu butoanele derulare Înainte/Înapoi. Este necesară repornirea aplicației.";
"FIX_GOOGLE_SIGNIN" = "Rezolvare problemă autentificare cont Google (doar pentru utilizatorii TrollStore)";
"FIX_GOOGLE_SIGNIN_DESC" = "Activează această opțiune doar în cazul în care nu te poți autentifica în contul tău Google și apariția a fost instalată via TrollStore. Dacă te poți autentifica fără probleme, țineți setarea dezactivată. Este necesară repornirea aplicației.";
"HIDE_PREVIOUS_AND_NEXT_BUTTON" = "Ascunde butoanele Înainte/Înapoi";
"HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = "Ascunde butoanele Înainte/Înapoi din controalele video.";
"YT_MINIPLAYER" = "Activare Miniplayer pentru toate videoclipurile YouTube";
"YT_MINIPLAYER_DESC" = "De exemplu, videoclipurile destinate pentri copii";
"CAST_CONFIRM" = "Alertă de confirmare înainte de proiectare (YTCastConfirm)";
"CAST_CONFIRM_DESC" = "Afișează o alertă de confirmare înainte de a proiecta, pentru a preveni deturnarea accidentală a TV-ului.";
"HIDE_HOVER_CARD" = "Ascunde ecranele de final (YTNoHoverCards)";
"HIDE_HOVER_CARD_DESC" = "Ascunde ecranele de final de la sfârșitul videoclipurilor.";
"NEW_MINIPLAYER_STYLE" = "Stil nou bară Miniplayer (BigYTMiniPlayer)";
"NEW_MINIPLAYER_STYLE_DESC" = "Este necesară repornirea aplicației.";
"YT_RE_EXPLORE" = "Înlocuire fila Shorts cu fila Explore (YTReExplore)";
"YT_RE_EXPLORE_DESC" = "Este necesară repornirea aplicației.";
"HIDE_SUBTITLES_BUTTON" = "Ascunde butonul Subtitrări";
"HIDE_SUBTITLES_BUTTON_DESC" = "Ascunde butonul Subtitrări din controalele video.";
"HIDE_AUTOPLAY_SWITCH" = "Ascunde comutatorul Redare automată";
"HIDE_AUTOPLAY_SWITCH_DESC" = "Ascunde comutatorul Redare automată din controalele video.";
"AUTO_FULLSCREEN" = "Auto Ecran Întreg (YTAutoFullScreen)";
"AUTO_FULLSCREEN_DESC" = "Redare automată video pe ecran complet.";
"HIDE_HUD_MESSAGES" = "Ascundere Mesaje HUD";
"HIDE_HUD_MESSAGES_DESC" = "Exemplu: Subtitrările sunt activate/dezactivate, Redarea în buclă este activată,...";
"OLED_DARKMODE" = "Mod Întunecat OLED (Experimental)";
"OLED_DARKMODE_DESC" = "Este posibil să nu funcționeze corect în anumite cazuri. Este necesară repornirea aplicației după ce această opțiune este activată/dezactivată.";
"OLED_KEYBOARD" = "Tastatură OLED (Experimental)";
"OLED_KEYBOARD_DESC" = "Este posibil să nu funcționeze corect în anumite cazuri. Este necesară repornirea aplicației.";
"HIDE_PAID_PROMOTION_CARDS" = "Ascunde banner-ul Promovare Plătită";
"HIDE_PAID_PROMOTION_CARDS_DESC" = "Ascunde banner-ul 'Include Promovare Plătită' în unele videoclipuri.";
// YTCastConfirm
"CASTING" = "Proiectare";
"MSG_ARE_YOU_SURE" = "Sunteți sigur că doriți să proiectați?";
"MSG_YES" = "Da";
"MSG_CANCEL" = "Anulare";
@@ -1,12 +1,12 @@
/* Read me: /* Read me:
- How to translate uYouPlus (if your language already exists then feel free to check it and/or improve it): - How to translate uYouPlus (if your language already exists then feel free to check it and/or improve it):
1. Fork uYouPlus repo 1. Fork this uYouPlus repo
2. Duplicate the template.lproj folder, and edit the duplicated folder's name to your <lang_code>.lproj id. 2. Duplicate the template.lproj folder, and edit the duplicated folder's name to your <lang_code>.lproj id.
For example: <ru.lproj> for Russia. For more details, visit: https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes For example: <ru.lproj> for Russia. For more details, visit: https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes
3. Translate each line below after each = 3. Translate each line below after each =
4. Open a Pull Request 4. Open a Pull Request
- You can also add your localization to YTABConfig, YouPiP, YTUHD, Return YouTube Dislike. The process is the same: - You can also add your localization to YTABConfig, YouPiP, YTUHD, and Return YouTube Dislike. The process is the same:
https://github.com/PoomSmart/YTABConfig/tree/main/layout/Library/Application%20Support/YTABC.bundle https://github.com/PoomSmart/YTABConfig/tree/main/layout/Library/Application%20Support/YTABC.bundle
https://github.com/PoomSmart/YouPiP/tree/main/layout/Library/Application%20Support/YouPiP.bundle https://github.com/PoomSmart/YouPiP/tree/main/layout/Library/Application%20Support/YouPiP.bundle
https://github.com/PoomSmart/YTUHD/tree/master/layout/Library/Application%20Support/YTUHD.bundle https://github.com/PoomSmart/YTUHD/tree/master/layout/Library/Application%20Support/YTUHD.bundle
@@ -15,30 +15,30 @@ https://github.com/PoomSmart/Return-YouTube-Dislikes/tree/main/layout/Library/Ap
// Settings // Settings
"VERSION" = "uYouPlus's version: %@"; "VERSION" = "uYouPlus's version: %@";
"VERSION_CHECK" = "Tap to check for update!"; "VERSION_CHECK" = "Tap to check for updates!";
"DONT_EAT_MY_CONTENT" = "Prevent Notch/Island on 2:1 Video Content (DontEatMyContent)"; "DONT_EAT_MY_CONTENT" = "Prevent Notch/Island on 2:1 Video Content (DontEatMyContent)";
"DONT_EAT_MY_CONTENT_DESC" = "Prevent the notch/Dynamic Island from munching on 2:1 video content in YouTube. App restart is required."; "DONT_EAT_MY_CONTENT_DESC" = "Prevent the notch/Dynamic Island from munching on 2:1 video content in YouTube. App restart is required.";
"REPLACE_PREVIOUS_NEXT_BUTTON" = "Replace Previous and Next Button"; "REPLACE_PREVIOUS_NEXT_BUTTON" = "Replace Previous and Next button";
"REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "Replace Previous and Next Button with Fast forward and Rewind button. App restart is required."; "REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "Replace the Previous and Next button with the Fast forward and Rewind button. App restart is required.";
"FIX_GOOGLE_SIGNIN" = "Fix Google Sign in (for TrollStore user only)"; "FIX_GOOGLE_SIGNIN" = "Fix Google Sign in (for TrollStore user only)";
"FIX_GOOGLE_SIGNIN_DESC" = "Turn on this option only when you can't sign in with your Google account and the app was installed via TrollStore. If you can log in normally, keep it disabled. App restart is required."; "FIX_GOOGLE_SIGNIN_DESC" = "Only turn on this option when you can't sign in with your Google account and the app was installed via TrollStore. If you can log in normally, keep it disabled. App restart is required.";
"HIDE_PREVIOUS_AND_NEXT_BUTTON" = "Hide Previous and Next button"; "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."; "HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = "Hide the Previous and Next button in video controls overlay.";
"YT_MINIPLAYER" = "Enable the Miniplayer for all YouTube videos"; "YT_MINIPLAYER" = "Enable the mini player for all YouTube videos";
"YT_MINIPLAYER_DESC" = "Kid videos for example."; "YT_MINIPLAYER_DESC" = "Kid videos for example.";
"CAST_CONFIRM" = "Confirm alert before casting (YTCastConfirm)"; "CAST_CONFIRM" = "Confirm alert before casting (YTCastConfirm)";
"CAST_CONFIRM_DESC" = "Show a confirm alert before casting to prevent accidentally hijacking TV."; "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" = "Hide End screens hover cards (YTNoHoverCards)";
"HIDE_HOVER_CARD_DESC" = "Hide creator End screens (thumbnails) at the end of videos."; "HIDE_HOVER_CARD_DESC" = "Hide the creator End screens (thumbnails) at the end of videos.";
"NEW_MINIPLAYER_STYLE" = "New miniplayer bar style (BigYTMiniPlayer)"; "NEW_MINIPLAYER_STYLE" = "New mini player bar style (BigYTMiniPlayer)";
"NEW_MINIPLAYER_STYLE_DESC" = "App restart is required."; "NEW_MINIPLAYER_STYLE_DESC" = "App restart is required.";
"YT_RE_EXPLORE" = "Replace Shorts tab with Explore tab (YTReExplore)"; "YT_RE_EXPLORE" = "Replace Shorts tab with Explore tab (YTReExplore)";
@@ -57,10 +57,10 @@ https://github.com/PoomSmart/Return-YouTube-Dislikes/tree/main/layout/Library/Ap
"HIDE_HUD_MESSAGES_DESC" = "Example: CC is turned on/off, Video loop is on,..."; "HIDE_HUD_MESSAGES_DESC" = "Example: CC is turned on/off, Video loop is on,...";
"OLED_DARKMODE" = "OLED Dark mode (Experimental)"; "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_DARKMODE_DESC" = "Might not work correctly in some cases. App restart is required after you enable/disable this option.";
"OLED_KEYBOARD" = "OLED Keyboard (Experimental)"; "OLED_KEYBOARD" = "OLED Keyboard (Experimental)";
"OLED_KEYBOARD_DESC" = "Might not working correctly in some cases. App restart is required."; "OLED_KEYBOARD_DESC" = "Might not work correctly in some cases. App restart is required.";
"HIDE_PAID_PROMOTION_CARDS" = "Hide Paid Promotion banner"; "HIDE_PAID_PROMOTION_CARDS" = "Hide Paid Promotion banner";
"HIDE_PAID_PROMOTION_CARDS_DESC" = "Hide the 'Includes Paid Promotions' banner in some videos."; "HIDE_PAID_PROMOTION_CARDS_DESC" = "Hide the 'Includes Paid Promotions' banner in some videos.";
@@ -0,0 +1,72 @@
/* Read me:
- How to translate uYouPlus (if your language already exists then feel free to check it and/or improve it):
1. Fork uYouPlus repo
2. Duplicate the template.lproj folder, and edit the duplicated folder's name to your <lang_code>.lproj id.
For example: <ru.lproj> for Russia. For more details, visit: https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes
3. Translate each line below after each =
4. Open a Pull Request
- You can also add your localization to YTABConfig, YouPiP, YTUHD, Return YouTube Dislike. The process is the same:
https://github.com/PoomSmart/YTABConfig/tree/main/layout/Library/Application%20Support/YTABC.bundle
https://github.com/PoomSmart/YouPiP/tree/main/layout/Library/Application%20Support/YouPiP.bundle
https://github.com/PoomSmart/YTUHD/tree/master/layout/Library/Application%20Support/YTUHD.bundle
https://github.com/PoomSmart/Return-YouTube-Dislikes/tree/main/layout/Library/Application%20Support/RYD.bundle
*/
// Settings
"VERSION" = "uYouPlus'ın sürümü: %@";
"VERSION_CHECK" = "Güncellemeyi kontrol etmek için dokunun!";
"DONT_EAT_MY_CONTENT" = "2:1 Video İçeriğinde Çentik/Ada Önleme (DontEatMyContent)";
"DONT_EAT_MY_CONTENT_DESC" = "Çentik/Dinamik Ada'nın YouTube'daki 2:1 video içeriğini yemesini önleyin. Uygulamanın yeniden başlatılması gerekir.";
"REPLACE_PREVIOUS_NEXT_BUTTON" = "Önceki ve Sonraki Düğmelerini Değiştir";
"REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "Önceki ve Sonraki Düğmelerini Hızlı ileri ve Geri Sar düğmeleriyle değiştirin. Uygulamanın yeniden başlatılması gerekir.";
"FIX_GOOGLE_SIGNIN" = "Google Oturumu Açma'yı düzeltin (yalnızca TrollStore kullanıcıları için)";
"FIX_GOOGLE_SIGNIN_DESC" = "Bu seçeneği yalnızca Google hesabınızla oturum açamadığınızda ve uygulama TrollStore aracılığıyla yüklendiyse açın. Normal olarak giriş yapabiliyorsanız, devre dışı bırakın. Uygulamanın yeniden başlatılması gerekir.";
"HIDE_PREVIOUS_AND_NEXT_BUTTON" = "Önceki ve Sonraki düğmelerini gizle";
"HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = "Video kontrolleri katmanında Önceki ve Sonraki düğmelerini gizler.";
"YT_MINIPLAYER" = "Tüm YouTube videoları için Mini Oynatıcıyı etkinleştirin";
"YT_MINIPLAYER_DESC" = "Örneğin çocuk videoları.";
"CAST_CONFIRM" = "Yayınlamadan önce uyarıyı onaylayın (YTCastConfirm)";
"CAST_CONFIRM_DESC" = "TV'nin yanlışlıkla ele geçirilmesini önlemek için yayınlamadan önce bir onay uyarısı gösterir.";
"HIDE_HOVER_CARD" = "Bitiş ekranlarının üzerine gelen kartları gizle.(YTNoHoverCards)";
"HIDE_HOVER_CARD_DESC" = "Videoların sonundaki içerik oluşturucu bitiş ekranlarını (küçük resimler) gizler.";
"NEW_MINIPLAYER_STYLE" = "Yeni mini oynatıcı bar stili. (BigYTMiniPlayer)";
"NEW_MINIPLAYER_STYLE_DESC" = "Uygulamanın yeniden başlatılması gerekir.";
"YT_RE_EXPLORE" = "Shorts sekmesini Keşfet sekmesiyle değiştirin (YTReExplore)";
"YT_RE_EXPLORE_DESC" = "Uygulamanın yeniden başlatılması gerekir.";
"HIDE_SUBTITLES_BUTTON" = "Altyazıları düğmesini gizle";
"HIDE_SUBTITLES_BUTTON_DESC" = "Video kontrolleri katmanındaki Altyazılar düğmesini gizler.";
"HIDE_AUTOPLAY_SWITCH" = "Otomatik oynatma anahtarını gizle";
"HIDE_AUTOPLAY_SWITCH_DESC" = "Otomatik oynat anahtarını video kontrolleri katmanından gizler.";
"AUTO_FULLSCREEN" = "Otomatik Tam Ekran (YTAutoFullScreen)";
"AUTO_FULLSCREEN_DESC" = "Videoları otomatik olarak tam ekranda oynatır.";
"HIDE_HUD_MESSAGES" = "Gösterge Paneli Mesajlarını gizle";
"HIDE_HUD_MESSAGES_DESC" = "Örnek: Altyazılar açıldı/kapandı, Video döngüsü açık,...";
"OLED_DARKMODE" = "OLED Karanlık modu (Deneysel)";
"OLED_DARKMODE_DESC" = "Bazı durumlarda düzgün çalışmayabilir. Bu seçeneği etkinleştirdikten/devre dışı bıraktıktan sonra uygulamanın yeniden başlatılması gerekir.";
"OLED_KEYBOARD" = "OLED Klavye (Deneysel)";
"OLED_KEYBOARD_DESC" = "Bazı durumlarda düzgün çalışmayabilir. Uygulamanın yeniden başlatılması gerekir.";
"HIDE_PAID_PROMOTION_CARDS" = "Ücretli Promosyon afişini gizle";
"HIDE_PAID_PROMOTION_CARDS_DESC" = "Bazı videolarda 'Ücretli Promosyonları İçerir' afişini gizler.";
// YTCastConfirm
"CASTING" = "Yayınlar";
"MSG_ARE_YOU_SURE" = "Yayınlamaya başlamak istediğinizden emin misiniz?";
"MSG_YES" = "Evet";
"MSG_CANCEL" = "İptal";
+34 -11
View File
@@ -29,8 +29,11 @@ NSBundle *uYouPlusBundle() {
NSString *tweakBundlePath = [[NSBundle mainBundle] pathForResource:@"uYouPlus" ofType:@"bundle"]; NSString *tweakBundlePath = [[NSBundle mainBundle] pathForResource:@"uYouPlus" ofType:@"bundle"];
if (tweakBundlePath) if (tweakBundlePath)
bundle = [NSBundle bundleWithPath:tweakBundlePath]; bundle = [NSBundle bundleWithPath:tweakBundlePath];
else else {
bundle = [NSBundle bundleWithPath:@"/Library/Application Support/uYouPlus.bundle"]; bundle = [NSBundle bundleWithPath:@"/Library/Application Support/uYouPlus.bundle"];
if (!bundle)
bundle = [NSBundle bundleWithPath:@"/var/jb/Library/Application Support/uYouPlus.bundle"];
}
}); });
return bundle; return bundle;
} }
@@ -262,12 +265,12 @@ BOOL dontEatMyContent() {
- (BOOL)isPromptForLocalNetworkPermissionsEnabled { return NO; } - (BOOL)isPromptForLocalNetworkPermissionsEnabled { return NO; }
%end %end
// YouRememberCaption: https://poomsmart.github.io/repo/depictions/youremembercaption.html // A/B flags
%hook YTColdConfig %hook YTColdConfig
- (BOOL)respectDeviceCaptionSetting { return NO; } - (BOOL)respectDeviceCaptionSetting { return NO; } // YouRememberCaption: https://poomsmart.github.io/repo/depictions/youremembercaption.html
- (BOOL)isLandscapeEngagementPanelSwipeRightToDismissEnabled { return YES; } - (BOOL)isLandscapeEngagementPanelSwipeRightToDismissEnabled { return YES; } // Swipe right to dismiss the right panel in fullscreen mode
// Fix uYou's label glitching - qnblackcat/uYouPlus#552 - (BOOL)mainAppCoreClientIosTransientVisualGlitchInPivotBarFix { return NO; } // Fix uYou's label glitching - qnblackcat/uYouPlus#552
- (BOOL)mainAppCoreClientIosTransientVisualGlitchInPivotBarFix { return NO; } - (BOOL)enableSwipeToRemoveInPlaylistWatchEp { return YES; } // Enable swipe right to remove video in Playlist.
%end %end
// NOYTPremium - https://github.com/PoomSmart/NoYTPremium/ // NOYTPremium - https://github.com/PoomSmart/NoYTPremium/
@@ -310,12 +313,9 @@ BOOL dontEatMyContent() {
- (BOOL)shouldEnablePlayerBarOnlyOnPause { return NO; } - (BOOL)shouldEnablePlayerBarOnlyOnPause { return NO; }
%end %end
%hook YTInlinePlayerBarContainerView
- (void)setUserInteractionEnabled:(BOOL)enabled { %orig(YES); }
%end
%hook YTColdConfig %hook YTColdConfig
- (BOOL)iosEnableVideoPlayerScrubber { return YES; } - (BOOL)iosEnableVideoPlayerScrubber { return YES; }
- (BOOL)mobileShortsTabInlined { return YES; }
%end %end
%hook YTHotConfig %hook YTHotConfig
@@ -801,6 +801,11 @@ UIColor* raisedColor = [UIColor colorWithRed:0.035 green:0.035 blue:0.035 alpha:
} }
} }
%end %end
// Incompatibility with the new YT Dark theme
%hook YTColdConfig
- (BOOL)uiSystemsClientGlobalConfigUseDarkerPaletteBgColorForNative { return NO; }
%end
%end %end
# pragma mark - OLED keyboard by @ichitaso <3 - http://gist.github.com/ichitaso/935100fd53a26f18a9060f7195a1be0e # pragma mark - OLED keyboard by @ichitaso <3 - http://gist.github.com/ichitaso/935100fd53a26f18a9060f7195a1be0e
@@ -1096,6 +1101,24 @@ void center() {
} }
%end %end
// Workaround for qnblackcat/uYouPlus#617
static BOOL didFinishLaunching;
%hook YTAppDelegate
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary<UIApplicationLaunchOptionsKey, id> *)launchOptions {
didFinishLaunching = %orig;
self.downloadsVC = [self.downloadsVC init];
return didFinishLaunching;
}
%end
%hook DownloadsPagerVC
- (instancetype)init {
return didFinishLaunching ? %orig : self;
}
%end
// iOS 16 uYou crash fix - @level3tjg: https://github.com/qnblackcat/uYouPlus/pull/224 // iOS 16 uYou crash fix - @level3tjg: https://github.com/qnblackcat/uYouPlus/pull/224
%group iOS16 %group iOS16
%hook OBPrivacyLinkButton %hook OBPrivacyLinkButton