public var body: some View { CallControlsView(viewModel: viewModel) }CallControls
The CallControls component lets you display any number of controls on the UI, that trigger different actions within a call. We provide default actions, such as changing the audio and video mute state or turning on the speakerphone and leaving the call.
On top of these actions, you can provide a custom set of actions through the API.
Let’s see how to use it.
Usage
The default CallControlsView is created by passing the CallViewModel:
If you want to customize (or completely replace) the CallControlsView, you should use the ViewFactory method makeCallControlsView:
public func makeCallControlsView(viewModel: CallViewModel) -> some View { CustomCallControlsView(viewModel: viewModel) }Next, let’s see the CustomCallControlsView:
struct CustomCallControlsView: View { @ObservedObject var viewModel: CallViewModel var body: some View { HStack(spacing: 32) { VideoIconView(viewModel: viewModel) MicrophoneIconView(viewModel: viewModel) ToggleCameraIconView(viewModel: viewModel) HangUpIconView(viewModel: viewModel) } .frame(maxWidth: .infinity) .frame(height: 85) } }In this example, we are building a custom call controls view, using buttons from the SDK, for muting video/audio, toggling camera and hanging up. You can easily add your own UI elements in the HStack above. You can use the CallViewModel for the standard call-related actions, or use the Call object directly for custom events and reactions (as described here, and for permissions related actions (as described here).