IceCubesApp/Packages/DesignSystem/Sources/DesignSystem/Views/StatusEditorToolbarItem.swift

67 lines
2 KiB
Swift
Raw Normal View History

2022-12-29 16:22:07 +00:00
import Env
import Models
2023-01-17 10:36:01 +00:00
import SwiftUI
2022-12-29 16:22:07 +00:00
@MainActor
2023-01-17 10:36:01 +00:00
public extension View {
2023-10-23 17:12:25 +00:00
func statusEditorToolbarItem(routerPath: RouterPath,
visibility: Models.Visibility) -> some ToolbarContent {
StatusEditorToolbarItem(visibility: visibility)
2022-12-29 16:22:07 +00:00
}
}
@MainActor
public struct StatusEditorToolbarItem: ToolbarContent {
2023-10-23 17:12:25 +00:00
@Environment(\.openWindow) private var openWindow
@Environment(RouterPath.self) private var routerPath
let visibility: Models.Visibility
2023-01-17 10:36:01 +00:00
public init(visibility: Models.Visibility) {
self.visibility = visibility
}
2023-01-17 10:36:01 +00:00
public var body: some ToolbarContent {
ToolbarItem(placement: .navigationBarTrailing) {
Button {
Task { @MainActor in
2023-10-23 17:12:25 +00:00
if ProcessInfo.processInfo.isMacCatalystApp {
openWindow(value: WindowDestination.newStatusEditor(visibility: visibility))
} else {
routerPath.presentedSheet = .newStatusEditor(visibility: visibility)
HapticManager.shared.fireHaptic(of: .buttonPress)
}
}
} label: {
Image(systemName: "square.and.pencil")
.accessibilityLabel("accessibility.tabs.timeline.new-post.label")
.accessibilityInputLabels([
LocalizedStringKey("accessibility.tabs.timeline.new-post.label"),
LocalizedStringKey("accessibility.tabs.timeline.new-post.inputLabel1"),
2023-07-19 05:46:25 +00:00
LocalizedStringKey("accessibility.tabs.timeline.new-post.inputLabel2"),
])
}
}
}
}
@MainActor
public struct SecondaryColumnToolbarItem: ToolbarContent {
@Environment(\.isSecondaryColumn) private var isSecondaryColumn
2023-09-19 07:18:20 +00:00
@Environment(UserPreferences.self) private var preferences
public init() {}
2023-02-22 18:09:39 +00:00
2023-09-16 12:15:03 +00:00
public var body: some ToolbarContent {
ToolbarItem(placement: isSecondaryColumn ? .navigationBarLeading : .navigationBarTrailing) {
Button {
withAnimation {
preferences.showiPadSecondaryColumn.toggle()
}
} label: {
Image(systemName: "sidebar.right")
}
}
}
}