Files
letro-ios/ElementX/Sources/Services/ElementCall/ElementCallWidgetDriverProtocol.swift
Mauro Romito 4c09dde58d EC update and improvements
Use .startCall intent, and always pass rageshakeURL to the widget

Updated EC to 0.9.0-rc.4

rageshakeURL is now a parameter
2025-03-26 13:13:28 +01:00

47 lines
1.4 KiB
Swift

//
// Copyright 2023, 2024 New Vector Ltd.
//
// SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
// Please see LICENSE files in the repository root for full details.
//
import Combine
import SwiftUI
enum ElementCallWidgetDriverError: Error {
case roomInvalid
case failedBuildingCallURL
case failedBuildingWidgetSettings
case failedBuildingWidgetDriver
case failedParsingCallURL
case driverNotSetup
}
enum ElementCallWidgetDriverAction {
case callEnded
case mediaStateChanged(audioEnabled: Bool, videoEnabled: Bool)
}
// sourcery: AutoMockable
protocol ElementCallWidgetDriverProtocol {
var widgetID: String { get }
var messagePublisher: PassthroughSubject<String, Never> { get }
var actions: AnyPublisher<ElementCallWidgetDriverAction, Never> { get }
func start(baseURL: URL,
clientID: String,
colorScheme: ColorScheme,
rageshakeURL: String?,
analyticsConfiguration: ElementCallAnalyticsConfiguration?) async -> Result<URL, ElementCallWidgetDriverError>
/// Passes a message from the Widget to the SDK to handle, returning a Bool that represents whether or not the widget driver is still running.
func handleMessage(_ message: String) async -> Result<Bool, ElementCallWidgetDriverError>
}
struct ElementCallAnalyticsConfiguration {
let posthogAPIHost: String
let posthogAPIKey: String
let sentryDSN: String
}