mirror of
https://gitlab.opencode.de/bwi/bundesmessenger/clients/bundesmessenger-ios.git
synced 2026-04-23 18:12:44 +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:
@@ -26,22 +26,6 @@ struct UserSessionCardView: View {
|
||||
var onViewDetailsAction: ((String) -> Void)?
|
||||
var onLearnMoreAction: (() -> Void)?
|
||||
|
||||
private var verificationStatusImageName: String {
|
||||
viewData.isVerified ? Asset.Images.userSessionVerified.name : Asset.Images.userSessionUnverified.name
|
||||
}
|
||||
|
||||
private var verificationStatusText: String {
|
||||
viewData.isVerified ? VectorL10n.userSessionVerified : VectorL10n.userSessionUnverified
|
||||
}
|
||||
|
||||
private var verificationStatusColor: Color {
|
||||
viewData.isVerified ? theme.colors.accent : theme.colors.alert
|
||||
}
|
||||
|
||||
private var verificationStatusAdditionalInfoText: String {
|
||||
viewData.isVerified ? VectorL10n.userSessionVerifiedAdditionalInfo : VectorL10n.userSessionUnverifiedAdditionalInfo
|
||||
}
|
||||
|
||||
private var backgroundShape: RoundedRectangle {
|
||||
RoundedRectangle(cornerRadius: 8)
|
||||
}
|
||||
@@ -53,27 +37,25 @@ struct UserSessionCardView: View {
|
||||
var body: some View {
|
||||
VStack(alignment: .center, spacing: 12) {
|
||||
DeviceAvatarView(viewData: viewData.deviceAvatarViewData)
|
||||
.accessibilityHidden(true)
|
||||
|
||||
Text(viewData.sessionName)
|
||||
.font(theme.fonts.headline)
|
||||
.foregroundColor(theme.colors.primaryContent)
|
||||
.multilineTextAlignment(.center)
|
||||
|
||||
HStack {
|
||||
Image(verificationStatusImageName)
|
||||
Text(verificationStatusText)
|
||||
.font(theme.fonts.subheadline)
|
||||
.foregroundColor(verificationStatusColor)
|
||||
.multilineTextAlignment(.center)
|
||||
}
|
||||
Label(viewData.verificationStatusText, image: viewData.verificationStatusImageName)
|
||||
.font(theme.fonts.subheadline)
|
||||
.foregroundColor(theme.colors[keyPath: viewData.verificationStatusColor])
|
||||
.multilineTextAlignment(.center)
|
||||
|
||||
if viewData.isCurrentSessionDisplayMode {
|
||||
Text(verificationStatusAdditionalInfoText)
|
||||
Text(viewData.verificationStatusAdditionalInfoText)
|
||||
.font(theme.fonts.footnote)
|
||||
.foregroundColor(theme.colors.secondaryContent)
|
||||
.multilineTextAlignment(.center)
|
||||
} else {
|
||||
InlineTextButton(verificationStatusAdditionalInfoText + " %@", tappableText: VectorL10n.userSessionLearnMore) {
|
||||
InlineTextButton(viewData.verificationStatusAdditionalInfoText + " %@", tappableText: VectorL10n.userSessionLearnMore) {
|
||||
onLearnMoreAction?()
|
||||
}
|
||||
.font(theme.fonts.footnote)
|
||||
@@ -99,7 +81,7 @@ struct UserSessionCardView: View {
|
||||
}
|
||||
}
|
||||
|
||||
if viewData.isVerified == false {
|
||||
if viewData.verificationState != .verified {
|
||||
Button {
|
||||
onVerifyAction?(viewData.sessionId)
|
||||
} label: {
|
||||
@@ -137,11 +119,11 @@ struct UserSessionCardViewPreview: View {
|
||||
|
||||
let viewData: UserSessionCardViewData
|
||||
|
||||
init(isCurrent: Bool = false) {
|
||||
init(isCurrent: Bool = false, verificationState: UserSessionInfo.VerificationState = .unverified) {
|
||||
let sessionInfo = UserSessionInfo(id: "alice",
|
||||
name: "iOS",
|
||||
deviceType: .mobile,
|
||||
isVerified: false,
|
||||
verificationState: verificationState,
|
||||
lastSeenIP: "10.0.0.10",
|
||||
lastSeenTimestamp: nil,
|
||||
applicationName: "Element iOS",
|
||||
@@ -174,6 +156,13 @@ struct UserSessionCardView_Previews: PreviewProvider {
|
||||
UserSessionCardViewPreview(isCurrent: true).theme(.dark).preferredColorScheme(.dark)
|
||||
UserSessionCardViewPreview().theme(.light).preferredColorScheme(.light)
|
||||
UserSessionCardViewPreview().theme(.dark).preferredColorScheme(.dark)
|
||||
|
||||
UserSessionCardViewPreview(isCurrent: true, verificationState: .verified)
|
||||
.theme(.light).preferredColorScheme(.light)
|
||||
UserSessionCardViewPreview(verificationState: .verified)
|
||||
.theme(.light).preferredColorScheme(.light)
|
||||
UserSessionCardViewPreview(verificationState: .unknown)
|
||||
.theme(.light).preferredColorScheme(.light)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user