diff --git a/Ring/AccessibilityIdentifiers.swift b/Ring/AccessibilityIdentifiers.swift index 342ed209f8b2d3932a69689cd467f32045431fd1..ab6f56d8613470cc378598c422a0a34a0dc8704d 100644 --- a/Ring/AccessibilityIdentifiers.swift +++ b/Ring/AccessibilityIdentifiers.swift @@ -47,4 +47,5 @@ struct SmartListAccessibilityIdentifiers { static let contactPicker = "contactPicker" static let accountsListTitle = "accountsListTitle" static let closeAccountsList = "closeAccountsList" + static let closeAboutView = "closeAboutView" } diff --git a/Ring/Ring/About/AboutSwiftUIView.swift b/Ring/Ring/About/AboutSwiftUIView.swift index 57ae35a95bb17a2a0b00047c25c917df564054bf..1719daafcf7cac243c19c588ae782bf5da414ff9 100644 --- a/Ring/Ring/About/AboutSwiftUIView.swift +++ b/Ring/Ring/About/AboutSwiftUIView.swift @@ -24,10 +24,25 @@ struct AboutSwiftUIView: View { let padding: CGFloat = 20 var body: some View { VStack(spacing: padding) { - Image("jami_gnupackage") - .resizable() - .aspectRatio(contentMode: .fit) - .frame(height: 30) + ZStack { + HStack { + Spacer() // Push the close button to the right + CloseButton( + action: { [weak dismissHandler] in + dismissHandler?.dismissView() + }, + accessibilityIdentifier: SmartListAccessibilityIdentifiers.closeAboutView + ) + } + + Image("jami_gnupackage") + .resizable() + .aspectRatio(contentMode: .fit) + .frame(height: 30) + .accessibilityLabel(L10n.Accessibility.aboutJamiTitle) + .frame(maxWidth: .infinity, alignment: .center) // This will center the image horizontally + } + ScrollView { VStack(alignment: .leading, spacing: padding) { VStack(alignment: .center) { @@ -67,6 +82,7 @@ struct AboutSwiftUIView: View { .cornerRadius(8) } } + .padding(.horizontal) HStack { Spacer() Button(action: { @@ -82,7 +98,8 @@ struct AboutSwiftUIView: View { Text(model.feedbackLabel) }) } + .padding(.horizontal) } - .padding() + .padding(.vertical) } } diff --git a/Ring/Ring/Constants/Generated/Strings.swift b/Ring/Ring/Constants/Generated/Strings.swift index 8c8cdc74af804ce708175207bb71bdc27ea6a6a0..3440e3a202560b73ad4cb5e86d2e5cc0e3e8f641 100644 --- a/Ring/Ring/Constants/Generated/Strings.swift +++ b/Ring/Ring/Constants/Generated/Strings.swift @@ -29,6 +29,8 @@ internal enum L10n { internal static let noWarranty2 = L10n.tr("Localizable", "aboutJami.noWarranty2", fallback: "version 3 or later for details.") } internal enum Accessibility { + /// About Jami + internal static let aboutJamiTitle = L10n.tr("Localizable", "accessibility.aboutJamiTitle", fallback: "About Jami") /// Close internal static let close = L10n.tr("Localizable", "accessibility.close", fallback: "Close") /// Add account @@ -39,6 +41,8 @@ internal enum L10n { } /// Switch account internal static let smartListSwitchAccounts = L10n.tr("Localizable", "accessibility.smartListSwitchAccounts", fallback: "Switch account") + /// Welcome to Jami + internal static let welcomeToJamiTitle = L10n.tr("Localizable", "accessibility.welcomeToJamiTitle", fallback: "Welcome to Jami") } internal enum Account { /// Account Status diff --git a/Ring/Ring/Extensions/View+Helpers.swift b/Ring/Ring/Extensions/View+Helpers.swift index 3b929bda4fa28d2ed269d34e5000d7519dd1ca95..35f2f9ed403c5c33d6ca028e05cf353aae9a8026 100644 --- a/Ring/Ring/Extensions/View+Helpers.swift +++ b/Ring/Ring/Extensions/View+Helpers.swift @@ -243,3 +243,23 @@ extension View { self.modifier(OptionalListSectionSpacing(spacing: spacing)) } } + +struct CloseButton: View { + let action: () -> Void + let accessibilityIdentifier: String + + var body: some View { + Button(action: { + action() + }, label: { + Image(systemName: "xmark") + .font(.system(size: 12, weight: .bold)) + .foregroundColor(.black) + .padding(10) // Increases tap area + .background(Circle().fill(Color.gray.opacity(0.4))) + .accessibilityIdentifier(accessibilityIdentifier) + .accessibilityLabel(L10n.Accessibility.close) + .padding() + }) + } +} diff --git a/Ring/Ring/Features/Conversations/SmartList/SwiftUI/Views/AccountLists.swift b/Ring/Ring/Features/Conversations/SmartList/SwiftUI/Views/AccountLists.swift index 6f1ec3c0797c649c0beb2f6f03d46bafbdd7b49b..7ed2218fc502ebc2c26cab9ee85620e4848e0d01 100644 --- a/Ring/Ring/Features/Conversations/SmartList/SwiftUI/Views/AccountLists.swift +++ b/Ring/Ring/Features/Conversations/SmartList/SwiftUI/Views/AccountLists.swift @@ -51,18 +51,10 @@ struct AccountLists: View { HStack { Spacer() // Pushes the button to the right - Button(action: { - accountSelectedCallback() - }, label: { - Image(systemName: "xmark") - .font(.system(size: 12, weight: .bold)) - .foregroundColor(.black) - .padding(10) // Increases tap area - .background(Circle().fill(Color.gray.opacity(0.4))) - .accessibilityIdentifier(SmartListAccessibilityIdentifiers.closeAccountsList) - .accessibilityLabel(L10n.Accessibility.close) - .padding() - }) + CloseButton( + action: accountSelectedCallback, + accessibilityIdentifier: SmartListAccessibilityIdentifiers.closeAccountsList + ) } } diff --git a/Ring/Ring/Features/Walkthrough/Views/WelcomeView.swift b/Ring/Ring/Features/Walkthrough/Views/WelcomeView.swift index d4c77d89c4d227a06f15d4d31ab72e1cecfd1c84..8dbab5c56d3eaa7ad51a3176fad411ee3741d31a 100644 --- a/Ring/Ring/Features/Walkthrough/Views/WelcomeView.swift +++ b/Ring/Ring/Features/Walkthrough/Views/WelcomeView.swift @@ -215,6 +215,8 @@ struct HeaderView: View { .resizable() .aspectRatio(contentMode: .fit) .frame(height: 80) + .accessibilityLabel(L10n.Accessibility.welcomeToJamiTitle) + .accessibilityHidden(true) Text(L10n.Welcome.title) .font(.headline) .multilineTextAlignment(.center) @@ -347,6 +349,7 @@ extension View { .ignoresSafeArea() .scaledToFill() .accessibilityIdentifier(AccessibilityIdentifiers.welcomeWindow) + .accessibilityHidden(true) ) } } diff --git a/Ring/Ring/Resources/en.lproj/Localizable.strings b/Ring/Ring/Resources/en.lproj/Localizable.strings index 59eac7dd222c20cb5dc44cb2670e8994c7701fb1..1b755352c39ce27b2ac9ef717ceb204fee91837e 100644 --- a/Ring/Ring/Resources/en.lproj/Localizable.strings +++ b/Ring/Ring/Resources/en.lproj/Localizable.strings @@ -510,3 +510,5 @@ "accessibility.smartListSwitchAccounts" = "Switch account"; "accessibility.smartListConnectedAs" = "Your current account is %@"; "accessibility.smartListAddAccount" = "Add account"; +"accessibility.aboutJamiTitle" = "About Jami"; +"accessibility.welcomeToJamiTitle" = "Welcome to Jami";