-
Notifications
You must be signed in to change notification settings - Fork 28
[Performance]Improvements #825
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
Draft
ipavlidakis
wants to merge
13
commits into
develop
Choose a base branch
from
fix/performance-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🚀 No changes affecting the public interface. |
Generated by 🚫 Danger |
SDK Size
|
Public Interface+ public protocol TimerProviding
+ extension ScreenPropertiesAdapter: InjectionKey
+
+ public nonisolated static var currentValue: ScreenPropertiesAdapter
+ public final class ScreenPropertiesAdapter: @unchecked Sendable
+
+ public private var preferredFramesPerSecond: Int
+ public private var refreshRate: TimeInterval
+ public private var scale: CGFloat
|
Public Interface+ public final class ScreenPropertiesAdapter: @unchecked Sendable
+
+ public private var preferredFramesPerSecond: Int
+ public private var refreshRate: TimeInterval
+ public private var scale: CGFloat
+ public protocol TimerProviding
+ extension ScreenPropertiesAdapter: InjectionKey
+
+ public nonisolated static var currentValue: ScreenPropertiesAdapter
public class StreamVideo: ObservableObject, @unchecked Sendable
- public var state: State
+ case ringEventReceived
- public let videoConfig: VideoConfig
+
- public var user: User
+
- public var isHardwareAccelerationAvailable: Bool
+ public var state: State
- public lazy var rejectionReasonProvider: RejectionReasonProviding
+ public let videoConfig: VideoConfig
-
+ public var user: User
-
+ public var isHardwareAccelerationAvailable: Bool
- public convenience init(apiKey: String,user: User,token: UserToken,videoConfig: VideoConfig = VideoConfig(),pushNotificationsConfig: PushNotificationsConfig = .default,tokenProvider: UserTokenProvider? = nil)
+ public lazy var rejectionReasonProvider: RejectionReasonProviding
- public func connect()async throws
+ public convenience init(apiKey: String,user: User,token: UserToken,videoConfig: VideoConfig = VideoConfig(),pushNotificationsConfig: PushNotificationsConfig = .default,tokenProvider: UserTokenProvider? = nil)
- public func call(callType: String,callId: String,callSettings: CallSettings? = nil)-> Call
+
- public func makeCallsController(callsQuery: CallsQuery)-> CallsController
+
- @discardableResult public func setDevice(id: String)async throws -> ModelResponse
+ public func connect()async throws
- @discardableResult public func setVoipDevice(id: String)async throws -> ModelResponse
+ public func call(callType: String,callId: String,callSettings: CallSettings? = nil)-> Call
- @discardableResult public func deleteDevice(id: String)async throws -> ModelResponse
+ public func makeCallsController(callsQuery: CallsQuery)-> CallsController
- public func listDevices()async throws -> [Device]
+ @discardableResult public func setDevice(id: String)async throws -> ModelResponse
- public func disconnect()async
+ @discardableResult public func setVoipDevice(id: String)async throws -> ModelResponse
- public func subscribe()-> AsyncStream<VideoEvent>
+ @discardableResult public func deleteDevice(id: String)async throws -> ModelResponse
- public func subscribe(for event: WSEvent.Type)-> AsyncStream<WSEvent>
+ public func listDevices()async throws -> [Device]
- public func queryCalls(next: String? = nil,watch: Bool = false)async throws -> (calls: [Call], next: String?)
+ public func disconnect()async
- 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()-> AnyPublisher<VideoEvent, Never>
-
+ public func eventPublisher(for event: WSEvent.Type)-> AnyPublisher<WSEvent, Never>
-
+ public func subscribe()-> AsyncStream<VideoEvent>
- public final class State: ObservableObject, @unchecked Sendable
+ public func subscribe(for event: WSEvent.Type)-> AsyncStream<WSEvent>
-
+ public func queryCalls(next: String? = nil,watch: Bool = false)async throws -> (calls: [Call], next: String?)
- @Published public internal var connection: ConnectionStatus
+ 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 user: User
+
- @Published public internal var activeCall: Call?
+
- @Published public internal var ringingCall: Call?
+ public final class State: ObservableObject, @unchecked Sendable
+
+ @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 Interface+ public actor SerialActorQueue
+
+ nonisolated public var unownedExecutor: UnownedSerialExecutor
+
+
+ public init(file: StaticString = #file)
+
+
+ @discardableResult public nonisolated func async(file: StaticString = #file,function: StaticString = #function,line: UInt = #line,@_inheritActorContext operation: @escaping Operation)-> QueueTask
+ @discardableResult public nonisolated func async(file: StaticString = #file,function: StaticString = #function,line: UInt = #line,@_inheritActorContext operation: @escaping @Sendable() async -> Void)-> QueueTask
+ @discardableResult public nonisolated func sync(@_inheritActorContext operation: @escaping @Sendable() async throws -> Output)async throws -> Output
+ @discardableResult public nonisolated func async(file: StaticString = #file,function: StaticString = #function,line: UInt = #line,@_inheritActorContext operation: sending @escaping @Sendable @isolated(any) () async throws (Failure) -> Void)-> QueueTask
+ @discardableResult public nonisolated func sync(@_inheritActorContext operation: sending @escaping @Sendable @isolated(any) () async throws (Failure) -> Output)async throws -> Output
+ public nonisolated func cancelAll()
+
+
+ public final class QueueTask: @unchecked Sendable
+ extension ScreenPropertiesAdapter: InjectionKey
+
+ public nonisolated static var currentValue: ScreenPropertiesAdapter
+ public protocol TimerProviding
+ public final class ScreenPropertiesAdapter: @unchecked Sendable
+
+ public private var preferredFramesPerSecond: Int
+ public private var refreshRate: TimeInterval
+ public private var scale: CGFloat
- public final class SerialActorQueue: Sendable
-
- public init()
-
-
- public func cancelAll()
- public func async(file: StaticString = #file,functionName: StaticString = #function,line: UInt = #line,_ block: @Sendable @escaping () async throws -> Void)
- public func sync(_ block: @Sendable @escaping () async throws -> T)async throws -> T
extension Task
- public func store(in disposableBag: DisposableBag,key: String = UUID().uuidString)
+ @discardableResult public init(disposableBag: DisposableBag,identifier: String = UUIDProviderKey.currentValue.get().uuidString,priority: TaskPriority? = .background,@_inheritActorContext block: @Sendable @escaping () async -> Success)
+ @discardableResult public init(disposableBag: DisposableBag,identifier: String = UUIDProviderKey.currentValue.get().uuidString,priority: TaskPriority? = .background,@_inheritActorContext block: @Sendable @escaping () async throws -> Success)
+
+
+ public func store(in disposableBag: DisposableBag,identifier: String = UUID().uuidString)
public class StreamVideo: ObservableObject, @unchecked Sendable
- public var state: State
+ case ringEventReceived
- public let videoConfig: VideoConfig
+
- public var user: User
+
- public var isHardwareAccelerationAvailable: Bool
+ public var state: State
- public lazy var rejectionReasonProvider: RejectionReasonProviding
+ public let videoConfig: VideoConfig
-
+ public var user: User
-
+ public var isHardwareAccelerationAvailable: Bool
- public convenience init(apiKey: String,user: User,token: UserToken,videoConfig: VideoConfig = VideoConfig(),pushNotificationsConfig: PushNotificationsConfig = .default,tokenProvider: UserTokenProvider? = nil)
+ public lazy var rejectionReasonProvider: RejectionReasonProviding
- public func connect()async throws
+ public convenience init(apiKey: String,user: User,token: UserToken,videoConfig: VideoConfig = VideoConfig(),pushNotificationsConfig: PushNotificationsConfig = .default,tokenProvider: UserTokenProvider? = nil)
- public func call(callType: String,callId: String,callSettings: CallSettings? = nil)-> Call
+
- public func makeCallsController(callsQuery: CallsQuery)-> CallsController
+
- @discardableResult public func setDevice(id: String)async throws -> ModelResponse
+ public func connect()async throws
- @discardableResult public func setVoipDevice(id: String)async throws -> ModelResponse
+ public func call(callType: String,callId: String,callSettings: CallSettings? = nil)-> Call
- @discardableResult public func deleteDevice(id: String)async throws -> ModelResponse
+ public func makeCallsController(callsQuery: CallsQuery)-> CallsController
- public func listDevices()async throws -> [Device]
+ @discardableResult public func setDevice(id: String)async throws -> ModelResponse
- public func disconnect()async
+ @discardableResult public func setVoipDevice(id: String)async throws -> ModelResponse
- public func subscribe()-> AsyncStream<VideoEvent>
+ @discardableResult public func deleteDevice(id: String)async throws -> ModelResponse
- public func subscribe(for event: WSEvent.Type)-> AsyncStream<WSEvent>
+ public func listDevices()async throws -> [Device]
- public func queryCalls(next: String? = nil,watch: Bool = false)async throws -> (calls: [Call], next: String?)
+ public func disconnect()async
- 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()-> AnyPublisher<VideoEvent, Never>
-
+ public func eventPublisher(for event: WSEvent.Type)-> AnyPublisher<WSEvent, Never>
-
+ public func subscribe()-> AsyncStream<VideoEvent>
- public final class State: ObservableObject, @unchecked Sendable
+ public func subscribe(for event: WSEvent.Type)-> AsyncStream<WSEvent>
-
+ public func queryCalls(next: String? = nil,watch: Bool = false)async throws -> (calls: [Call], next: String?)
- @Published public internal var connection: ConnectionStatus
+ 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 user: User
+
- @Published public internal var activeCall: Call?
+
- @Published public internal var ringingCall: Call?
+ public final class State: ObservableObject, @unchecked Sendable
+
+ @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 enum CallingState: Equatable, CustomStringConvertible
+ public enum CallingState: Equatable, CustomStringConvertible, Sendable
public final class DisposableBag: @unchecked Sendable
+ public func completed(_ key: String)
extension Publisher
- public func sinkTask(storeIn disposableBag: DisposableBag? = nil,identifier: String? = nil,receiveCompletion: @escaping (@Sendable(Subscribers.Completion<Failure>) -> Void) = { _ in },receiveValue: @escaping (@Sendable(Output) async throws -> Void))-> AnyCancellable
+ public func sinkTask(storeIn disposableBag: DisposableBag,identifier: String = UUIDProviderKey.currentValue.get().uuidString,receiveCompletion: @escaping (@Sendable(Subscribers.Completion<Failure>) -> Void) = { _ in },receiveValue: @escaping (@Sendable(Output) async throws -> Void))-> AnyCancellable
- public func sinkTask(queue: SerialActorQueue,receiveCompletion: @escaping (@Sendable(Subscribers.Completion<Failure>) -> Void) = { _ in },receiveValue: @escaping (@Sendable(Output) async throws -> Void))-> AnyCancellable
+ public func sinkTask(queue: SerialActorQueue,file: StaticString = #file,function: StaticString = #function,line: UInt = #line,receiveCompletion: @escaping (@Sendable(Subscribers.Completion<Failure>) -> Void) = { _ in },receiveValue: @escaping (@Sendable(Output) async throws -> Void))-> AnyCancellable |
|
344cdcb
to
8c3ded9
Compare
This was referenced Jun 13, 2025
83754ea
to
5563d5d
Compare
Public Interface+ public final class ScreenPropertiesAdapter: @unchecked Sendable
+
+ public private var preferredFramesPerSecond: Int
+ public private var refreshRate: TimeInterval
+ public private var scale: CGFloat
+ public actor SerialActorQueue
+
+ nonisolated public var unownedExecutor: UnownedSerialExecutor
+
+
+ public init(file: StaticString = #file)
+
+
+ @discardableResult public nonisolated func async(file: StaticString = #file,function: StaticString = #function,line: UInt = #line,@_inheritActorContext operation: @escaping Operation)-> QueueTask
+ @discardableResult public nonisolated func async(file: StaticString = #file,function: StaticString = #function,line: UInt = #line,@_inheritActorContext operation: @escaping @Sendable() async -> Void)-> QueueTask
+ @discardableResult public nonisolated func sync(@_inheritActorContext operation: @escaping @Sendable() async throws -> Output)async throws -> Output
+ @discardableResult public nonisolated func async(file: StaticString = #file,function: StaticString = #function,line: UInt = #line,@_inheritActorContext operation: sending @escaping @Sendable @isolated(any) () async throws (Failure) -> Void)-> QueueTask
+ @discardableResult public nonisolated func sync(@_inheritActorContext operation: sending @escaping @Sendable @isolated(any) () async throws (Failure) -> Output)async throws -> Output
+ public nonisolated func cancelAll()
+
+
+ public final class QueueTask: @unchecked Sendable
+ extension ScreenPropertiesAdapter: InjectionKey
+
+ public nonisolated static var currentValue: ScreenPropertiesAdapter
+ public protocol TimerProviding
- public final class SerialActorQueue: Sendable
-
- public init()
-
-
- public func cancelAll()
- public func async(file: StaticString = #file,functionName: StaticString = #function,line: UInt = #line,_ block: @Sendable @escaping () async throws -> Void)
- public func sync(_ block: @Sendable @escaping () async throws -> T)async throws -> T
public final class DisposableBag: @unchecked Sendable
+ public func completed(_ key: String)
extension Task
- public func store(in disposableBag: DisposableBag,key: String = UUID().uuidString)
+ @discardableResult public init(disposableBag: DisposableBag,identifier: String = UUIDProviderKey.currentValue.get().uuidString,priority: TaskPriority? = .background,@_inheritActorContext block: @Sendable @escaping () async -> Success)
+ @discardableResult public init(disposableBag: DisposableBag,identifier: String = UUIDProviderKey.currentValue.get().uuidString,priority: TaskPriority? = .background,@_inheritActorContext block: @Sendable @escaping () async throws -> Success)
+
+
+ public func store(in disposableBag: DisposableBag,identifier: String = UUID().uuidString)
extension Publisher
- public func sinkTask(storeIn disposableBag: DisposableBag? = nil,identifier: String? = nil,receiveCompletion: @escaping (@Sendable(Subscribers.Completion<Failure>) -> Void) = { _ in },receiveValue: @escaping (@Sendable(Output) async throws -> Void))-> AnyCancellable
+ public func sinkTask(storeIn disposableBag: DisposableBag,identifier: String = UUIDProviderKey.currentValue.get().uuidString,receiveCompletion: @escaping (@Sendable(Subscribers.Completion<Failure>) -> Void) = { _ in },receiveValue: @escaping (@Sendable(Output) async throws -> Void))-> AnyCancellable
- public func sinkTask(queue: SerialActorQueue,receiveCompletion: @escaping (@Sendable(Subscribers.Completion<Failure>) -> Void) = { _ in },receiveValue: @escaping (@Sendable(Output) async throws -> Void))-> AnyCancellable
+ public func sinkTask(queue: SerialActorQueue,file: StaticString = #file,function: StaticString = #function,line: UInt = #line,receiveCompletion: @escaping (@Sendable(Subscribers.Completion<Failure>) -> Void) = { _ in },receiveValue: @escaping (@Sendable(Output) async throws -> Void))-> AnyCancellable
- public enum CallingState: Equatable, CustomStringConvertible
+ public enum CallingState: Equatable, CustomStringConvertible, Sendable
public final class MicrophoneChecker: ObservableObject
-
-
- public func startListening(ignoreActiveCall: Bool = false)async
- public func stopListening()async
public class StreamVideo: ObservableObject, @unchecked Sendable
- public var state: State
+ case ringEventReceived
- public let videoConfig: VideoConfig
+
- public var user: User
+
- public var isHardwareAccelerationAvailable: Bool
+ public var state: State
- public lazy var rejectionReasonProvider: RejectionReasonProviding
+ public let videoConfig: VideoConfig
-
+ public var user: User
-
+ public var isHardwareAccelerationAvailable: Bool
- public convenience init(apiKey: String,user: User,token: UserToken,videoConfig: VideoConfig = VideoConfig(),pushNotificationsConfig: PushNotificationsConfig = .default,tokenProvider: UserTokenProvider? = nil)
+ public lazy var rejectionReasonProvider: RejectionReasonProviding
- public func connect()async throws
+ public convenience init(apiKey: String,user: User,token: UserToken,videoConfig: VideoConfig = VideoConfig(),pushNotificationsConfig: PushNotificationsConfig = .default,tokenProvider: UserTokenProvider? = nil)
- public func call(callType: String,callId: String,callSettings: CallSettings? = nil)-> Call
+
- public func makeCallsController(callsQuery: CallsQuery)-> CallsController
+
- @discardableResult public func setDevice(id: String)async throws -> ModelResponse
+ public func connect()async throws
- @discardableResult public func setVoipDevice(id: String)async throws -> ModelResponse
+ public func call(callType: String,callId: String,callSettings: CallSettings? = nil)-> Call
- @discardableResult public func deleteDevice(id: String)async throws -> ModelResponse
+ public func makeCallsController(callsQuery: CallsQuery)-> CallsController
- public func listDevices()async throws -> [Device]
+ @discardableResult public func setDevice(id: String)async throws -> ModelResponse
- public func disconnect()async
+ @discardableResult public func setVoipDevice(id: String)async throws -> ModelResponse
- public func subscribe()-> AsyncStream<VideoEvent>
+ @discardableResult public func deleteDevice(id: String)async throws -> ModelResponse
- public func subscribe(for event: WSEvent.Type)-> AsyncStream<WSEvent>
+ public func listDevices()async throws -> [Device]
- public func queryCalls(next: String? = nil,watch: Bool = false)async throws -> (calls: [Call], next: String?)
+ public func disconnect()async
- 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()-> AnyPublisher<VideoEvent, Never>
-
+ public func eventPublisher(for event: WSEvent.Type)-> AnyPublisher<WSEvent, Never>
-
+ public func subscribe()-> AsyncStream<VideoEvent>
- public final class State: ObservableObject, @unchecked Sendable
+ public func subscribe(for event: WSEvent.Type)-> AsyncStream<WSEvent>
-
+ public func queryCalls(next: String? = nil,watch: Bool = false)async throws -> (calls: [Call], next: String?)
- @Published public internal var connection: ConnectionStatus
+ 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 user: User
+
- @Published public internal var activeCall: Call?
+
- @Published public internal var ringingCall: Call?
+ public final class State: ObservableObject, @unchecked Sendable
+
+ @Published public internal var connection: ConnectionStatus
+ @Published public internal var user: User
+ @Published public internal var activeCall: Call?
+ @Published public internal var ringingCall: Call? |
5563d5d
to
35d2404
Compare
Public Interface+ public protocol TimerProviding
+ public final class ScreenPropertiesAdapter: @unchecked Sendable
+
+ public private var preferredFramesPerSecond: Int
+ public private var refreshRate: TimeInterval
+ public private var scale: CGFloat
+ public actor SerialActorQueue
+
+ nonisolated public var unownedExecutor: UnownedSerialExecutor
+
+
+ public init(file: StaticString = #file)
+
+
+ @discardableResult public nonisolated func async(file: StaticString = #file,function: StaticString = #function,line: UInt = #line,@_inheritActorContext operation: @escaping Operation)-> QueueTask
+ @discardableResult public nonisolated func async(file: StaticString = #file,function: StaticString = #function,line: UInt = #line,@_inheritActorContext operation: @escaping @Sendable() async -> Void)-> QueueTask
+ @discardableResult public nonisolated func sync(@_inheritActorContext operation: @escaping @Sendable() async throws -> Output)async throws -> Output
+ @discardableResult public nonisolated func async(file: StaticString = #file,function: StaticString = #function,line: UInt = #line,@_inheritActorContext operation: sending @escaping @Sendable @isolated(any) () async throws (Failure) -> Void)-> QueueTask
+ @discardableResult public nonisolated func sync(@_inheritActorContext operation: sending @escaping @Sendable @isolated(any) () async throws (Failure) -> Output)async throws -> Output
+ public nonisolated func cancelAll()
+
+
+ public final class QueueTask: @unchecked Sendable
+ extension ScreenPropertiesAdapter: InjectionKey
+
+ public nonisolated static var currentValue: ScreenPropertiesAdapter
- public final class SerialActorQueue: Sendable
-
- public init()
-
-
- public func cancelAll()
- public func async(file: StaticString = #file,functionName: StaticString = #function,line: UInt = #line,_ block: @Sendable @escaping () async throws -> Void)
- public func sync(_ block: @Sendable @escaping () async throws -> T)async throws -> T
extension Task
- public func store(in disposableBag: DisposableBag,key: String = UUID().uuidString)
+ @discardableResult public init(disposableBag: DisposableBag,identifier: String = UUIDProviderKey.currentValue.get().uuidString,priority: TaskPriority? = .background,@_inheritActorContext block: @Sendable @escaping () async -> Success)
+ @discardableResult public init(disposableBag: DisposableBag,identifier: String = UUIDProviderKey.currentValue.get().uuidString,priority: TaskPriority? = .background,@_inheritActorContext block: @Sendable @escaping () async throws -> Success)
+
+
+ public func store(in disposableBag: DisposableBag,identifier: String = UUID().uuidString)
- public enum CallingState: Equatable, CustomStringConvertible
+ public enum CallingState: Equatable, CustomStringConvertible, Sendable
public final class MicrophoneChecker: ObservableObject
-
-
- public func startListening(ignoreActiveCall: Bool = false)async
- public func stopListening()async
public class StreamVideo: ObservableObject, @unchecked Sendable
- public var state: State
+ case ringEventReceived
- public let videoConfig: VideoConfig
+
- public var user: User
+
- public var isHardwareAccelerationAvailable: Bool
+ public var state: State
- public lazy var rejectionReasonProvider: RejectionReasonProviding
+ public let videoConfig: VideoConfig
-
+ public var user: User
-
+ public var isHardwareAccelerationAvailable: Bool
- public convenience init(apiKey: String,user: User,token: UserToken,videoConfig: VideoConfig = VideoConfig(),pushNotificationsConfig: PushNotificationsConfig = .default,tokenProvider: UserTokenProvider? = nil)
+ public lazy var rejectionReasonProvider: RejectionReasonProviding
- public func connect()async throws
+ public convenience init(apiKey: String,user: User,token: UserToken,videoConfig: VideoConfig = VideoConfig(),pushNotificationsConfig: PushNotificationsConfig = .default,tokenProvider: UserTokenProvider? = nil)
- public func call(callType: String,callId: String,callSettings: CallSettings? = nil)-> Call
+
- public func makeCallsController(callsQuery: CallsQuery)-> CallsController
+
- @discardableResult public func setDevice(id: String)async throws -> ModelResponse
+ public func connect()async throws
- @discardableResult public func setVoipDevice(id: String)async throws -> ModelResponse
+ public func call(callType: String,callId: String,callSettings: CallSettings? = nil)-> Call
- @discardableResult public func deleteDevice(id: String)async throws -> ModelResponse
+ public func makeCallsController(callsQuery: CallsQuery)-> CallsController
- public func listDevices()async throws -> [Device]
+ @discardableResult public func setDevice(id: String)async throws -> ModelResponse
- public func disconnect()async
+ @discardableResult public func setVoipDevice(id: String)async throws -> ModelResponse
- public func subscribe()-> AsyncStream<VideoEvent>
+ @discardableResult public func deleteDevice(id: String)async throws -> ModelResponse
- public func subscribe(for event: WSEvent.Type)-> AsyncStream<WSEvent>
+ public func listDevices()async throws -> [Device]
- public func queryCalls(next: String? = nil,watch: Bool = false)async throws -> (calls: [Call], next: String?)
+ public func disconnect()async
- 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()-> AnyPublisher<VideoEvent, Never>
-
+ public func eventPublisher(for event: WSEvent.Type)-> AnyPublisher<WSEvent, Never>
-
+ public func subscribe()-> AsyncStream<VideoEvent>
- public final class State: ObservableObject, @unchecked Sendable
+ public func subscribe(for event: WSEvent.Type)-> AsyncStream<WSEvent>
-
+ public func queryCalls(next: String? = nil,watch: Bool = false)async throws -> (calls: [Call], next: String?)
- @Published public internal var connection: ConnectionStatus
+ 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 user: User
+
- @Published public internal var activeCall: Call?
+
- @Published public internal var ringingCall: Call?
+ public final class State: ObservableObject, @unchecked Sendable
+
+ @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 final class DisposableBag: @unchecked Sendable
+ public func completed(_ key: String)
extension Publisher
- public func sinkTask(storeIn disposableBag: DisposableBag? = nil,identifier: String? = nil,receiveCompletion: @escaping (@Sendable(Subscribers.Completion<Failure>) -> Void) = { _ in },receiveValue: @escaping (@Sendable(Output) async throws -> Void))-> AnyCancellable
+ public func sinkTask(storeIn disposableBag: DisposableBag,identifier: String = UUIDProviderKey.currentValue.get().uuidString,receiveCompletion: @escaping (@Sendable(Subscribers.Completion<Failure>) -> Void) = { _ in },receiveValue: @escaping (@Sendable(Output) async throws -> Void))-> AnyCancellable
- public func sinkTask(queue: SerialActorQueue,receiveCompletion: @escaping (@Sendable(Subscribers.Completion<Failure>) -> Void) = { _ in },receiveValue: @escaping (@Sendable(Output) async throws -> Void))-> AnyCancellable
+ public func sinkTask(queue: SerialActorQueue,file: StaticString = #file,function: StaticString = #function,line: UInt = #line,receiveCompletion: @escaping (@Sendable(Subscribers.Completion<Failure>) -> Void) = { _ in },receiveValue: @escaping (@Sendable(Output) async throws -> Void))-> AnyCancellable |
* [Enhancement]AsyncStreams are now backed by Publishers * Fix failing tests * Remove subscriptions and make tests pass
35d2404
to
cad930d
Compare
Public Interface+ public final class ScreenPropertiesAdapter: @unchecked Sendable
+
+ public private var preferredFramesPerSecond: Int
+ public private var refreshRate: TimeInterval
+ public private var scale: CGFloat
+ public actor SerialActorQueue
+
+ nonisolated public var unownedExecutor: UnownedSerialExecutor
+
+
+ public init(file: StaticString = #file)
+
+
+ @discardableResult public nonisolated func async(file: StaticString = #file,function: StaticString = #function,line: UInt = #line,@_inheritActorContext operation: @escaping Operation)-> QueueTask
+ @discardableResult public nonisolated func async(file: StaticString = #file,function: StaticString = #function,line: UInt = #line,@_inheritActorContext operation: @escaping @Sendable() async -> Void)-> QueueTask
+ @discardableResult public nonisolated func sync(@_inheritActorContext operation: @escaping @Sendable() async throws -> Output)async throws -> Output
+ @discardableResult public nonisolated func async(file: StaticString = #file,function: StaticString = #function,line: UInt = #line,@_inheritActorContext operation: sending @escaping @Sendable @isolated(any) () async throws (Failure) -> Void)-> QueueTask
+ @discardableResult public nonisolated func sync(@_inheritActorContext operation: sending @escaping @Sendable @isolated(any) () async throws (Failure) -> Output)async throws -> Output
+ public nonisolated func cancelAll()
+
+
+ public final class QueueTask: @unchecked Sendable
+ public protocol TimerProviding
+ extension ScreenPropertiesAdapter: InjectionKey
+
+ public nonisolated static var currentValue: ScreenPropertiesAdapter
- public final class SerialActorQueue: Sendable
-
- public init()
-
-
- public func cancelAll()
- public func async(file: StaticString = #file,functionName: StaticString = #function,line: UInt = #line,_ block: @Sendable @escaping () async throws -> Void)
- public func sync(_ block: @Sendable @escaping () async throws -> T)async throws -> T
extension Task
- public func store(in disposableBag: DisposableBag,key: String = UUID().uuidString)
+ @discardableResult public init(disposableBag: DisposableBag,identifier: String = UUIDProviderKey.currentValue.get().uuidString,priority: TaskPriority? = .background,@_inheritActorContext block: @Sendable @escaping () async -> Success)
+ @discardableResult public init(disposableBag: DisposableBag,identifier: String = UUIDProviderKey.currentValue.get().uuidString,priority: TaskPriority? = .background,@_inheritActorContext block: @Sendable @escaping () async throws -> Success)
+
+
+ public func store(in disposableBag: DisposableBag,identifier: String = UUID().uuidString)
extension Publisher
- public func sinkTask(storeIn disposableBag: DisposableBag? = nil,identifier: String? = nil,receiveCompletion: @escaping (@Sendable(Subscribers.Completion<Failure>) -> Void) = { _ in },receiveValue: @escaping (@Sendable(Output) async throws -> Void))-> AnyCancellable
+ public func sinkTask(storeIn disposableBag: DisposableBag,identifier: String = UUIDProviderKey.currentValue.get().uuidString,receiveCompletion: @escaping (@Sendable(Subscribers.Completion<Failure>) -> Void) = { _ in },receiveValue: @escaping (@Sendable(Output) async throws -> Void))-> AnyCancellable
- public func sinkTask(queue: SerialActorQueue,receiveCompletion: @escaping (@Sendable(Subscribers.Completion<Failure>) -> Void) = { _ in },receiveValue: @escaping (@Sendable(Output) async throws -> Void))-> AnyCancellable
+ public func sinkTask(queue: SerialActorQueue,file: StaticString = #file,function: StaticString = #function,line: UInt = #line,receiveCompletion: @escaping (@Sendable(Subscribers.Completion<Failure>) -> Void) = { _ in },receiveValue: @escaping (@Sendable(Output) async throws -> Void))-> AnyCancellable
public final class DisposableBag: @unchecked Sendable
+ public func completed(_ key: String)
public final class MicrophoneChecker: ObservableObject
-
-
- public func startListening(ignoreActiveCall: Bool = false)async
- public func stopListening()async
public class StreamVideo: ObservableObject, @unchecked Sendable
- public var state: State
+ case ringEventReceived
- public let videoConfig: VideoConfig
+
- public var user: User
+
- public var isHardwareAccelerationAvailable: Bool
+ public var state: State
- public lazy var rejectionReasonProvider: RejectionReasonProviding
+ public let videoConfig: VideoConfig
-
+ public var user: User
-
+ public var isHardwareAccelerationAvailable: Bool
- public convenience init(apiKey: String,user: User,token: UserToken,videoConfig: VideoConfig = VideoConfig(),pushNotificationsConfig: PushNotificationsConfig = .default,tokenProvider: UserTokenProvider? = nil)
+ public lazy var rejectionReasonProvider: RejectionReasonProviding
- public func connect()async throws
+ public convenience init(apiKey: String,user: User,token: UserToken,videoConfig: VideoConfig = VideoConfig(),pushNotificationsConfig: PushNotificationsConfig = .default,tokenProvider: UserTokenProvider? = nil)
- public func call(callType: String,callId: String,callSettings: CallSettings? = nil)-> Call
+
- public func makeCallsController(callsQuery: CallsQuery)-> CallsController
+
- @discardableResult public func setDevice(id: String)async throws -> ModelResponse
+ public func connect()async throws
- @discardableResult public func setVoipDevice(id: String)async throws -> ModelResponse
+ public func call(callType: String,callId: String,callSettings: CallSettings? = nil)-> Call
- @discardableResult public func deleteDevice(id: String)async throws -> ModelResponse
+ public func makeCallsController(callsQuery: CallsQuery)-> CallsController
- public func listDevices()async throws -> [Device]
+ @discardableResult public func setDevice(id: String)async throws -> ModelResponse
- public func disconnect()async
+ @discardableResult public func setVoipDevice(id: String)async throws -> ModelResponse
- public func subscribe()-> AsyncStream<VideoEvent>
+ @discardableResult public func deleteDevice(id: String)async throws -> ModelResponse
- public func subscribe(for event: WSEvent.Type)-> AsyncStream<WSEvent>
+ public func listDevices()async throws -> [Device]
- public func queryCalls(next: String? = nil,watch: Bool = false)async throws -> (calls: [Call], next: String?)
+ public func disconnect()async
- 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()-> AnyPublisher<VideoEvent, Never>
-
+ public func eventPublisher(for event: WSEvent.Type)-> AnyPublisher<WSEvent, Never>
-
+ public func subscribe()-> AsyncStream<VideoEvent>
- public final class State: ObservableObject, @unchecked Sendable
+ public func subscribe(for event: WSEvent.Type)-> AsyncStream<WSEvent>
-
+ public func queryCalls(next: String? = nil,watch: Bool = false)async throws -> (calls: [Call], next: String?)
- @Published public internal var connection: ConnectionStatus
+ 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 user: User
+
- @Published public internal var activeCall: Call?
+
- @Published public internal var ringingCall: Call?
+ public final class State: ObservableObject, @unchecked Sendable
+
+ @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 enum CallingState: Equatable, CustomStringConvertible
+ public enum CallingState: Equatable, CustomStringConvertible, Sendable |
# for free
to join this conversation on GitHub.
Already have an account?
# 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
Resolves https://linear.app/stream/issue/IOS-650/videoinvestigate-performance-on-lower-end-devices
🎯 Goal
Improve performance, battery drain and thermal degradation during call.
🛠 Implementation
receiveOn
on UI components: [Performance]UI Improvements #829🧪 Manual Testing Notes
✅ Call Test Summary
Scenario
1:1 call
for 5 minutesnoise-cancellation: active
background-filter: inactive
profiler: connected
debugger: disconnected
🧵 Tasks
🌡️ Thermal State Degradation
☑️ Contributor Checklist