User other sessions screen template

This commit is contained in:
Aleksandrs Proskurins
2022-09-30 16:34:41 +03:00
parent 3d9200f34a
commit 20200fd22a
19 changed files with 536 additions and 27 deletions
@@ -52,16 +52,12 @@ final class UserSessionsOverviewCoordinator: Coordinator, Presentable {
MXLog.debug("[UserSessionsOverviewCoordinator] UserSessionsOverviewViewModel did complete with result: \(result).")
switch result {
case .showAllUnverifiedSessions:
self.showAllUnverifiedSessions()
case .showAllInactiveSessions:
self.showAllInactiveSessions()
case let .showOtherSessions(sessions: sessions, filter: filter):
self.showOtherSessions(sessions: sessions, filterBy: filter)
case .verifyCurrentSession:
self.startVerifyCurrentSession()
case let .showCurrentSessionOverview(session):
self.showCurrentSessionOverview(session: session)
case .showAllOtherSessions:
self.showAllOtherSessions()
case let .showUserSessionOverview(session):
self.showUserSessionOverview(session: session)
}
@@ -87,16 +83,12 @@ final class UserSessionsOverviewCoordinator: Coordinator, Presentable {
loadingIndicator = nil
}
private func showAllUnverifiedSessions() {
// TODO:
}
private func showAllInactiveSessions() {
// TODO:
private func showOtherSessions(sessions: [UserSessionInfo], filterBy filter: OtherUserSessionsFilter) {
completion?(.openOtherSessions(sessions: sessions, filter: filter))
}
private func startVerifyCurrentSession() {
// TODO:
// TODO:openSessionOverview
}
private func showCurrentSessionOverview(session: UserSessionInfo) {
@@ -106,8 +98,5 @@ final class UserSessionsOverviewCoordinator: Coordinator, Presentable {
private func showUserSessionOverview(session: UserSessionInfo) {
completion?(.openSessionOverview(session: session))
}
private func showAllOtherSessions() {
// TODO:
}
}
@@ -20,16 +20,15 @@ import Foundation
enum UserSessionsOverviewCoordinatorResult {
case openSessionOverview(session: UserSessionInfo)
case openOtherSessions(sessions: [UserSessionInfo], filter: OtherUserSessionsFilter)
}
// MARK: View model
enum UserSessionsOverviewViewModelResult {
case showAllUnverifiedSessions
case showAllInactiveSessions
case showOtherSessions(sessions: [UserSessionInfo], filter: OtherUserSessionsFilter)
case verifyCurrentSession
case showCurrentSessionOverview(session: UserSessionInfo)
case showAllOtherSessions
case showUserSessionOverview(session: UserSessionInfo)
}
@@ -46,11 +46,11 @@ class UserSessionsOverviewViewModel: UserSessionsOverviewViewModelType, UserSess
}
completion?(.showCurrentSessionOverview(session: currentSessionInfo))
case .viewAllUnverifiedSessions:
completion?(.showAllUnverifiedSessions)
showSessions(filteredBy: .unverified)
case .viewAllInactiveSessions:
completion?(.showAllInactiveSessions)
showSessions(filteredBy: .inactive)
case .viewAllOtherSessions:
completion?(.showAllOtherSessions)
showSessions(filteredBy: .all)
case .tapUserSession(let sessionId):
guard let session = userSessionsOverviewService.sessionForIdentifier(sessionId) else {
assertionFailure("Missing session info")
@@ -91,9 +91,14 @@ class UserSessionsOverviewViewModel: UserSessionsOverviewViewModelType, UserSess
}
}
}
private func showSessions(filteredBy filter: OtherUserSessionsFilter) {
completion?(.showOtherSessions(sessions: userSessionsOverviewService.overviewData.otherSessions,
filter: filter))
}
}
private extension Collection where Element == UserSessionInfo {
extension Collection where Element == UserSessionInfo {
func asViewData() -> [UserSessionListItemViewData] {
map { UserSessionListItemViewData(session: $0) }
}
@@ -17,7 +17,7 @@
import Foundation
/// View data for UserSessionListItem
struct UserSessionListItemViewData: Identifiable {
struct UserSessionListItemViewData: Identifiable, Hashable {
private static let userSessionNameFormatter = UserSessionNameFormatter()
private static let lastActivityDateFormatter = UserSessionLastActivityFormatter()