58 lines
1.4 KiB
Swift
58 lines
1.4 KiB
Swift
import Foundation
|
|
import os
|
|
|
|
enum LoaderConfigError: Error {
|
|
case doesNotExist
|
|
}
|
|
|
|
struct CustomLoadUrl: Codable {
|
|
let enabled: Bool
|
|
let url: URL
|
|
}
|
|
|
|
struct LoaderConfig: Codable {
|
|
let customLoadUrl: CustomLoadUrl
|
|
let loadReactDevTools: Bool
|
|
}
|
|
|
|
let defaultLoaderConfig = LoaderConfig(
|
|
customLoadUrl: CustomLoadUrl(
|
|
enabled: false,
|
|
url: URL(string: "http://localhost:4040/vendetta.js")!
|
|
),
|
|
loadReactDevTools: false
|
|
)
|
|
|
|
let documentDirectory = getDocumentDirectory()
|
|
let loaderConfigUrl = documentDirectory.appendingPathComponent("vendetta_loader.json")
|
|
|
|
func getLoaderConfig() -> LoaderConfig {
|
|
os_log("Getting loader config", log: vendettaLog, type: .debug)
|
|
let fileManager = FileManager.default
|
|
|
|
do {
|
|
if fileManager.fileExists(atPath: loaderConfigUrl.path) {
|
|
let data = try Data(contentsOf: loaderConfigUrl)
|
|
let loaderConfig = try JSONDecoder().decode(LoaderConfig.self, from: data)
|
|
|
|
os_log("Got loader config", log: vendettaLog, type: .debug)
|
|
|
|
return loaderConfig
|
|
} else {
|
|
throw LoaderConfigError.doesNotExist
|
|
}
|
|
} catch {
|
|
os_log("Couldn't get loader config", log: vendettaLog, type: .error)
|
|
createLoaderConfig()
|
|
|
|
return defaultLoaderConfig
|
|
}
|
|
}
|
|
|
|
func createLoaderConfig() {
|
|
do {
|
|
let encodedConfig = try JSONEncoder().encode(defaultLoaderConfig)
|
|
try encodedConfig.write(to: loaderConfigUrl)
|
|
os_log("Created loader config", log: vendettaLog, type: .debug)
|
|
} catch {}
|
|
}
|