60 lines
1.8 KiB
Swift
60 lines
1.8 KiB
Swift
import ApplicationLibrary
|
|
import Library
|
|
import SwiftUI
|
|
|
|
struct ContentView: View {
|
|
@Environment(\.selection) private var selection
|
|
@Environment(\.extensionProfile) private var extensionProfile
|
|
|
|
var body: some View {
|
|
viewBuilder {
|
|
if let profile = extensionProfile.wrappedValue {
|
|
ContentView0().environmentObject(profile)
|
|
} else {
|
|
ContentView1()
|
|
}
|
|
}
|
|
}
|
|
|
|
struct ContentView0: View {
|
|
@Environment(\.selection) private var selection
|
|
@EnvironmentObject private var extensionProfile: ExtensionProfile
|
|
|
|
var body: some View {
|
|
TabView(selection: selection) {
|
|
ForEach(NavigationPage.allCases.filter { it in
|
|
it.visible(extensionProfile)
|
|
}, id: \.self) { page in
|
|
NavigationStackCompat {
|
|
page.contentView
|
|
}
|
|
.tag(page)
|
|
.tabItem { page.label }
|
|
}
|
|
}.onChangeCompat(of: extensionProfile.status) {
|
|
if !selection.wrappedValue.visible(extensionProfile) {
|
|
selection.wrappedValue = NavigationPage.dashboard
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
struct ContentView1: View {
|
|
@Environment(\.selection) private var selection
|
|
|
|
var body: some View {
|
|
TabView(selection: selection) {
|
|
ForEach(NavigationPage.allCases.filter { it in
|
|
it.visible(nil)
|
|
}, id: \.self) { page in
|
|
NavigationStackCompat {
|
|
page.contentView
|
|
}
|
|
.tag(page)
|
|
.tabItem { page.label }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|