Meshtastic-Apple/Meshtastic/Views/Settings/SaveChannelQRCode.swift
Blake McAnally 4d547e48db This change fixes several lint errors throughout the project, and moves the SwiftLint build phase to before compilation.
After this change, a developer can now clone the project and run without the build failing due to lint errors! 😃

* I ran `swiftlint --fix` to resolve many auto-correctable issues (mostly whitespace)
* Excluded the `Meshtastic/Protobufs` directory from lint, since that code is automatically generated.
* Converted some single letter method parameters to lowercase.
* Converted several instances `force_cast` to instead use `guard` or `if let` to unwrap optional values. During this change, some of the SwiftUI views became "too complex to be solved in a reasonable time", so I broke up the views into distinct sub-expressions.

I was able to build and run the app on an iOS simulator.
2024-05-31 21:48:50 -05:00

84 lines
2 KiB
Swift

//
// SaveChannelQRCode.swift
// Meshtastic
//
// Copyright(c) Garth Vander Houwen 7/13/22.
//
import SwiftUI
struct SaveChannelQRCode: View {
@Environment(\.dismiss) private var dismiss
var channelSetLink: String
var addChannels: Bool = false
var bleManager: BLEManager
@State var showError: Bool = false
@State var connectedToDevice = false
var body: some View {
VStack {
Text("\(addChannels ? "Add" : "Replace all") Channels?")
.font(.title)
Text("These settings will \(addChannels ? "add" : "replace all") channels. The current LoRa Config will be replaced. After everything saves your device will reboot.")
.fixedSize(horizontal: false, vertical: true)
.foregroundColor(.gray)
.font(.title3)
.padding()
if showError {
Text("Channels being added from the QR code did not save. When adding channels the names must be unique.")
.fixedSize(horizontal: false, vertical: true)
.foregroundColor(.red)
.font(.callout)
.padding()
}
HStack {
if !showError {
Button {
let success = bleManager.saveChannelSet(base64UrlString: channelSetLink, addChannels: addChannels)
if success {
dismiss()
} else {
showError = true
}
} label: {
Label("save", systemImage: "square.and.arrow.down")
}
.buttonStyle(.bordered)
.buttonBorderShape(.capsule)
.controlSize(.large)
.padding()
.disabled(!connectedToDevice)
} else {
Button {
dismiss()
} label: {
Label("cancel", systemImage: "xmark")
}
.buttonStyle(.bordered)
.buttonBorderShape(.capsule)
.controlSize(.large)
.padding()
}
#if targetEnvironment(macCatalyst)
Button {
dismiss()
} label: {
Label("cancel", systemImage: "xmark")
}
.buttonStyle(.bordered)
.buttonBorderShape(.capsule)
.controlSize(.large)
.padding()
#endif
}
}
.onAppear {
connectedToDevice = bleManager.connectToPreferredPeripheral()
}
}
}