Add ability to reset config

This commit is contained in:
Neil Alexander 2024-06-23 17:23:11 +01:00
parent 00419e6269
commit b0c3d045a3
No known key found for this signature in database
GPG key ID: A02A2019A2BB0944
2 changed files with 37 additions and 43 deletions

View file

@ -90,6 +90,15 @@ class ConfigurationProxy: PlatformItemSource {
} }
} }
public func reset() {
self.json = MobileGenerateConfigJSON()
try? self.convertToDict()
self.fix()
if var manager = self.manager {
try? self.save(to: &manager)
}
}
public var multicastBeacons: Bool { public var multicastBeacons: Bool {
get { get {
let multicastInterfaces = self.get("MulticastInterfaces") as? [[String: Any]] ?? [] let multicastInterfaces = self.get("MulticastInterfaces") as? [[String: Any]] ?? []

View file

@ -11,6 +11,7 @@ struct SettingsView: View {
@ObservedObject private var appDelegate = Application.appDelegate @ObservedObject private var appDelegate = Application.appDelegate
@State private var deviceName = "" @State private var deviceName = ""
@State private var isResetting = false
var body: some View { var body: some View {
Form { Form {
@ -33,50 +34,30 @@ struct SettingsView: View {
Text("Automatically start when connected to") Text("Automatically start when connected to")
}) })
/*
Section(content: { Section(content: {
VStack(alignment: .leading) { VStack(alignment: .leading) {
Button("Import configuration") { Button("Reset configuration") {
self.isResetting.toggle()
} }
#if os(macOS) .alert("Reset configuration", isPresented: $isResetting) {
.buttonStyle(.link) Button("Confirm", action: resetConfig)
#endif Button("Cancel", role: .cancel) { }
.foregroundColor(.accentColor) } message: {
Text("Import configuration from another device, including the public key and Yggdrasil IP address.") Text("Are you sure you want to reset your configuration? This operation cannot be undone.")
.font(.system(size: 11)) }
.foregroundColor(.gray) #if os(macOS)
} .buttonStyle(.link)
#endif
VStack(alignment: .leading) { .foregroundColor(.red)
Button("Export configuration") { Text("Resetting will overwrite with newly generated configuration. Your public key and Yggdrasil IP address will change.")
.font(.system(size: 11))
} .foregroundColor(.gray)
#if os(macOS) }
.buttonStyle(.link) }, header: {
#endif Text("Configuration")
.foregroundColor(.accentColor) }
Text("Configuration will be exported as a file. Your configuration contains your private key which is extremely sensitive. Do not share it with anyone.") )
.font(.system(size: 11))
.foregroundColor(.gray)
}
VStack(alignment: .leading) {
Button("Reset configuration") {
}
#if os(macOS)
.buttonStyle(.link)
#endif
.foregroundColor(.red)
Text("Resetting will overwrite with newly generated configuration. Your public key and Yggdrasil IP address will change.")
.font(.system(size: 11))
.foregroundColor(.gray)
}
}, header: {
Text("Configuration")
})
*/
} }
.formStyle(.grouped) .formStyle(.grouped)
.navigationTitle("Settings") .navigationTitle("Settings")
@ -84,6 +65,10 @@ struct SettingsView: View {
.navigationBarTitleDisplayMode(.large) .navigationBarTitleDisplayMode(.large)
#endif #endif
} }
func resetConfig() {
self.appDelegate.yggdrasilConfig.reset()
}
} }
struct SettingsView_Previews: PreviewProvider { struct SettingsView_Previews: PreviewProvider {