mirror of
https://gitlab.opencode.de/bwi/bundesmessenger/clients/bundesmessenger-ios.git
synced 2026-04-21 00:52:43 +02:00
Device Manager: Verify session (#6832)
* Initial implementation * Add verificationState to UserSessionInfo * Listen for changes device changes in the service.
This commit is contained in:
@@ -14,7 +14,8 @@
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
import DesignKit
|
||||
import SwiftUI
|
||||
|
||||
/// View data for UserSessionCardView
|
||||
struct UserSessionCardViewData {
|
||||
@@ -26,7 +27,8 @@ struct UserSessionCardViewData {
|
||||
|
||||
let sessionName: String
|
||||
|
||||
let isVerified: Bool
|
||||
/// The verification state used to render the card with.
|
||||
let verificationState: UserSessionInfo.VerificationState
|
||||
|
||||
let lastActivityDateString: String?
|
||||
|
||||
@@ -37,16 +39,64 @@ struct UserSessionCardViewData {
|
||||
/// Indicate if the current user session is shown and to adpat the layout
|
||||
let isCurrentSessionDisplayMode: Bool
|
||||
|
||||
/// The name of the shield image to show the verification status.
|
||||
var verificationStatusImageName: String {
|
||||
switch verificationState {
|
||||
case .verified:
|
||||
return Asset.Images.userSessionVerified.name
|
||||
case .unverified:
|
||||
return Asset.Images.userSessionUnverified.name
|
||||
case .unknown:
|
||||
return Asset.Images.userSessionVerificationUnknown.name
|
||||
}
|
||||
}
|
||||
|
||||
/// The text to show alongside the verification shield image.
|
||||
var verificationStatusText: String {
|
||||
switch verificationState {
|
||||
case .verified:
|
||||
return VectorL10n.userSessionVerified
|
||||
case .unverified:
|
||||
return VectorL10n.userSessionUnverified
|
||||
case .unknown:
|
||||
return VectorL10n.userSessionVerificationUnknown
|
||||
}
|
||||
}
|
||||
|
||||
/// A key path to the theme colour to use for the verification status text.
|
||||
var verificationStatusColor: KeyPath<ColorSwiftUI, Color> {
|
||||
switch verificationState {
|
||||
case .verified:
|
||||
return \.accent
|
||||
case .unverified:
|
||||
return \.alert
|
||||
case .unknown:
|
||||
return \.secondaryContent
|
||||
}
|
||||
}
|
||||
|
||||
/// Further information to be shown to explain the verification state to the user.
|
||||
var verificationStatusAdditionalInfoText: String {
|
||||
switch verificationState {
|
||||
case .verified:
|
||||
return VectorL10n.userSessionVerifiedAdditionalInfo
|
||||
case .unverified:
|
||||
return VectorL10n.userSessionUnverifiedAdditionalInfo
|
||||
case .unknown:
|
||||
return VectorL10n.userSessionUnverifiedAdditionalInfo
|
||||
}
|
||||
}
|
||||
|
||||
init(sessionId: String,
|
||||
sessionDisplayName: String?,
|
||||
deviceType: DeviceType,
|
||||
isVerified: Bool,
|
||||
verificationState: UserSessionInfo.VerificationState,
|
||||
lastActivityTimestamp: TimeInterval?,
|
||||
lastSeenIP: String?,
|
||||
isCurrentSessionDisplayMode: Bool = false) {
|
||||
self.sessionId = sessionId
|
||||
sessionName = UserSessionNameFormatter.sessionName(deviceType: deviceType, sessionDisplayName: sessionDisplayName)
|
||||
self.isVerified = isVerified
|
||||
self.verificationState = verificationState
|
||||
|
||||
var lastActivityDateString: String?
|
||||
|
||||
@@ -56,7 +106,7 @@ struct UserSessionCardViewData {
|
||||
|
||||
self.lastActivityDateString = lastActivityDateString
|
||||
lastSeenIPInfo = lastSeenIP
|
||||
deviceAvatarViewData = DeviceAvatarViewData(deviceType: deviceType, isVerified: nil)
|
||||
deviceAvatarViewData = DeviceAvatarViewData(deviceType: deviceType, verificationState: verificationState)
|
||||
|
||||
self.isCurrentSessionDisplayMode = isCurrentSessionDisplayMode
|
||||
}
|
||||
@@ -67,7 +117,7 @@ extension UserSessionCardViewData {
|
||||
self.init(sessionId: sessionInfo.id,
|
||||
sessionDisplayName: sessionInfo.name,
|
||||
deviceType: sessionInfo.deviceType,
|
||||
isVerified: sessionInfo.isVerified,
|
||||
verificationState: sessionInfo.verificationState,
|
||||
lastActivityTimestamp: sessionInfo.lastSeenTimestamp,
|
||||
lastSeenIP: sessionInfo.lastSeenIP,
|
||||
isCurrentSessionDisplayMode: sessionInfo.isCurrent)
|
||||
|
||||
Reference in New Issue
Block a user