// // Copyright 2022-2024 New Vector Ltd. // // SPDX-License-Identifier: AGPL-3.0-only // Please see LICENSE in the repository root for full details. // import Combine import Foundation enum SessionVerificationControllerProxyError: Error { case failedRequestingVerification case failedStartingSasVerification case failedApprovingVerification case failedDecliningVerification case failedCancellingVerification } enum SessionVerificationControllerProxyCallback { case acceptedVerificationRequest case startedSasVerification case receivedVerificationData([SessionVerificationEmoji]) case finished case cancelled case failed } struct SessionVerificationEmoji: Hashable { let symbol: String let description: String var localizedDescription: String { SASL10n.localizedDescription(for: description.lowercased()) } } // sourcery: AutoMockable protocol SessionVerificationControllerProxyProtocol { var callbacks: PassthroughSubject { get } func requestVerification() async -> Result func startSasVerification() async -> Result func approveVerification() async -> Result func declineVerification() async -> Result func cancelVerification() async -> Result }