mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-02 21:33:26 +00:00
Introduce a user session manager (#6295)
This commit is contained in:
@@ -14810,6 +14810,165 @@ nonisolated class UserNotificationCenterMock: UserNotificationCenterProtocol, @u
|
||||
}
|
||||
}
|
||||
}
|
||||
nonisolated class UserSessionManagerMock: UserSessionManagerProtocol, @unchecked Sendable {
|
||||
nonisolated(unsafe) var userIDs: [String] = []
|
||||
var sessionsPublisher: CurrentValuePublisher<[UserSessionProtocol], Never> {
|
||||
get { return underlyingSessionsPublisher }
|
||||
set(value) { underlyingSessionsPublisher = value }
|
||||
}
|
||||
nonisolated(unsafe) var underlyingSessionsPublisher: CurrentValuePublisher<[UserSessionProtocol], Never>!
|
||||
nonisolated(unsafe) var activeSession: UserSessionProtocol?
|
||||
|
||||
//MARK: - session
|
||||
|
||||
private let sessionForCallsCountLock = NSLock()
|
||||
private nonisolated(unsafe) var sessionForUnderlyingCallsCount = 0
|
||||
var sessionForCallsCount: Int {
|
||||
get { sessionForCallsCountLock.withLock { sessionForUnderlyingCallsCount } }
|
||||
set { sessionForCallsCountLock.withLock { sessionForUnderlyingCallsCount = newValue } }
|
||||
}
|
||||
var sessionForCalled: Bool {
|
||||
return sessionForCallsCount > 0
|
||||
}
|
||||
private let sessionForReceivedUserIDLock = NSLock()
|
||||
private nonisolated(unsafe) var sessionForUnderlyingReceivedUserID: String?
|
||||
var sessionForReceivedUserID: String? {
|
||||
get { sessionForReceivedUserIDLock.withLock { sessionForUnderlyingReceivedUserID } }
|
||||
set { sessionForReceivedUserIDLock.withLock { sessionForUnderlyingReceivedUserID = newValue } }
|
||||
}
|
||||
private let sessionForReceivedInvocationsLock = NSLock()
|
||||
private nonisolated(unsafe) var sessionForUnderlyingReceivedInvocations: [String] = []
|
||||
var sessionForReceivedInvocations: [String] {
|
||||
get { sessionForReceivedInvocationsLock.withLock { sessionForUnderlyingReceivedInvocations } }
|
||||
set { sessionForReceivedInvocationsLock.withLock { sessionForUnderlyingReceivedInvocations = newValue } }
|
||||
}
|
||||
|
||||
private let sessionForReturnValueLock = NSLock()
|
||||
private nonisolated(unsafe) var sessionForUnderlyingReturnValue: UserSessionProtocol?
|
||||
var sessionForReturnValue: UserSessionProtocol? {
|
||||
get { sessionForReturnValueLock.withLock { sessionForUnderlyingReturnValue } }
|
||||
set { sessionForReturnValueLock.withLock { sessionForUnderlyingReturnValue = newValue } }
|
||||
}
|
||||
nonisolated(unsafe) var sessionForClosure: ((String) -> UserSessionProtocol?)?
|
||||
|
||||
func session(for userID: String) -> UserSessionProtocol? {
|
||||
sessionForCallsCountLock.withLock { sessionForUnderlyingCallsCount += 1 }
|
||||
sessionForReceivedUserID = userID
|
||||
sessionForReceivedInvocationsLock.withLock { sessionForUnderlyingReceivedInvocations.append(userID) }
|
||||
if let sessionForClosure = sessionForClosure {
|
||||
return sessionForClosure(userID)
|
||||
} else {
|
||||
return sessionForReturnValue
|
||||
}
|
||||
}
|
||||
//MARK: - restoreActiveSession
|
||||
|
||||
private let restoreActiveSessionCallsCountLock = NSLock()
|
||||
private nonisolated(unsafe) var restoreActiveSessionUnderlyingCallsCount = 0
|
||||
var restoreActiveSessionCallsCount: Int {
|
||||
get { restoreActiveSessionCallsCountLock.withLock { restoreActiveSessionUnderlyingCallsCount } }
|
||||
set { restoreActiveSessionCallsCountLock.withLock { restoreActiveSessionUnderlyingCallsCount = newValue } }
|
||||
}
|
||||
var restoreActiveSessionCalled: Bool {
|
||||
return restoreActiveSessionCallsCount > 0
|
||||
}
|
||||
|
||||
private let restoreActiveSessionReturnValueLock = NSLock()
|
||||
private nonisolated(unsafe) var restoreActiveSessionUnderlyingReturnValue: Result<UserSessionProtocol, UserSessionManagerError>!
|
||||
var restoreActiveSessionReturnValue: Result<UserSessionProtocol, UserSessionManagerError>! {
|
||||
get { restoreActiveSessionReturnValueLock.withLock { restoreActiveSessionUnderlyingReturnValue } }
|
||||
set { restoreActiveSessionReturnValueLock.withLock { restoreActiveSessionUnderlyingReturnValue = newValue } }
|
||||
}
|
||||
nonisolated(unsafe) var restoreActiveSessionClosure: (() async -> Result<UserSessionProtocol, UserSessionManagerError>)?
|
||||
|
||||
@concurrent func restoreActiveSession() async -> Result<UserSessionProtocol, UserSessionManagerError> {
|
||||
restoreActiveSessionCallsCountLock.withLock { restoreActiveSessionUnderlyingCallsCount += 1 }
|
||||
if let restoreActiveSessionClosure = restoreActiveSessionClosure {
|
||||
return await restoreActiveSessionClosure()
|
||||
} else {
|
||||
return restoreActiveSessionReturnValue
|
||||
}
|
||||
}
|
||||
//MARK: - add
|
||||
|
||||
private let addCallsCountLock = NSLock()
|
||||
private nonisolated(unsafe) var addUnderlyingCallsCount = 0
|
||||
var addCallsCount: Int {
|
||||
get { addCallsCountLock.withLock { addUnderlyingCallsCount } }
|
||||
set { addCallsCountLock.withLock { addUnderlyingCallsCount = newValue } }
|
||||
}
|
||||
var addCalled: Bool {
|
||||
return addCallsCount > 0
|
||||
}
|
||||
private let addReceivedUserSessionLock = NSLock()
|
||||
private nonisolated(unsafe) var addUnderlyingReceivedUserSession: UserSessionProtocol?
|
||||
var addReceivedUserSession: UserSessionProtocol? {
|
||||
get { addReceivedUserSessionLock.withLock { addUnderlyingReceivedUserSession } }
|
||||
set { addReceivedUserSessionLock.withLock { addUnderlyingReceivedUserSession = newValue } }
|
||||
}
|
||||
private let addReceivedInvocationsLock = NSLock()
|
||||
private nonisolated(unsafe) var addUnderlyingReceivedInvocations: [UserSessionProtocol] = []
|
||||
var addReceivedInvocations: [UserSessionProtocol] {
|
||||
get { addReceivedInvocationsLock.withLock { addUnderlyingReceivedInvocations } }
|
||||
set { addReceivedInvocationsLock.withLock { addUnderlyingReceivedInvocations = newValue } }
|
||||
}
|
||||
nonisolated(unsafe) var addClosure: ((UserSessionProtocol) -> Void)?
|
||||
|
||||
func add(_ userSession: UserSessionProtocol) {
|
||||
addCallsCountLock.withLock { addUnderlyingCallsCount += 1 }
|
||||
addReceivedUserSession = userSession
|
||||
addReceivedInvocationsLock.withLock { addUnderlyingReceivedInvocations.append(userSession) }
|
||||
addClosure?(userSession)
|
||||
}
|
||||
//MARK: - remove
|
||||
|
||||
private let removeUserIDCallsCountLock = NSLock()
|
||||
private nonisolated(unsafe) var removeUserIDUnderlyingCallsCount = 0
|
||||
var removeUserIDCallsCount: Int {
|
||||
get { removeUserIDCallsCountLock.withLock { removeUserIDUnderlyingCallsCount } }
|
||||
set { removeUserIDCallsCountLock.withLock { removeUserIDUnderlyingCallsCount = newValue } }
|
||||
}
|
||||
var removeUserIDCalled: Bool {
|
||||
return removeUserIDCallsCount > 0
|
||||
}
|
||||
private let removeUserIDReceivedUserIDLock = NSLock()
|
||||
private nonisolated(unsafe) var removeUserIDUnderlyingReceivedUserID: String?
|
||||
var removeUserIDReceivedUserID: String? {
|
||||
get { removeUserIDReceivedUserIDLock.withLock { removeUserIDUnderlyingReceivedUserID } }
|
||||
set { removeUserIDReceivedUserIDLock.withLock { removeUserIDUnderlyingReceivedUserID = newValue } }
|
||||
}
|
||||
private let removeUserIDReceivedInvocationsLock = NSLock()
|
||||
private nonisolated(unsafe) var removeUserIDUnderlyingReceivedInvocations: [String] = []
|
||||
var removeUserIDReceivedInvocations: [String] {
|
||||
get { removeUserIDReceivedInvocationsLock.withLock { removeUserIDUnderlyingReceivedInvocations } }
|
||||
set { removeUserIDReceivedInvocationsLock.withLock { removeUserIDUnderlyingReceivedInvocations = newValue } }
|
||||
}
|
||||
nonisolated(unsafe) var removeUserIDClosure: ((String) -> Void)?
|
||||
|
||||
func remove(userID: String) {
|
||||
removeUserIDCallsCountLock.withLock { removeUserIDUnderlyingCallsCount += 1 }
|
||||
removeUserIDReceivedUserID = userID
|
||||
removeUserIDReceivedInvocationsLock.withLock { removeUserIDUnderlyingReceivedInvocations.append(userID) }
|
||||
removeUserIDClosure?(userID)
|
||||
}
|
||||
//MARK: - reset
|
||||
|
||||
private let resetCallsCountLock = NSLock()
|
||||
private nonisolated(unsafe) var resetUnderlyingCallsCount = 0
|
||||
var resetCallsCount: Int {
|
||||
get { resetCallsCountLock.withLock { resetUnderlyingCallsCount } }
|
||||
set { resetCallsCountLock.withLock { resetUnderlyingCallsCount = newValue } }
|
||||
}
|
||||
var resetCalled: Bool {
|
||||
return resetCallsCount > 0
|
||||
}
|
||||
nonisolated(unsafe) var resetClosure: (() -> Void)?
|
||||
|
||||
func reset() {
|
||||
resetCallsCountLock.withLock { resetUnderlyingCallsCount += 1 }
|
||||
resetClosure?()
|
||||
}
|
||||
}
|
||||
nonisolated class UserSessionMock: UserSessionProtocol, @unchecked Sendable {
|
||||
var clientProxy: ClientProxyProtocol {
|
||||
get { return underlyingClientProxy }
|
||||
@@ -14881,30 +15040,44 @@ nonisolated class UserSessionStoreMock: UserSessionStoreProtocol, @unchecked Sen
|
||||
}
|
||||
//MARK: - restoreUserSession
|
||||
|
||||
private let restoreUserSessionCallsCountLock = NSLock()
|
||||
private nonisolated(unsafe) var restoreUserSessionUnderlyingCallsCount = 0
|
||||
var restoreUserSessionCallsCount: Int {
|
||||
get { restoreUserSessionCallsCountLock.withLock { restoreUserSessionUnderlyingCallsCount } }
|
||||
set { restoreUserSessionCallsCountLock.withLock { restoreUserSessionUnderlyingCallsCount = newValue } }
|
||||
private let restoreUserSessionUserIDCallsCountLock = NSLock()
|
||||
private nonisolated(unsafe) var restoreUserSessionUserIDUnderlyingCallsCount = 0
|
||||
var restoreUserSessionUserIDCallsCount: Int {
|
||||
get { restoreUserSessionUserIDCallsCountLock.withLock { restoreUserSessionUserIDUnderlyingCallsCount } }
|
||||
set { restoreUserSessionUserIDCallsCountLock.withLock { restoreUserSessionUserIDUnderlyingCallsCount = newValue } }
|
||||
}
|
||||
var restoreUserSessionCalled: Bool {
|
||||
return restoreUserSessionCallsCount > 0
|
||||
var restoreUserSessionUserIDCalled: Bool {
|
||||
return restoreUserSessionUserIDCallsCount > 0
|
||||
}
|
||||
private let restoreUserSessionUserIDReceivedUserIDLock = NSLock()
|
||||
private nonisolated(unsafe) var restoreUserSessionUserIDUnderlyingReceivedUserID: String?
|
||||
var restoreUserSessionUserIDReceivedUserID: String? {
|
||||
get { restoreUserSessionUserIDReceivedUserIDLock.withLock { restoreUserSessionUserIDUnderlyingReceivedUserID } }
|
||||
set { restoreUserSessionUserIDReceivedUserIDLock.withLock { restoreUserSessionUserIDUnderlyingReceivedUserID = newValue } }
|
||||
}
|
||||
private let restoreUserSessionUserIDReceivedInvocationsLock = NSLock()
|
||||
private nonisolated(unsafe) var restoreUserSessionUserIDUnderlyingReceivedInvocations: [String] = []
|
||||
var restoreUserSessionUserIDReceivedInvocations: [String] {
|
||||
get { restoreUserSessionUserIDReceivedInvocationsLock.withLock { restoreUserSessionUserIDUnderlyingReceivedInvocations } }
|
||||
set { restoreUserSessionUserIDReceivedInvocationsLock.withLock { restoreUserSessionUserIDUnderlyingReceivedInvocations = newValue } }
|
||||
}
|
||||
|
||||
private let restoreUserSessionReturnValueLock = NSLock()
|
||||
private nonisolated(unsafe) var restoreUserSessionUnderlyingReturnValue: Result<UserSessionProtocol, UserSessionStoreError>!
|
||||
var restoreUserSessionReturnValue: Result<UserSessionProtocol, UserSessionStoreError>! {
|
||||
get { restoreUserSessionReturnValueLock.withLock { restoreUserSessionUnderlyingReturnValue } }
|
||||
set { restoreUserSessionReturnValueLock.withLock { restoreUserSessionUnderlyingReturnValue = newValue } }
|
||||
private let restoreUserSessionUserIDReturnValueLock = NSLock()
|
||||
private nonisolated(unsafe) var restoreUserSessionUserIDUnderlyingReturnValue: Result<UserSessionProtocol, UserSessionStoreError>!
|
||||
var restoreUserSessionUserIDReturnValue: Result<UserSessionProtocol, UserSessionStoreError>! {
|
||||
get { restoreUserSessionUserIDReturnValueLock.withLock { restoreUserSessionUserIDUnderlyingReturnValue } }
|
||||
set { restoreUserSessionUserIDReturnValueLock.withLock { restoreUserSessionUserIDUnderlyingReturnValue = newValue } }
|
||||
}
|
||||
nonisolated(unsafe) var restoreUserSessionClosure: (() async -> Result<UserSessionProtocol, UserSessionStoreError>)?
|
||||
nonisolated(unsafe) var restoreUserSessionUserIDClosure: ((String) async -> Result<UserSessionProtocol, UserSessionStoreError>)?
|
||||
|
||||
@concurrent func restoreUserSession() async -> Result<UserSessionProtocol, UserSessionStoreError> {
|
||||
restoreUserSessionCallsCountLock.withLock { restoreUserSessionUnderlyingCallsCount += 1 }
|
||||
if let restoreUserSessionClosure = restoreUserSessionClosure {
|
||||
return await restoreUserSessionClosure()
|
||||
@concurrent func restoreUserSession(userID: String) async -> Result<UserSessionProtocol, UserSessionStoreError> {
|
||||
restoreUserSessionUserIDCallsCountLock.withLock { restoreUserSessionUserIDUnderlyingCallsCount += 1 }
|
||||
restoreUserSessionUserIDReceivedUserID = userID
|
||||
restoreUserSessionUserIDReceivedInvocationsLock.withLock { restoreUserSessionUserIDUnderlyingReceivedInvocations.append(userID) }
|
||||
if let restoreUserSessionUserIDClosure = restoreUserSessionUserIDClosure {
|
||||
return await restoreUserSessionUserIDClosure(userID)
|
||||
} else {
|
||||
return restoreUserSessionReturnValue
|
||||
return restoreUserSessionUserIDReturnValue
|
||||
}
|
||||
}
|
||||
//MARK: - userSession
|
||||
|
||||
Reference in New Issue
Block a user