mirror of
https://github.com/samsonjs/vibetunnel.git
synced 2026-04-27 15:17:38 +00:00
- 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
62 lines
No EOL
2 KiB
Swift
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)
|
|
}
|
|
} |