From 5b69959aeab7b5348b22915a426ef33632e6eff5 Mon Sep 17 00:00:00 2001 From: Gil Shahar Date: Sun, 17 Jun 2018 08:03:52 +0300 Subject: [PATCH] Version 1.0 --- Makefile | 13 +++++ PearlRetry.plist | 1 + Tweak.xm | 42 ++++++++++++++++ control | 9 ++++ ...gilshahar7.pearlretry_1.0_iphoneos-arm.deb | Bin 0 -> 27966 bytes pearlretryprefs/Makefile | 14 ++++++ pearlretryprefs/Resources/Info.plist | 24 ++++++++++ pearlretryprefs/Resources/Root.plist | 45 ++++++++++++++++++ pearlretryprefs/Resources/icon@3x.png | Bin 0 -> 27332 bytes pearlretryprefs/entry.plist | 21 ++++++++ pearlretryprefs/prpRootListController.h | 5 ++ pearlretryprefs/prpRootListController.m | 33 +++++++++++++ 12 files changed, 207 insertions(+) create mode 100644 Makefile create mode 100644 PearlRetry.plist create mode 100644 Tweak.xm create mode 100644 control create mode 100644 packages/com.gilshahar7.pearlretry_1.0_iphoneos-arm.deb create mode 100644 pearlretryprefs/Makefile create mode 100644 pearlretryprefs/Resources/Info.plist create mode 100644 pearlretryprefs/Resources/Root.plist create mode 100644 pearlretryprefs/Resources/icon@3x.png create mode 100644 pearlretryprefs/entry.plist create mode 100644 pearlretryprefs/prpRootListController.h create mode 100644 pearlretryprefs/prpRootListController.m diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..ae9a87f --- /dev/null +++ b/Makefile @@ -0,0 +1,13 @@ +ARCHS = armv7 arm64 +include $(THEOS)/makefiles/common.mk + +TWEAK_NAME = PearlRetry +PearlRetry_FILES = Tweak.xm +PearlRetry_PRIVATE_FRAMEWORKS = SpringBoardUIServices + +include $(THEOS_MAKE_PATH)/tweak.mk + +after-install:: + install.exec "killall -9 SpringBoard" +SUBPROJECTS += pearlretryprefs +include $(THEOS_MAKE_PATH)/aggregate.mk diff --git a/PearlRetry.plist b/PearlRetry.plist new file mode 100644 index 0000000..10dc654 --- /dev/null +++ b/PearlRetry.plist @@ -0,0 +1 @@ +{ Filter = { Bundles = ( "com.apple.springboard" ); }; } diff --git a/Tweak.xm b/Tweak.xm new file mode 100644 index 0000000..0d99328 --- /dev/null +++ b/Tweak.xm @@ -0,0 +1,42 @@ +#define PLIST_PATH @"/var/mobile/Library/Preferences/com.gilshahar7.pearlretryprefs.plist" + + +@interface SBUIBiometricResource : NSObject ++ (id)sharedInstance; +- (void)noteScreenDidTurnOff; +- (void)noteScreenWillTurnOn; +@end + +float delay = 0; + +static void loadPrefs() { + NSMutableDictionary *prefs = [[NSMutableDictionary alloc] initWithContentsOfFile:PLIST_PATH]; + delay = [[prefs objectForKey:@"delay"] floatValue]; +} + +void pearlretry_settingsDidUpdate(CFNotificationCenterRef center, + void * observer, + CFStringRef name, + const void * object, + CFDictionaryRef userInfo) { + +} + +%hook SBDashBoardPearlUnlockBehavior +-(void)_handlePearlFailure{ + %orig; + [[%c(SBUIBiometricResource) sharedInstance] noteScreenDidTurnOff]; + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delay * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + [[%c(SBUIBiometricResource) sharedInstance] noteScreenWillTurnOn]; + }); +} +%end + + + +%ctor{ + loadPrefs(); + CFNotificationCenterAddObserver(CFNotificationCenterGetDarwinNotifyCenter(), NULL, (CFNotificationCallback)loadPrefs, CFSTR("com.gilshahar7.pearlretryprefs.settingschanged"), NULL, CFNotificationSuspensionBehaviorCoalesce); + + +} diff --git a/control b/control new file mode 100644 index 0000000..24a6818 --- /dev/null +++ b/control @@ -0,0 +1,9 @@ +Package: com.gilshahar7.pearlretry +Name: PearlRetry +Depends: mobilesubstrate +Version: 1.0 +Architecture: iphoneos-arm +Description: Retry FaceID when failed to recognize. +Maintainer: gilshahar7 +Author: gilshahar7 +Section: Tweaks diff --git a/packages/com.gilshahar7.pearlretry_1.0_iphoneos-arm.deb b/packages/com.gilshahar7.pearlretry_1.0_iphoneos-arm.deb new file mode 100644 index 0000000000000000000000000000000000000000..6591f2f3839c01da5c32219681c87704fb8ff23e GIT binary patch literal 27966 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 + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + PearlRetryPrefs + CFBundleIdentifier + com.gilshahar7.pearlretryprefs + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0.0 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + NSPrincipalClass + prpRootListController + + diff --git a/pearlretryprefs/Resources/Root.plist b/pearlretryprefs/Resources/Root.plist new file mode 100644 index 0000000..afbc50e --- /dev/null +++ b/pearlretryprefs/Resources/Root.plist @@ -0,0 +1,45 @@ + + + + + items + + + cell + PSGroupCell + label + PearlRetry + + + cell + PSStaticTextCell + label + Retry delay in seconds + + + cell + PSSliderCell + default + 0.7 + min + 0.0 + max + 1.5 + showValue + + isSegmented + + segmentCount + 30 + defaults + com.gilshahar7.pearlretryprefs + key + delay + PostNotification + com.gilshahar7.pearlretryprefs.settingschanged + + + title + PearlRetryPrefs + + diff --git a/pearlretryprefs/Resources/icon@3x.png b/pearlretryprefs/Resources/icon@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..c5aadec31c0420c09ee4b877ab14e46752d37248 GIT binary patch literal 27332 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 JBBcN3{{yl}FyR0I literal 0 HcmV?d00001 diff --git a/pearlretryprefs/entry.plist b/pearlretryprefs/entry.plist new file mode 100644 index 0000000..7cafd0f --- /dev/null +++ b/pearlretryprefs/entry.plist @@ -0,0 +1,21 @@ + + + + + entry + + bundle + PearlRetryPrefs + cell + PSLinkCell + detail + prpRootListController + icon + icon.png + isController + + label + PearlRetry + + + diff --git a/pearlretryprefs/prpRootListController.h b/pearlretryprefs/prpRootListController.h new file mode 100644 index 0000000..16d8c08 --- /dev/null +++ b/pearlretryprefs/prpRootListController.h @@ -0,0 +1,5 @@ +#import + +@interface prpRootListController : PSListController + +@end diff --git a/pearlretryprefs/prpRootListController.m b/pearlretryprefs/prpRootListController.m new file mode 100644 index 0000000..4c5af90 --- /dev/null +++ b/pearlretryprefs/prpRootListController.m @@ -0,0 +1,33 @@ +#import +#include "prpRootListController.h" + +@implementation prpRootListController + +- (id)readPreferenceValue:(PSSpecifier*)specifier { + NSString *path = [NSString stringWithFormat:@"/User/Library/Preferences/%@.plist", specifier.properties[@"defaults"]]; + NSMutableDictionary *settings = [NSMutableDictionary dictionary]; + [settings addEntriesFromDictionary:[NSDictionary dictionaryWithContentsOfFile:path]]; + return (settings[specifier.properties[@"key"]]) ?: specifier.properties[@"default"]; +} + +- (void)setPreferenceValue:(id)value specifier:(PSSpecifier*)specifier { + NSString *path = [NSString stringWithFormat:@"/User/Library/Preferences/%@.plist", specifier.properties[@"defaults"]]; + NSMutableDictionary *settings = [NSMutableDictionary dictionary]; + [settings addEntriesFromDictionary:[NSDictionary dictionaryWithContentsOfFile:path]]; + [settings setObject:value forKey:specifier.properties[@"key"]]; + [settings writeToFile:path atomically:YES]; + CFStringRef notificationName = (CFStringRef)specifier.properties[@"PostNotification"]; + if (notificationName) { + CFNotificationCenterPostNotification(CFNotificationCenterGetDarwinNotifyCenter(), notificationName, NULL, NULL, YES); + } +} + +- (NSArray *)specifiers { + if (!_specifiers) { + _specifiers = [[self loadSpecifiersFromPlistName:@"Root" target:self] retain]; + } + + return _specifiers; +} + +@end