Meshtastic-Apple/Meshtastic/Views/ContentView.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

80 lines
1.5 KiB
Swift

/*
Copyright (c) Garth Vander Houwen 2021
*/
import SwiftUI
@available(iOS 17.0, *)
struct ContentView: View {
@StateObject var appState = AppState.shared
var body: some View {
TabView(selection: $appState.tabSelection) {
Messages()
.tabItem {
Label("messages", systemImage: "message")
}
.tag(Tab.contacts)
.badge(appState.unreadDirectMessages + appState.unreadChannelMessages)
Connect()
.tabItem {
Label("bluetooth", systemImage: "antenna.radiowaves.left.and.right")
}
.tag(Tab.ble)
NodeList()
.tabItem {
Label("nodes", systemImage: "flipphone")
}
.tag(Tab.nodes)
if #available(iOS 17.0, macOS 14.0, *) {
if UserDefaults.mapUseLegacy {
NodeMap()
.tabItem {
Label("map", systemImage: "map")
}
.tag(Tab.map)
} else {
MeshMap()
.tabItem {
Label("map", systemImage: "map")
}
.tag(Tab.map)
}
} else {
NodeMap()
.tabItem {
Label("map", systemImage: "map")
}
.tag(Tab.map)
}
Settings()
.tabItem {
Label("settings", systemImage: "gear")
.font(.title)
}
.tag(Tab.settings)
}
}
}
// #Preview {
// if #available(iOS 17.0, *) {
// // ContentView(deepLinkManager: .init())
// } else {
// // Fallback on earlier versions
// }
// }
// struct ContentView_Previews: PreviewProvider {
// static var previews: some View {
// ContentView()
// }
// }
enum Tab: Hashable {
case contacts
case messages
case map
case ble
case nodes
case settings
}