revenge-tweak/Sources/LoaderConfig.m

100 lines
3.3 KiB
Mathematica
Raw Normal View History

2024-11-14 11:15:18 +01:00
#import "LoaderConfig.h"
#import "Utils.h"
#import "Logger.h"
@implementation LoaderConfig
2024-11-15 15:29:51 +01:00
- (instancetype)init {
self = [super init];
if (self) {
self.customLoadUrlEnabled = NO;
self.customLoadUrl = [NSURL URLWithString:@"http://localhost:4040/revenge.js"];
2024-11-15 15:29:51 +01:00
}
return self;
}
- (BOOL)loadConfig {
NSURL *loaderConfigUrl = [getPyoncordDirectory() URLByAppendingPathComponent:@"loader.json"];
RevengeLog(@"Attempting to load config from: %@", loaderConfigUrl.path);
if ([[NSFileManager defaultManager] fileExistsAtPath:loaderConfigUrl.path]) {
NSError *error = nil;
NSData *data = [NSData dataWithContentsOfURL:loaderConfigUrl];
NSDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error];
if (error) {
RevengeLog(@"Error parsing loader config: %@", error);
return NO;
}
if (json) {
NSDictionary *customLoadUrl = json[@"customLoadUrl"];
if (customLoadUrl) {
self.customLoadUrlEnabled = [customLoadUrl[@"enabled"] boolValue];
NSString *urlString = customLoadUrl[@"url"];
if (urlString) {
self.customLoadUrl = [NSURL URLWithString:urlString];
}
}
RevengeLog(@"Loader config loaded - Custom URL %@: %@",
self.customLoadUrlEnabled ? @"enabled" : @"disabled",
self.customLoadUrl.absoluteString);
return YES;
}
}
RevengeLog(@"Using default loader config: %@", self.customLoadUrl.absoluteString);
2024-11-15 15:29:51 +01:00
return NO;
}
2024-11-14 11:15:18 +01:00
+ (instancetype)defaultConfig {
LoaderConfig *config = [[LoaderConfig alloc] init];
config.customLoadUrlEnabled = NO;
2024-11-15 09:47:28 +01:00
config.customLoadUrl = [NSURL URLWithString:@"http://localhost:4040/revenge.js"];
2024-11-14 11:15:18 +01:00
return config;
}
+ (instancetype)getLoaderConfig {
2024-11-15 11:45:12 +01:00
RevengeLog(@"Getting loader config");
2024-11-15 09:47:28 +01:00
2024-11-14 11:15:18 +01:00
NSURL *loaderConfigUrl = [getPyoncordDirectory() URLByAppendingPathComponent:@"loader.json"];
2024-11-15 09:47:28 +01:00
2024-11-14 11:15:18 +01:00
if ([[NSFileManager defaultManager] fileExistsAtPath:loaderConfigUrl.path]) {
NSError *error = nil;
NSData *data = [NSData dataWithContentsOfURL:loaderConfigUrl];
NSDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error];
2024-11-15 09:47:28 +01:00
2024-11-14 11:15:18 +01:00
if (json && !error) {
LoaderConfig *config = [[LoaderConfig alloc] init];
NSDictionary *customLoadUrl = json[@"customLoadUrl"];
if (customLoadUrl) {
config.customLoadUrlEnabled = [customLoadUrl[@"enabled"] boolValue];
NSString *urlString = customLoadUrl[@"url"];
if (urlString) {
config.customLoadUrl = [NSURL URLWithString:urlString];
}
}
return config;
}
}
2024-11-15 09:47:28 +01:00
2024-11-15 11:45:12 +01:00
RevengeLog(@"Couldn't get loader config");
2024-11-14 11:15:18 +01:00
return [LoaderConfig defaultConfig];
}
- (BOOL)saveConfig {
NSURL *loaderConfigUrl = [getPyoncordDirectory() URLByAppendingPathComponent:@"loader.json"];
NSDictionary *json = @{
@"customLoadUrl": @{
@"enabled": @(self.customLoadUrlEnabled),
@"url": self.customLoadUrl.absoluteString
}
};
2024-11-15 09:47:28 +01:00
2024-11-14 11:15:18 +01:00
NSData *data = [NSJSONSerialization dataWithJSONObject:json options:0 error:nil];
return [data writeToURL:loaderConfigUrl atomically:YES];
}
2024-11-15 09:47:28 +01:00
@end