Meshtastic-Apple/Meshtastic/Views/ContentView.swift

80 lines
1.8 KiB
Swift
Raw Normal View History

2021-08-20 07:56:05 -07:00
/*
2023-03-03 20:08:04 -08:00
Copyright (c) Garth Vander Houwen 2021
*/
2021-08-20 07:56:05 -07:00
import SwiftUI
struct ContentView: View {
2025-05-03 20:44:12 -07:00
@ObservedObject var appState: AppState
2025-05-03 20:44:12 -07:00
@ObservedObject var router: Router
@State var isShowingDeviceOnboardingFlow: Bool = false
2025-04-18 13:09:18 -07:00
init(appState: AppState, router: Router) {
self.appState = appState
self.router = router
UITabBar.appearance().scrollEdgeAppearance = UITabBarAppearance(idiom: .unspecified)
}
var body: some View {
TabView(selection: $appState.router.navigationState.selectedTab) {
Messages(
router: appState.router,
unreadChannelMessages: $appState.unreadChannelMessages,
unreadDirectMessages: $appState.unreadDirectMessages
)
.tabItem {
2025-05-03 08:58:33 -07:00
Label("Messages", systemImage: "message")
}
.tag(NavigationState.Tab.messages)
.badge(appState.totalUnreadMessages)
Connect(
router: appState.router
)
.tabItem {
2025-02-15 12:17:22 -08:00
Label("Bluetooth", systemImage: "antenna.radiowaves.left.and.right")
}
.tag(NavigationState.Tab.bluetooth)
NodeList(
router: appState.router
)
.tabItem {
2025-05-08 22:50:44 -07:00
Label("Nodes", systemImage: "flipphone")
}
.tag(NavigationState.Tab.nodes)
2024-10-05 10:44:46 -07:00
MeshMap(router: appState.router)
.tabItem {
2025-05-08 22:50:44 -07:00
Label("Mesh Map", systemImage: "map")
2024-10-05 10:44:46 -07:00
}
.tag(NavigationState.Tab.map)
2024-10-05 15:50:57 -07:00
Settings(
router: appState.router
)
.tabItem {
2025-04-27 09:11:54 -07:00
Label("Settings", systemImage: "gear")
.font(.title)
}
.tag(NavigationState.Tab.settings)
2025-05-03 20:44:12 -07:00
}.sheet(
isPresented: $isShowingDeviceOnboardingFlow,
onDismiss: {
UserDefaults.firstLaunch = false
2025-05-03 20:44:12 -07:00
}, content: {
DeviceOnboarding()
}
)
.onAppear {
if UserDefaults.firstLaunch {
isShowingDeviceOnboardingFlow = true
}
}
.onChange(of: UserDefaults.showDeviceOnboarding) {_, newValue in
2025-05-03 20:44:12 -07:00
isShowingDeviceOnboardingFlow = newValue
2023-03-03 20:08:04 -08:00
}
}
2021-08-20 07:56:05 -07:00
}