vibetunnel/mac/VibeTunnel/Core/Extensions/EnvironmentValues+Services.swift
Peter Steinberger 288a3197d2 new auth logic
2025-06-24 01:47:45 +02:00

67 lines
2 KiB
Swift

import SwiftUI
// MARK: - Environment Keys
private struct ServerManagerKey: EnvironmentKey {
static let defaultValue: ServerManager? = nil
}
private struct NgrokServiceKey: EnvironmentKey {
static let defaultValue: NgrokService? = nil
}
private struct SystemPermissionManagerKey: EnvironmentKey {
static let defaultValue: SystemPermissionManager? = nil
}
private struct TerminalLauncherKey: EnvironmentKey {
static let defaultValue: TerminalLauncher? = nil
}
// MARK: - Environment Values Extensions
extension EnvironmentValues {
var serverManager: ServerManager? {
get { self[ServerManagerKey.self] }
set { self[ServerManagerKey.self] = newValue }
}
var ngrokService: NgrokService? {
get { self[NgrokServiceKey.self] }
set { self[NgrokServiceKey.self] = newValue }
}
var systemPermissionManager: SystemPermissionManager? {
get { self[SystemPermissionManagerKey.self] }
set { self[SystemPermissionManagerKey.self] = newValue }
}
var terminalLauncher: TerminalLauncher? {
get { self[TerminalLauncherKey.self] }
set { self[TerminalLauncherKey.self] = newValue }
}
}
// MARK: - View Extensions
extension View {
/// Injects all VibeTunnel services into the environment
@MainActor
func withVibeTunnelServices(
serverManager: ServerManager? = nil,
ngrokService: NgrokService? = nil,
systemPermissionManager: SystemPermissionManager? = nil,
terminalLauncher: TerminalLauncher? = nil
)
-> some View
{
self
.environment(\.serverManager, serverManager ?? ServerManager.shared)
.environment(\.ngrokService, ngrokService ?? NgrokService.shared)
.environment(
\.systemPermissionManager,
systemPermissionManager ?? SystemPermissionManager.shared
)
.environment(\.terminalLauncher, terminalLauncher ?? TerminalLauncher.shared)
}
}