-
Notifications
You must be signed in to change notification settings - Fork 28
[Performance]UI improvements #876
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Draft
ipavlidakis
wants to merge
11
commits into
develop
Choose a base branch
from
performance/ui-improvements
base: develop
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Draft
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Public Interface+ public protocol CaptureDeviceProviding
+ @propertyWrapper public final class Atomic: @unchecked Sendable
+
+ public var wrappedValue: T
+
+
+ public init(wrappedValue: T,mode: Mode = .unfair)
+
+
+ public enum Mode
+
+ case unfair
+ case recursive
+ public struct TrackVideoRendererView: UIViewRepresentable, Equatable
+
+ public init(track: RTCVideoTrack,contentMode: UIView.ContentMode = .scaleAspectFill,sizeUpdater: @escaping SizeUpdater)
+
+
+ public static func dismantleUIView(_ uiView: UIViewType,coordinator: Coordinator)
+ nonisolated public static func ==(lhs: TrackVideoRendererView,rhs: TrackVideoRendererView)-> Bool
+ public func makeUIView(context: Context)-> UIViewType
+ public func updateUIView(_ uiView: UIViewType,context: Context)
+ public func makeCoordinator()-> Coordinator
+ extension AVCaptureDevice
+
+ public func outputFormat(preferredDimensions: CMVideoDimensions,preferredFrameRate: Int)-> AVCaptureDevice.Format?
+ public protocol CaptureDeviceProtocol: Sendable
+ public class TrackVideoRenderer: RTCMTLVideoView, @unchecked Sendable
+
+ public init(track: RTCVideoTrack)
+
+
+ override public func layoutSubviews()
+ override public func willMove(toWindow newWindow: UIWindow?)
+ override public func willMove(toSuperview newSuperview: UIView?)
- @available(iOS, introduced: 13, obsoleted: 14) public struct LobbyView_iOS13: View
-
- public var body: some View
-
-
- public init(viewFactory: Factory = DefaultViewFactory.shared,callViewModel: CallViewModel,callId: String,callType: String,callSettings: Binding<CallSettings>,onJoinCallTap: @escaping () -> Void,onCloseLobby: @escaping () -> Void)
- extension Alert
-
- public static var defaultErrorAlert: Alert
- public struct PopoverButton: View
-
- public var body: some View
-
-
- public init(title: String,popoverShown: Binding<Bool>,action: @escaping () -> Void)
- @available(iOS, introduced: 13, obsoleted: 14) public struct LocalParticipantViewModifier_iOS13: ViewModifier
-
- public func body(content: Content)-> some View
- public struct ParticipantPopoverView: View
-
- public var body: some View
-
-
- public init(participant: CallParticipant,call: Call?,popoverShown: Binding<Bool>,customView: (() -> CustomView)? = nil)
- @available(iOS, introduced: 13, obsoleted: 14) public struct CallContainer_iOS13: View
-
- public var body: some View
-
-
- public init(viewFactory: Factory = DefaultViewFactory.shared,viewModel: CallViewModel)
@MainActor open class CallViewModel: ObservableObject
- public var participants: [CallParticipant]
+ @Published public var participants: [CallParticipant]
public struct CallConnectingView: View
- public var title: String
+ public var body: some View
- public var callControls: CallControls
+
- public var callTopView: CallTopView
+
- public var body: some View
+ public init(viewFactory: Factory = DefaultViewFactory.shared,outgoingCallMembers: [Member],title: String,callControls: CallControls,callTopView: CallTopView)
-
-
- public init(viewFactory: Factory = DefaultViewFactory.shared,outgoingCallMembers: [Member],title: String,callControls: CallControls,callTopView: CallTopView)
open class StreamCallAudioRecorder: @unchecked Sendable
-
+ @Atomic public private var isRecording: Bool
-
+
- public init(filename: String)
+
-
+ public init(filename: String)
-
+
- open func startRecording(ignoreActiveCall: Bool = false)async
+
- open func stopRecording()async
+ open func startRecording(ignoreActiveCall: Bool = false)async
+ open func stopRecording()async
- @available(iOS 14.0, *) public struct BroadcastIconView: View
+ public struct BroadcastIconView: View
public struct StatelessHangUpIconView: View
- public weak var call: Call?
+ public var size: CGFloat
- public var size: CGFloat
+ public var actionHandler: ActionHandler?
- public var actionHandler: ActionHandler?
+ public var body: some View
- public var body: some View
+
-
+
-
+ @MainActor public init(call: Call?,size: CGFloat = 44,actionHandler: ActionHandler? = nil)
- @MainActor public init(call: Call?,size: CGFloat = 44,actionHandler: ActionHandler? = nil)
- public class BroadcastObserver: ObservableObject
+ public class BroadcastObserver: ObservableObject, @unchecked Sendable
public struct CallDurationView: View
- @MainActor public init(_ viewModel: CallViewModel)
+ public init(_ viewModel: CallViewModel)
- @available(iOS 14.0, *) public struct LocalParticipantViewModifier: ViewModifier
+ public struct LocalParticipantViewModifier: ViewModifier
-
+ public init(participant: CallParticipant,call: Call?,showAllInfo: Bool,decorations: [VideoCallParticipantDecoration] = VideoCallParticipantDecoration.allCases)
-
+
- public func body(content: Content)-> some View
+
+ public func body(content: Content)-> some View
- @available(iOS 14.0, *) public struct CallContainer: View
+ public struct CallContainer: View
- @available(iOS 14.0, *) public struct CallModifier: ViewModifier
+ public struct CallModifier: ViewModifier
-
+ @MainActor public init(viewModel: CallViewModel)
-
+
- public func body(content: Content)-> some View
+
+ public func body(content: Content)-> some View
- @available(iOS 14.0, *) public struct LobbyView: View
+ public struct LobbyView: View
- public init(viewFactory: Factory = DefaultViewFactory.shared,viewModel: LobbyViewModel? = nil,callId: String,callType: String,callSettings: Binding<CallSettings>,onJoinCallTap: @escaping () -> Void,onCloseLobby: @escaping () -> Void)
+ public init(viewFactory: Factory = DefaultViewFactory.shared,callViewModel: CallViewModel,callId: String,callType: String,callSettings: Binding<CallSettings>,onJoinCallTap: @escaping () -> Void,onCloseLobby: @escaping () -> Void)
extension InjectedValues
- public var pictureInPictureAdapter: StreamPictureInPictureAdapter
+ public var utils: Utils
public struct StatelessAudioOutputIconView: View
- public weak var call: Call?
+ public var body: some View
- public var size: CGFloat
+
- public var actionHandler: ActionHandler?
+
- public var body: some View
+ @MainActor public init(call: Call?,size: CGFloat = 44,actionHandler: ActionHandler? = nil)
-
-
- @MainActor public init(call: Call?,size: CGFloat = 44,actionHandler: ActionHandler? = nil)
- @available(iOS 14.0, *) public struct VideoViewOverlay: View
+ public struct VideoViewOverlay: View
- @available(iOS 14.0, *) public struct LayoutMenuView: View
+ public struct LayoutMenuView: View
public struct HorizontalParticipantsListView: View
- public var viewFactory: Factory
+ public var body: some View
- public var participants: [CallParticipant]
+
- public var frame: CGRect
+
- public var call: Call?
+ public init(viewFactory: Factory = DefaultViewFactory.shared,participants: [CallParticipant],frame: CGRect,call: Call?,innerItemSpace: CGFloat = 8,showAllInfo: Bool = false)
- public var innerItemSpace: CGFloat
- public var showAllInfo: Bool
- public var body: some View
-
-
- public init(viewFactory: Factory = DefaultViewFactory.shared,participants: [CallParticipant],frame: CGRect,call: Call?,innerItemSpace: CGFloat = 8,showAllInfo: Bool = false)
public struct StatelessSpeakerIconView: View
- public weak var call: Call?
+ public var body: some View
- public var size: CGFloat
+
- public var actionHandler: ActionHandler?
+
- public var body: some View
+ @MainActor public init(call: Call?,size: CGFloat = 44,actionHandler: ActionHandler? = nil)
-
-
- @MainActor public init(call: Call?,size: CGFloat = 44,actionHandler: ActionHandler? = nil)
public struct StatelessParticipantsListButton: View
- public weak var call: Call?
+ public var body: some View
- public var size: CGFloat
+
- public var isActive: Binding<Bool>
+
- public var actionHandler: ActionHandler?
+ @MainActor public init(call: Call?,size: CGFloat = 44,isActive: Binding<Bool>,actionHandler: ActionHandler? = nil)
- public var body: some View
-
-
- @MainActor public init(call: Call?,size: CGFloat = 44,isActive: Binding<Bool>,actionHandler: ActionHandler? = nil)
public struct StatelessVideoIconView: View
- public weak var call: Call?
+ public var body: some View
- public var size: CGFloat
+
- public var actionHandler: ActionHandler?
+
- public var body: some View
+ public init(call: Call?,size: CGFloat = 44,actionHandler: ActionHandler? = nil)
-
-
- public init(call: Call?,size: CGFloat = 44,actionHandler: ActionHandler? = nil)
extension View
- public func toastView(toast: Binding<Toast?>)-> some View
+ @ViewBuilder public func snapshot(trigger: SnapshotTriggering,snapshotHandler: @escaping @Sendable(UIImage) -> Void)-> some View
public struct StatelessToggleCameraIconView: View
- public weak var call: Call?
+ public var body: some View
- public var size: CGFloat
+
- public var actionHandler: ActionHandler?
+
- public var body: some View
+ public init(call: Call?,size: CGFloat = 44,actionHandler: ActionHandler? = nil)
-
-
- public init(call: Call?,size: CGFloat = 44,actionHandler: ActionHandler? = nil)
@MainActor public class LobbyViewModel: ObservableObject, @unchecked Sendable
- @Published public var viewfinderImage: Image?
+ @Published public var viewFinderImage: Image?
- @Published public var participants
+ @Published public var participants: [User]
-
+ @Published public var audioOn: Bool
-
+ @Published public var videoOn: Bool
- public init(callType: String,callId: String)
+ @Published public var cameraPosition: CameraPosition
-
+ @Published public var audioLevels: [Float]
-
+ @Published public var isSilent: Bool
- public func startCamera(front: Bool)
+
- public func stopCamera()
+
- public func cleanUp()
+ public init(callType: String,callId: String,callViewModel: CallViewModel,onJoinCallTap: @escaping () -> Void,onCloseLobbyTap: @escaping () -> Void)
- public func didUpdate(callSettings: CallSettings)async
+
+
+ public func startCamera(front: Bool)
+ public func stopCamera()
+ public func cleanUp()
+ public func didTapJoin()
+ public func didTapClose()
+ public func toggleMicrophoneEnabled()
+ public func toggleCameraEnabled()
public struct StatelessMicrophoneIconView: View
- public weak var call: Call?
+ public var body: some View
- public var size: CGFloat
+
- public var actionHandler: ActionHandler?
+
- public var body: some View
+ @MainActor public init(call: Call?,size: CGFloat = 44,actionHandler: ActionHandler? = nil)
-
-
- @MainActor public init(call: Call?,size: CGFloat = 44,actionHandler: ActionHandler? = nil)
public struct MicrophoneCheckView: View
- public init(audioLevels: [Float],microphoneOn: Bool,isSilent: Bool,isPinned: Bool,maxHeight: Float = 14)
+ public init(viewModel: LobbyViewModel,isPinned: Bool,maxHeight: Float = 14,)
+ public init(audioLevels: [Float],microphoneOn: Bool,isSilent: Bool,isPinned: Bool,maxHeight: Float = 14)
public struct StreamLazyImage: View
- public init(imageURL: URL?,contentMode: ContentMode = .fill,placeholder: @escaping () -> Placeholder)
+ public init(imageURL: URL?,contentMode: ContentMode = .fill,@ViewBuilder placeholder: @escaping () -> Placeholder)
+ public init(imageURL: URL?,contentMode: ContentMode = .fill) |
Generated by 🚫 Danger |
|
d05f590
to
cd25475
Compare
Public Interface+ @propertyWrapper public final class Atomic: @unchecked Sendable
+
+ public var wrappedValue: T
+
+
+ public init(wrappedValue: T,mode: Mode = .unfair)
+
+
+ public enum Mode
+
+ case unfair
+ case recursive
+ extension AVCaptureDevice
+
+ public func outputFormat(preferredDimensions: CMVideoDimensions,preferredFrameRate: Int)-> AVCaptureDevice.Format?
+ public struct TrackVideoRendererView: UIViewRepresentable, Equatable
+
+ public init(track: RTCVideoTrack,contentMode: UIView.ContentMode = .scaleAspectFill,sizeUpdater: @escaping SizeUpdater)
+
+
+ public static func dismantleUIView(_ uiView: UIViewType,coordinator: Coordinator)
+ nonisolated public static func ==(lhs: TrackVideoRendererView,rhs: TrackVideoRendererView)-> Bool
+ public func makeUIView(context: Context)-> UIViewType
+ public func updateUIView(_ uiView: UIViewType,context: Context)
+ public func makeCoordinator()-> Coordinator
+ public class TrackVideoRenderer: RTCMTLVideoView, @unchecked Sendable
+
+ public init(track: RTCVideoTrack)
+
+
+ override public func layoutSubviews()
+ override public func willMove(toWindow newWindow: UIWindow?)
+ override public func willMove(toSuperview newSuperview: UIView?)
+ public protocol CaptureDeviceProviding
+ public protocol CaptureDeviceProtocol: Sendable
- extension Alert
-
- public static var defaultErrorAlert: Alert
- public struct ParticipantPopoverView: View
-
- public var body: some View
-
-
- public init(participant: CallParticipant,call: Call?,popoverShown: Binding<Bool>,customView: (() -> CustomView)? = nil)
- @available(iOS, introduced: 13, obsoleted: 14) public struct CallContainer_iOS13: View
-
- public var body: some View
-
-
- public init(viewFactory: Factory = DefaultViewFactory.shared,viewModel: CallViewModel)
- @available(iOS, introduced: 13, obsoleted: 14) public struct LocalParticipantViewModifier_iOS13: ViewModifier
-
- public func body(content: Content)-> some View
- public struct PopoverButton: View
-
- public var body: some View
-
-
- public init(title: String,popoverShown: Binding<Bool>,action: @escaping () -> Void)
- @available(iOS, introduced: 13, obsoleted: 14) public struct LobbyView_iOS13: View
-
- public var body: some View
-
-
- public init(viewFactory: Factory = DefaultViewFactory.shared,callViewModel: CallViewModel,callId: String,callType: String,callSettings: Binding<CallSettings>,onJoinCallTap: @escaping () -> Void,onCloseLobby: @escaping () -> Void)
open class StreamCallAudioRecorder: @unchecked Sendable
-
+ @Atomic public private var isRecording: Bool
-
+
- public init(filename: String)
+
-
+ public init(filename: String)
-
+
- open func startRecording(ignoreActiveCall: Bool = false)async
+
- open func stopRecording()async
+ open func startRecording(ignoreActiveCall: Bool = false)async
+ open func stopRecording()async
public struct CallConnectingView: View
- public var title: String
+ public var body: some View
- public var callControls: CallControls
+
- public var callTopView: CallTopView
+
- public var body: some View
+ public init(viewFactory: Factory = DefaultViewFactory.shared,outgoingCallMembers: [Member],title: String,callControls: CallControls,callTopView: CallTopView)
-
-
- public init(viewFactory: Factory = DefaultViewFactory.shared,outgoingCallMembers: [Member],title: String,callControls: CallControls,callTopView: CallTopView)
- @available(iOS 14.0, *) public struct LayoutMenuView: View
+ public struct LayoutMenuView: View
public struct HorizontalParticipantsListView: View
- public var viewFactory: Factory
+ public var body: some View
- public var participants: [CallParticipant]
+
- public var frame: CGRect
+
- public var call: Call?
+ public init(viewFactory: Factory = DefaultViewFactory.shared,participants: [CallParticipant],frame: CGRect,call: Call?,innerItemSpace: CGFloat = 8,showAllInfo: Bool = false)
- public var innerItemSpace: CGFloat
- public var showAllInfo: Bool
- public var body: some View
-
-
- public init(viewFactory: Factory = DefaultViewFactory.shared,participants: [CallParticipant],frame: CGRect,call: Call?,innerItemSpace: CGFloat = 8,showAllInfo: Bool = false)
- @available(iOS 14.0, *) public struct CallModifier: ViewModifier
+ public struct CallModifier: ViewModifier
-
+ @MainActor public init(viewModel: CallViewModel)
-
+
- public func body(content: Content)-> some View
+
+ public func body(content: Content)-> some View
public struct CallDurationView: View
- @MainActor public init(_ viewModel: CallViewModel)
+ public init(_ viewModel: CallViewModel)
extension InjectedValues
- public var pictureInPictureAdapter: StreamPictureInPictureAdapter
+ public var utils: Utils
- @available(iOS 14.0, *) public struct LobbyView: View
+ public struct LobbyView: View
- public init(viewFactory: Factory = DefaultViewFactory.shared,viewModel: LobbyViewModel? = nil,callId: String,callType: String,callSettings: Binding<CallSettings>,onJoinCallTap: @escaping () -> Void,onCloseLobby: @escaping () -> Void)
+ public init(viewFactory: Factory = DefaultViewFactory.shared,callViewModel: CallViewModel,callId: String,callType: String,callSettings: Binding<CallSettings>,onJoinCallTap: @escaping () -> Void,onCloseLobby: @escaping () -> Void)
- public struct RTMP
+ public struct RTMP: Equatable
- public class BroadcastObserver: ObservableObject
+ public class BroadcastObserver: ObservableObject, @unchecked Sendable
public struct StatelessParticipantsListButton: View
- public weak var call: Call?
+ public var body: some View
- public var size: CGFloat
+
- public var isActive: Binding<Bool>
+
- public var actionHandler: ActionHandler?
+ @MainActor public init(call: Call?,size: CGFloat = 44,isActive: Binding<Bool>,actionHandler: ActionHandler? = nil)
- public var body: some View
-
-
- @MainActor public init(call: Call?,size: CGFloat = 44,isActive: Binding<Bool>,actionHandler: ActionHandler? = nil)
- @MainActor public class CallState: ObservableObject
+ public class CallState: ObservableObject
- @Published public internal var sessionId: String
+ @Published public private var sessionId: String
- @Published public internal var participants
+ @Published public private var participants: [CallParticipant]
- @Published public internal var participantsMap
+ @Published public private var participantsMap: [String: CallParticipant]
- @Published public internal var localParticipant: CallParticipant?
+ @Published public private var localParticipant: CallParticipant?
- @Published public internal var dominantSpeaker: CallParticipant?
+ @Published public private var dominantSpeaker: CallParticipant?
- @Published public internal var remoteParticipants: [CallParticipant]
+ @Published public private var remoteParticipants: [CallParticipant]
- @Published public internal var activeSpeakers: [CallParticipant]
+ @Published public private var activeSpeakers: [CallParticipant]
- @Published public internal var members: [Member]
+ @Published public private var members: [Member]
- @Published public internal var screenSharingSession: ScreenSharingSession?
+ @Published public private var screenSharingSession: ScreenSharingSession?
- @Published public internal var recordingState: RecordingState
+ @Published public private var recordingState: RecordingState
- @Published public internal var blockedUserIds: Set<String>
+ @Published public private var blockedUserIds: Set<String>
- @Published public internal var settings: CallSettingsResponse?
+ @Published public private var settings: CallSettingsResponse?
- @Published public internal var ownCapabilities: [OwnCapability]
+ @Published public private var ownCapabilities: [OwnCapability]
- @Published public internal var capabilitiesByRole: [String: [String]]
+ @Published public private var capabilitiesByRole: [String: [String]]
- @Published public internal var backstage: Bool
+ @Published public private var backstage: Bool
- @Published public internal var broadcasting: Bool
+ @Published public private var broadcasting: Bool
- @Published public internal var createdAt: Date
+ @Published public private var createdAt: Date
- @Published public internal var updatedAt: Date
+ @Published public private var updatedAt: Date
- @Published public internal var startsAt: Date?
+ @Published public private var startsAt: Date?
- @Published public internal var startedAt: Date?
+ @Published public private var startedAt: Date?
- @Published public internal var endedAt: Date?
+ @Published public private var endedAt: Date?
- @Published public internal var endedBy: User?
+ @Published public private var endedBy: User?
- @Published public internal var custom: [String: RawJSON]
+ @Published public private var custom: [String: RawJSON]
- @Published public internal var team: String?
+ @Published public private var team: String?
- @Published public internal var createdBy: User?
+ @Published public private var createdBy: User?
- @Published public internal var ingress: Ingress?
+ @Published public private var ingress: Ingress?
- @Published public internal var permissionRequests: [PermissionRequest]
+ @Published public private var permissionRequests: [PermissionRequest]
- @Published public internal var transcribing: Bool
+ @Published public private var transcribing: Bool
- @Published public internal var captioning: Bool
+ @Published public private var captioning: Bool
- @Published public internal var egress: EgressResponse?
+ @Published public private var egress: EgressResponse?
- @Published public internal var session: CallSessionResponse?
+ @Published public private var session: CallSessionResponse?
- @Published public internal var reconnectionStatus
+ @Published public private var reconnectionStatus: ReconnectionStatus
- @Published public internal var anonymousParticipantCount: UInt32
+ @Published public private var anonymousParticipantCount: UInt32
- @Published public internal var participantCount: UInt32
+ @Published public private var participantCount: UInt32
- @Published public internal var isInitialized: Bool
+ @Published public private var isInitialized: Bool
- @Published public internal var callSettings
+ @Published public private var callSettings: CallSettings
- @Published public internal var isCurrentUserScreensharing: Bool
+ @Published public private var isCurrentUserScreensharing: Bool
- @Published public internal var duration: TimeInterval
+ @Published public private var duration: TimeInterval
- @Published public internal var statsReport: CallStatsReport?
+ @Published public private var statsReport: CallStatsReport?
- @Published public internal var closedCaptions: [CallClosedCaption]
+ @Published public private var closedCaptions: [CallClosedCaption]
- @Published public internal var statsCollectionInterval: Int
+ @Published public private var statsCollectionInterval: Int
- @Published public internal var incomingVideoQualitySettings: IncomingVideoQualitySettings
+ @Published public private var incomingVideoQualitySettings: IncomingVideoQualitySettings
- @Published public internal var disconnectionError: Error?
+ @Published public private var disconnectionError: Error?
public struct StreamLazyImage: View
- public init(imageURL: URL?,contentMode: ContentMode = .fill,placeholder: @escaping () -> Placeholder)
+ public init(imageURL: URL?,contentMode: ContentMode = .fill,@ViewBuilder placeholder: @escaping () -> Placeholder)
+ public init(imageURL: URL?,contentMode: ContentMode = .fill)
public struct MicrophoneCheckView: View
- public init(audioLevels: [Float],microphoneOn: Bool,isSilent: Bool,isPinned: Bool,maxHeight: Float = 14)
+ public init(viewModel: LobbyViewModel,isPinned: Bool,maxHeight: Float = 14,)
+ public init(audioLevels: [Float],microphoneOn: Bool,isSilent: Bool,isPinned: Bool,maxHeight: Float = 14)
- @available(iOS 14.0, *) public struct LocalParticipantViewModifier: ViewModifier
+ public struct LocalParticipantViewModifier: ViewModifier
-
+ public init(participant: CallParticipant,call: Call?,showAllInfo: Bool,decorations: [VideoCallParticipantDecoration] = VideoCallParticipantDecoration.allCases)
-
+
- public func body(content: Content)-> some View
+
+ public func body(content: Content)-> some View
- public struct PermissionRequest: @unchecked Sendable, Identifiable
+ public struct PermissionRequest: @unchecked Sendable, Identifiable, Equatable
- public func reject()
+ public static func ==(lhs: PermissionRequest,rhs: PermissionRequest)-> Bool
+ public func reject()
- @available(iOS 14.0, *) public struct VideoViewOverlay: View
+ public struct VideoViewOverlay: View
public struct StatelessMicrophoneIconView: View
- public weak var call: Call?
+ public var body: some View
- public var size: CGFloat
+
- public var actionHandler: ActionHandler?
+
- public var body: some View
+ @MainActor public init(call: Call?,size: CGFloat = 44,actionHandler: ActionHandler? = nil)
-
-
- @MainActor public init(call: Call?,size: CGFloat = 44,actionHandler: ActionHandler? = nil)
- public struct Ingress
+ public struct Ingress: Equatable
public struct StatelessToggleCameraIconView: View
- public weak var call: Call?
+ public var body: some View
- public var size: CGFloat
+
- public var actionHandler: ActionHandler?
+
- public var body: some View
+ public init(call: Call?,size: CGFloat = 44,actionHandler: ActionHandler? = nil)
-
-
- public init(call: Call?,size: CGFloat = 44,actionHandler: ActionHandler? = nil)
public class Call: @unchecked Sendable, WSEventsSubscriber
- @MainActor public internal var state
+ public let state: CallState
- @MainActor public func currentUserCanRequestPermissions(_ permissions: [Permission])-> Bool
+ public func currentUserCanRequestPermissions(_ permissions: [Permission])-> Bool
- @MainActor public func currentUserHasCapability(_ capability: OwnCapability)-> Bool
+ public func currentUserHasCapability(_ capability: OwnCapability)-> Bool
- @discardableResult @MainActor public func collectUserFeedback(rating: Int,reason: String? = nil,custom: [String: RawJSON]? = nil)async throws -> CollectUserFeedbackResponse
+ @discardableResult public func collectUserFeedback(rating: Int,reason: String? = nil,custom: [String: RawJSON]? = nil)async throws -> CollectUserFeedbackResponse
- @MainActor public func updateParticipantsSorting(with sortComparators: [StreamSortComparator<CallParticipant>])
+ public func updateParticipantsSorting(with sortComparators: [StreamSortComparator<CallParticipant>])
- @MainActor public func setIncomingVideoQualitySettings(_ value: IncomingVideoQualitySettings)async
+ public func setIncomingVideoQualitySettings(_ value: IncomingVideoQualitySettings)async
- @MainActor public func updateClosedCaptionsSettings(itemPresentationDuration: TimeInterval,maxVisibleItems: Int)async
+ public func updateClosedCaptionsSettings(itemPresentationDuration: TimeInterval,maxVisibleItems: Int)async
@MainActor open class CallViewModel: ObservableObject
- public var participants: [CallParticipant]
+ @Published public var participants: [CallParticipant]
public struct StatelessSpeakerIconView: View
- public weak var call: Call?
+ public var body: some View
- public var size: CGFloat
+
- public var actionHandler: ActionHandler?
+
- public var body: some View
+ @MainActor public init(call: Call?,size: CGFloat = 44,actionHandler: ActionHandler? = nil)
-
-
- @MainActor public init(call: Call?,size: CGFloat = 44,actionHandler: ActionHandler? = nil)
public struct StatelessHangUpIconView: View
- public weak var call: Call?
+ public var size: CGFloat
- public var size: CGFloat
+ public var actionHandler: ActionHandler?
- public var actionHandler: ActionHandler?
+ public var body: some View
- public var body: some View
+
-
+
-
+ @MainActor public init(call: Call?,size: CGFloat = 44,actionHandler: ActionHandler? = nil)
- @MainActor public init(call: Call?,size: CGFloat = 44,actionHandler: ActionHandler? = nil)
@MainActor public class LobbyViewModel: ObservableObject, @unchecked Sendable
- @Published public var viewfinderImage: Image?
+ @Published public var viewFinderImage: Image?
- @Published public var participants
+ @Published public var participants: [User]
-
+ @Published public var audioOn: Bool
-
+ @Published public var videoOn: Bool
- public init(callType: String,callId: String)
+ @Published public var cameraPosition: CameraPosition
-
+ @Published public var audioLevels: [Float]
-
+ @Published public var isSilent: Bool
- public func startCamera(front: Bool)
+
- public func stopCamera()
+
- public func cleanUp()
+ public init(callType: String,callId: String,callViewModel: CallViewModel,onJoinCallTap: @escaping () -> Void,onCloseLobbyTap: @escaping () -> Void)
- public func didUpdate(callSettings: CallSettings)async
+
+
+ public func startCamera(front: Bool)
+ public func stopCamera()
+ public func cleanUp()
+ public func didTapJoin()
+ public func didTapClose()
+ public func toggleMicrophoneEnabled()
+ public func toggleCameraEnabled()
- @available(iOS 14.0, *) public struct CallContainer: View
+ public struct CallContainer: View
public struct StatelessAudioOutputIconView: View
- public weak var call: Call?
+ public var body: some View
- public var size: CGFloat
+
- public var actionHandler: ActionHandler?
+
- public var body: some View
+ @MainActor public init(call: Call?,size: CGFloat = 44,actionHandler: ActionHandler? = nil)
-
-
- @MainActor public init(call: Call?,size: CGFloat = 44,actionHandler: ActionHandler? = nil)
public struct StatelessVideoIconView: View
- public weak var call: Call?
+ public var body: some View
- public var size: CGFloat
+
- public var actionHandler: ActionHandler?
+
- public var body: some View
+ public init(call: Call?,size: CGFloat = 44,actionHandler: ActionHandler? = nil)
-
-
- public init(call: Call?,size: CGFloat = 44,actionHandler: ActionHandler? = nil)
- public struct ScreenSharingSession
+ public struct ScreenSharingSession: Equatable
extension View
- public func toastView(toast: Binding<Toast?>)-> some View
+ @ViewBuilder public func snapshot(trigger: SnapshotTriggering,snapshotHandler: @escaping @Sendable(UIImage) -> Void)-> some View
public class StreamVideo: ObservableObject, @unchecked Sendable
- public var state: State
+ @Published public internal var connection: ConnectionStatus
- public let videoConfig: VideoConfig
+ @Published public internal var user: User
- public var user: User
+ @Published public internal var activeCall: Call?
- public var isHardwareAccelerationAvailable: Bool
+ @Published public internal var ringingCall: Call?
- public lazy var rejectionReasonProvider: RejectionReasonProviding
+ public let state: State
-
+ public let videoConfig: VideoConfig
-
+ public var user: User
- public convenience init(apiKey: String,user: User,token: UserToken,videoConfig: VideoConfig = VideoConfig(),pushNotificationsConfig: PushNotificationsConfig = .default,tokenProvider: UserTokenProvider? = nil)
+ public var isHardwareAccelerationAvailable: Bool
-
+ public lazy var rejectionReasonProvider: RejectionReasonProviding
-
+
- public func connect()async throws
+
- public func call(callType: String,callId: String,callSettings: CallSettings? = nil,file: StaticString = #file,function: StaticString = #function,line: UInt = #line)-> Call
+ public convenience init(apiKey: String,user: User,token: UserToken,videoConfig: VideoConfig = VideoConfig(),pushNotificationsConfig: PushNotificationsConfig = .default,tokenProvider: UserTokenProvider? = nil)
- public func makeCallsController(callsQuery: CallsQuery)-> CallsController
+
- @discardableResult public func setDevice(id: String)async throws -> ModelResponse
+
- @discardableResult public func setVoipDevice(id: String)async throws -> ModelResponse
+ public func connect()async throws
- @discardableResult public func deleteDevice(id: String)async throws -> ModelResponse
+ public func call(callType: String,callId: String,callSettings: CallSettings? = nil,file: StaticString = #file,function: StaticString = #function,line: UInt = #line)-> Call
- public func listDevices()async throws -> [Device]
+ public func makeCallsController(callsQuery: CallsQuery)-> CallsController
- public func disconnect()async
+ @discardableResult public func setDevice(id: String)async throws -> ModelResponse
- public func eventPublisher()-> AnyPublisher<VideoEvent, Never>
+ @discardableResult public func setVoipDevice(id: String)async throws -> ModelResponse
- public func eventPublisher(for event: WSEvent.Type)-> AnyPublisher<WSEvent, Never>
+ @discardableResult public func deleteDevice(id: String)async throws -> ModelResponse
- public func subscribe()-> AsyncStream<VideoEvent>
+ public func listDevices()async throws -> [Device]
- public func subscribe(for event: WSEvent.Type)-> AsyncStream<WSEvent>
+ public func disconnect()async
- public func queryCalls(next: String? = nil,watch: Bool = false)async throws -> (calls: [Call], next: String?)
+ public func eventPublisher()-> AnyPublisher<VideoEvent, Never>
- public func queryCalls(filters: [String: RawJSON]?,sort: [SortParamRequest] = [SortParamRequest.descending("created_at")],limit: Int? = 25,watch: Bool = false)async throws -> (calls: [Call], next: String?)
+ public func eventPublisher(for event: WSEvent.Type)-> AnyPublisher<WSEvent, Never>
-
+ public func subscribe()-> AsyncStream<VideoEvent>
-
+ public func subscribe(for event: WSEvent.Type)-> AsyncStream<WSEvent>
- public final class State: ObservableObject, @unchecked Sendable
+ public func queryCalls(next: String? = nil,watch: Bool = false)async throws -> (calls: [Call], next: String?)
-
+ public func queryCalls(filters: [String: RawJSON]?,sort: [SortParamRequest] = [SortParamRequest.descending("created_at")],limit: Int? = 25,watch: Bool = false)async throws -> (calls: [Call], next: String?)
- @Published public internal var connection: ConnectionStatus
+
- @Published public internal var user: User
+
- @Published public internal var activeCall: Call?
+ public final class State: ObservableObject, @unchecked Sendable
- @Published public internal var ringingCall: Call?
+
+ @Published public internal var connection: ConnectionStatus
+ @Published public internal var user: User
+ @Published public internal var activeCall: Call?
+ @Published public internal var ringingCall: Call?
- @available(iOS 14.0, *) public struct BroadcastIconView: View
+ public struct BroadcastIconView: View |
Public Interface+ extension AVCaptureDevice
+
+ public func outputFormat(preferredDimensions: CMVideoDimensions,preferredFrameRate: Int)-> AVCaptureDevice.Format?
+ @propertyWrapper public final class Atomic: @unchecked Sendable
+
+ public var wrappedValue: T
+
+
+ public init(wrappedValue: T,mode: Mode = .unfair)
+
+
+ public enum Mode
+
+ case unfair
+ case recursive
+ public protocol CaptureDeviceProviding
+ public class TrackVideoRenderer: RTCMTLVideoView, @unchecked Sendable
+
+ public init(track: RTCVideoTrack)
+
+
+ override public func layoutSubviews()
+ override public func willMove(toWindow newWindow: UIWindow?)
+ override public func willMove(toSuperview newSuperview: UIView?)
+ public protocol CaptureDeviceProtocol: Sendable
+ public struct TrackVideoRendererView: UIViewRepresentable, Equatable
+
+ public init(track: RTCVideoTrack,contentMode: UIView.ContentMode = .scaleAspectFill,sizeUpdater: @escaping SizeUpdater)
+
+
+ public static func dismantleUIView(_ uiView: UIViewType,coordinator: Coordinator)
+ nonisolated public static func ==(lhs: TrackVideoRendererView,rhs: TrackVideoRendererView)-> Bool
+ public func makeUIView(context: Context)-> UIViewType
+ public func updateUIView(_ uiView: UIViewType,context: Context)
+ public func makeCoordinator()-> Coordinator
- extension Alert
-
- public static var defaultErrorAlert: Alert
- @available(iOS, introduced: 13, obsoleted: 14) public struct LocalParticipantViewModifier_iOS13: ViewModifier
-
- public func body(content: Content)-> some View
- @available(iOS, introduced: 13, obsoleted: 14) public struct CallContainer_iOS13: View
-
- public var body: some View
-
-
- public init(viewFactory: Factory = DefaultViewFactory.shared,viewModel: CallViewModel)
- public struct ParticipantPopoverView: View
-
- public var body: some View
-
-
- public init(participant: CallParticipant,call: Call?,popoverShown: Binding<Bool>,customView: (() -> CustomView)? = nil)
- public struct PopoverButton: View
-
- public var body: some View
-
-
- public init(title: String,popoverShown: Binding<Bool>,action: @escaping () -> Void)
- @available(iOS, introduced: 13, obsoleted: 14) public struct LobbyView_iOS13: View
-
- public var body: some View
-
-
- public init(viewFactory: Factory = DefaultViewFactory.shared,callViewModel: CallViewModel,callId: String,callType: String,callSettings: Binding<CallSettings>,onJoinCallTap: @escaping () -> Void,onCloseLobby: @escaping () -> Void)
extension InjectedValues
- public var pictureInPictureAdapter: StreamPictureInPictureAdapter
+ public var utils: Utils
- public struct Ingress
+ public struct Ingress: Equatable
- @available(iOS 14.0, *) public struct VideoViewOverlay: View
+ public struct VideoViewOverlay: View
public struct HorizontalParticipantsListView: View
- public var viewFactory: Factory
+ public var body: some View
- public var participants: [CallParticipant]
+
- public var frame: CGRect
+
- public var call: Call?
+ public init(viewFactory: Factory = DefaultViewFactory.shared,participants: [CallParticipant],frame: CGRect,call: Call?,innerItemSpace: CGFloat = 8,showAllInfo: Bool = false)
- public var innerItemSpace: CGFloat
- public var showAllInfo: Bool
- public var body: some View
-
-
- public init(viewFactory: Factory = DefaultViewFactory.shared,participants: [CallParticipant],frame: CGRect,call: Call?,innerItemSpace: CGFloat = 8,showAllInfo: Bool = false)
- @available(iOS 14.0, *) public struct LobbyView: View
+ public struct LobbyView: View
- public init(viewFactory: Factory = DefaultViewFactory.shared,viewModel: LobbyViewModel? = nil,callId: String,callType: String,callSettings: Binding<CallSettings>,onJoinCallTap: @escaping () -> Void,onCloseLobby: @escaping () -> Void)
+ public init(viewFactory: Factory = DefaultViewFactory.shared,callViewModel: CallViewModel,callId: String,callType: String,callSettings: Binding<CallSettings>,onJoinCallTap: @escaping () -> Void,onCloseLobby: @escaping () -> Void)
- public struct RTMP
+ public struct RTMP: Equatable
extension View
- public func toastView(toast: Binding<Toast?>)-> some View
+ @ViewBuilder public func snapshot(trigger: SnapshotTriggering,snapshotHandler: @escaping @Sendable(UIImage) -> Void)-> some View
- @available(iOS 14.0, *) public struct LayoutMenuView: View
+ public struct LayoutMenuView: View
public struct CallConnectingView: View
- public var title: String
+ public var body: some View
- public var callControls: CallControls
+
- public var callTopView: CallTopView
+
- public var body: some View
+ public init(viewFactory: Factory = DefaultViewFactory.shared,outgoingCallMembers: [Member],title: String,callControls: CallControls,callTopView: CallTopView)
-
-
- public init(viewFactory: Factory = DefaultViewFactory.shared,outgoingCallMembers: [Member],title: String,callControls: CallControls,callTopView: CallTopView)
- public class BroadcastObserver: ObservableObject
+ public class BroadcastObserver: ObservableObject, @unchecked Sendable
public class StreamVideo: ObservableObject, @unchecked Sendable
- public var state: State
+ @Published public internal var connection: ConnectionStatus
- public let videoConfig: VideoConfig
+ @Published public internal var user: User
- public var user: User
+ @Published public internal var activeCall: Call?
- public var isHardwareAccelerationAvailable: Bool
+ @Published public internal var ringingCall: Call?
- public lazy var rejectionReasonProvider: RejectionReasonProviding
+ public let state: State
-
+ public let videoConfig: VideoConfig
-
+ public var user: User
- public convenience init(apiKey: String,user: User,token: UserToken,videoConfig: VideoConfig = VideoConfig(),pushNotificationsConfig: PushNotificationsConfig = .default,tokenProvider: UserTokenProvider? = nil)
+ public var isHardwareAccelerationAvailable: Bool
-
+ public lazy var rejectionReasonProvider: RejectionReasonProviding
-
+
- public func connect()async throws
+
- public func call(callType: String,callId: String,callSettings: CallSettings? = nil,file: StaticString = #file,function: StaticString = #function,line: UInt = #line)-> Call
+ public convenience init(apiKey: String,user: User,token: UserToken,videoConfig: VideoConfig = VideoConfig(),pushNotificationsConfig: PushNotificationsConfig = .default,tokenProvider: UserTokenProvider? = nil)
- public func makeCallsController(callsQuery: CallsQuery)-> CallsController
+
- @discardableResult public func setDevice(id: String)async throws -> ModelResponse
+
- @discardableResult public func setVoipDevice(id: String)async throws -> ModelResponse
+ public func connect()async throws
- @discardableResult public func deleteDevice(id: String)async throws -> ModelResponse
+ public func call(callType: String,callId: String,callSettings: CallSettings? = nil,file: StaticString = #file,function: StaticString = #function,line: UInt = #line)-> Call
- public func listDevices()async throws -> [Device]
+ public func makeCallsController(callsQuery: CallsQuery)-> CallsController
- public func disconnect()async
+ @discardableResult public func setDevice(id: String)async throws -> ModelResponse
- public func eventPublisher()-> AnyPublisher<VideoEvent, Never>
+ @discardableResult public func setVoipDevice(id: String)async throws -> ModelResponse
- public func eventPublisher(for event: WSEvent.Type)-> AnyPublisher<WSEvent, Never>
+ @discardableResult public func deleteDevice(id: String)async throws -> ModelResponse
- public func subscribe()-> AsyncStream<VideoEvent>
+ public func listDevices()async throws -> [Device]
- public func subscribe(for event: WSEvent.Type)-> AsyncStream<WSEvent>
+ public func disconnect()async
- public func queryCalls(next: String? = nil,watch: Bool = false)async throws -> (calls: [Call], next: String?)
+ public func eventPublisher()-> AnyPublisher<VideoEvent, Never>
- public func queryCalls(filters: [String: RawJSON]?,sort: [SortParamRequest] = [SortParamRequest.descending("created_at")],limit: Int? = 25,watch: Bool = false)async throws -> (calls: [Call], next: String?)
+ public func eventPublisher(for event: WSEvent.Type)-> AnyPublisher<WSEvent, Never>
-
+ public func subscribe()-> AsyncStream<VideoEvent>
-
+ public func subscribe(for event: WSEvent.Type)-> AsyncStream<WSEvent>
- public final class State: ObservableObject, @unchecked Sendable
+ public func queryCalls(next: String? = nil,watch: Bool = false)async throws -> (calls: [Call], next: String?)
-
+ public func queryCalls(filters: [String: RawJSON]?,sort: [SortParamRequest] = [SortParamRequest.descending("created_at")],limit: Int? = 25,watch: Bool = false)async throws -> (calls: [Call], next: String?)
- @Published public internal var connection: ConnectionStatus
+
- @Published public internal var user: User
+
- @Published public internal var activeCall: Call?
+ public final class State: ObservableObject, @unchecked Sendable
- @Published public internal var ringingCall: Call?
+
+ @Published public internal var connection: ConnectionStatus
+ @Published public internal var user: User
+ @Published public internal var activeCall: Call?
+ @Published public internal var ringingCall: Call?
- @available(iOS 14.0, *) public struct CallModifier: ViewModifier
+ public struct CallModifier: ViewModifier
-
+ @MainActor public init(viewModel: CallViewModel)
-
+
- public func body(content: Content)-> some View
+
+ public func body(content: Content)-> some View
public struct StreamLazyImage: View
- public init(imageURL: URL?,contentMode: ContentMode = .fill,placeholder: @escaping () -> Placeholder)
+ public init(imageURL: URL?,contentMode: ContentMode = .fill,@ViewBuilder placeholder: @escaping () -> Placeholder)
+ public init(imageURL: URL?,contentMode: ContentMode = .fill)
- @available(iOS 14.0, *) public struct LocalParticipantViewModifier: ViewModifier
+ public struct LocalParticipantViewModifier: ViewModifier
-
+ public init(participant: CallParticipant,call: Call?,showAllInfo: Bool,decorations: [VideoCallParticipantDecoration] = VideoCallParticipantDecoration.allCases)
-
+
- public func body(content: Content)-> some View
+
+ public func body(content: Content)-> some View
public struct CallDurationView: View
- @MainActor public init(_ viewModel: CallViewModel)
+ public init(_ viewModel: CallViewModel)
public struct StatelessHangUpIconView: View
- public weak var call: Call?
+ public var size: CGFloat
- public var size: CGFloat
+ public var actionHandler: ActionHandler?
- public var actionHandler: ActionHandler?
+ public var body: some View
- public var body: some View
+
-
+
-
+ @MainActor public init(call: Call?,size: CGFloat = 44,actionHandler: ActionHandler? = nil)
- @MainActor public init(call: Call?,size: CGFloat = 44,actionHandler: ActionHandler? = nil)
public class Call: @unchecked Sendable, WSEventsSubscriber
- @MainActor public internal var state
+ public let state: CallState
- @MainActor public func currentUserCanRequestPermissions(_ permissions: [Permission])-> Bool
+ public func currentUserCanRequestPermissions(_ permissions: [Permission])-> Bool
- @MainActor public func currentUserHasCapability(_ capability: OwnCapability)-> Bool
+ public func currentUserHasCapability(_ capability: OwnCapability)-> Bool
- @discardableResult @MainActor public func collectUserFeedback(rating: Int,reason: String? = nil,custom: [String: RawJSON]? = nil)async throws -> CollectUserFeedbackResponse
+ @discardableResult public func collectUserFeedback(rating: Int,reason: String? = nil,custom: [String: RawJSON]? = nil)async throws -> CollectUserFeedbackResponse
- @MainActor public func updateParticipantsSorting(with sortComparators: [StreamSortComparator<CallParticipant>])
+ public func updateParticipantsSorting(with sortComparators: [StreamSortComparator<CallParticipant>])
- @MainActor public func setIncomingVideoQualitySettings(_ value: IncomingVideoQualitySettings)async
+ public func setIncomingVideoQualitySettings(_ value: IncomingVideoQualitySettings)async
- @MainActor public func updateClosedCaptionsSettings(itemPresentationDuration: TimeInterval,maxVisibleItems: Int)async
+ public func updateClosedCaptionsSettings(itemPresentationDuration: TimeInterval,maxVisibleItems: Int)async
public struct StatelessSpeakerIconView: View
- public weak var call: Call?
+ public var body: some View
- public var size: CGFloat
+
- public var actionHandler: ActionHandler?
+
- public var body: some View
+ @MainActor public init(call: Call?,size: CGFloat = 44,actionHandler: ActionHandler? = nil)
-
-
- @MainActor public init(call: Call?,size: CGFloat = 44,actionHandler: ActionHandler? = nil)
- @available(iOS 14.0, *) public struct BroadcastIconView: View
+ public struct BroadcastIconView: View
- @MainActor public class CallState: ObservableObject
+ public class CallState: ObservableObject
- @Published public internal var sessionId: String
+ @Published public private var sessionId: String
- @Published public internal var participants
+ @Published public private var participants: [CallParticipant]
- @Published public internal var participantsMap
+ @Published public private var participantsMap: [String: CallParticipant]
- @Published public internal var localParticipant: CallParticipant?
+ @Published public private var localParticipant: CallParticipant?
- @Published public internal var dominantSpeaker: CallParticipant?
+ @Published public private var dominantSpeaker: CallParticipant?
- @Published public internal var remoteParticipants: [CallParticipant]
+ @Published public private var remoteParticipants: [CallParticipant]
- @Published public internal var activeSpeakers: [CallParticipant]
+ @Published public private var activeSpeakers: [CallParticipant]
- @Published public internal var members: [Member]
+ @Published public private var members: [Member]
- @Published public internal var screenSharingSession: ScreenSharingSession?
+ @Published public private var screenSharingSession: ScreenSharingSession?
- @Published public internal var recordingState: RecordingState
+ @Published public private var recordingState: RecordingState
- @Published public internal var blockedUserIds: Set<String>
+ @Published public private var blockedUserIds: Set<String>
- @Published public internal var settings: CallSettingsResponse?
+ @Published public private var settings: CallSettingsResponse?
- @Published public internal var ownCapabilities: [OwnCapability]
+ @Published public private var ownCapabilities: [OwnCapability]
- @Published public internal var capabilitiesByRole: [String: [String]]
+ @Published public private var capabilitiesByRole: [String: [String]]
- @Published public internal var backstage: Bool
+ @Published public private var backstage: Bool
- @Published public internal var broadcasting: Bool
+ @Published public private var broadcasting: Bool
- @Published public internal var createdAt: Date
+ @Published public private var createdAt: Date
- @Published public internal var updatedAt: Date
+ @Published public private var updatedAt: Date
- @Published public internal var startsAt: Date?
+ @Published public private var startsAt: Date?
- @Published public internal var startedAt: Date?
+ @Published public private var startedAt: Date?
- @Published public internal var endedAt: Date?
+ @Published public private var endedAt: Date?
- @Published public internal var endedBy: User?
+ @Published public private var endedBy: User?
- @Published public internal var custom: [String: RawJSON]
+ @Published public private var custom: [String: RawJSON]
- @Published public internal var team: String?
+ @Published public private var team: String?
- @Published public internal var createdBy: User?
+ @Published public private var createdBy: User?
- @Published public internal var ingress: Ingress?
+ @Published public private var ingress: Ingress?
- @Published public internal var permissionRequests: [PermissionRequest]
+ @Published public private var permissionRequests: [PermissionRequest]
- @Published public internal var transcribing: Bool
+ @Published public private var transcribing: Bool
- @Published public internal var captioning: Bool
+ @Published public private var captioning: Bool
- @Published public internal var egress: EgressResponse?
+ @Published public private var egress: EgressResponse?
- @Published public internal var session: CallSessionResponse?
+ @Published public private var session: CallSessionResponse?
- @Published public internal var reconnectionStatus
+ @Published public private var reconnectionStatus: ReconnectionStatus
- @Published public internal var anonymousParticipantCount: UInt32
+ @Published public private var anonymousParticipantCount: UInt32
- @Published public internal var participantCount: UInt32
+ @Published public private var participantCount: UInt32
- @Published public internal var isInitialized: Bool
+ @Published public private var isInitialized: Bool
- @Published public internal var callSettings
+ @Published public private var callSettings: CallSettings
- @Published public internal var isCurrentUserScreensharing: Bool
+ @Published public private var isCurrentUserScreensharing: Bool
- @Published public internal var duration: TimeInterval
+ @Published public private var duration: TimeInterval
- @Published public internal var statsReport: CallStatsReport?
+ @Published public private var statsReport: CallStatsReport?
- @Published public internal var closedCaptions: [CallClosedCaption]
+ @Published public private var closedCaptions: [CallClosedCaption]
- @Published public internal var statsCollectionInterval: Int
+ @Published public private var statsCollectionInterval: Int
- @Published public internal var incomingVideoQualitySettings: IncomingVideoQualitySettings
+ @Published public private var incomingVideoQualitySettings: IncomingVideoQualitySettings
- @Published public internal var disconnectionError: Error?
+ @Published public private var disconnectionError: Error?
public struct StatelessToggleCameraIconView: View
- public weak var call: Call?
+ public var body: some View
- public var size: CGFloat
+
- public var actionHandler: ActionHandler?
+
- public var body: some View
+ public init(call: Call?,size: CGFloat = 44,actionHandler: ActionHandler? = nil)
-
-
- public init(call: Call?,size: CGFloat = 44,actionHandler: ActionHandler? = nil)
public struct StatelessAudioOutputIconView: View
- public weak var call: Call?
+ public var body: some View
- public var size: CGFloat
+
- public var actionHandler: ActionHandler?
+
- public var body: some View
+ @MainActor public init(call: Call?,size: CGFloat = 44,actionHandler: ActionHandler? = nil)
-
-
- @MainActor public init(call: Call?,size: CGFloat = 44,actionHandler: ActionHandler? = nil)
public struct StatelessVideoIconView: View
- public weak var call: Call?
+ public var body: some View
- public var size: CGFloat
+
- public var actionHandler: ActionHandler?
+
- public var body: some View
+ public init(call: Call?,size: CGFloat = 44,actionHandler: ActionHandler? = nil)
-
-
- public init(call: Call?,size: CGFloat = 44,actionHandler: ActionHandler? = nil)
public struct StatelessParticipantsListButton: View
- public weak var call: Call?
+ public var body: some View
- public var size: CGFloat
+
- public var isActive: Binding<Bool>
+
- public var actionHandler: ActionHandler?
+ @MainActor public init(call: Call?,size: CGFloat = 44,isActive: Binding<Bool>,actionHandler: ActionHandler? = nil)
- public var body: some View
-
-
- @MainActor public init(call: Call?,size: CGFloat = 44,isActive: Binding<Bool>,actionHandler: ActionHandler? = nil)
@MainActor open class CallViewModel: ObservableObject
- public var participants: [CallParticipant]
+ @Published public var participants: [CallParticipant]
@MainActor public class LobbyViewModel: ObservableObject, @unchecked Sendable
- @Published public var viewfinderImage: Image?
+ @Published public var viewFinderImage: Image?
- @Published public var participants
+ @Published public var participants: [User]
-
+ @Published public var audioOn: Bool
-
+ @Published public var videoOn: Bool
- public init(callType: String,callId: String)
+ @Published public var cameraPosition: CameraPosition
-
+ @Published public var audioLevels: [Float]
-
+ @Published public var isSilent: Bool
- public func startCamera(front: Bool)
+
- public func stopCamera()
+
- public func cleanUp()
+ public init(callType: String,callId: String,callViewModel: CallViewModel,onJoinCallTap: @escaping () -> Void,onCloseLobbyTap: @escaping () -> Void)
- public func didUpdate(callSettings: CallSettings)async
+
+
+ public func startCamera(front: Bool)
+ public func stopCamera()
+ public func cleanUp()
+ public func didTapJoin()
+ public func didTapClose()
+ public func toggleMicrophoneEnabled()
+ public func toggleCameraEnabled()
- public struct LobbyInfo: Equatable
+ public struct LobbyInfo: Equatable, Sendable
public struct StatelessMicrophoneIconView: View
- public weak var call: Call?
+ public var body: some View
- public var size: CGFloat
+
- public var actionHandler: ActionHandler?
+
- public var body: some View
+ @MainActor public init(call: Call?,size: CGFloat = 44,actionHandler: ActionHandler? = nil)
-
-
- @MainActor public init(call: Call?,size: CGFloat = 44,actionHandler: ActionHandler? = nil)
public struct MicrophoneCheckView: View
- public init(audioLevels: [Float],microphoneOn: Bool,isSilent: Bool,isPinned: Bool,maxHeight: Float = 14)
+ public init(viewModel: LobbyViewModel,isPinned: Bool,maxHeight: Float = 14)
+ public init(audioLevels: [Float],microphoneOn: Bool,isSilent: Bool,isPinned: Bool,maxHeight: Float = 14)
- @available(iOS 14.0, *) public struct CallContainer: View
+ public struct CallContainer: View
- public struct PermissionRequest: @unchecked Sendable, Identifiable
+ public struct PermissionRequest: @unchecked Sendable, Identifiable, Equatable
- public func reject()
+ public static func ==(lhs: PermissionRequest,rhs: PermissionRequest)-> Bool
+ public func reject()
open class StreamCallAudioRecorder: @unchecked Sendable
-
+ @Atomic public private var isRecording: Bool
-
+
- public init(filename: String)
+
-
+ public init(filename: String)
-
+
- open func startRecording(ignoreActiveCall: Bool = false)async
+
- open func stopRecording()async
+ open func startRecording(ignoreActiveCall: Bool = false)async
+ open func stopRecording()async
- public struct ScreenSharingSession
+ public struct ScreenSharingSession: Equatable |
b123407
to
6538db2
Compare
Public Interface+ public protocol TimerControl
+ public protocol CaptureDeviceProtocol: Sendable
+ public struct DefaultTimer: Timer
+
+ @discardableResult public static func schedule(timeInterval: TimeInterval,queue: DispatchQueue,onFire: @escaping () -> Void)-> TimerControl
+ public static func scheduleRepeating(timeInterval: TimeInterval,queue: DispatchQueue,onFire: @escaping () -> Void)-> RepeatingTimerControl
+ public static func publish(every: TimeInterval)-> AnyPublisher<Date, Never>
+ @propertyWrapper public final class Atomic: @unchecked Sendable
+
+ public var wrappedValue: T
+
+
+ public init(wrappedValue: T,mode: Mode = .unfair)
+
+
+ public enum Mode
+
+ case unfair
+ case recursive
+ extension AVCaptureDevice
+
+ public func outputFormat(preferredDimensions: CMVideoDimensions,preferredFrameRate: Int)-> AVCaptureDevice.Format?
+ public struct TrackVideoRendererView: UIViewRepresentable, Equatable
+
+ public init(track: RTCVideoTrack,contentMode: UIView.ContentMode = .scaleAspectFill,sizeUpdater: @escaping SizeUpdater)
+
+
+ public static func dismantleUIView(_ uiView: UIViewType,coordinator: Coordinator)
+ nonisolated public static func ==(lhs: TrackVideoRendererView,rhs: TrackVideoRendererView)-> Bool
+ public func makeUIView(context: Context)-> UIViewType
+ public func updateUIView(_ uiView: UIViewType,context: Context)
+ public func makeCoordinator()-> Coordinator
+ public protocol CaptureDeviceProviding
+ public protocol Timer
+ public class TrackVideoRenderer: RTCMTLVideoView, @unchecked Sendable
+
+ public init(track: RTCVideoTrack)
+
+
+ override public func layoutSubviews()
+ override public func willMove(toWindow newWindow: UIWindow?)
+ override public func willMove(toSuperview newSuperview: UIView?)
+ extension Timer
+
+ public static func currentTime()-> Date
+ public protocol RepeatingTimerControl
- public class VideoCapturePolicy: @unchecked Sendable
- @available(iOS, introduced: 13, obsoleted: 14) public struct LocalParticipantViewModifier_iOS13: ViewModifier
-
- public func body(content: Content)-> some View
- public struct ParticipantPopoverView: View
-
- public var body: some View
-
-
- public init(participant: CallParticipant,call: Call?,popoverShown: Binding<Bool>,customView: (() -> CustomView)? = nil)
- public struct PopoverButton: View
-
- public var body: some View
-
-
- public init(title: String,popoverShown: Binding<Bool>,action: @escaping () -> Void)
- extension Alert
-
- public static var defaultErrorAlert: Alert
- @available(iOS, introduced: 13, obsoleted: 14) public struct CallContainer_iOS13: View
-
- public var body: some View
-
-
- public init(viewFactory: Factory = DefaultViewFactory.shared,viewModel: CallViewModel)
- extension VideoCapturePolicy: InjectionKey
-
- nonisolated public static var currentValue: VideoCapturePolicy
- @available(iOS, introduced: 13, obsoleted: 14) public struct LobbyView_iOS13: View
-
- public var body: some View
-
-
- public init(viewFactory: Factory = DefaultViewFactory.shared,callViewModel: CallViewModel,callId: String,callType: String,callSettings: Binding<CallSettings>,onJoinCallTap: @escaping () -> Void,onCloseLobby: @escaping () -> Void)
- @available(iOS 14.0, *) public struct BroadcastIconView: View
+ public struct BroadcastIconView: View
- public struct RTMP
+ public struct RTMP: Equatable
- @available(iOS 14.0, *) public struct VideoViewOverlay: View
+ public struct VideoViewOverlay: View
public struct StreamLazyImage: View
- public init(imageURL: URL?,contentMode: ContentMode = .fill,placeholder: @escaping () -> Placeholder)
+ public init(imageURL: URL?,contentMode: ContentMode = .fill,@ViewBuilder placeholder: @escaping () -> Placeholder)
+ public init(imageURL: URL?,contentMode: ContentMode = .fill)
- @available(iOS 14.0, *) public struct CallContainer: View
+ public struct CallContainer: View
public struct CallDurationView: View
- @MainActor public init(_ viewModel: CallViewModel)
+ public init(_ viewModel: CallViewModel)
public struct MicrophoneCheckView: View
- public init(audioLevels: [Float],microphoneOn: Bool,isSilent: Bool,isPinned: Bool,maxHeight: Float = 14)
+ public init(viewModel: LobbyViewModel,isPinned: Bool,maxHeight: Float = 14,)
+ public init(audioLevels: [Float],microphoneOn: Bool,isSilent: Bool,isPinned: Bool,maxHeight: Float = 14)
public struct StatelessToggleCameraIconView: View
- public weak var call: Call?
+ public var body: some View
- public var size: CGFloat
+
- public var actionHandler: ActionHandler?
+
- public var body: some View
+ public init(call: Call?,size: CGFloat = 44,actionHandler: ActionHandler? = nil)
-
-
- public init(call: Call?,size: CGFloat = 44,actionHandler: ActionHandler? = nil)
public class Call: @unchecked Sendable, WSEventsSubscriber
- @MainActor public internal var state
+ public let state: CallState
- @MainActor public func currentUserCanRequestPermissions(_ permissions: [Permission])-> Bool
+ public func currentUserCanRequestPermissions(_ permissions: [Permission])-> Bool
- @MainActor public func currentUserHasCapability(_ capability: OwnCapability)-> Bool
+ public func currentUserHasCapability(_ capability: OwnCapability)-> Bool
- @discardableResult @MainActor public func collectUserFeedback(rating: Int,reason: String? = nil,custom: [String: RawJSON]? = nil)async throws -> CollectUserFeedbackResponse
+ @discardableResult public func collectUserFeedback(rating: Int,reason: String? = nil,custom: [String: RawJSON]? = nil)async throws -> CollectUserFeedbackResponse
- @MainActor public func updateParticipantsSorting(with sortComparators: [StreamSortComparator<CallParticipant>])
+ public func updateParticipantsSorting(with sortComparators: [StreamSortComparator<CallParticipant>])
- @MainActor public func setIncomingVideoQualitySettings(_ value: IncomingVideoQualitySettings)async
+ public func setIncomingVideoQualitySettings(_ value: IncomingVideoQualitySettings)async
- @MainActor public func updateClosedCaptionsSettings(itemPresentationDuration: TimeInterval,maxVisibleItems: Int)async
+ public func updateClosedCaptionsSettings(itemPresentationDuration: TimeInterval,maxVisibleItems: Int)async
- public class BroadcastObserver: ObservableObject
+ public class BroadcastObserver: ObservableObject, @unchecked Sendable
- @available(iOS 14.0, *) public struct CallModifier: ViewModifier
+ public struct CallModifier: ViewModifier
-
+ @MainActor public init(viewModel: CallViewModel)
-
+
- public func body(content: Content)-> some View
+
+ public func body(content: Content)-> some View
public struct StatelessVideoIconView: View
- public weak var call: Call?
+ public var body: some View
- public var size: CGFloat
+
- public var actionHandler: ActionHandler?
+
- public var body: some View
+ public init(call: Call?,size: CGFloat = 44,actionHandler: ActionHandler? = nil)
-
-
- public init(call: Call?,size: CGFloat = 44,actionHandler: ActionHandler? = nil)
- public struct ScreenSharingSession
+ public struct ScreenSharingSession: Equatable
public struct StatelessHangUpIconView: View
- public weak var call: Call?
+ public var size: CGFloat
- public var size: CGFloat
+ public var actionHandler: ActionHandler?
- public var actionHandler: ActionHandler?
+ public var body: some View
- public var body: some View
+
-
+
-
+ @MainActor public init(call: Call?,size: CGFloat = 44,actionHandler: ActionHandler? = nil)
- @MainActor public init(call: Call?,size: CGFloat = 44,actionHandler: ActionHandler? = nil)
@MainActor open class CallViewModel: ObservableObject
- public var participants: [CallParticipant]
+ @Published public var participants: [CallParticipant]
public struct HorizontalParticipantsListView: View
- public var viewFactory: Factory
+ public var body: some View
- public var participants: [CallParticipant]
+
- public var frame: CGRect
+
- public var call: Call?
+ public init(viewFactory: Factory = DefaultViewFactory.shared,participants: [CallParticipant],frame: CGRect,call: Call?,innerItemSpace: CGFloat = 8,showAllInfo: Bool = false)
- public var innerItemSpace: CGFloat
- public var showAllInfo: Bool
- public var body: some View
-
-
- public init(viewFactory: Factory = DefaultViewFactory.shared,participants: [CallParticipant],frame: CGRect,call: Call?,innerItemSpace: CGFloat = 8,showAllInfo: Bool = false)
public struct StatelessMicrophoneIconView: View
- public weak var call: Call?
+ public var body: some View
- public var size: CGFloat
+
- public var actionHandler: ActionHandler?
+
- public var body: some View
+ @MainActor public init(call: Call?,size: CGFloat = 44,actionHandler: ActionHandler? = nil)
-
-
- @MainActor public init(call: Call?,size: CGFloat = 44,actionHandler: ActionHandler? = nil)
open class StreamCallAudioRecorder: @unchecked Sendable
-
+ @Atomic public private var isRecording: Bool
-
+
- public init(filename: String)
+
-
+ public init(filename: String)
-
+
- open func startRecording(ignoreActiveCall: Bool = false)async
+
- open func stopRecording()async
+ open func startRecording(ignoreActiveCall: Bool = false)async
+ open func stopRecording()async
public struct StatelessAudioOutputIconView: View
- public weak var call: Call?
+ public var body: some View
- public var size: CGFloat
+
- public var actionHandler: ActionHandler?
+
- public var body: some View
+ @MainActor public init(call: Call?,size: CGFloat = 44,actionHandler: ActionHandler? = nil)
-
-
- @MainActor public init(call: Call?,size: CGFloat = 44,actionHandler: ActionHandler? = nil)
public struct StatelessSpeakerIconView: View
- public weak var call: Call?
+ public var body: some View
- public var size: CGFloat
+
- public var actionHandler: ActionHandler?
+
- public var body: some View
+ @MainActor public init(call: Call?,size: CGFloat = 44,actionHandler: ActionHandler? = nil)
-
-
- @MainActor public init(call: Call?,size: CGFloat = 44,actionHandler: ActionHandler? = nil)
extension View
- public func toastView(toast: Binding<Toast?>)-> some View
+ @ViewBuilder public func snapshot(trigger: SnapshotTriggering,snapshotHandler: @escaping @Sendable(UIImage) -> Void)-> some View
- public struct Ingress
+ public struct Ingress: Equatable
@MainActor public class LobbyViewModel: ObservableObject, @unchecked Sendable
- @Published public var viewfinderImage: Image?
+ @Published public var viewFinderImage: Image?
- @Published public var participants
+ @Published public var participants: [User]
-
+ @Published public var audioOn: Bool
-
+ @Published public var videoOn: Bool
- public init(callType: String,callId: String)
+ @Published public var cameraPosition: CameraPosition
-
+ @Published public var audioLevels: [Float]
-
+ @Published public var isSilent: Bool
- public func startCamera(front: Bool)
+
- public func stopCamera()
+
- public func cleanUp()
+ public init(callType: String,callId: String,callViewModel: CallViewModel,onJoinCallTap: @escaping () -> Void,onCloseLobbyTap: @escaping () -> Void)
- public func didUpdate(callSettings: CallSettings)async
+
+
+ public func startCamera(front: Bool)
+ public func stopCamera()
+ public func cleanUp()
+ public func didTapJoin()
+ public func didTapClose()
+ public func toggleMicrophoneEnabled()
+ public func toggleCameraEnabled()
- @available(iOS 14.0, *) public struct LayoutMenuView: View
+ public struct LayoutMenuView: View
- @MainActor public class CallState: ObservableObject
+ public class CallState: ObservableObject
- @Published public internal var sessionId: String
+ @Published public private var sessionId: String
- @Published public internal var participants
+ @Published public private var participants: [CallParticipant]
- @Published public internal var participantsMap
+ @Published public private var participantsMap: [String: CallParticipant]
- @Published public internal var localParticipant: CallParticipant?
+ @Published public private var localParticipant: CallParticipant?
- @Published public internal var dominantSpeaker: CallParticipant?
+ @Published public private var dominantSpeaker: CallParticipant?
- @Published public internal var remoteParticipants: [CallParticipant]
+ @Published public private var remoteParticipants: [CallParticipant]
- @Published public internal var activeSpeakers: [CallParticipant]
+ @Published public private var activeSpeakers: [CallParticipant]
- @Published public internal var members: [Member]
+ @Published public private var members: [Member]
- @Published public internal var screenSharingSession: ScreenSharingSession?
+ @Published public private var screenSharingSession: ScreenSharingSession?
- @Published public internal var recordingState: RecordingState
+ @Published public private var recordingState: RecordingState
- @Published public internal var blockedUserIds: Set<String>
+ @Published public private var blockedUserIds: Set<String>
- @Published public internal var settings: CallSettingsResponse?
+ @Published public private var settings: CallSettingsResponse?
- @Published public internal var ownCapabilities: [OwnCapability]
+ @Published public private var ownCapabilities: [OwnCapability]
- @Published public internal var capabilitiesByRole: [String: [String]]
+ @Published public private var capabilitiesByRole: [String: [String]]
- @Published public internal var backstage: Bool
+ @Published public private var backstage: Bool
- @Published public internal var broadcasting: Bool
+ @Published public private var broadcasting: Bool
- @Published public internal var createdAt: Date
+ @Published public private var createdAt: Date
- @Published public internal var updatedAt: Date
+ @Published public private var updatedAt: Date
- @Published public internal var startsAt: Date?
+ @Published public private var startsAt: Date?
- @Published public internal var startedAt: Date?
+ @Published public private var startedAt: Date?
- @Published public internal var endedAt: Date?
+ @Published public private var endedAt: Date?
- @Published public internal var endedBy: User?
+ @Published public private var endedBy: User?
- @Published public internal var custom: [String: RawJSON]
+ @Published public private var custom: [String: RawJSON]
- @Published public internal var team: String?
+ @Published public private var team: String?
- @Published public internal var createdBy: User?
+ @Published public private var createdBy: User?
- @Published public internal var ingress: Ingress?
+ @Published public private var ingress: Ingress?
- @Published public internal var permissionRequests: [PermissionRequest]
+ @Published public private var permissionRequests: [PermissionRequest]
- @Published public internal var transcribing: Bool
+ @Published public private var transcribing: Bool
- @Published public internal var captioning: Bool
+ @Published public private var captioning: Bool
- @Published public internal var egress: EgressResponse?
+ @Published public private var egress: EgressResponse?
- @Published public internal var session: CallSessionResponse?
+ @Published public private var session: CallSessionResponse?
- @Published public internal var reconnectionStatus
+ @Published public private var reconnectionStatus: ReconnectionStatus
- @Published public internal var anonymousParticipantCount: UInt32
+ @Published public private var anonymousParticipantCount: UInt32
- @Published public internal var participantCount: UInt32
+ @Published public private var participantCount: UInt32
- @Published public internal var isInitialized: Bool
+ @Published public private var isInitialized: Bool
- @Published public internal var callSettings
+ @Published public private var callSettings: CallSettings
- @Published public internal var isCurrentUserScreensharing: Bool
+ @Published public private var isCurrentUserScreensharing: Bool
- @Published public internal var duration: TimeInterval
+ @Published public private var duration: TimeInterval
- @Published public internal var statsReport: CallStatsReport?
+ @Published public private var statsReport: CallStatsReport?
- @Published public internal var closedCaptions: [CallClosedCaption]
+ @Published public private var closedCaptions: [CallClosedCaption]
- @Published public internal var statsCollectionInterval: Int
+ @Published public private var statsCollectionInterval: Int
- @Published public internal var incomingVideoQualitySettings: IncomingVideoQualitySettings
+ @Published public private var incomingVideoQualitySettings: IncomingVideoQualitySettings
- @Published public internal var disconnectionError: Error?
+ @Published public private var disconnectionError: Error?
- public struct PermissionRequest: @unchecked Sendable, Identifiable
+ public struct PermissionRequest: @unchecked Sendable, Identifiable, Equatable
- public func reject()
+ public static func ==(lhs: PermissionRequest,rhs: PermissionRequest)-> Bool
+ public func reject()
- @available(iOS 14.0, *) public struct LocalParticipantViewModifier: ViewModifier
+ public struct LocalParticipantViewModifier: ViewModifier
-
+ public init(participant: CallParticipant,call: Call?,showAllInfo: Bool,decorations: [VideoCallParticipantDecoration] = VideoCallParticipantDecoration.allCases)
-
+
- public func body(content: Content)-> some View
+
+ public func body(content: Content)-> some View
- @available(iOS 14.0, *) public struct LobbyView: View
+ public struct LobbyView: View
- public init(viewFactory: Factory = DefaultViewFactory.shared,viewModel: LobbyViewModel? = nil,callId: String,callType: String,callSettings: Binding<CallSettings>,onJoinCallTap: @escaping () -> Void,onCloseLobby: @escaping () -> Void)
+ public init(viewFactory: Factory = DefaultViewFactory.shared,callViewModel: CallViewModel,callId: String,callType: String,callSettings: Binding<CallSettings>,onJoinCallTap: @escaping () -> Void,onCloseLobby: @escaping () -> Void)
public struct StatelessParticipantsListButton: View
- public weak var call: Call?
+ public var body: some View
- public var size: CGFloat
+
- public var isActive: Binding<Bool>
+
- public var actionHandler: ActionHandler?
+ @MainActor public init(call: Call?,size: CGFloat = 44,isActive: Binding<Bool>,actionHandler: ActionHandler? = nil)
- public var body: some View
-
-
- @MainActor public init(call: Call?,size: CGFloat = 44,isActive: Binding<Bool>,actionHandler: ActionHandler? = nil)
extension InjectedValues
- public var pictureInPictureAdapter: StreamPictureInPictureAdapter
+ public var utils: Utils
public class StreamVideo: ObservableObject, @unchecked Sendable
- public var state: State
+ @Published public internal var connection: ConnectionStatus
- public let videoConfig: VideoConfig
+ @Published public internal var user: User
- public var user: User
+ @Published public internal var activeCall: Call?
- public var isHardwareAccelerationAvailable: Bool
+ @Published public internal var ringingCall: Call?
- public lazy var rejectionReasonProvider: RejectionReasonProviding
+ public let state: State
-
+ public let videoConfig: VideoConfig
-
+ public var user: User
- public convenience init(apiKey: String,user: User,token: UserToken,videoConfig: VideoConfig = VideoConfig(),pushNotificationsConfig: PushNotificationsConfig = .default,tokenProvider: UserTokenProvider? = nil)
+ public var isHardwareAccelerationAvailable: Bool
-
+ public lazy var rejectionReasonProvider: RejectionReasonProviding
-
+
- public func connect()async throws
+
- public func call(callType: String,callId: String,callSettings: CallSettings? = nil,file: StaticString = #file,function: StaticString = #function,line: UInt = #line)-> Call
+ public convenience init(apiKey: String,user: User,token: UserToken,videoConfig: VideoConfig = VideoConfig(),pushNotificationsConfig: PushNotificationsConfig = .default,tokenProvider: UserTokenProvider? = nil)
- public func makeCallsController(callsQuery: CallsQuery)-> CallsController
+
- @discardableResult public func setDevice(id: String)async throws -> ModelResponse
+
- @discardableResult public func setVoipDevice(id: String)async throws -> ModelResponse
+ public func connect()async throws
- @discardableResult public func deleteDevice(id: String)async throws -> ModelResponse
+ public func call(callType: String,callId: String,callSettings: CallSettings? = nil,file: StaticString = #file,function: StaticString = #function,line: UInt = #line)-> Call
- public func listDevices()async throws -> [Device]
+ public func makeCallsController(callsQuery: CallsQuery)-> CallsController
- public func disconnect()async
+ @discardableResult public func setDevice(id: String)async throws -> ModelResponse
- public func eventPublisher()-> AnyPublisher<VideoEvent, Never>
+ @discardableResult public func setVoipDevice(id: String)async throws -> ModelResponse
- public func eventPublisher(for event: WSEvent.Type)-> AnyPublisher<WSEvent, Never>
+ @discardableResult public func deleteDevice(id: String)async throws -> ModelResponse
- public func subscribe()-> AsyncStream<VideoEvent>
+ public func listDevices()async throws -> [Device]
- public func subscribe(for event: WSEvent.Type)-> AsyncStream<WSEvent>
+ public func disconnect()async
- public func queryCalls(next: String? = nil,watch: Bool = false)async throws -> (calls: [Call], next: String?)
+ public func eventPublisher()-> AnyPublisher<VideoEvent, Never>
- public func queryCalls(filters: [String: RawJSON]?,sort: [SortParamRequest] = [SortParamRequest.descending("created_at")],limit: Int? = 25,watch: Bool = false)async throws -> (calls: [Call], next: String?)
+ public func eventPublisher(for event: WSEvent.Type)-> AnyPublisher<WSEvent, Never>
-
+ public func subscribe()-> AsyncStream<VideoEvent>
-
+ public func subscribe(for event: WSEvent.Type)-> AsyncStream<WSEvent>
- public final class State: ObservableObject, @unchecked Sendable
+ public func queryCalls(next: String? = nil,watch: Bool = false)async throws -> (calls: [Call], next: String?)
-
+ public func queryCalls(filters: [String: RawJSON]?,sort: [SortParamRequest] = [SortParamRequest.descending("created_at")],limit: Int? = 25,watch: Bool = false)async throws -> (calls: [Call], next: String?)
- @Published public internal var connection: ConnectionStatus
+
- @Published public internal var user: User
+
- @Published public internal var activeCall: Call?
+ public final class State: ObservableObject, @unchecked Sendable
- @Published public internal var ringingCall: Call?
+
+ @Published public internal var connection: ConnectionStatus
+ @Published public internal var user: User
+ @Published public internal var activeCall: Call?
+ @Published public internal var ringingCall: Call?
public struct CallConnectingView: View
- public var title: String
+ public var body: some View
- public var callControls: CallControls
+
- public var callTopView: CallTopView
+
- public var body: some View
+ public init(viewFactory: Factory = DefaultViewFactory.shared,outgoingCallMembers: [Member],title: String,callControls: CallControls,callTopView: CallTopView)
-
-
- public init(viewFactory: Factory = DefaultViewFactory.shared,outgoingCallMembers: [Member],title: String,callControls: CallControls,callTopView: CallTopView) |
Public Interface+ extension AVCaptureDevice
+
+ public func outputFormat(preferredDimensions: CMVideoDimensions,preferredFrameRate: Int)-> AVCaptureDevice.Format?
+ public protocol Timer
+ public class TrackVideoRenderer: RTCMTLVideoView, @unchecked Sendable
+
+ public init(track: RTCVideoTrack)
+
+
+ override public func layoutSubviews()
+ override public func willMove(toWindow newWindow: UIWindow?)
+ override public func willMove(toSuperview newSuperview: UIView?)
+ public struct DefaultTimer: Timer
+
+ @discardableResult public static func schedule(timeInterval: TimeInterval,queue: DispatchQueue,onFire: @escaping () -> Void)-> TimerControl
+ public static func scheduleRepeating(timeInterval: TimeInterval,queue: DispatchQueue,onFire: @escaping () -> Void)-> RepeatingTimerControl
+ public static func publish(every: TimeInterval)-> AnyPublisher<Date, Never>
+ public struct TrackVideoRendererView: UIViewRepresentable, Equatable
+
+ public init(track: RTCVideoTrack,contentMode: UIView.ContentMode = .scaleAspectFill,sizeUpdater: @escaping SizeUpdater)
+
+
+ public static func dismantleUIView(_ uiView: UIViewType,coordinator: Coordinator)
+ nonisolated public static func ==(lhs: TrackVideoRendererView,rhs: TrackVideoRendererView)-> Bool
+ public func makeUIView(context: Context)-> UIViewType
+ public func updateUIView(_ uiView: UIViewType,context: Context)
+ public func makeCoordinator()-> Coordinator
+ public protocol TimerControl
+ @propertyWrapper public final class Atomic: @unchecked Sendable
+
+ public var wrappedValue: T
+
+
+ public init(wrappedValue: T,mode: Mode = .unfair)
+
+
+ public enum Mode
+
+ case unfair
+ case recursive
+ public protocol CaptureDeviceProviding
+ public protocol CaptureDeviceProtocol: Sendable
+ public protocol RepeatingTimerControl
+ extension Timer
+
+ public static func currentTime()-> Date
- extension VideoCapturePolicy: InjectionKey
-
- nonisolated public static var currentValue: VideoCapturePolicy
- public struct PopoverButton: View
-
- public var body: some View
-
-
- public init(title: String,popoverShown: Binding<Bool>,action: @escaping () -> Void)
- public struct ParticipantPopoverView: View
-
- public var body: some View
-
-
- public init(participant: CallParticipant,call: Call?,popoverShown: Binding<Bool>,customView: (() -> CustomView)? = nil)
- public class VideoCapturePolicy: @unchecked Sendable
- @available(iOS, introduced: 13, obsoleted: 14) public struct CallContainer_iOS13: View
-
- public var body: some View
-
-
- public init(viewFactory: Factory = DefaultViewFactory.shared,viewModel: CallViewModel)
- extension Alert
-
- public static var defaultErrorAlert: Alert
- @available(iOS, introduced: 13, obsoleted: 14) public struct LobbyView_iOS13: View
-
- public var body: some View
-
-
- public init(viewFactory: Factory = DefaultViewFactory.shared,callViewModel: CallViewModel,callId: String,callType: String,callSettings: Binding<CallSettings>,onJoinCallTap: @escaping () -> Void,onCloseLobby: @escaping () -> Void)
- @available(iOS, introduced: 13, obsoleted: 14) public struct LocalParticipantViewModifier_iOS13: ViewModifier
-
- public func body(content: Content)-> some View
public class Call: @unchecked Sendable, WSEventsSubscriber
- @MainActor public internal var state
+ public let state: CallState
- @MainActor public func currentUserCanRequestPermissions(_ permissions: [Permission])-> Bool
+ public func currentUserCanRequestPermissions(_ permissions: [Permission])-> Bool
- @MainActor public func currentUserHasCapability(_ capability: OwnCapability)-> Bool
+ public func currentUserHasCapability(_ capability: OwnCapability)-> Bool
- @discardableResult @MainActor public func collectUserFeedback(rating: Int,reason: String? = nil,custom: [String: RawJSON]? = nil)async throws -> CollectUserFeedbackResponse
+ @discardableResult public func collectUserFeedback(rating: Int,reason: String? = nil,custom: [String: RawJSON]? = nil)async throws -> CollectUserFeedbackResponse
- @MainActor public func updateParticipantsSorting(with sortComparators: [StreamSortComparator<CallParticipant>])
+ public func updateParticipantsSorting(with sortComparators: [StreamSortComparator<CallParticipant>])
- @MainActor public func setIncomingVideoQualitySettings(_ value: IncomingVideoQualitySettings)async
+ public func setIncomingVideoQualitySettings(_ value: IncomingVideoQualitySettings)async
- @MainActor public func updateClosedCaptionsSettings(itemPresentationDuration: TimeInterval,maxVisibleItems: Int)async
+ public func updateClosedCaptionsSettings(itemPresentationDuration: TimeInterval,maxVisibleItems: Int)async
- @available(iOS 14.0, *) public struct LocalParticipantViewModifier: ViewModifier
+ public struct LocalParticipantViewModifier: ViewModifier
-
+ public init(participant: CallParticipant,call: Call?,showAllInfo: Bool,decorations: [VideoCallParticipantDecoration] = VideoCallParticipantDecoration.allCases)
-
+
- public func body(content: Content)-> some View
+
+ public func body(content: Content)-> some View
- public struct RTMP
+ public struct RTMP: Equatable
public struct StatelessMicrophoneIconView: View
- public weak var call: Call?
+ public var body: some View
- public var size: CGFloat
+
- public var actionHandler: ActionHandler?
+
- public var body: some View
+ @MainActor public init(call: Call?,size: CGFloat = 44,actionHandler: ActionHandler? = nil)
-
-
- @MainActor public init(call: Call?,size: CGFloat = 44,actionHandler: ActionHandler? = nil)
public struct StatelessSpeakerIconView: View
- public weak var call: Call?
+ public var body: some View
- public var size: CGFloat
+
- public var actionHandler: ActionHandler?
+
- public var body: some View
+ @MainActor public init(call: Call?,size: CGFloat = 44,actionHandler: ActionHandler? = nil)
-
-
- @MainActor public init(call: Call?,size: CGFloat = 44,actionHandler: ActionHandler? = nil)
- @available(iOS 14.0, *) public struct LayoutMenuView: View
+ public struct LayoutMenuView: View
- public struct LobbyInfo: Equatable
+ public struct LobbyInfo: Equatable, Sendable
- @available(iOS 14.0, *) public struct CallContainer: View
+ public struct CallContainer: View
- public struct PermissionRequest: @unchecked Sendable, Identifiable
+ public struct PermissionRequest: @unchecked Sendable, Identifiable, Equatable
- public func reject()
+ public static func ==(lhs: PermissionRequest,rhs: PermissionRequest)-> Bool
+ public func reject()
public struct CallDurationView: View
- @MainActor public init(_ viewModel: CallViewModel)
+ public init(_ viewModel: CallViewModel)
- public struct ScreenSharingSession
+ public struct ScreenSharingSession: Equatable
public struct StatelessAudioOutputIconView: View
- public weak var call: Call?
+ public var body: some View
- public var size: CGFloat
+
- public var actionHandler: ActionHandler?
+
- public var body: some View
+ @MainActor public init(call: Call?,size: CGFloat = 44,actionHandler: ActionHandler? = nil)
-
-
- @MainActor public init(call: Call?,size: CGFloat = 44,actionHandler: ActionHandler? = nil)
- @available(iOS 14.0, *) public struct VideoViewOverlay: View
+ public struct VideoViewOverlay: View
public struct CallConnectingView: View
- public var title: String
+ public var body: some View
- public var callControls: CallControls
+
- public var callTopView: CallTopView
+
- public var body: some View
+ public init(viewFactory: Factory = DefaultViewFactory.shared,outgoingCallMembers: [Member],title: String,callControls: CallControls,callTopView: CallTopView)
-
-
- public init(viewFactory: Factory = DefaultViewFactory.shared,outgoingCallMembers: [Member],title: String,callControls: CallControls,callTopView: CallTopView)
public struct StatelessVideoIconView: View
- public weak var call: Call?
+ public var body: some View
- public var size: CGFloat
+
- public var actionHandler: ActionHandler?
+
- public var body: some View
+ public init(call: Call?,size: CGFloat = 44,actionHandler: ActionHandler? = nil)
-
-
- public init(call: Call?,size: CGFloat = 44,actionHandler: ActionHandler? = nil)
- public class BroadcastObserver: ObservableObject
+ public class BroadcastObserver: ObservableObject, @unchecked Sendable
public struct StatelessParticipantsListButton: View
- public weak var call: Call?
+ public var body: some View
- public var size: CGFloat
+
- public var isActive: Binding<Bool>
+
- public var actionHandler: ActionHandler?
+ @MainActor public init(call: Call?,size: CGFloat = 44,isActive: Binding<Bool>,actionHandler: ActionHandler? = nil)
- public var body: some View
-
-
- @MainActor public init(call: Call?,size: CGFloat = 44,isActive: Binding<Bool>,actionHandler: ActionHandler? = nil)
public struct MicrophoneCheckView: View
- public init(audioLevels: [Float],microphoneOn: Bool,isSilent: Bool,isPinned: Bool,maxHeight: Float = 14)
+ public init(viewModel: LobbyViewModel,isPinned: Bool,maxHeight: Float = 14)
+ public init(audioLevels: [Float],microphoneOn: Bool,isSilent: Bool,isPinned: Bool,maxHeight: Float = 14)
open class StreamCallAudioRecorder: @unchecked Sendable
-
+ @Atomic public private var isRecording: Bool
-
+
- public init(filename: String)
+
-
+ public init(filename: String)
-
+
- open func startRecording(ignoreActiveCall: Bool = false)async
+
- open func stopRecording()async
+ open func startRecording(ignoreActiveCall: Bool = false)async
+ open func stopRecording()async
extension View
- public func toastView(toast: Binding<Toast?>)-> some View
+ @ViewBuilder public func snapshot(trigger: SnapshotTriggering,snapshotHandler: @escaping @Sendable(UIImage) -> Void)-> some View
- public struct Ingress
+ public struct Ingress: Equatable
public class StreamVideo: ObservableObject, @unchecked Sendable
- public var state: State
+ @Published public internal var connection: ConnectionStatus
- public let videoConfig: VideoConfig
+ @Published public internal var user: User
- public var user: User
+ @Published public internal var activeCall: Call?
- public var isHardwareAccelerationAvailable: Bool
+ @Published public internal var ringingCall: Call?
- public lazy var rejectionReasonProvider: RejectionReasonProviding
+ public let state: State
-
+ public let videoConfig: VideoConfig
-
+ public var user: User
- public convenience init(apiKey: String,user: User,token: UserToken,videoConfig: VideoConfig = VideoConfig(),pushNotificationsConfig: PushNotificationsConfig = .default,tokenProvider: UserTokenProvider? = nil)
+ public var isHardwareAccelerationAvailable: Bool
-
+ public lazy var rejectionReasonProvider: RejectionReasonProviding
-
+
- public func connect()async throws
+
- public func call(callType: String,callId: String,callSettings: CallSettings? = nil,file: StaticString = #file,function: StaticString = #function,line: UInt = #line)-> Call
+ public convenience init(apiKey: String,user: User,token: UserToken,videoConfig: VideoConfig = VideoConfig(),pushNotificationsConfig: PushNotificationsConfig = .default,tokenProvider: UserTokenProvider? = nil)
- public func makeCallsController(callsQuery: CallsQuery)-> CallsController
+
- @discardableResult public func setDevice(id: String)async throws -> ModelResponse
+
- @discardableResult public func setVoipDevice(id: String)async throws -> ModelResponse
+ public func connect()async throws
- @discardableResult public func deleteDevice(id: String)async throws -> ModelResponse
+ public func call(callType: String,callId: String,callSettings: CallSettings? = nil,file: StaticString = #file,function: StaticString = #function,line: UInt = #line)-> Call
- public func listDevices()async throws -> [Device]
+ public func makeCallsController(callsQuery: CallsQuery)-> CallsController
- public func disconnect()async
+ @discardableResult public func setDevice(id: String)async throws -> ModelResponse
- public func eventPublisher()-> AnyPublisher<VideoEvent, Never>
+ @discardableResult public func setVoipDevice(id: String)async throws -> ModelResponse
- public func eventPublisher(for event: WSEvent.Type)-> AnyPublisher<WSEvent, Never>
+ @discardableResult public func deleteDevice(id: String)async throws -> ModelResponse
- public func subscribe()-> AsyncStream<VideoEvent>
+ public func listDevices()async throws -> [Device]
- public func subscribe(for event: WSEvent.Type)-> AsyncStream<WSEvent>
+ public func disconnect()async
- public func queryCalls(next: String? = nil,watch: Bool = false)async throws -> (calls: [Call], next: String?)
+ public func eventPublisher()-> AnyPublisher<VideoEvent, Never>
- public func queryCalls(filters: [String: RawJSON]?,sort: [SortParamRequest] = [SortParamRequest.descending("created_at")],limit: Int? = 25,watch: Bool = false)async throws -> (calls: [Call], next: String?)
+ public func eventPublisher(for event: WSEvent.Type)-> AnyPublisher<WSEvent, Never>
-
+ public func subscribe()-> AsyncStream<VideoEvent>
-
+ public func subscribe(for event: WSEvent.Type)-> AsyncStream<WSEvent>
- public final class State: ObservableObject, @unchecked Sendable
+ public func queryCalls(next: String? = nil,watch: Bool = false)async throws -> (calls: [Call], next: String?)
-
+ public func queryCalls(filters: [String: RawJSON]?,sort: [SortParamRequest] = [SortParamRequest.descending("created_at")],limit: Int? = 25,watch: Bool = false)async throws -> (calls: [Call], next: String?)
- @Published public internal var connection: ConnectionStatus
+
- @Published public internal var user: User
+
- @Published public internal var activeCall: Call?
+ public final class State: ObservableObject, @unchecked Sendable
- @Published public internal var ringingCall: Call?
+
+ @Published public internal var connection: ConnectionStatus
+ @Published public internal var user: User
+ @Published public internal var activeCall: Call?
+ @Published public internal var ringingCall: Call?
@MainActor public class LobbyViewModel: ObservableObject, @unchecked Sendable
- @Published public var viewfinderImage: Image?
+ @Published public var viewFinderImage: Image?
- @Published public var participants
+ @Published public var participants: [User]
-
+ @Published public var audioOn: Bool
-
+ @Published public var videoOn: Bool
- public init(callType: String,callId: String)
+ @Published public var cameraPosition: CameraPosition
-
+ @Published public var audioLevels: [Float]
-
+ @Published public var isSilent: Bool
- public func startCamera(front: Bool)
+
- public func stopCamera()
+
- public func cleanUp()
+ public init(callType: String,callId: String,callViewModel: CallViewModel,onJoinCallTap: @escaping () -> Void,onCloseLobbyTap: @escaping () -> Void)
- public func didUpdate(callSettings: CallSettings)async
+
+
+ public func startCamera(front: Bool)
+ public func stopCamera()
+ public func cleanUp()
+ public func didTapJoin()
+ public func didTapClose()
+ public func toggleMicrophoneEnabled()
+ public func toggleCameraEnabled()
- @available(iOS 14.0, *) public struct BroadcastIconView: View
+ public struct BroadcastIconView: View
- @available(iOS 14.0, *) public struct CallModifier: ViewModifier
+ public struct CallModifier: ViewModifier
-
+ @MainActor public init(viewModel: CallViewModel)
-
+
- public func body(content: Content)-> some View
+
+ public func body(content: Content)-> some View
@MainActor open class CallViewModel: ObservableObject
- public var participants: [CallParticipant]
+ @Published public var participants: [CallParticipant]
- @MainActor public class CallState: ObservableObject
+ public class CallState: ObservableObject
- @Published public internal var sessionId: String
+ @Published public private var sessionId: String
- @Published public internal var participants
+ @Published public private var participants: [CallParticipant]
- @Published public internal var participantsMap
+ @Published public private var participantsMap: [String: CallParticipant]
- @Published public internal var localParticipant: CallParticipant?
+ @Published public private var localParticipant: CallParticipant?
- @Published public internal var dominantSpeaker: CallParticipant?
+ @Published public private var dominantSpeaker: CallParticipant?
- @Published public internal var remoteParticipants: [CallParticipant]
+ @Published public private var remoteParticipants: [CallParticipant]
- @Published public internal var activeSpeakers: [CallParticipant]
+ @Published public private var activeSpeakers: [CallParticipant]
- @Published public internal var members: [Member]
+ @Published public private var members: [Member]
- @Published public internal var screenSharingSession: ScreenSharingSession?
+ @Published public private var screenSharingSession: ScreenSharingSession?
- @Published public internal var recordingState: RecordingState
+ @Published public private var recordingState: RecordingState
- @Published public internal var blockedUserIds: Set<String>
+ @Published public private var blockedUserIds: Set<String>
- @Published public internal var settings: CallSettingsResponse?
+ @Published public private var settings: CallSettingsResponse?
- @Published public internal var ownCapabilities: [OwnCapability]
+ @Published public private var ownCapabilities: [OwnCapability]
- @Published public internal var capabilitiesByRole: [String: [String]]
+ @Published public private var capabilitiesByRole: [String: [String]]
- @Published public internal var backstage: Bool
+ @Published public private var backstage: Bool
- @Published public internal var broadcasting: Bool
+ @Published public private var broadcasting: Bool
- @Published public internal var createdAt: Date
+ @Published public private var createdAt: Date
- @Published public internal var updatedAt: Date
+ @Published public private var updatedAt: Date
- @Published public internal var startsAt: Date?
+ @Published public private var startsAt: Date?
- @Published public internal var startedAt: Date?
+ @Published public private var startedAt: Date?
- @Published public internal var endedAt: Date?
+ @Published public private var endedAt: Date?
- @Published public internal var endedBy: User?
+ @Published public private var endedBy: User?
- @Published public internal var custom: [String: RawJSON]
+ @Published public private var custom: [String: RawJSON]
- @Published public internal var team: String?
+ @Published public private var team: String?
- @Published public internal var createdBy: User?
+ @Published public private var createdBy: User?
- @Published public internal var ingress: Ingress?
+ @Published public private var ingress: Ingress?
- @Published public internal var permissionRequests: [PermissionRequest]
+ @Published public private var permissionRequests: [PermissionRequest]
- @Published public internal var transcribing: Bool
+ @Published public private var transcribing: Bool
- @Published public internal var captioning: Bool
+ @Published public private var captioning: Bool
- @Published public internal var egress: EgressResponse?
+ @Published public private var egress: EgressResponse?
- @Published public internal var session: CallSessionResponse?
+ @Published public private var session: CallSessionResponse?
- @Published public internal var reconnectionStatus
+ @Published public private var reconnectionStatus: ReconnectionStatus
- @Published public internal var anonymousParticipantCount: UInt32
+ @Published public private var anonymousParticipantCount: UInt32
- @Published public internal var participantCount: UInt32
+ @Published public private var participantCount: UInt32
- @Published public internal var isInitialized: Bool
+ @Published public private var isInitialized: Bool
- @Published public internal var callSettings
+ @Published public private var callSettings: CallSettings
- @Published public internal var isCurrentUserScreensharing: Bool
+ @Published public private var isCurrentUserScreensharing: Bool
- @Published public internal var duration: TimeInterval
+ @Published public private var duration: TimeInterval
- @Published public internal var statsReport: CallStatsReport?
+ @Published public private var statsReport: CallStatsReport?
- @Published public internal var closedCaptions: [CallClosedCaption]
+ @Published public private var closedCaptions: [CallClosedCaption]
- @Published public internal var statsCollectionInterval: Int
+ @Published public private var statsCollectionInterval: Int
- @Published public internal var incomingVideoQualitySettings: IncomingVideoQualitySettings
+ @Published public private var incomingVideoQualitySettings: IncomingVideoQualitySettings
- @Published public internal var disconnectionError: Error?
+ @Published public private var disconnectionError: Error?
public struct HorizontalParticipantsListView: View
- public var viewFactory: Factory
+ public var body: some View
- public var participants: [CallParticipant]
+
- public var frame: CGRect
+
- public var call: Call?
+ public init(viewFactory: Factory = DefaultViewFactory.shared,participants: [CallParticipant],frame: CGRect,call: Call?,innerItemSpace: CGFloat = 8,showAllInfo: Bool = false)
- public var innerItemSpace: CGFloat
- public var showAllInfo: Bool
- public var body: some View
-
-
- public init(viewFactory: Factory = DefaultViewFactory.shared,participants: [CallParticipant],frame: CGRect,call: Call?,innerItemSpace: CGFloat = 8,showAllInfo: Bool = false)
public struct StatelessHangUpIconView: View
- public weak var call: Call?
+ public var size: CGFloat
- public var size: CGFloat
+ public var actionHandler: ActionHandler?
- public var actionHandler: ActionHandler?
+ public var body: some View
- public var body: some View
+
-
+
-
+ @MainActor public init(call: Call?,size: CGFloat = 44,actionHandler: ActionHandler? = nil)
- @MainActor public init(call: Call?,size: CGFloat = 44,actionHandler: ActionHandler? = nil)
- @available(iOS 14.0, *) public struct LobbyView: View
+ public struct LobbyView: View
- public init(viewFactory: Factory = DefaultViewFactory.shared,viewModel: LobbyViewModel? = nil,callId: String,callType: String,callSettings: Binding<CallSettings>,onJoinCallTap: @escaping () -> Void,onCloseLobby: @escaping () -> Void)
+ public init(viewFactory: Factory = DefaultViewFactory.shared,callViewModel: CallViewModel,callId: String,callType: String,callSettings: Binding<CallSettings>,onJoinCallTap: @escaping () -> Void,onCloseLobby: @escaping () -> Void)
public struct StreamLazyImage: View
- public init(imageURL: URL?,contentMode: ContentMode = .fill,placeholder: @escaping () -> Placeholder)
+ public init(imageURL: URL?,contentMode: ContentMode = .fill,@ViewBuilder placeholder: @escaping () -> Placeholder)
+ public init(imageURL: URL?,contentMode: ContentMode = .fill)
public struct StatelessToggleCameraIconView: View
- public weak var call: Call?
+ public var body: some View
- public var size: CGFloat
+
- public var actionHandler: ActionHandler?
+
- public var body: some View
+ public init(call: Call?,size: CGFloat = 44,actionHandler: ActionHandler? = nil)
-
-
- public init(call: Call?,size: CGFloat = 44,actionHandler: ActionHandler? = nil)
extension InjectedValues
- public var pictureInPictureAdapter: StreamPictureInPictureAdapter
+ public var utils: Utils |
Public Interface+ public class TrackVideoRenderer: RTCMTLVideoView, @unchecked Sendable
+
+ public init(track: RTCVideoTrack)
+
+
+ override public func layoutSubviews()
+ override public func willMove(toWindow newWindow: UIWindow?)
+ override public func willMove(toSuperview newSuperview: UIView?)
+ public protocol Timer
+ extension Timer
+
+ public static func currentTime()-> Date
+ public protocol CaptureDeviceProtocol: Sendable
+ public protocol CaptureDeviceProviding
+ public struct DefaultTimer: Timer
+
+ @discardableResult public static func schedule(timeInterval: TimeInterval,queue: DispatchQueue,onFire: @escaping () -> Void)-> TimerControl
+ public static func scheduleRepeating(timeInterval: TimeInterval,queue: DispatchQueue,onFire: @escaping () -> Void)-> RepeatingTimerControl
+ public static func publish(every interval: TimeInterval)-> AnyPublisher<Date, Never>
+ extension AVCaptureDevice
+
+ public func outputFormat(preferredDimensions: CMVideoDimensions,preferredFrameRate: Int)-> AVCaptureDevice.Format?
+ public protocol TimerControl
+ @propertyWrapper public final class Atomic: @unchecked Sendable
+
+ public var wrappedValue: T
+
+
+ public init(wrappedValue: T,mode: Mode = .unfair)
+
+
+ public enum Mode
+
+ case unfair
+ case recursive
+ public protocol RepeatingTimerControl
+ public struct TrackVideoRendererView: UIViewRepresentable, Equatable
+
+ public init(track: RTCVideoTrack,contentMode: UIView.ContentMode = .scaleAspectFill,sizeUpdater: @escaping SizeUpdater)
+
+
+ public static func dismantleUIView(_ uiView: UIViewType,coordinator: Coordinator)
+ nonisolated public static func ==(lhs: TrackVideoRendererView,rhs: TrackVideoRendererView)-> Bool
+ public func makeUIView(context: Context)-> UIViewType
+ public func updateUIView(_ uiView: UIViewType,context: Context)
+ public func makeCoordinator()-> Coordinator
- public class VideoCapturePolicy: @unchecked Sendable
- public struct PopoverButton: View
-
- public var body: some View
-
-
- public init(title: String,popoverShown: Binding<Bool>,action: @escaping () -> Void)
- extension Alert
-
- public static var defaultErrorAlert: Alert
- @available(iOS, introduced: 13, obsoleted: 14) public struct LobbyView_iOS13: View
-
- public var body: some View
-
-
- public init(viewFactory: Factory = DefaultViewFactory.shared,callViewModel: CallViewModel,callId: String,callType: String,callSettings: Binding<CallSettings>,onJoinCallTap: @escaping () -> Void,onCloseLobby: @escaping () -> Void)
- @available(iOS, introduced: 13, obsoleted: 14) public struct LocalParticipantViewModifier_iOS13: ViewModifier
-
- public func body(content: Content)-> some View
- public struct ParticipantPopoverView: View
-
- public var body: some View
-
-
- public init(participant: CallParticipant,call: Call?,popoverShown: Binding<Bool>,customView: (() -> CustomView)? = nil)
- extension VideoCapturePolicy: InjectionKey
-
- nonisolated public static var currentValue: VideoCapturePolicy
- @available(iOS, introduced: 13, obsoleted: 14) public struct CallContainer_iOS13: View
-
- public var body: some View
-
-
- public init(viewFactory: Factory = DefaultViewFactory.shared,viewModel: CallViewModel)
@MainActor open class CallViewModel: ObservableObject
- public var participants: [CallParticipant]
+ @Published public var participants: [CallParticipant]
- @available(iOS 14.0, *) public struct LobbyView: View
+ public struct LobbyView: View
- public init(viewFactory: Factory = DefaultViewFactory.shared,viewModel: LobbyViewModel? = nil,callId: String,callType: String,callSettings: Binding<CallSettings>,onJoinCallTap: @escaping () -> Void,onCloseLobby: @escaping () -> Void)
+ public init(viewFactory: Factory = DefaultViewFactory.shared,callViewModel: CallViewModel,callId: String,callType: String,callSettings: Binding<CallSettings>,onJoinCallTap: @escaping () -> Void,onCloseLobby: @escaping () -> Void)
public struct StatelessSpeakerIconView: View
- public weak var call: Call?
+ public var body: some View
- public var size: CGFloat
+
- public var actionHandler: ActionHandler?
+
- public var body: some View
+ @MainActor public init(call: Call?,size: CGFloat = 44,actionHandler: ActionHandler? = nil)
-
-
- @MainActor public init(call: Call?,size: CGFloat = 44,actionHandler: ActionHandler? = nil)
extension InjectedValues
- public var pictureInPictureAdapter: StreamPictureInPictureAdapter
+ public var utils: Utils
public struct CallConnectingView: View
- public var title: String
+ public var body: some View
- public var callControls: CallControls
+
- public var callTopView: CallTopView
+
- public var body: some View
+ public init(viewFactory: Factory = DefaultViewFactory.shared,outgoingCallMembers: [Member],title: String,callControls: CallControls,callTopView: CallTopView)
-
-
- public init(viewFactory: Factory = DefaultViewFactory.shared,outgoingCallMembers: [Member],title: String,callControls: CallControls,callTopView: CallTopView)
public struct StatelessMicrophoneIconView: View
- public weak var call: Call?
+ public var body: some View
- public var size: CGFloat
+
- public var actionHandler: ActionHandler?
+
- public var body: some View
+ @MainActor public init(call: Call?,size: CGFloat = 44,actionHandler: ActionHandler? = nil)
-
-
- @MainActor public init(call: Call?,size: CGFloat = 44,actionHandler: ActionHandler? = nil)
- @available(iOS 14.0, *) public struct LayoutMenuView: View
+ public struct LayoutMenuView: View
extension View
- public func toastView(toast: Binding<Toast?>)-> some View
+ @ViewBuilder public func snapshot(trigger: SnapshotTriggering,snapshotHandler: @escaping @Sendable(UIImage) -> Void)-> some View
- public struct RTMP
+ public struct RTMP: Equatable
- public class BroadcastObserver: ObservableObject
+ public class BroadcastObserver: ObservableObject, @unchecked Sendable
public struct CallDurationView: View
- @MainActor public init(_ viewModel: CallViewModel)
+ public init(_ viewModel: CallViewModel)
- public struct PermissionRequest: @unchecked Sendable, Identifiable
+ public struct PermissionRequest: @unchecked Sendable, Identifiable, Equatable
- public func reject()
+ public static func ==(lhs: PermissionRequest,rhs: PermissionRequest)-> Bool
+ public func reject()
public struct MicrophoneCheckView: View
- public init(audioLevels: [Float],microphoneOn: Bool,isSilent: Bool,isPinned: Bool,maxHeight: Float = 14)
+ public init(viewModel: LobbyViewModel,isPinned: Bool,maxHeight: Float = 14)
+ public init(audioLevels: [Float],microphoneOn: Bool,isSilent: Bool,isPinned: Bool,maxHeight: Float = 14)
public struct StatelessToggleCameraIconView: View
- public weak var call: Call?
+ public var body: some View
- public var size: CGFloat
+
- public var actionHandler: ActionHandler?
+
- public var body: some View
+ public init(call: Call?,size: CGFloat = 44,actionHandler: ActionHandler? = nil)
-
-
- public init(call: Call?,size: CGFloat = 44,actionHandler: ActionHandler? = nil)
- @MainActor public class CallState: ObservableObject
+ public class CallState: ObservableObject
- @Published public internal var sessionId: String
+ @Published public private var sessionId: String
- @Published public internal var participants
+ @Published public private var participants: [CallParticipant]
- @Published public internal var participantsMap
+ @Published public private var participantsMap: [String: CallParticipant]
- @Published public internal var localParticipant: CallParticipant?
+ @Published public private var localParticipant: CallParticipant?
- @Published public internal var dominantSpeaker: CallParticipant?
+ @Published public private var dominantSpeaker: CallParticipant?
- @Published public internal var remoteParticipants: [CallParticipant]
+ @Published public private var remoteParticipants: [CallParticipant]
- @Published public internal var activeSpeakers: [CallParticipant]
+ @Published public private var activeSpeakers: [CallParticipant]
- @Published public internal var members: [Member]
+ @Published public private var members: [Member]
- @Published public internal var screenSharingSession: ScreenSharingSession?
+ @Published public private var screenSharingSession: ScreenSharingSession?
- @Published public internal var recordingState: RecordingState
+ @Published public private var recordingState: RecordingState
- @Published public internal var blockedUserIds: Set<String>
+ @Published public private var blockedUserIds: Set<String>
- @Published public internal var settings: CallSettingsResponse?
+ @Published public private var settings: CallSettingsResponse?
- @Published public internal var ownCapabilities: [OwnCapability]
+ @Published public private var ownCapabilities: [OwnCapability]
- @Published public internal var capabilitiesByRole: [String: [String]]
+ @Published public private var capabilitiesByRole: [String: [String]]
- @Published public internal var backstage: Bool
+ @Published public private var backstage: Bool
- @Published public internal var broadcasting: Bool
+ @Published public private var broadcasting: Bool
- @Published public internal var createdAt: Date
+ @Published public private var createdAt: Date
- @Published public internal var updatedAt: Date
+ @Published public private var updatedAt: Date
- @Published public internal var startsAt: Date?
+ @Published public private var startsAt: Date?
- @Published public internal var startedAt: Date?
+ @Published public private var startedAt: Date?
- @Published public internal var endedAt: Date?
+ @Published public private var endedAt: Date?
- @Published public internal var endedBy: User?
+ @Published public private var endedBy: User?
- @Published public internal var custom: [String: RawJSON]
+ @Published public private var custom: [String: RawJSON]
- @Published public internal var team: String?
+ @Published public private var team: String?
- @Published public internal var createdBy: User?
+ @Published public private var createdBy: User?
- @Published public internal var ingress: Ingress?
+ @Published public private var ingress: Ingress?
- @Published public internal var permissionRequests: [PermissionRequest]
+ @Published public private var permissionRequests: [PermissionRequest]
- @Published public internal var transcribing: Bool
+ @Published public private var transcribing: Bool
- @Published public internal var captioning: Bool
+ @Published public private var captioning: Bool
- @Published public internal var egress: EgressResponse?
+ @Published public private var egress: EgressResponse?
- @Published public internal var session: CallSessionResponse?
+ @Published public private var session: CallSessionResponse?
- @Published public internal var reconnectionStatus
+ @Published public private var reconnectionStatus: ReconnectionStatus
- @Published public internal var anonymousParticipantCount: UInt32
+ @Published public private var anonymousParticipantCount: UInt32
- @Published public internal var participantCount: UInt32
+ @Published public private var participantCount: UInt32
- @Published public internal var isInitialized: Bool
+ @Published public private var isInitialized: Bool
- @Published public internal var callSettings
+ @Published public private var callSettings: CallSettings
- @Published public internal var isCurrentUserScreensharing: Bool
+ @Published public private var isCurrentUserScreensharing: Bool
- @Published public internal var duration: TimeInterval
+ @Published public private var duration: TimeInterval
- @Published public internal var statsReport: CallStatsReport?
+ @Published public private var statsReport: CallStatsReport?
- @Published public internal var closedCaptions: [CallClosedCaption]
+ @Published public private var closedCaptions: [CallClosedCaption]
- @Published public internal var statsCollectionInterval: Int
+ @Published public private var statsCollectionInterval: Int
- @Published public internal var incomingVideoQualitySettings: IncomingVideoQualitySettings
+ @Published public private var incomingVideoQualitySettings: IncomingVideoQualitySettings
- @Published public internal var disconnectionError: Error?
+ @Published public private var disconnectionError: Error?
- @available(iOS 14.0, *) public struct BroadcastIconView: View
+ public struct BroadcastIconView: View
public class Call: @unchecked Sendable, WSEventsSubscriber
- @MainActor public internal var state
+ public let state: CallState
- @MainActor public func currentUserCanRequestPermissions(_ permissions: [Permission])-> Bool
+ public func currentUserCanRequestPermissions(_ permissions: [Permission])-> Bool
- @MainActor public func currentUserHasCapability(_ capability: OwnCapability)-> Bool
+ public func currentUserHasCapability(_ capability: OwnCapability)-> Bool
- @discardableResult @MainActor public func collectUserFeedback(rating: Int,reason: String? = nil,custom: [String: RawJSON]? = nil)async throws -> CollectUserFeedbackResponse
+ @discardableResult public func collectUserFeedback(rating: Int,reason: String? = nil,custom: [String: RawJSON]? = nil)async throws -> CollectUserFeedbackResponse
- @MainActor public func updateParticipantsSorting(with sortComparators: [StreamSortComparator<CallParticipant>])
+ public func updateParticipantsSorting(with sortComparators: [StreamSortComparator<CallParticipant>])
- @MainActor public func setIncomingVideoQualitySettings(_ value: IncomingVideoQualitySettings)async
+ public func setIncomingVideoQualitySettings(_ value: IncomingVideoQualitySettings)async
- @MainActor public func updateClosedCaptionsSettings(itemPresentationDuration: TimeInterval,maxVisibleItems: Int)async
+ public func updateClosedCaptionsSettings(itemPresentationDuration: TimeInterval,maxVisibleItems: Int)async
- public struct ScreenSharingSession
+ public struct ScreenSharingSession: Equatable
- @available(iOS 14.0, *) public struct VideoViewOverlay: View
+ public struct VideoViewOverlay: View
public struct StreamLazyImage: View
- public init(imageURL: URL?,contentMode: ContentMode = .fill,placeholder: @escaping () -> Placeholder)
+ public init(imageURL: URL?,contentMode: ContentMode = .fill,@ViewBuilder placeholder: @escaping () -> Placeholder)
+ public init(imageURL: URL?,contentMode: ContentMode = .fill)
public struct StatelessAudioOutputIconView: View
- public weak var call: Call?
+ public var body: some View
- public var size: CGFloat
+
- public var actionHandler: ActionHandler?
+
- public var body: some View
+ @MainActor public init(call: Call?,size: CGFloat = 44,actionHandler: ActionHandler? = nil)
-
-
- @MainActor public init(call: Call?,size: CGFloat = 44,actionHandler: ActionHandler? = nil)
- @available(iOS 14.0, *) public struct CallModifier: ViewModifier
+ public struct CallModifier: ViewModifier
-
+ @MainActor public init(viewModel: CallViewModel)
-
+
- public func body(content: Content)-> some View
+
+ public func body(content: Content)-> some View
- @available(iOS 14.0, *) public struct CallContainer: View
+ public struct CallContainer: View
public struct HorizontalParticipantsListView: View
- public var viewFactory: Factory
+ public var body: some View
- public var participants: [CallParticipant]
+
- public var frame: CGRect
+
- public var call: Call?
+ public init(viewFactory: Factory = DefaultViewFactory.shared,participants: [CallParticipant],frame: CGRect,call: Call?,innerItemSpace: CGFloat = 8,showAllInfo: Bool = false)
- public var innerItemSpace: CGFloat
- public var showAllInfo: Bool
- public var body: some View
-
-
- public init(viewFactory: Factory = DefaultViewFactory.shared,participants: [CallParticipant],frame: CGRect,call: Call?,innerItemSpace: CGFloat = 8,showAllInfo: Bool = false)
open class StreamCallAudioRecorder: @unchecked Sendable
-
+ @Atomic public private var isRecording: Bool
-
+
- public init(filename: String)
+
-
+ public init(filename: String)
-
+
- open func startRecording(ignoreActiveCall: Bool = false)async
+
- open func stopRecording()async
+ open func startRecording(ignoreActiveCall: Bool = false)async
+ open func stopRecording()async
public struct StatelessVideoIconView: View
- public weak var call: Call?
+ public var body: some View
- public var size: CGFloat
+
- public var actionHandler: ActionHandler?
+
- public var body: some View
+ public init(call: Call?,size: CGFloat = 44,actionHandler: ActionHandler? = nil)
-
-
- public init(call: Call?,size: CGFloat = 44,actionHandler: ActionHandler? = nil)
@MainActor public class LobbyViewModel: ObservableObject, @unchecked Sendable
- @Published public var viewfinderImage: Image?
+ @Published public var viewFinderImage: Image?
- @Published public var participants
+ @Published public var participants: [User]
-
+ @Published public var audioOn: Bool
-
+ @Published public var videoOn: Bool
- public init(callType: String,callId: String)
+ @Published public var cameraPosition: CameraPosition
-
+ @Published public var audioLevels: [Float]
-
+ @Published public var isSilent: Bool
- public func startCamera(front: Bool)
+
- public func stopCamera()
+
- public func cleanUp()
+ public init(callType: String,callId: String,callViewModel: CallViewModel,onJoinCallTap: @escaping () -> Void,onCloseLobbyTap: @escaping () -> Void)
- public func didUpdate(callSettings: CallSettings)async
+
+
+ public func startCamera(front: Bool)
+ public func stopCamera()
+ public func cleanUp()
+ public func didTapJoin()
+ public func didTapClose()
+ public func toggleMicrophoneEnabled()
+ public func toggleCameraEnabled()
- public struct LobbyInfo: Equatable
+ public struct LobbyInfo: Equatable, Sendable
public class StreamVideo: ObservableObject, @unchecked Sendable
- public var state: State
+ @Published public internal var connection: ConnectionStatus
- public let videoConfig: VideoConfig
+ @Published public internal var user: User
- public var user: User
+ @Published public internal var activeCall: Call?
- public var isHardwareAccelerationAvailable: Bool
+ @Published public internal var ringingCall: Call?
- public lazy var rejectionReasonProvider: RejectionReasonProviding
+ public let state: State
-
+ public let videoConfig: VideoConfig
-
+ public var user: User
- public convenience init(apiKey: String,user: User,token: UserToken,videoConfig: VideoConfig = VideoConfig(),pushNotificationsConfig: PushNotificationsConfig = .default,tokenProvider: UserTokenProvider? = nil)
+ public var isHardwareAccelerationAvailable: Bool
-
+ public lazy var rejectionReasonProvider: RejectionReasonProviding
-
+
- public func connect()async throws
+
- public func call(callType: String,callId: String,callSettings: CallSettings? = nil,file: StaticString = #file,function: StaticString = #function,line: UInt = #line)-> Call
+ public convenience init(apiKey: String,user: User,token: UserToken,videoConfig: VideoConfig = VideoConfig(),pushNotificationsConfig: PushNotificationsConfig = .default,tokenProvider: UserTokenProvider? = nil)
- public func makeCallsController(callsQuery: CallsQuery)-> CallsController
+
- @discardableResult public func setDevice(id: String)async throws -> ModelResponse
+
- @discardableResult public func setVoipDevice(id: String)async throws -> ModelResponse
+ public func connect()async throws
- @discardableResult public func deleteDevice(id: String)async throws -> ModelResponse
+ public func call(callType: String,callId: String,callSettings: CallSettings? = nil,file: StaticString = #file,function: StaticString = #function,line: UInt = #line)-> Call
- public func listDevices()async throws -> [Device]
+ public func makeCallsController(callsQuery: CallsQuery)-> CallsController
- public func disconnect()async
+ @discardableResult public func setDevice(id: String)async throws -> ModelResponse
- public func eventPublisher()-> AnyPublisher<VideoEvent, Never>
+ @discardableResult public func setVoipDevice(id: String)async throws -> ModelResponse
- public func eventPublisher(for event: WSEvent.Type)-> AnyPublisher<WSEvent, Never>
+ @discardableResult public func deleteDevice(id: String)async throws -> ModelResponse
- public func subscribe()-> AsyncStream<VideoEvent>
+ public func listDevices()async throws -> [Device]
- public func subscribe(for event: WSEvent.Type)-> AsyncStream<WSEvent>
+ public func disconnect()async
- public func queryCalls(next: String? = nil,watch: Bool = false)async throws -> (calls: [Call], next: String?)
+ public func eventPublisher()-> AnyPublisher<VideoEvent, Never>
- public func queryCalls(filters: [String: RawJSON]?,sort: [SortParamRequest] = [SortParamRequest.descending("created_at")],limit: Int? = 25,watch: Bool = false)async throws -> (calls: [Call], next: String?)
+ public func eventPublisher(for event: WSEvent.Type)-> AnyPublisher<WSEvent, Never>
-
+ public func subscribe()-> AsyncStream<VideoEvent>
-
+ public func subscribe(for event: WSEvent.Type)-> AsyncStream<WSEvent>
- public final class State: ObservableObject, @unchecked Sendable
+ public func queryCalls(next: String? = nil,watch: Bool = false)async throws -> (calls: [Call], next: String?)
-
+ public func queryCalls(filters: [String: RawJSON]?,sort: [SortParamRequest] = [SortParamRequest.descending("created_at")],limit: Int? = 25,watch: Bool = false)async throws -> (calls: [Call], next: String?)
- @Published public internal var connection: ConnectionStatus
+
- @Published public internal var user: User
+
- @Published public internal var activeCall: Call?
+ public final class State: ObservableObject, @unchecked Sendable
- @Published public internal var ringingCall: Call?
+
+ @Published public internal var connection: ConnectionStatus
+ @Published public internal var user: User
+ @Published public internal var activeCall: Call?
+ @Published public internal var ringingCall: Call?
public struct StatelessHangUpIconView: View
- public weak var call: Call?
+ public var size: CGFloat
- public var size: CGFloat
+ public var actionHandler: ActionHandler?
- public var actionHandler: ActionHandler?
+ public var body: some View
- public var body: some View
+
-
+
-
+ @MainActor public init(call: Call?,size: CGFloat = 44,actionHandler: ActionHandler? = nil)
- @MainActor public init(call: Call?,size: CGFloat = 44,actionHandler: ActionHandler? = nil)
- public struct Ingress
+ public struct Ingress: Equatable
- @available(iOS 14.0, *) public struct LocalParticipantViewModifier: ViewModifier
+ public struct LocalParticipantViewModifier: ViewModifier
-
+ public init(participant: CallParticipant,call: Call?,showAllInfo: Bool,decorations: [VideoCallParticipantDecoration] = VideoCallParticipantDecoration.allCases)
-
+
- public func body(content: Content)-> some View
+
+ public func body(content: Content)-> some View
public struct StatelessParticipantsListButton: View
- public weak var call: Call?
+ public var body: some View
- public var size: CGFloat
+
- public var isActive: Binding<Bool>
+
- public var actionHandler: ActionHandler?
+ @MainActor public init(call: Call?,size: CGFloat = 44,isActive: Binding<Bool>,actionHandler: ActionHandler? = nil)
- public var body: some View
-
-
- @MainActor public init(call: Call?,size: CGFloat = 44,isActive: Binding<Bool>,actionHandler: ActionHandler? = nil) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
🔗 Issue Links
Provide all JIRA tickets and/or GitHub issues related to this PR, if applicable.
🎯 Goal
Describe why we are making this change.
📝 Summary
Provide bullet points with the most important changes in the codebase.
🛠 Implementation
Provide a detailed description of the implementation and explain your decisions if you find them relevant.
🎨 Showcase
Add relevant screenshots and/or videos/gifs to easily see what this PR changes, if applicable.
img
img
🧪 Manual Testing Notes
Explain how this change can be tested manually, if applicable.
☑️ Contributor Checklist
🎁 Meme
Provide a funny gif or image that relates to your work on this pull request. (Optional)