Skip to content

Integration with Stream Core #783

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
wants to merge 3 commits into
base: develop
Choose a base branch
from

Conversation

martinmitrevski
Copy link
Contributor

🔗 Issue Links

Resolves https://linear.app/stream/issue/IOS-832/extract-common-ws-module.

🎯 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.

Before After
img img

🧪 Manual Testing Notes

Explain how this change can be tested manually, if applicable.

☑️ Contributor Checklist

  • I have signed the Stream CLA (required)
  • This change follows zero ⚠️ policy (required)
  • This change should receive manual QA
  • Changelog is updated with client-facing changes
  • New code is covered by unit tests
  • Comparison screenshots added for visual changes
  • Affected documentation updated (tutorial, CMS)

🎁 Meme

Provide a funny gif or image that relates to your work on this pull request. (Optional)

@martinmitrevski martinmitrevski requested a review from a team as a code owner April 29, 2025 12:36
@martinmitrevski martinmitrevski marked this pull request as draft April 29, 2025 12:36
Copy link

Public Interface

+ extension StreamVideo: ConnectionStateDelegate  
+ 
+   public func webSocketClient(_ client: WebSocketClient,didUpdateConnectionState state: WebSocketConnectionState)

- public final class MissingPermissions: ClientError, @unchecked Sendable

- public final class Unexpected: ClientError, @unchecked Sendable

- public extension RawJSON

- extension Array  
- 
-   public func log(_ level: LogLevel,subsystems: LogSubsystem = .other,functionName: StaticString = #function,fileName: StaticString = #fileID,lineNumber: UInt = #line,messageBuilder: ((Self) -> String)? = nil)-> Self

- public final class Unknown: ClientError, @unchecked Sendable

- public extension User

- public final class InvalidURL: ClientError, @unchecked Sendable

- public final class APIError: @unchecked Sendable, Codable, JSONEncodable, Hashable, ReflectiveStringConvertible  
- 
-   public var code: Int
-   public var details: [Int]
-   public var duration: String
-   public var exceptionFields: [String: String]?
-   public var message: String
-   public var moreInfo: String
-   public var statusCode: Int
-   public var unrecoverable: Bool?
-   
- 
-   public init(code: Int,details: [Int],duration: String,exceptionFields: [String: String]? = nil,message: String,moreInfo: String,statusCode: Int,unrecoverable: Bool? = nil)
-   
- 
-   public static func ==(lhs: APIError,rhs: APIError)-> Bool
-   public func hash(into hasher: inout Hasher)
-   
- 
-   public enum CodingKeys: String, CodingKey, CaseIterable  
-   
-     case code
-     case details
-     case duration
-     case exceptionFields = "exception_fields"
-     case message
-     case moreInfo = "more_info"
-     case statusCode = "StatusCode"
-     case unrecoverable

- public enum InternetConnectionStatus: Equatable, Sendable  
- 
-   case unknown
-   case available(InternetConnectionQuality)
-   case unavailable

- public protocol InjectionKey

- public extension UserToken

- public final class ConsoleLogDestination: BaseLogDestination, @unchecked Sendable  
- 
-   override public func write(message: String)

- public class UnsupportedEventType: ClientError, @unchecked Sendable  
- 
-   override public var localizedDescription: String

- public struct InjectedValues  
- 
-   public static subscript<K>(key: K.Type)-> K.Value where K: InjectionKey
-   public static subscript<T>(_ keyPath: WritableKeyPath<InjectedValues, T>)-> T

- public final class NetworkError: ClientError, @unchecked Sendable

- public protocol Event: Sendable

- public enum InternetConnectionQuality: Equatable, Sendable  
- 
-   case great
-   case expensive
-   case constrained

- public class InvalidToken: ClientError, @unchecked Sendable

- extension Task  
- 
-   public func store(in disposableBag: DisposableBag,key: String = UUID().uuidString)

- public final class RecursiveQueue: LockQueuing, @unchecked Sendable  
- 
-   public init()
-   
- 
-   public func sync(_ block: () throws -> T)rethrows -> T

- public class PrefixLogFormatter: LogFormatter  
- 
-   public init(prefixes: [LogLevel: String])
-   
- 
-   public func format(logDetails: LogDetails,message: String)-> String

- public indirect enum RawJSON: Codable, Hashable, Sendable  
- 
-   case number(Double)
-   case string(String)
-   case bool(Bool)
-   case dictionary([String: RawJSON])
-   case array([RawJSON])
-   case `nil`
-   
- 
-   public init(from decoder: Decoder)throws 
-   
- 
-   public func encode(to encoder: Encoder)throws

- public class WebSocket: ClientError, @unchecked Sendable

- public struct User: Identifiable, Hashable, Sendable, Codable  
- 
-   public let id: String
-   public let imageURL: URL?
-   public let role: String
-   public let type: UserAuthType
-   public let customData: [String: RawJSON]
-   public let originalName: String?
-   public var name: String
-   
- 
-   public init(id: String,name: String? = nil,imageURL: URL? = nil,role: String = "user",customData: [String: RawJSON] = [:])

- public class EventDecoding: ClientError, @unchecked Sendable

- public final class UnfairQueue: LockQueuing, @unchecked Sendable  
- 
-   public init()
-   
- 
-   public func sync(_ block: () throws -> T)rethrows -> T

- public protocol InternetConnectionProtocol

- public struct LogDetails: Sendable  
- 
-   public let loggerIdentifier: String
-   public let subsystem: LogSubsystem
-   public let level: LogLevel
-   public let date: Date
-   public let message: String
-   public let threadName: String
-   public let functionName: StaticString
-   public let fileName: StaticString
-   public let lineNumber: UInt
-   public let error: Error?

- public extension LogDestination

- @propertyWrapper public struct Injected  
- 
-   public var wrappedValue: T
-   
- 
-   public init(_ keyPath: WritableKeyPath<InjectedValues, T>)

- public protocol LogFormatter

- public protocol LogDestination: Sendable

- public struct UserToken: Codable, Equatable, ExpressibleByStringLiteral, Sendable  
- 
-   public let rawValue: String
-   
- 
-   public init(stringLiteral value: StringLiteralType)
-   public init(rawValue: String)
-   public init(from decoder: Decoder)throws

- public enum ConnectionStatus: Equatable, Sendable  
- 
-   case initialized
-   case disconnected(error: ClientError? = nil)
-   case connecting
-   case connected
-   case disconnecting

- public struct LogSubsystem: OptionSet, CustomStringConvertible, Sendable  
- 
-   public let rawValue: Int
-   public static let allCases: [LogSubsystem]
-   public static let all: LogSubsystem
-   public static let other
-   public static let database
-   public static let httpRequests
-   public static let webSocket
-   public static let offlineSupport
-   public static let webRTC
-   public static let peerConnectionPublisher
-   public static let peerConnectionSubscriber
-   public static let sfu
-   public static let iceAdapter
-   public static let mediaAdapter
-   public static let thermalState
-   public static let audioSession
-   public static let videoCapturer
-   public static let pictureInPicture
-   public static let callKit
-   public var description: String
-   
- 
-   public init(rawValue: Int)

- public final class NetworkNotAvailable: ClientError, @unchecked Sendable

- public struct ErrorPayload: LocalizedError, Codable, CustomDebugStringConvertible, Equatable  
- 
-   case code
-   case message
-   case statusCode = "StatusCode"
-   
- 
-   public let code: Int
-   public let message: String
-   public let statusCode: Int
-   public var errorDescription: String?
-   public var debugDescription: String

- public class Logger  
- 
-   public let identifier: String
-   public var destinations: [LogDestination]
-   
- 
-   public init(identifier: String = "",destinations: [LogDestination] = [])
-   
- 
-   public func callAsFunction(_ level: LogLevel,functionName: StaticString = #function,fileName: StaticString = #fileID,lineNumber: UInt = #line,message: @autoclosure () -> Any,subsystems: LogSubsystem = .other,error: Error?)
-   public func log(_ level: LogLevel,functionName: StaticString = #function,fileName: StaticString = #fileID,lineNumber: UInt = #line,message: @autoclosure () -> Any,subsystems: LogSubsystem = .other,error: Error?)
-   public func info(_ message: @autoclosure () -> Any,subsystems: LogSubsystem = .other,functionName: StaticString = #function,fileName: StaticString = #fileID,lineNumber: UInt = #line)
-   public func debug(_ message: @autoclosure () -> Any,subsystems: LogSubsystem = .other,functionName: StaticString = #function,fileName: StaticString = #fileID,lineNumber: UInt = #line)
-   public func warning(_ message: @autoclosure () -> Any,subsystems: LogSubsystem = .other,functionName: StaticString = #function,fileName: StaticString = #fileID,lineNumber: UInt = #line)
-   public func error(_ message: @autoclosure () -> Any,subsystems: LogSubsystem = .other,error: Error? = nil,functionName: StaticString = #function,fileName: StaticString = #fileID,lineNumber: UInt = #line)
-   public func assert(_ condition: @autoclosure () -> Bool,_ message: @autoclosure () -> Any,subsystems: LogSubsystem = .other,functionName: StaticString = #function,fileName: StaticString = #fileID,lineNumber: UInt = #line)
-   public func assertionFailure(_ message: @autoclosure () -> Any,subsystems: LogSubsystem = .other,functionName: StaticString = #function,fileName: StaticString = #fileID,lineNumber: UInt = #line)

- extension ClientError: Equatable  
- 
-   public static func ==(lhs: ClientError,rhs: ClientError)-> Bool

- public enum LogLevel: Int, Sendable  
- 
-   case debug = 0
-   case info
-   case warning
-   case error

- public final class DisposableBag: @unchecked Sendable  
- 
-   public var isEmpty: Bool
-   
- 
-   public init()
-   
- 
-   public func insert(_ cancellable: AnyCancellable,with key: String = UUID().uuidString)
-   public func remove(_ key: String)
-   public func removeAll()

- public enum UserAuthType: Sendable, Codable, Hashable  
- 
-   case regular
-   case anonymous
-   case guest

- public enum StreamRuntimeCheck

- public class ClientError: Error, ReflectiveStringConvertible, @unchecked Sendable  
- 
-   public let location: Location?
-   public let underlyingError: Error?
-   public let apiError: APIError?
-   public var localizedDescription: String
-   
- 
-   public init(with error: Error? = nil,_ file: StaticString = #fileID,_ line: UInt = #line)
-   public init(_ message: String,_ file: StaticString = #fileID,_ line: UInt = #line)
-   
- 
-   public struct Location: Equatable, Sendable  
-   
-     public let file: String
-     public let line: Int

- extension AnyCancellable  
- 
-   public func store(in disposableBag: DisposableBag?,key: String = UUID().uuidString)

- public struct Log: Publisher  
- 
-   public func receive(subscriber: S)

- public enum LogConfig  
- 
-   nonisolated public static var identifier
-   nonisolated public static var level: LogLevel
-   nonisolated public static var dateFormatter: DateFormatter
-   nonisolated public static var formatters
-   nonisolated public static var showDate
-   nonisolated public static var showLevel
-   nonisolated public static var showIdentifier
-   nonisolated public static var showThreadName
-   nonisolated public static var showFileName
-   nonisolated public static var showLineNumber
-   nonisolated public static var showFunctionName
-   nonisolated public static var subsystems: LogSubsystem
-   nonisolated public static var destinationTypes: [LogDestination.Type]
-   public static var destinations: [LogDestination]
-   public static var logger: Logger

- open class BaseLogDestination: LogDestination, @unchecked Sendable  
- 
-   open var identifier: String
-   open var level: LogLevel
-   open var subsystems: LogSubsystem
-   open var dateFormatter: DateFormatter
-   open var formatters: [LogFormatter]
-   open var showDate: Bool
-   open var showLevel: Bool
-   open var showIdentifier: Bool
-   open var showThreadName: Bool
-   open var showFileName: Bool
-   open var showLineNumber: Bool
-   open var showFunctionName: Bool
-   
- 
-   public required init(identifier: String,level: LogLevel,subsystems: LogSubsystem,showDate: Bool,dateFormatter: DateFormatter,formatters: [LogFormatter],showLevel: Bool,showIdentifier: Bool,showThreadName: Bool,showFileName: Bool,showLineNumber: Bool,showFunctionName: Bool)
-   
- 
-   open func isEnabled(level: LogLevel)-> Bool
-   open func isEnabled(level: LogLevel,subsystems: LogSubsystem)-> Bool
-   open func process(logDetails: LogDetails)
-   open func applyFormatters(logDetails: LogDetails,message: String)-> String
-   open func write(message: String)

- public struct APIKey: Equatable  
- 
-   public let apiKeyString: String
-   
- 
-   public init(_ apiKeyString: String)

- extension InternetConnectionStatus  
- 
-   public var isAvailable: Bool

- public protocol SendableEvent: Event, ProtoModel, ReflectiveStringConvertible

 extension InternetConnection: InjectionKey  
-   nonisolated public static var currentValue: InternetConnectionProtocol
+   public static var currentValue: InternetConnectionProtocol

Copy link

1 Message
📖 Skipping Danger since the Pull Request is classed as Draft/Work In Progress

Generated by 🚫 Danger

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant