Unverified sessions screen

This commit is contained in:
Aleksandrs Proskurins
2022-10-05 16:01:17 +03:00
parent f7d9946dd2
commit 2d09243139
15 changed files with 83 additions and 41 deletions

View File

@@ -24,6 +24,7 @@ class UserSessionsOverviewService: UserSessionsOverviewServiceProtocol {
private let dataProvider: UserSessionsDataProviderProtocol
private(set) var overviewData: UserSessionsOverviewData
private(set) var sessionInfos: [UserSessionInfo]
init(dataProvider: UserSessionsDataProviderProtocol) {
self.dataProvider = dataProvider
@@ -32,7 +33,7 @@ class UserSessionsOverviewService: UserSessionsOverviewServiceProtocol {
unverifiedSessions: [],
inactiveSessions: [],
otherSessions: [])
sessionInfos = []
setupInitialOverviewData()
}
@@ -42,7 +43,8 @@ class UserSessionsOverviewService: UserSessionsOverviewServiceProtocol {
dataProvider.devices { response in
switch response {
case .success(let devices):
self.overviewData = self.sessionsOverviewData(from: devices)
self.sessionInfos = self.sortAndConvertDevices(devices: devices)
self.overviewData = self.sessionsOverviewData(from: self.sessionInfos)
completion(.success(self.overviewData))
case .failure(let error):
completion(.failure(error))
@@ -78,16 +80,18 @@ class UserSessionsOverviewService: UserSessionsOverviewServiceProtocol {
}
return sessionInfo(from: device, isCurrentSession: true)
}
private func sessionsOverviewData(from devices: [MXDevice]) -> UserSessionsOverviewData {
let allSessions = devices
private func sortAndConvertDevices(devices: [MXDevice]) -> [UserSessionInfo] {
devices
.sorted { $0.lastSeenTs > $1.lastSeenTs }
.map { sessionInfo(from: $0, isCurrentSession: $0.deviceId == dataProvider.myDeviceId) }
return UserSessionsOverviewData(currentSession: allSessions.filter(\.isCurrent).first,
unverifiedSessions: allSessions.filter { !$0.isVerified },
inactiveSessions: allSessions.filter { !$0.isActive },
otherSessions: allSessions.filter { !$0.isCurrent })
}
private func sessionsOverviewData(from allSessions: [UserSessionInfo]) -> UserSessionsOverviewData {
UserSessionsOverviewData(currentSession: allSessions.filter(\.isCurrent).first,
unverifiedSessions: allSessions.filter { !$0.isVerified },
inactiveSessions: allSessions.filter { !$0.isActive },
otherSessions: allSessions.filter { !$0.isCurrent })
}
private func sessionInfo(from device: MXDevice, isCurrentSession: Bool) -> UserSessionInfo {