VoiceWake: compact SSH test row

This commit is contained in:
Peter Steinberger
2025-12-07 02:32:05 +01:00
parent bc20664c18
commit 3a4bf8f213

View File

@@ -738,14 +738,30 @@ struct VoiceWakeSettings: View {
} }
if self.state.voiceWakeForwardEnabled { if self.state.voiceWakeForwardEnabled {
VStack(alignment: .leading, spacing: 8) { VStack(alignment: .leading, spacing: 8) {
LabeledContent("SSH target") { HStack(spacing: 10) {
Text("SSH")
.font(.callout.weight(.semibold))
.frame(width: 40, alignment: .leading)
TextField("steipete@peters-mac-studio-1", text: self.$state.voiceWakeForwardTarget) TextField("steipete@peters-mac-studio-1", text: self.$state.voiceWakeForwardTarget)
.textFieldStyle(.roundedBorder) .textFieldStyle(.roundedBorder)
.frame(width: 280) .frame(maxWidth: .infinity)
.onChange(of: self.state.voiceWakeForwardTarget) { _, _ in self.forwardStatus = .idle } .onChange(of: self.state.voiceWakeForwardTarget) { _, _ in self.forwardStatus = .idle }
self.forwardStatusIcon
.frame(width: 16, height: 16, alignment: .center)
Button("Test") {
Task { await self.checkForwardConnection() }
}
.disabled(
self.state.voiceWakeForwardTarget
.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty)
} }
self.forwardStatusRow if case let .failed(message) = self.forwardStatus {
Text(message)
.font(.caption)
.foregroundStyle(.secondary)
.lineLimit(5)
}
DisclosureGroup(isExpanded: self.$showForwardAdvanced) { DisclosureGroup(isExpanded: self.$showForwardAdvanced) {
VStack(alignment: .leading, spacing: 10) { VStack(alignment: .leading, spacing: 10) {
@@ -790,31 +806,17 @@ struct VoiceWakeSettings: View {
} }
} }
private var forwardStatusRow: some View { private var forwardStatusIcon: some View {
HStack(spacing: 10) { Group {
switch self.forwardStatus { switch self.forwardStatus {
case .idle: case .idle:
Image(systemName: "circle.dashed") Image(systemName: "circle.dashed").foregroundStyle(.secondary)
.foregroundStyle(.secondary)
case .checking: case .checking:
ProgressView().controlSize(.small) ProgressView().controlSize(.mini)
case .ok: case .ok:
Image(systemName: "checkmark.circle.fill").foregroundStyle(.green) Image(systemName: "checkmark.circle.fill").foregroundStyle(.green)
case let .failed(message): case .failed:
Image(systemName: "exclamationmark.triangle.fill").foregroundStyle(.yellow) Image(systemName: "exclamationmark.triangle.fill").foregroundStyle(.yellow)
.help(message)
}
Button("Check connection") {
Task { await self.checkForwardConnection() }
}
.disabled(self.state.voiceWakeForwardTarget.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty)
if case let .failed(message) = self.forwardStatus {
Text(message)
.font(.caption)
.foregroundStyle(.secondary)
.lineLimit(5)
} }
} }
} }