mirror of
https://github.com/samsonjs/vibetunnel.git
synced 2026-04-27 15:17:38 +00:00
mac: design tweaks
This commit is contained in:
parent
042856a947
commit
38c308e34c
1 changed files with 61 additions and 59 deletions
|
|
@ -619,71 +619,72 @@ private struct PortConfigurationView: View {
|
||||||
private let logger = Logger(subsystem: "sh.vibetunnel.vibetunnel", category: "PortConfiguration")
|
private let logger = Logger(subsystem: "sh.vibetunnel.vibetunnel", category: "PortConfiguration")
|
||||||
|
|
||||||
var body: some View {
|
var body: some View {
|
||||||
HStack {
|
VStack(alignment: .leading, spacing: 0) {
|
||||||
Text("Server port:")
|
HStack {
|
||||||
Spacer()
|
Text("Server port:")
|
||||||
HStack(spacing: 4) {
|
Spacer()
|
||||||
TextField("", text: $serverPort)
|
HStack(spacing: 4) {
|
||||||
.textFieldStyle(.roundedBorder)
|
TextField("", text: $serverPort)
|
||||||
.frame(width: 80)
|
.textFieldStyle(.roundedBorder)
|
||||||
.multilineTextAlignment(.center)
|
.frame(width: 80)
|
||||||
.onChange(of: serverPort) { _, newValue in
|
.multilineTextAlignment(.center)
|
||||||
// Validate port number
|
.onChange(of: serverPort) { _, newValue in
|
||||||
if let port = Int(newValue), port > 0, port < 65_536 {
|
// Validate port number
|
||||||
portNumber = port
|
if let port = Int(newValue), port > 0, port < 65_536 {
|
||||||
Task {
|
portNumber = port
|
||||||
await checkPortAvailability(port)
|
Task {
|
||||||
|
await checkPortAvailability(port)
|
||||||
|
}
|
||||||
|
restartServerWithNewPort(port)
|
||||||
}
|
}
|
||||||
restartServerWithNewPort(port)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
VStack(spacing: 0) {
|
||||||
|
Button(
|
||||||
|
action: {
|
||||||
|
if portNumber < 65_535 {
|
||||||
|
portNumber += 1
|
||||||
|
serverPort = String(portNumber)
|
||||||
|
restartServerWithNewPort(portNumber)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
label: {
|
||||||
|
Image(systemName: "chevron.up")
|
||||||
|
.font(.system(size: 10))
|
||||||
|
.frame(width: 16, height: 12)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
.buttonStyle(.plain)
|
||||||
|
.help("Increase port number")
|
||||||
|
|
||||||
|
Button(
|
||||||
|
action: {
|
||||||
|
if portNumber > 1 {
|
||||||
|
portNumber -= 1
|
||||||
|
serverPort = String(portNumber)
|
||||||
|
restartServerWithNewPort(portNumber)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
label: {
|
||||||
|
Image(systemName: "chevron.down")
|
||||||
|
.font(.system(size: 10))
|
||||||
|
.frame(width: 16, height: 12)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
.buttonStyle(.plain)
|
||||||
|
.help("Decrease port number")
|
||||||
}
|
}
|
||||||
|
}
|
||||||
VStack(spacing: 0) {
|
.onAppear {
|
||||||
Button(
|
portNumber = Int(serverPort) ?? 4_020
|
||||||
action: {
|
}
|
||||||
if portNumber < 65_535 {
|
.task {
|
||||||
portNumber += 1
|
await checkPortAvailability(portNumber)
|
||||||
serverPort = String(portNumber)
|
|
||||||
restartServerWithNewPort(portNumber)
|
|
||||||
}
|
|
||||||
},
|
|
||||||
label: {
|
|
||||||
Image(systemName: "chevron.up")
|
|
||||||
.font(.system(size: 10))
|
|
||||||
.frame(width: 16, height: 12)
|
|
||||||
}
|
|
||||||
)
|
|
||||||
.buttonStyle(.plain)
|
|
||||||
.help("Increase port number")
|
|
||||||
|
|
||||||
Button(
|
|
||||||
action: {
|
|
||||||
if portNumber > 1 {
|
|
||||||
portNumber -= 1
|
|
||||||
serverPort = String(portNumber)
|
|
||||||
restartServerWithNewPort(portNumber)
|
|
||||||
}
|
|
||||||
},
|
|
||||||
label: {
|
|
||||||
Image(systemName: "chevron.down")
|
|
||||||
.font(.system(size: 10))
|
|
||||||
.frame(width: 16, height: 12)
|
|
||||||
}
|
|
||||||
)
|
|
||||||
.buttonStyle(.plain)
|
|
||||||
.help("Decrease port number")
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.onAppear {
|
|
||||||
portNumber = Int(serverPort) ?? 4_020
|
|
||||||
}
|
|
||||||
.task {
|
|
||||||
await checkPortAvailability(portNumber)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Port conflict warning
|
// Port conflict warning
|
||||||
if let conflict = portConflict {
|
if let conflict = portConflict {
|
||||||
VStack(alignment: .leading, spacing: 6) {
|
VStack(alignment: .leading, spacing: 6) {
|
||||||
HStack(spacing: 4) {
|
HStack(spacing: 4) {
|
||||||
Image(systemName: "exclamationmark.triangle.fill")
|
Image(systemName: "exclamationmark.triangle.fill")
|
||||||
|
|
@ -760,6 +761,7 @@ private struct PortConfigurationView: View {
|
||||||
.font(.caption)
|
.font(.caption)
|
||||||
.foregroundStyle(.secondary)
|
.foregroundStyle(.secondary)
|
||||||
.padding(.top, 4)
|
.padding(.top, 4)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue