diff --git a/Riot/Assets/en.lproj/Untranslated.strings b/Riot/Assets/en.lproj/Untranslated.strings index 2f7e29d1d..cbac2d630 100644 --- a/Riot/Assets/en.lproj/Untranslated.strings +++ b/Riot/Assets/en.lproj/Untranslated.strings @@ -33,6 +33,7 @@ "onboarding_avatar_title" = "Add a profile picture"; "onboarding_avatar_message" = "You can change this anytime."; - +"onboarding_avatar_placeholder_accessibility_label" = "Profile picture, %@"; +"onboarding_avatar_image_accessibility_label" = "Profile picture, image"; "image_picker_action_files" = "Choose from files"; diff --git a/Riot/Generated/UntranslatedStrings.swift b/Riot/Generated/UntranslatedStrings.swift index 6531aaf96..1d5cb0301 100644 --- a/Riot/Generated/UntranslatedStrings.swift +++ b/Riot/Generated/UntranslatedStrings.swift @@ -14,10 +14,18 @@ public extension VectorL10n { static var imagePickerActionFiles: String { return VectorL10n.tr("Untranslated", "image_picker_action_files") } + /// Profile picture, image + static var onboardingAvatarImageAccessibilityLabel: String { + return VectorL10n.tr("Untranslated", "onboarding_avatar_image_accessibility_label") + } /// You can change this anytime. static var onboardingAvatarMessage: String { return VectorL10n.tr("Untranslated", "onboarding_avatar_message") } + /// Profile picture, %@ + public static func onboardingAvatarPlaceholderAccessibilityLabel(_ p1: String) -> String { + return VectorL10n.tr("Untranslated", "onboarding_avatar_placeholder_accessibility_label", p1) + } /// Add a profile picture static var onboardingAvatarTitle: String { return VectorL10n.tr("Untranslated", "onboarding_avatar_title") diff --git a/RiotSwiftUI/Modules/Onboarding/Avatar/OnboardingAvatarModels.swift b/RiotSwiftUI/Modules/Onboarding/Avatar/OnboardingAvatarModels.swift index 689aa7425..aced25fad 100644 --- a/RiotSwiftUI/Modules/Onboarding/Avatar/OnboardingAvatarModels.swift +++ b/RiotSwiftUI/Modules/Onboarding/Avatar/OnboardingAvatarModels.swift @@ -36,6 +36,10 @@ struct OnboardingAvatarViewState: BindableState { var buttonImage: ImageAsset { avatar == nil ? Asset.Images.onboardingAvatarCamera : Asset.Images.onboardingAvatarEdit } + + var avatarAccessibilityLabel: String { + avatar == nil ? VectorL10n.onboardingAvatarPlaceholderAccessibilityLabel(placeholderAvatarLetter) : VectorL10n.onboardingAvatarImageAccessibilityLabel + } } struct OnboardingAvatarBindings { diff --git a/RiotSwiftUI/Modules/Onboarding/Avatar/View/OnboardingAvatarScreen.swift b/RiotSwiftUI/Modules/Onboarding/Avatar/View/OnboardingAvatarScreen.swift index faab7e89f..b13d890c1 100644 --- a/RiotSwiftUI/Modules/Onboarding/Avatar/View/OnboardingAvatarScreen.swift +++ b/RiotSwiftUI/Modules/Onboarding/Avatar/View/OnboardingAvatarScreen.swift @@ -74,6 +74,9 @@ struct OnboardingAvatarScreen: View { .overlay(cameraButton, alignment: .bottomTrailing) .onTapGesture { isPresentingPickerSelection = true } .actionSheet(isPresented: $isPresentingPickerSelection) { pickerSelectionActionSheet } + .accessibilityElement(children: .ignore) + .accessibilityLabel(viewModel.viewState.avatarAccessibilityLabel) + .accessibilityValue(VectorL10n.accessibilityButtonLabel) } /// The button to indicate the user can tap to select an avatar