From d4849a2a799cb31e556751e38d69d6c78785ef7f Mon Sep 17 00:00:00 2001 From: Doug <6060466+pixlwave@users.noreply.github.com> Date: Thu, 23 Jul 2026 09:06:25 +0100 Subject: [PATCH] Remove the requiresExtraAccountSetup badge. (#5921) It is no longer part of the designs, we only badge the item in Settings. --- .../Views/AvatarSettingsButtonLabel.swift | 14 ---------- .../Screens/HomeScreen/HomeScreenModels.swift | 2 -- .../HomeScreen/HomeScreenViewModel.swift | 3 -- .../Screens/HomeScreen/View/HomeScreen.swift | 1 - ...avatarSettingsButtonLabel.iPad-en-GB-0.png | 4 +-- ...vatarSettingsButtonLabel.iPad-pseudo-0.png | 4 +-- ...atarSettingsButtonLabel.iPhone-en-GB-0.png | 4 +-- ...tarSettingsButtonLabel.iPhone-pseudo-0.png | 4 +-- .../Sources/HomeScreenViewModelTests.swift | 28 ++++++++----------- 9 files changed, 20 insertions(+), 44 deletions(-) diff --git a/ElementX/Sources/Other/SwiftUI/Views/AvatarSettingsButtonLabel.swift b/ElementX/Sources/Other/SwiftUI/Views/AvatarSettingsButtonLabel.swift index 5714b0294..5a8d48b58 100644 --- a/ElementX/Sources/Other/SwiftUI/Views/AvatarSettingsButtonLabel.swift +++ b/ElementX/Sources/Other/SwiftUI/Views/AvatarSettingsButtonLabel.swift @@ -10,7 +10,6 @@ import SwiftUI struct AvatarSettingsButtonLabel: View { let userProfile: UserProfile - var requiresExtraAccountSetup = false let mediaProvider: MediaProviderProtocol? var body: some View { @@ -20,7 +19,6 @@ struct AvatarSettingsButtonLabel: View { avatarSize: .user(on: .chats), mediaProvider: mediaProvider) .accessibilityIdentifier(A11yIdentifiers.homeScreen.userAvatar) - .overlayBadge(10, isBadged: requiresExtraAccountSetup) .modifier(StatusEmojiModifier(statusEmoji: userProfile.status.displayed?.emoji)) .geometryGroup() } @@ -61,23 +59,11 @@ struct AvatarSettingsButtonLabel_Previews: PreviewProvider, TestablePreview { static var previews: some View { HStack(spacing: 16) { AvatarSettingsButtonLabel(userProfile: .mockAlice, - requiresExtraAccountSetup: false, - mediaProvider: MediaProviderMock(.init())) - - AvatarSettingsButtonLabel(userProfile: .mockAlice, - requiresExtraAccountSetup: true, mediaProvider: MediaProviderMock(.init())) AvatarSettingsButtonLabel(userProfile: .init(userID: "", avatarURL: .mockMXCUserAvatar, status: .mock(text: "", emoji: "🌴")), - requiresExtraAccountSetup: false, - mediaProvider: MediaProviderMock(.init())) - - AvatarSettingsButtonLabel(userProfile: .init(userID: "", - avatarURL: .mockMXCUserAvatar, - status: .mock(text: "", emoji: "🌴")), - requiresExtraAccountSetup: true, mediaProvider: MediaProviderMock(.init())) } .padding(16) diff --git a/ElementX/Sources/Screens/HomeScreen/HomeScreenModels.swift b/ElementX/Sources/Screens/HomeScreen/HomeScreenModels.swift index 0d9206480..bafe620cc 100644 --- a/ElementX/Sources/Screens/HomeScreen/HomeScreenModels.swift +++ b/ElementX/Sources/Screens/HomeScreen/HomeScreenModels.swift @@ -95,8 +95,6 @@ struct HomeScreenViewState: BindableState { var securityBannerMode = HomeScreenSecurityBannerMode.none var shouldShowNewSoundBanner = false - var requiresExtraAccountSetup = false - var rooms: [HomeScreenRoom] = [] var roomListMode: HomeScreenRoomListMode = .skeletons diff --git a/ElementX/Sources/Screens/HomeScreen/HomeScreenViewModel.swift b/ElementX/Sources/Screens/HomeScreen/HomeScreenViewModel.swift index 76a843f1a..3200d3dbf 100644 --- a/ElementX/Sources/Screens/HomeScreen/HomeScreenViewModel.swift +++ b/ElementX/Sources/Screens/HomeScreen/HomeScreenViewModel.swift @@ -65,16 +65,13 @@ class HomeScreenViewModel: HomeScreenViewModelType, HomeScreenViewModelProtocol switch securityState.recoveryState { case .disabled: - state.requiresExtraAccountSetup = true if !state.securityBannerMode.isDismissed { state.securityBannerMode = .show(.setUpRecovery) } case .incomplete: - state.requiresExtraAccountSetup = true state.securityBannerMode = .show(.recoveryOutOfSync) default: state.securityBannerMode = .none - state.requiresExtraAccountSetup = false } } .store(in: &cancellables) diff --git a/ElementX/Sources/Screens/HomeScreen/View/HomeScreen.swift b/ElementX/Sources/Screens/HomeScreen/View/HomeScreen.swift index c31770a3a..7c72954f6 100644 --- a/ElementX/Sources/Screens/HomeScreen/View/HomeScreen.swift +++ b/ElementX/Sources/Screens/HomeScreen/View/HomeScreen.swift @@ -86,7 +86,6 @@ struct HomeScreen: View { context.send(viewAction: .showSettings) } label: { AvatarSettingsButtonLabel(userProfile: context.viewState.userProfile, - requiresExtraAccountSetup: context.viewState.requiresExtraAccountSetup, mediaProvider: context.mediaProvider) } .accessibilityLabel(L10n.commonSettings) diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/avatarSettingsButtonLabel.iPad-en-GB-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/avatarSettingsButtonLabel.iPad-en-GB-0.png index 6ec14654f..b36092fcf 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/avatarSettingsButtonLabel.iPad-en-GB-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/avatarSettingsButtonLabel.iPad-en-GB-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:918f6cb4e15876a84893fe1db1a5102540a37b272fcadc58fe8119e3aa4ca037 -size 21295 +oid sha256:13d4ba218a8a95bb13e9ab23d85ba8092cff7fad4dd26d75a2c9a21d6e4204fe +size 20207 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/avatarSettingsButtonLabel.iPad-pseudo-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/avatarSettingsButtonLabel.iPad-pseudo-0.png index 6ec14654f..b36092fcf 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/avatarSettingsButtonLabel.iPad-pseudo-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/avatarSettingsButtonLabel.iPad-pseudo-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:918f6cb4e15876a84893fe1db1a5102540a37b272fcadc58fe8119e3aa4ca037 -size 21295 +oid sha256:13d4ba218a8a95bb13e9ab23d85ba8092cff7fad4dd26d75a2c9a21d6e4204fe +size 20207 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/avatarSettingsButtonLabel.iPhone-en-GB-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/avatarSettingsButtonLabel.iPhone-en-GB-0.png index f0e26ac67..534b4e81b 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/avatarSettingsButtonLabel.iPhone-en-GB-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/avatarSettingsButtonLabel.iPhone-en-GB-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4d355015973683e5a0260679f724c979ef2f070245bec6fd302c3c46b58591ff -size 17368 +oid sha256:4447de0f020576d2f892ce4b95799f9b417ac5bfd3707791a974bc27093e7023 +size 16365 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/avatarSettingsButtonLabel.iPhone-pseudo-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/avatarSettingsButtonLabel.iPhone-pseudo-0.png index f0e26ac67..534b4e81b 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/avatarSettingsButtonLabel.iPhone-pseudo-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/avatarSettingsButtonLabel.iPhone-pseudo-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4d355015973683e5a0260679f724c979ef2f070245bec6fd302c3c46b58591ff -size 17368 +oid sha256:4447de0f020576d2f892ce4b95799f9b417ac5bfd3707791a974bc27093e7023 +size 16365 diff --git a/UnitTests/Sources/HomeScreenViewModelTests.swift b/UnitTests/Sources/HomeScreenViewModelTests.swift index b9dda3959..e5f0b70ed 100644 --- a/UnitTests/Sources/HomeScreenViewModelTests.swift +++ b/UnitTests/Sources/HomeScreenViewModelTests.swift @@ -202,20 +202,18 @@ final class HomeScreenViewModelTests { #expect(context.viewState.securityBannerMode == .none) // When the recovery state comes through as disabled. - var deferred = deferFulfillment(context.$viewState) { $0.requiresExtraAccountSetup == true } + var deferred = deferFulfillment(context.$viewState) { $0.securityBannerMode == .show(.setUpRecovery) } securityStateStateSubject.send(.init(verificationState: .verified, recoveryState: .disabled)) - try await deferred.fulfill() // Then the banner should be shown to set up recovery. - #expect(context.viewState.securityBannerMode == .show(.setUpRecovery)) - - // When the recovery is enabled. - deferred = deferFulfillment(context.$viewState) { $0.requiresExtraAccountSetup == false } - securityStateStateSubject.send(.init(verificationState: .verified, recoveryState: .enabled)) try await deferred.fulfill() + // When the recovery is enabled. + deferred = deferFulfillment(context.$viewState) { $0.securityBannerMode == .none } + securityStateStateSubject.send(.init(verificationState: .verified, recoveryState: .enabled)) + // Then the banner should no longer be shown. - #expect(context.viewState.securityBannerMode == .none) + try await deferred.fulfill() } @Test @@ -248,20 +246,18 @@ final class HomeScreenViewModelTests { #expect(context.viewState.securityBannerMode == .none) // When the recovery state comes through as incomplete. - var deferred = deferFulfillment(context.$viewState) { $0.requiresExtraAccountSetup == true } + var deferred = deferFulfillment(context.$viewState) { $0.securityBannerMode == .show(.recoveryOutOfSync) } securityStateStateSubject.send(.init(verificationState: .verified, recoveryState: .incomplete)) - try await deferred.fulfill() // Then the banner should be shown for out of sync recovery. - #expect(context.viewState.securityBannerMode == .show(.recoveryOutOfSync)) - - // When the recovery is enabled. - deferred = deferFulfillment(context.$viewState) { $0.requiresExtraAccountSetup == false } - securityStateStateSubject.send(.init(verificationState: .verified, recoveryState: .enabled)) try await deferred.fulfill() + // When the recovery is enabled. + deferred = deferFulfillment(context.$viewState) { $0.securityBannerMode == .none } + securityStateStateSubject.send(.init(verificationState: .verified, recoveryState: .enabled)) + // Then the banner should no longer be shown. - #expect(context.viewState.securityBannerMode == .none) + try await deferred.fulfill() } @Test