feat(macos): add voice wake mic picker

This commit is contained in:
Peter Steinberger
2025-12-08 15:05:57 +01:00
parent 081460e59d
commit cd30a99fae

View File

@@ -185,13 +185,7 @@ private struct MenuContent: View {
private var voiceWakeMicMenu: some View {
Menu {
Picker("Microphone", selection: self.$state.voiceWakeMicID) {
Text(self.defaultMicLabel).tag("")
ForEach(self.availableMics) { mic in
Text(mic.name).tag(mic.uid)
}
}
.labelsHidden()
self.microphoneMenuItems
if self.loadingMics {
Divider()
@@ -206,9 +200,6 @@ private struct MenuContent: View {
Spacer()
Text(self.selectedMicLabel)
.foregroundStyle(.secondary)
Image(systemName: "chevron.right")
.font(.caption.weight(.semibold))
.foregroundStyle(.secondary)
}
}
.task { await self.loadMicrophones() }
@@ -222,6 +213,28 @@ private struct MenuContent: View {
return "Unavailable"
}
private var microphoneMenuItems: some View {
Group {
Button {
self.state.voiceWakeMicID = ""
} label: {
Label(self.defaultMicLabel, systemImage: self.state.voiceWakeMicID.isEmpty ? "checkmark" : "")
.labelStyle(.titleAndIcon)
}
.buttonStyle(.plain)
ForEach(self.availableMics) { mic in
Button {
self.state.voiceWakeMicID = mic.uid
} label: {
Label(mic.name, systemImage: self.state.voiceWakeMicID == mic.uid ? "checkmark" : "")
.labelStyle(.titleAndIcon)
}
.buttonStyle(.plain)
}
}
}
private var defaultMicLabel: String {
if let host = Host.current().localizedName, !host.isEmpty {
return "Auto-detect (\(host))"