Files
real-e-party-iOS/YuMi/E-P/Common/EPConfigStorage.m
edwinQQQ 681b011c99 refactor: 更新 AppDelegate 和模块导入以简化配置管理
主要变更:
1. 移除不必要的模块导入,简化 AppDelegate 中的代码结构。
2. 引入新的 EPConfigManager 和 EPNIMManager,统一配置管理和 NIMSDK 初始化逻辑。
3. 更新相关方法以使用 block 回调,提升代码的可读性和维护性。
4. 新增 EPClientAPIBridge 和相关配置文件,增强项目的模块化。

此更新旨在提升代码的可维护性,减少冗余实现,确保配置管理的一致性。
2025-10-20 18:07:44 +08:00

63 lines
2.1 KiB
Objective-C

//
// EPConfigStorage.m
// YuMi
//
// Lightweight persistence for client/init data
//
#import "EPConfigStorage.h"
@implementation EPConfigStorage
#pragma mark - Public
+ (BOOL)saveInit:(NSDictionary *)dict {
if (![dict isKindOfClass:[NSDictionary class]]) { return NO; }
NSMutableDictionary *wrapped = [dict mutableCopy];
wrapped[@"_version"] = @1;
wrapped[@"_timestamp"] = @((long long)([[NSDate date] timeIntervalSince1970]));
NSData *data = [NSJSONSerialization dataWithJSONObject:wrapped options:0 error:nil];
if (!data) { return NO; }
NSString *path = [self initPath];
NSError *error = nil;
NSFileManager *fm = [NSFileManager defaultManager];
NSString *dir = [path stringByDeletingLastPathComponent];
if (![fm fileExistsAtPath:dir]) {
[fm createDirectoryAtPath:dir withIntermediateDirectories:YES attributes:nil error:&error];
if (error) { return NO; }
}
return [data writeToFile:path atomically:YES];
}
+ (NSDictionary * _Nullable)loadInit {
NSString *path = [self initPath];
NSData *data = [NSData dataWithContentsOfFile:path];
if (!data) { return nil; }
id obj = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
if (![obj isKindOfClass:[NSDictionary class]]) { return nil; }
return (NSDictionary *)obj;
}
+ (BOOL)clearInit {
NSString *path = [self initPath];
NSFileManager *fm = [NSFileManager defaultManager];
if (![fm fileExistsAtPath:path]) { return YES; }
NSError *error = nil;
[fm removeItemAtPath:path error:&error];
return (error == nil);
}
#pragma mark - Helpers
+ (NSString *)initPath {
NSArray<NSURL *> *urls = [[NSFileManager defaultManager] URLsForDirectory:NSApplicationSupportDirectory inDomains:NSUserDomainMask];
NSURL *dirURL = urls.firstObject;
if (!dirURL) { dirURL = [NSURL fileURLWithPath:[NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES) firstObject]]; }
NSURL *fileURL = [dirURL URLByAppendingPathComponent:@"ep_config_init.json"];
return fileURL.path;
}
@end