Add iOS session bridge factory

This commit is contained in:
Mikhail Kilin
2026-05-21 00:47:21 +03:00
parent f7abd1dba0
commit 75cd319f53
3 changed files with 31 additions and 1 deletions

View File

@@ -16,6 +16,9 @@ struct TeleTuiIOSApp: App {
displayName: "Fake",
databasePath: paths.databasePath(for: "fake")
)
return SessionStore(account: account, bridge: FakeSessionBridge(auth: .ready))
return SessionStore(
account: account,
bridge: SessionBridgeFactory.makeDefaultBridge(account: account)
)
}
}

View File

@@ -0,0 +1,18 @@
import Foundation
public enum SessionBridgeFactory {
public static func makeDefaultBridge(
account: Account,
useFakeTdlib: Bool = true
) -> SessionBridge {
#if canImport(tele_ios_ffiFFI)
do {
return try UniFfiSessionBridge(account: account, useFakeTdlib: useFakeTdlib)
} catch {
return FakeSessionBridge(auth: .waitPhoneNumber)
}
#else
return FakeSessionBridge(auth: .ready)
#endif
}
}

View File

@@ -8,6 +8,7 @@ struct TeleTuiIOSSmokeTests {
try await chatListLoadsDeterministicFakeDataAndFilters()
try await chatDetailLoadsAndSendsMessage()
try await messageActionsCoverEditReplyForwardReactDeleteSearchAndCopy()
try await sessionBridgeFactoryUsesAvailableDefaultBridge()
try await platformServicesCoverNotificationsMediaVoiceClipboardAndAccounts()
lifecycleCoordinatorDropsStaleAccountEvents()
try await profileLoadsFromSelectedChat()
@@ -127,6 +128,14 @@ struct TeleTuiIOSSmokeTests {
precondition(!viewModel.messages.contains { $0.id == 1 })
}
@MainActor
private static func sessionBridgeFactoryUsesAvailableDefaultBridge() async throws {
let account = Account(id: "factory", displayName: "Factory", databasePath: URL(fileURLWithPath: "/tmp/factory"))
let bridge = SessionBridgeFactory.makeDefaultBridge(account: account)
let auth = try await bridge.authState()
precondition(auth == .ready)
}
@MainActor
private static func platformServicesCoverNotificationsMediaVoiceClipboardAndAccounts() async throws {
let root = URL(fileURLWithPath: "/tmp/TeleTuiIOS")