mirror of
https://github.com/GLEGram/GLEGram-iOS.git
synced 2026-04-23 11:26:54 +02:00
4647310322
Based on Swiftgram 12.5 (Telegram iOS 12.5). All GLEGram features ported and organized in GLEGram/ folder. Features: Ghost Mode, Saved Deleted Messages, Content Protection Bypass, Font Replacement, Fake Profile, Chat Export, Plugin System, and more. See CHANGELOG_12.5.md for full details.
38 lines
1.4 KiB
Swift
38 lines
1.4 KiB
Swift
import Foundation
|
|
import JSONUtilities
|
|
|
|
/// A helper for extracting and validating the `Settings` object from a JSON dictionary.
|
|
struct BuildSettingsParser {
|
|
let jsonDictionary: JSONDictionary
|
|
|
|
/// Attempts to extract and parse the `Settings` from the dictionary.
|
|
///
|
|
/// - Returns: A valid `Settings` object
|
|
func parse() throws -> Settings {
|
|
do {
|
|
return try jsonDictionary.json(atKeyPath: "settings")
|
|
} catch let specParsingError as SpecParsingError {
|
|
// Re-throw `SpecParsingError` to prevent the misuse of settings.configs.
|
|
throw specParsingError
|
|
} catch {
|
|
// Ignore all errors except `SpecParsingError`
|
|
return .empty
|
|
}
|
|
}
|
|
|
|
/// Attempts to extract and parse setting groups from the dictionary with fallback defaults.
|
|
///
|
|
/// - Returns: Parsed setting groups or default groups if parsing fails
|
|
func parseSettingGroups() throws -> [String: Settings] {
|
|
do {
|
|
return try jsonDictionary.json(atKeyPath: "settingGroups", invalidItemBehaviour: .fail)
|
|
} catch let specParsingError as SpecParsingError {
|
|
// Re-throw `SpecParsingError` to prevent the misuse of settingGroups.
|
|
throw specParsingError
|
|
} catch {
|
|
// Ignore all errors except `SpecParsingError`
|
|
return jsonDictionary.json(atKeyPath: "settingPresets") ?? [:]
|
|
}
|
|
}
|
|
}
|