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
@@ -18,49 +18,50 @@ import Foundation
struct UserSessionListItemViewDataFactory {
func create(from session: UserSessionInfo) -> UserSessionListItemViewData {
let sessionName = UserSessionNameFormatter.sessionName(deviceType: session.deviceType,
sessionDisplayName: session.name)
let sessionDetails = buildSessionDetails(isVerified: session.isVerified,
lastActivityDate: session.lastSeenTimestamp,
isActive: session.isActive)
let deviceAvatarViewData = DeviceAvatarViewData(deviceType: session.deviceType,
isVerified: session.isVerified)
return UserSessionListItemViewData(sessionId: session.id,
func create(from sessionInfo: UserSessionInfo) -> UserSessionListItemViewData {
let sessionName = UserSessionNameFormatter.sessionName(deviceType: sessionInfo.deviceType,
sessionDisplayName: sessionInfo.name)
let sessionDetails = buildSessionDetails(sessionInfo: sessionInfo)
let deviceAvatarViewData = DeviceAvatarViewData(deviceType: sessionInfo.deviceType,
isVerified: sessionInfo.isVerified)
return UserSessionListItemViewData(sessionId: sessionInfo.id,
sessionName: sessionName,
sessionDetails: sessionDetails,
highlightSessionDetails: sessionInfo.isCurrent,
deviceAvatarViewData: deviceAvatarViewData,
sessionDetailsIcon: getSessionDetailsIcon(isActive: session.isActive))
sessionDetailsIcon: getSessionDetailsIcon(isActive: sessionInfo.isActive))
}
private func buildSessionDetails(isVerified: Bool, lastActivityDate: TimeInterval?, isActive: Bool) -> String {
if isActive {
return activeSessionDetails(isVerified: isVerified, lastActivityDate: lastActivityDate)
private func buildSessionDetails(sessionInfo: UserSessionInfo) -> String {
if sessionInfo.isActive {
return activeSessionDetails(sessionInfo: sessionInfo)
} else {
return inactiveSessionDetails(lastActivityDate: lastActivityDate)
return inactiveSessionDetails(sessionInfo: sessionInfo)
}
}
private func inactiveSessionDetails(lastActivityDate: TimeInterval?) -> String {
if let lastActivityDate = lastActivityDate {
private func inactiveSessionDetails(sessionInfo: UserSessionInfo) -> String {
if let lastActivityDate = sessionInfo.lastSeenTimestamp {
let lastActivityDateString = InactiveUserSessionLastActivityFormatter.lastActivityDateString(from: lastActivityDate)
return VectorL10n.userInactiveSessionItemWithDate(lastActivityDateString)
}
return VectorL10n.userInactiveSessionItem
}
private func activeSessionDetails(isVerified: Bool, lastActivityDate: TimeInterval?) -> String {
private func activeSessionDetails(sessionInfo: UserSessionInfo) -> String {
let sessionDetailsString: String
let sessionStatusText = isVerified ? VectorL10n.userSessionVerifiedShort : VectorL10n.userSessionUnverifiedShort
let sessionStatusText = sessionInfo.isVerified ? VectorL10n.userSessionVerifiedShort : VectorL10n.userSessionUnverifiedShort
var lastActivityDateString: String?
if let lastActivityDate = lastActivityDate {
if let lastActivityDate = sessionInfo.lastSeenTimestamp {
lastActivityDateString = UserSessionLastActivityFormatter.lastActivityDateString(from: lastActivityDate)
}
if let lastActivityDateString = lastActivityDateString, lastActivityDateString.isEmpty == false {
if sessionInfo.isCurrent {
sessionDetailsString = VectorL10n.userOtherSessionUnverifiedCurrentSessionDetails(sessionStatusText)
} else if let lastActivityDateString = lastActivityDateString, lastActivityDateString.isEmpty == false {
sessionDetailsString = VectorL10n.userSessionItemDetails(sessionStatusText, lastActivityDateString)
} else {
sessionDetailsString = sessionStatusText