[LoaderConfig] Init
This commit is contained in:
parent
5583ebda52
commit
903108f5ee
1 changed files with 58 additions and 0 deletions
58
Sources/VendettaTweak/LoaderConfig.x.swift
Normal file
58
Sources/VendettaTweak/LoaderConfig.x.swift
Normal 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 {}
|
||||
}
|
||||
Loading…
Add table
Reference in a new issue