Files
yattee/Yattee/Views/Components/InstanceToolbarButton.swift
2026-02-08 18:33:56 +01:00

56 lines
1.5 KiB
Swift

//
// InstanceToolbarButton.swift
// Yattee
//
// A toolbar button that shows the current active instance and allows switching.
//
import SwiftUI
struct InstanceToolbarButton: View {
@Environment(\.appEnvironment) private var appEnvironment
@State private var showingPicker = false
var body: some View {
if let instancesManager = appEnvironment?.instancesManager,
instancesManager.enabledInstances.count > 1 {
Button {
showingPicker = true
} label: {
HStack(spacing: 4) {
Image(systemName: iconForInstance)
Text(instancesManager.activeInstance?.displayName ?? "")
.font(.subheadline)
.lineLimit(1)
Image(systemName: "chevron.down")
.font(.caption2)
}
}
.sheet(isPresented: $showingPicker) {
InstancePickerSheet()
}
}
}
private var iconForInstance: String {
guard let instance = appEnvironment?.instancesManager.activeInstance else {
return "server.rack"
}
return instance.type.systemImage
}
}
// MARK: - Preview
#Preview {
NavigationStack {
Text("Content")
.toolbar {
ToolbarItem(placement: .automatic) {
InstanceToolbarButton()
}
}
}
.appEnvironment(.preview)
}