mirror of
https://gitlab.opencode.de/bwi/bundesmessenger/clients/bundesmessenger-ios.git
synced 2026-05-04 15:07:43 +02:00
Release 2.0.0
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)
|
||||
}
|
||||
@@ -52,28 +36,26 @@ struct UserSessionCardView: View {
|
||||
|
||||
var body: some View {
|
||||
VStack(alignment: .center, spacing: 12) {
|
||||
DeviceAvatarView(viewData: viewData.deviceAvatarViewData)
|
||||
DeviceAvatarView(viewData: viewData.deviceAvatarViewData, isSelected: false)
|
||||
.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)
|
||||
@@ -83,13 +65,18 @@ struct UserSessionCardView: View {
|
||||
|
||||
if showExtraInformations {
|
||||
VStack(spacing: 2) {
|
||||
if let lastActivityDateString = viewData.lastActivityDateString, lastActivityDateString.isEmpty == false {
|
||||
Text(lastActivityDateString)
|
||||
.font(theme.fonts.footnote)
|
||||
.foregroundColor(theme.colors.secondaryContent)
|
||||
.multilineTextAlignment(.center)
|
||||
HStack {
|
||||
if let lastActivityIcon = viewData.lastActivityIcon {
|
||||
Image(lastActivityIcon)
|
||||
.padding(.leading, 2)
|
||||
}
|
||||
if let lastActivityDateString = viewData.lastActivityDateString, lastActivityDateString.isEmpty == false {
|
||||
Text(lastActivityDateString)
|
||||
.font(theme.fonts.footnote)
|
||||
.foregroundColor(theme.colors.secondaryContent)
|
||||
.multilineTextAlignment(.center)
|
||||
}
|
||||
}
|
||||
|
||||
if let lastSeenIPInfo = viewData.lastSeenIPInfo, lastSeenIPInfo.isEmpty == false {
|
||||
Text(lastSeenIPInfo)
|
||||
.font(theme.fonts.footnote)
|
||||
@@ -99,7 +86,7 @@ struct UserSessionCardView: View {
|
||||
}
|
||||
}
|
||||
|
||||
if viewData.isVerified == false {
|
||||
if viewData.verificationState == .unverified {
|
||||
Button {
|
||||
onVerifyAction?(viewData.sessionId)
|
||||
} label: {
|
||||
@@ -137,23 +124,23 @@ 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,
|
||||
lastSeenIP: "10.0.0.10",
|
||||
lastSeenTimestamp: nil,
|
||||
applicationName: "Element iOS",
|
||||
applicationVersion: "1.0.0",
|
||||
applicationURL: nil,
|
||||
deviceModel: nil,
|
||||
deviceOS: "iOS 15.5",
|
||||
lastSeenIPLocation: nil,
|
||||
clientName: "Element",
|
||||
clientVersion: "1.0.0",
|
||||
isActive: true,
|
||||
isCurrent: isCurrent)
|
||||
name: "iOS",
|
||||
deviceType: .mobile,
|
||||
verificationState: verificationState,
|
||||
lastSeenIP: "10.0.0.10",
|
||||
lastSeenTimestamp: nil,
|
||||
applicationName: "Element iOS",
|
||||
applicationVersion: "1.0.0",
|
||||
applicationURL: nil,
|
||||
deviceModel: nil,
|
||||
deviceOS: "iOS 15.5",
|
||||
lastSeenIPLocation: nil,
|
||||
clientName: "Element",
|
||||
clientVersion: "1.0.0",
|
||||
isActive: true,
|
||||
isCurrent: isCurrent)
|
||||
viewData = UserSessionCardViewData(sessionInfo: sessionInfo)
|
||||
}
|
||||
|
||||
@@ -174,6 +161,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