mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-03 16:10:20 +00:00
Support for ongoing voice vs video call + joining (#5399)
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
//
|
||||
// Copyright 2026 Element Creations Ltd.
|
||||
//
|
||||
// SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial.
|
||||
// Please see LICENSE files in the repository root for full details.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
import MatrixRustSDK
|
||||
|
||||
enum CallIntent: Codable, CaseIterable {
|
||||
case video, audio
|
||||
}
|
||||
|
||||
extension CallIntent {
|
||||
// periphery:ignore - Unused, but added to detect new cases when updating the SDK.
|
||||
init(rustCallIntent: MatrixRustSDK.RtcCallIntent) {
|
||||
switch rustCallIntent {
|
||||
case .audio: self = .audio
|
||||
case .video: self = .video
|
||||
}
|
||||
}
|
||||
|
||||
var rustCallIntent: MatrixRustSDK.RtcCallIntent {
|
||||
switch self {
|
||||
case .audio: .audio
|
||||
case .video: .video
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -10,8 +10,9 @@ import Compound
|
||||
import SwiftUI
|
||||
|
||||
struct JoinCallButton: View {
|
||||
let isVoiceCall: Bool
|
||||
let action: () -> Void
|
||||
|
||||
|
||||
var body: some View {
|
||||
if #available(iOS 26, *) {
|
||||
glassButton
|
||||
@@ -25,7 +26,7 @@ struct JoinCallButton: View {
|
||||
// Use an HStack on iOS 26 as .labelStyle(.titleAndIcon) doesn't
|
||||
// seem to have any effect on a label in the navigation bar 🤷♂️
|
||||
HStack(spacing: 6) {
|
||||
CompoundIcon(\.videoCallSolid)
|
||||
CompoundIcon(isVoiceCall ? \.voiceCallSolid : \.videoCallSolid)
|
||||
Text(L10n.actionJoin)
|
||||
.padding(.trailing, 4)
|
||||
}
|
||||
@@ -66,9 +67,20 @@ struct JoinCallButton_Previews: PreviewProvider {
|
||||
Color.clear
|
||||
.toolbar {
|
||||
ToolbarItem(placement: .confirmationAction) {
|
||||
JoinCallButton { }
|
||||
JoinCallButton(isVoiceCall: false) { }
|
||||
}
|
||||
}
|
||||
}
|
||||
.previewDisplayName("Join Video Call")
|
||||
|
||||
ElementNavigationStack {
|
||||
Color.clear
|
||||
.toolbar {
|
||||
ToolbarItem(placement: .confirmationAction) {
|
||||
JoinCallButton(isVoiceCall: true) { }
|
||||
}
|
||||
}
|
||||
}
|
||||
.previewDisplayName("Join Audio Call")
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user