From 903108f5eeeb47d0f32eec003dcfb1a4401830fd Mon Sep 17 00:00:00 2001 From: Jack Matthews Date: Wed, 15 Mar 2023 02:06:32 -0400 Subject: [PATCH] [LoaderConfig] Init --- Sources/VendettaTweak/LoaderConfig.x.swift | 58 ++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 Sources/VendettaTweak/LoaderConfig.x.swift diff --git a/Sources/VendettaTweak/LoaderConfig.x.swift b/Sources/VendettaTweak/LoaderConfig.x.swift new file mode 100644 index 0000000..734cec8 --- /dev/null +++ b/Sources/VendettaTweak/LoaderConfig.x.swift @@ -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 {} +}