Files
letro-ios/ElementX/Sources/Services/UserSession/UserSessionStoreProtocol.swift
Mauro Romito 32036e5b66 refactored the ClientProxy to:
- throw an error during the init
- to have its init directly instantiate the sync service and the providers

Update ElementX/Sources/Services/UserSession/UserSessionStore.swift

Co-authored-by: Doug <6060466+pixlwave@users.noreply.github.com>

renamed
2025-03-06 14:13:55 +01:00

41 lines
1.4 KiB
Swift

//
// Copyright 2022-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 Foundation
import MatrixRustSDK
enum UserSessionStoreError: Error {
case missingCredentials
case failedRestoringLogin
case failedSettingUpSession
case failedSettingUpClientProxy(Error)
}
// sourcery: AutoMockable
protocol UserSessionStoreProtocol {
/// Deletes all data stored in the shared container and keychain
func reset()
/// Whether or not there are sessions in the store.
var hasSessions: Bool { get }
/// All the user IDs managed by the store.
var userIDs: [String] { get }
/// Returns the delegate that should handle any changes to a `Client`'s `Session`.
var clientSessionDelegate: ClientSessionDelegate { get }
/// Restores an existing user session.
func restoreUserSession() async -> Result<UserSessionProtocol, UserSessionStoreError>
/// Creates a user session for a new client from the SDK along with the passphrase used for the data stores.
func userSession(for client: ClientProtocol, sessionDirectories: SessionDirectories, passphrase: String?) async -> Result<UserSessionProtocol, UserSessionStoreError>
/// Logs out of the specified session.
func logout(userSession: UserSessionProtocol)
}