TM-SGNL-iOS/Signal/Provisioning/ProvisioningCoordinator+Shims.swift
TeleMessage developers dde0620daf initial commit
2025-05-03 12:28:28 -07:00

186 lines
5.9 KiB
Swift

//
// Copyright 2023 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
//
import Foundation
public import SignalServiceKit
extension ProvisioningCoordinatorImpl {
public enum Shims {
public typealias MessageFactory = _ProvisioningCoordinator_MessageFactoryShim
public typealias ProfileManager = _ProvisioningCoordinator_ProfileManagerShim
public typealias PushRegistrationManager = _ProvisioningCoordinator_PushRegistrationManagerShim
public typealias ReceiptManager = _ProvisioningCoordinator_ReceiptManagerShim
public typealias SyncManager = _ProvisioningCoordinator_SyncManagerShim
public typealias UDManager = _ProvisioningCoordinator_UDManagerShim
}
public enum Wrappers {
public typealias MessageFactory = _ProvisioningCoordinator_MessageFactoryWrapper
public typealias ProfileManager = _ProvisioningCoordinator_ProfileManagerWrapper
public typealias PushRegistrationManager = _ProvisioningCoordinator_PushRegistrationManagerWrapper
public typealias ReceiptManager = _ProvisioningCoordinator_ReceiptManagerWrapper
public typealias SyncManager = _ProvisioningCoordinator_SyncManagerWrapper
public typealias UDManager = _ProvisioningCoordinator_UDManagerWrapper
}
}
// MARK: MessageFactory
public protocol _ProvisioningCoordinator_MessageFactoryShim {
func insertInfoMessage(
into thread: TSThread,
messageType: TSInfoMessageType,
tx: DBWriteTransaction
)
}
public class _ProvisioningCoordinator_MessageFactoryWrapper: _ProvisioningCoordinator_MessageFactoryShim {
public init() {}
public func insertInfoMessage(
into thread: TSThread,
messageType: TSInfoMessageType,
tx: DBWriteTransaction
) {
let infoMessage = TSInfoMessage(thread: thread, messageType: messageType)
infoMessage.anyInsert(transaction: SDSDB.shimOnlyBridge(tx))
}
}
// MARK: ProfileManager
public protocol _ProvisioningCoordinator_ProfileManagerShim {
func localProfileKey() -> Aes256Key
func setLocalProfileKey(
_ key: Aes256Key,
userProfileWriter: UserProfileWriter,
authedAccount: AuthedAccount,
tx: DBWriteTransaction
)
}
public class _ProvisioningCoordinator_ProfileManagerWrapper: _ProvisioningCoordinator_ProfileManagerShim {
private let profileManager: OWSProfileManager
public init(_ profileManager: OWSProfileManager) {
self.profileManager = profileManager
}
public func localProfileKey() -> Aes256Key {
return profileManager.localProfileKey
}
public func setLocalProfileKey(
_ key: Aes256Key,
userProfileWriter: UserProfileWriter,
authedAccount: AuthedAccount,
tx: DBWriteTransaction
) {
profileManager.setLocalProfileKey(
key,
userProfileWriter: userProfileWriter,
transaction: SDSDB.shimOnlyBridge(tx)
)
}
}
// MARK: PushRegistrationManager
public protocol _ProvisioningCoordinator_PushRegistrationManagerShim {
typealias ApnRegistrationId = PushRegistrationManager.ApnRegistrationId
func requestPushTokens(
forceRotation: Bool
) async throws -> ApnRegistrationId
}
public class _ProvisioningCoordinator_PushRegistrationManagerWrapper: _ProvisioningCoordinator_PushRegistrationManagerShim {
private let pushRegistrationManager: PushRegistrationManager
public init(_ pushRegistrationManager: PushRegistrationManager) {
self.pushRegistrationManager = pushRegistrationManager
}
public func requestPushTokens(forceRotation: Bool) async throws -> ApnRegistrationId {
return try await pushRegistrationManager.requestPushTokens(forceRotation: forceRotation).awaitable()
}
}
// MARK: ReceiptManager
public protocol _ProvisioningCoordinator_ReceiptManagerShim {
func setAreReadReceiptsEnabled(_ areEnabled: Bool, tx: DBWriteTransaction)
}
public class _ProvisioningCoordinator_ReceiptManagerWrapper: _ProvisioningCoordinator_ReceiptManagerShim {
private let receiptManager: OWSReceiptManager
public init(_ receiptManager: OWSReceiptManager) {
self.receiptManager = receiptManager
}
public func setAreReadReceiptsEnabled(_ areEnabled: Bool, tx: DBWriteTransaction) {
receiptManager.setAreReadReceiptsEnabled(areEnabled, transaction: SDSDB.shimOnlyBridge(tx))
}
}
// MARK: SyncManager
public protocol _ProvisioningCoordinator_SyncManagerShim {
func sendKeysSyncRequestMessage(tx: DBWriteTransaction)
func sendInitialSyncRequestsAwaitingCreatedThreadOrdering(
timeout: TimeInterval
) async throws -> [String]
}
public class _ProvisioningCoordinator_SyncManagerWrapper: _ProvisioningCoordinator_SyncManagerShim {
private let syncManager: SyncManagerProtocol
public init(_ syncManager: SyncManagerProtocol) {
self.syncManager = syncManager
}
public func sendKeysSyncRequestMessage(tx: DBWriteTransaction) {
syncManager.sendKeysSyncRequestMessage(transaction: SDSDB.shimOnlyBridge(tx))
}
public func sendInitialSyncRequestsAwaitingCreatedThreadOrdering(
timeout: TimeInterval
) async throws -> [String] {
return try await syncManager
.sendInitialSyncRequestsAwaitingCreatedThreadOrdering(
timeoutSeconds: timeout
)
.awaitable()
}
}
// MARK: - UDManager
public protocol _ProvisioningCoordinator_UDManagerShim {
func shouldAllowUnrestrictedAccessLocal(tx: DBReadTransaction) -> Bool
}
public class _ProvisioningCoordinator_UDManagerWrapper: _ProvisioningCoordinator_UDManagerShim {
private let manager: OWSUDManager
public init(_ manager: OWSUDManager) { self.manager = manager }
public func shouldAllowUnrestrictedAccessLocal(tx: DBReadTransaction) -> Bool {
return manager.shouldAllowUnrestrictedAccessLocal(transaction: SDSDB.shimOnlyBridge(tx))
}
}