vibetunnel/mac/VibeTunnel/Core/Extensions/EnvironmentValues+Services.swift
Peter Steinberger a9fd66c291 refactor: major project restructuring - move macOS app to mac/ directory
- Move all macOS-specific code from root to mac/ directory
- Move app icons and assets to dedicated assets/ directory
- Update GitHub workflows for new structure
- Consolidate documentation files
- Clean up root directory for better multi-platform organization
2025-06-20 13:20:01 +02:00

62 lines
No EOL
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 AppleScriptPermissionManagerKey: EnvironmentKey {
static let defaultValue: AppleScriptPermissionManager? = 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 appleScriptPermissionManager: AppleScriptPermissionManager? {
get { self[AppleScriptPermissionManagerKey.self] }
set { self[AppleScriptPermissionManagerKey.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,
appleScriptPermissionManager: AppleScriptPermissionManager? = nil,
terminalLauncher: TerminalLauncher? = nil
) -> some View {
self
.environment(\.serverManager, serverManager ?? ServerManager.shared)
.environment(\.ngrokService, ngrokService ?? NgrokService.shared)
.environment(\.appleScriptPermissionManager, appleScriptPermissionManager ?? AppleScriptPermissionManager.shared)
.environment(\.terminalLauncher, terminalLauncher ?? TerminalLauncher.shared)
}
}