Files
GLEGram-iOS/third-party/XcodeGen/Sources/ProjectSpec/BuildSettingsExtractor.swift
T
Leeksov 4647310322 GLEGram 12.5 — Initial public release
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.
2026-04-06 09:48:12 +03:00

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") ?? [:]
}
}
}