Files
UUVPN/iOS-SwiftUI-Code/XiaoXiong/ContentView.swift
T
2025-01-28 12:28:03 +08:00

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 }
}
}
}
}
}