Files
openclaw/apps/shared/OpenClawKit/Sources/OpenClawChatUI/OpenClawChatTalkControl.swift
Peter Steinberger 59b2fbbb4b feat(ios): Talk camera flip control and mic input selection (#111044)
* feat(ios): add Talk camera flip and mic selection

* chore(ios): sync native i18n inventory and locale artifacts for talk camera/mic strings

* chore(ios): commit regenerated Localizable.xcstrings for new talk strings

* fix(ios): extract Talk composer controls

* chore(ios): resync native i18n inventory and locale artifacts atop landed Android entries

* fix(ios): repair Talk composer CI checks

* chore(i18n): commit regenerated Android locale outputs from catalog reconciliation

* chore(i18n): sync Android locale outputs after rebase
2026-07-19 01:24:53 -07:00

67 lines
2.3 KiB
Swift

public struct OpenClawChatAudioInputDevice: Equatable, Identifiable, Sendable {
public var id: String
public var name: String
public init(id: String, name: String) {
self.id = id
self.name = name
}
}
public enum OpenClawCameraFacingSelection: String, Equatable, Sendable {
case back
case front
}
public struct OpenClawChatTalkControl {
public var isEnabled: Bool
public var isListening: Bool
public var isSpeaking: Bool
public var isGatewayConnected: Bool
public var statusText: String
public var providerLabel: String
public var level: Double
public var partialTranscript: String
public var recentTranscript: [String]
public var inputDevices: [OpenClawChatAudioInputDevice]
public var selectedInputDeviceID: String?
public var selectInputDevice: (@MainActor (_ deviceID: String?) -> Void)?
public var cameraFacing: OpenClawCameraFacingSelection?
public var flipCamera: (@MainActor () -> Void)?
public var toggle: @MainActor (_ sessionKey: String) -> Void
public init(
isEnabled: Bool,
isListening: Bool,
isSpeaking: Bool,
isGatewayConnected: Bool,
statusText: String,
providerLabel: String,
level: Double = 0,
partialTranscript: String = "",
recentTranscript: [String] = [],
inputDevices: [OpenClawChatAudioInputDevice] = [],
selectedInputDeviceID: String? = nil,
selectInputDevice: (@MainActor (_ deviceID: String?) -> Void)? = nil,
cameraFacing: OpenClawCameraFacingSelection? = nil,
flipCamera: (@MainActor () -> Void)? = nil,
toggle: @escaping @MainActor (_ sessionKey: String) -> Void)
{
self.isEnabled = isEnabled
self.isListening = isListening
self.isSpeaking = isSpeaking
self.isGatewayConnected = isGatewayConnected
self.statusText = statusText
self.providerLabel = providerLabel
self.level = level
self.partialTranscript = partialTranscript
self.recentTranscript = recentTranscript
self.inputDevices = inputDevices
self.selectedInputDeviceID = selectedInputDeviceID
self.selectInputDevice = selectInputDevice
self.cameraFacing = cameraFacing
self.flipCamera = flipCamera
self.toggle = toggle
}
}