[LoaderConfig] Init

This commit is contained in:
Jack Matthews 2023-03-15 02:06:32 -04:00
parent 5583ebda52
commit 903108f5ee
No known key found for this signature in database

View file

@ -0,0 +1,58 @@
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 {}
}