mirror of
				https://github.com/SoPat712/YTLitePlus.git
				synced 2025-10-31 12:54:13 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			189 lines
		
	
	
		
			6.2 KiB
		
	
	
	
		
			Objective-C
		
	
	
	
	
	
			
		
		
	
	
			189 lines
		
	
	
		
			6.2 KiB
		
	
	
	
		
			Objective-C
		
	
	
	
	
	
| //
 | |
| //  NSUserDefaults+FLEX.m
 | |
| //  FLEX
 | |
| //
 | |
| //  Created by Tanner on 3/10/20.
 | |
| //  Copyright © 2020 FLEX Team. All rights reserved.
 | |
| //
 | |
| 
 | |
| #import "NSUserDefaults+FLEX.h"
 | |
| 
 | |
| NSString * const kFLEXDefaultsToolbarTopMarginKey = @"com.flex.FLEXToolbar.topMargin";
 | |
| NSString * const kFLEXDefaultsiOSPersistentOSLogKey = @"com.flipborad.flex.enable_persistent_os_log";
 | |
| NSString * const kFLEXDefaultsHidePropertyIvarsKey = @"com.flipboard.FLEX.hide_property_ivars";
 | |
| NSString * const kFLEXDefaultsHidePropertyMethodsKey = @"com.flipboard.FLEX.hide_property_methods";
 | |
| NSString * const kFLEXDefaultsHidePrivateMethodsKey = @"com.flipboard.FLEX.hide_private_or_namespaced_methods";
 | |
| NSString * const kFLEXDefaultsShowMethodOverridesKey = @"com.flipboard.FLEX.show_method_overrides";
 | |
| NSString * const kFLEXDefaultsHideVariablePreviewsKey = @"com.flipboard.FLEX.hide_variable_previews";
 | |
| NSString * const kFLEXDefaultsNetworkObserverEnabledKey = @"com.flex.FLEXNetworkObserver.enableOnLaunch";
 | |
| NSString * const kFLEXDefaultsNetworkObserverLastModeKey = @"com.flex.FLEXNetworkObserver.lastMode";
 | |
| NSString * const kFLEXDefaultsNetworkHostDenylistKey = @"com.flipboard.FLEX.network_host_denylist";
 | |
| NSString * const kFLEXDefaultsDisableOSLogForceASLKey = @"com.flipboard.FLEX.try_disable_os_log";
 | |
| NSString * const kFLEXDefaultsRegisterJSONExplorerKey = @"com.flipboard.FLEX.view_json_as_object";
 | |
| 
 | |
| #define FLEXDefaultsPathForFile(name) ({ \
 | |
|     NSArray *paths = NSSearchPathForDirectoriesInDomains( \
 | |
|         NSLibraryDirectory, NSUserDomainMask, YES \
 | |
|     ); \
 | |
|     [paths[0] stringByAppendingPathComponent:@"Preferences"]; \
 | |
| })
 | |
| 
 | |
| @implementation NSUserDefaults (FLEX)
 | |
| 
 | |
| #pragma mark Internal
 | |
| 
 | |
| /// @param filename the name of a plist file without any extension
 | |
| - (NSString *)flex_defaultsPathForFile:(NSString *)filename {
 | |
|     filename = [filename stringByAppendingPathExtension:@"plist"];
 | |
|     
 | |
|     NSArray<NSString *> *paths = NSSearchPathForDirectoriesInDomains(
 | |
|         NSLibraryDirectory, NSUserDomainMask, YES
 | |
|     );
 | |
|     NSString *preferences = [paths[0] stringByAppendingPathComponent:@"Preferences"];
 | |
|     return [preferences stringByAppendingPathComponent:filename];
 | |
| }
 | |
| 
 | |
| #pragma mark Helper
 | |
| 
 | |
| - (void)flex_toggleBoolForKey:(NSString *)key {
 | |
|     [self setBool:![self boolForKey:key] forKey:key];
 | |
|     [NSNotificationCenter.defaultCenter postNotificationName:key object:nil];
 | |
| }
 | |
| 
 | |
| #pragma mark Misc
 | |
| 
 | |
| - (double)flex_toolbarTopMargin {
 | |
|     if ([self objectForKey:kFLEXDefaultsToolbarTopMarginKey]) {
 | |
|         return [self doubleForKey:kFLEXDefaultsToolbarTopMarginKey];
 | |
|     }
 | |
|     
 | |
|     return 100;
 | |
| }
 | |
| 
 | |
| - (void)setFlex_toolbarTopMargin:(double)margin {
 | |
|     [self setDouble:margin forKey:kFLEXDefaultsToolbarTopMarginKey];
 | |
| }
 | |
| 
 | |
| - (BOOL)flex_networkObserverEnabled {
 | |
|     return [self boolForKey:kFLEXDefaultsNetworkObserverEnabledKey];
 | |
| }
 | |
| 
 | |
| - (void)setFlex_networkObserverEnabled:(BOOL)enabled {
 | |
|     [self setBool:enabled forKey:kFLEXDefaultsNetworkObserverEnabledKey];
 | |
| }
 | |
| 
 | |
| - (NSArray<NSString *> *)flex_networkHostDenylist {
 | |
|     return [NSArray arrayWithContentsOfFile:[
 | |
|         self flex_defaultsPathForFile:kFLEXDefaultsNetworkHostDenylistKey
 | |
|     ]] ?: @[];
 | |
| }
 | |
| 
 | |
| - (void)setFlex_networkHostDenylist:(NSArray<NSString *> *)denylist {
 | |
|     NSParameterAssert(denylist);
 | |
|     [denylist writeToFile:[
 | |
|         self flex_defaultsPathForFile:kFLEXDefaultsNetworkHostDenylistKey
 | |
|     ] atomically:YES];
 | |
| }
 | |
| 
 | |
| - (BOOL)flex_registerDictionaryJSONViewerOnLaunch {
 | |
|     return [self boolForKey:kFLEXDefaultsRegisterJSONExplorerKey];
 | |
| }
 | |
| 
 | |
| - (void)setFlex_registerDictionaryJSONViewerOnLaunch:(BOOL)enable {
 | |
|     [self setBool:enable forKey:kFLEXDefaultsRegisterJSONExplorerKey];
 | |
| }
 | |
| 
 | |
| - (NSInteger)flex_lastNetworkObserverMode {
 | |
|     return [self integerForKey:kFLEXDefaultsNetworkObserverLastModeKey];
 | |
| }
 | |
| 
 | |
| - (void)setFlex_lastNetworkObserverMode:(NSInteger)mode {
 | |
|     [self setInteger:mode forKey:kFLEXDefaultsNetworkObserverLastModeKey];
 | |
| }
 | |
| 
 | |
| #pragma mark System Log
 | |
| 
 | |
| - (BOOL)flex_disableOSLog {
 | |
|     return [self boolForKey:kFLEXDefaultsDisableOSLogForceASLKey];
 | |
| }
 | |
| 
 | |
| - (void)setFlex_disableOSLog:(BOOL)disable {
 | |
|     [self setBool:disable forKey:kFLEXDefaultsDisableOSLogForceASLKey];
 | |
| }
 | |
| 
 | |
| - (BOOL)flex_cacheOSLogMessages {
 | |
|     return [self boolForKey:kFLEXDefaultsiOSPersistentOSLogKey];
 | |
| }
 | |
| 
 | |
| - (void)setFlex_cacheOSLogMessages:(BOOL)cache {
 | |
|     [self setBool:cache forKey:kFLEXDefaultsiOSPersistentOSLogKey];
 | |
|     [NSNotificationCenter.defaultCenter
 | |
|         postNotificationName:kFLEXDefaultsiOSPersistentOSLogKey
 | |
|         object:nil
 | |
|     ];
 | |
| }
 | |
| 
 | |
| #pragma mark Object Explorer
 | |
| 
 | |
| - (BOOL)flex_explorerHidesPropertyIvars {
 | |
|     return [self boolForKey:kFLEXDefaultsHidePropertyIvarsKey];
 | |
| }
 | |
| 
 | |
| - (void)setFlex_explorerHidesPropertyIvars:(BOOL)hide {
 | |
|     [self setBool:hide forKey:kFLEXDefaultsHidePropertyIvarsKey];
 | |
|     [NSNotificationCenter.defaultCenter
 | |
|         postNotificationName:kFLEXDefaultsHidePropertyIvarsKey
 | |
|         object:nil
 | |
|     ];
 | |
| }
 | |
| 
 | |
| - (BOOL)flex_explorerHidesPropertyMethods {
 | |
|     return [self boolForKey:kFLEXDefaultsHidePropertyMethodsKey];
 | |
| }
 | |
| 
 | |
| - (void)setFlex_explorerHidesPropertyMethods:(BOOL)hide {
 | |
|     [self setBool:hide forKey:kFLEXDefaultsHidePropertyMethodsKey];
 | |
|     [NSNotificationCenter.defaultCenter
 | |
|         postNotificationName:kFLEXDefaultsHidePropertyMethodsKey
 | |
|         object:nil
 | |
|     ];
 | |
| }
 | |
| 
 | |
| - (BOOL)flex_explorerHidesPrivateMethods {
 | |
|     return [self boolForKey:kFLEXDefaultsHidePrivateMethodsKey];
 | |
| }
 | |
| 
 | |
| - (void)setFlex_explorerHidesPrivateMethods:(BOOL)show {
 | |
|     [self setBool:show forKey:kFLEXDefaultsHidePrivateMethodsKey];
 | |
|     [NSNotificationCenter.defaultCenter
 | |
|      postNotificationName:kFLEXDefaultsHidePrivateMethodsKey
 | |
|         object:nil
 | |
|     ];
 | |
| }
 | |
| 
 | |
| - (BOOL)flex_explorerShowsMethodOverrides {
 | |
|     return [self boolForKey:kFLEXDefaultsShowMethodOverridesKey];
 | |
| }
 | |
| 
 | |
| - (void)setFlex_explorerShowsMethodOverrides:(BOOL)show {
 | |
|     [self setBool:show forKey:kFLEXDefaultsShowMethodOverridesKey];
 | |
|     [NSNotificationCenter.defaultCenter
 | |
|      postNotificationName:kFLEXDefaultsShowMethodOverridesKey
 | |
|         object:nil
 | |
|     ];
 | |
| }
 | |
| 
 | |
| - (BOOL)flex_explorerHidesVariablePreviews {
 | |
|     return [self boolForKey:kFLEXDefaultsHideVariablePreviewsKey];
 | |
| }
 | |
| 
 | |
| - (void)setFlex_explorerHidesVariablePreviews:(BOOL)hide {
 | |
|     [self setBool:hide forKey:kFLEXDefaultsHideVariablePreviewsKey];
 | |
|     [NSNotificationCenter.defaultCenter
 | |
|         postNotificationName:kFLEXDefaultsHideVariablePreviewsKey
 | |
|         object:nil
 | |
|     ];
 | |
| }
 | |
| 
 | |
| @end
 | 
