updated test for hidden avatars in invites

This commit is contained in:
Mauro Romito
2025-03-20 17:55:41 +01:00
committed by Mauro
parent 5631d4176a
commit 9e0e5bbb13
19 changed files with 98 additions and 53 deletions
@@ -15,9 +15,10 @@ struct HomeScreenInviteCell: View {
let room: HomeScreenRoom
let context: HomeScreenViewModel.Context
let hideInviteAvatars: Bool
private var avatar: RoomAvatar {
context.viewState.hideInviteAvatars ? .room(id: room.id, name: room.name, avatarURL: nil) : room.avatar
hideInviteAvatars ? .room(id: room.id, name: room.name, avatarURL: nil) : room.avatar
}
var body: some View {
@@ -140,32 +141,32 @@ struct HomeScreenInviteCell: View {
struct HomeScreenInviteCell_Previews: PreviewProvider, TestablePreview {
static var previews: some View {
ScrollView {
VStack(spacing: 0) {
HomeScreenInviteCell(room: .dmInvite,
context: viewModel().context)
HomeScreenInviteCell(room: .dmInvite,
context: viewModel().context)
HomeScreenInviteCell(room: .roomInvite(),
context: viewModel().context)
HomeScreenInviteCell(room: .roomInvite(),
context: viewModel().context)
HomeScreenInviteCell(room: .roomInvite(alias: "#footest:somewhere.org", avatarURL: .mockMXCAvatar),
context: viewModel().context)
HomeScreenInviteCell(room: .roomInvite(alias: "#footest:somewhere.org"),
context: viewModel().context)
.dynamicTypeSize(.accessibility1)
.previewDisplayName("Aliased room (AX1)")
}
VStack(spacing: 0) {
HomeScreenInviteCell(room: .dmInvite,
context: viewModel().context, hideInviteAvatars: false)
HomeScreenInviteCell(room: .dmInvite,
context: viewModel().context, hideInviteAvatars: false)
HomeScreenInviteCell(room: .roomInvite(),
context: viewModel().context, hideInviteAvatars: false)
HomeScreenInviteCell(room: .roomInvite(),
context: viewModel().context, hideInviteAvatars: false)
HomeScreenInviteCell(room: .roomInvite(alias: "#footest:somewhere.org", avatarURL: .mockMXCAvatar),
context: viewModel().context, hideInviteAvatars: false)
HomeScreenInviteCell(room: .roomInvite(alias: "#footest:somewhere.org", avatarURL: .mockMXCAvatar),
context: viewModel(hideInviteAvatars: true).context, hideInviteAvatars: true)
HomeScreenInviteCell(room: .roomInvite(alias: "#footest:somewhere.org"),
context: viewModel().context, hideInviteAvatars: false)
.dynamicTypeSize(.accessibility1)
.previewDisplayName("Aliased room (AX1)")
}
.previewLayout(.sizeThatFits)
}
static func viewModel() -> HomeScreenViewModel {
static func viewModel(hideInviteAvatars: Bool = false) -> HomeScreenViewModel {
let clientProxy = ClientProxyMock(.init())
let userSession = UserSessionMock(.init(clientProxy: clientProxy))
@@ -27,7 +27,7 @@ struct HomeScreenRoomList: View {
HomeScreenRoomCell(room: room, context: context, isSelected: false)
.redacted(reason: .placeholder)
case .invite:
HomeScreenInviteCell(room: room, context: context)
HomeScreenInviteCell(room: room, context: context, hideInviteAvatars: context.viewState.hideInviteAvatars)
case .knock:
HomeScreenKnockedCell(room: room, context: context)
case .room:
@@ -314,6 +314,8 @@ struct JoinRoomScreen_Previews: PreviewProvider, TestablePreview {
static let inviteRequiredViewModel = makeViewModel(mode: .inviteRequired)
static let invitedViewModel = makeViewModel(mode: .invited(isDM: false))
static let invitedDMViewModel = makeViewModel(mode: .invited(isDM: true))
static let invitedViewModelWithHiddenAvatars = makeViewModel(mode: .invited(isDM: false), hideInviteAvatars: true)
static let invitedDMViewModelWithHiddenAvatars = makeViewModel(mode: .invited(isDM: true), hideInviteAvatars: true)
static let knockableViewModel = makeViewModel(mode: .knockable)
static let knockedViewModel = makeViewModel(mode: .knocked)
static let bannedViewModel = makeViewModel(mode: .banned(sender: "Bob", reason: "Spamming"))
@@ -326,6 +328,9 @@ struct JoinRoomScreen_Previews: PreviewProvider, TestablePreview {
makePreview(viewModel: inviteRequiredViewModel, mode: .inviteRequired)
makePreview(viewModel: invitedViewModel, mode: .invited(isDM: false))
makePreview(viewModel: invitedDMViewModel, mode: .invited(isDM: true))
makePreview(viewModel: invitedViewModelWithHiddenAvatars,
mode: .invited(isDM: false),
customPreviewName: "InvitedWithHiddenAvatars")
makePreview(viewModel: knockableViewModel, mode: .knockable)
makePreview(viewModel: knockedViewModel, mode: .knocked)
makePreview(viewModel: bannedViewModel, mode: .banned(sender: nil, reason: nil))
@@ -358,8 +363,10 @@ struct JoinRoomScreen_Previews: PreviewProvider, TestablePreview {
}
}
static func makeViewModel(mode: JoinRoomScreenMode) -> JoinRoomScreenViewModel {
ServiceLocator.shared.settings.knockingEnabled = true
static func makeViewModel(mode: JoinRoomScreenMode, hideInviteAvatars: Bool = false) -> JoinRoomScreenViewModel {
let appSettings = AppSettings()
appSettings.knockingEnabled = true
appSettings.hideInviteAvatars = hideInviteAvatars
let clientProxy = ClientProxyMock(.init())
@@ -413,7 +420,7 @@ struct JoinRoomScreen_Previews: PreviewProvider, TestablePreview {
return JoinRoomScreenViewModel(roomID: "1",
via: [],
appSettings: ServiceLocator.shared.settings,
appSettings: appSettings,
clientProxy: clientProxy,
mediaProvider: MediaProviderMock(configuration: .init()),
userIndicatorController: ServiceLocator.shared.userIndicatorController)
@@ -32,21 +32,26 @@ struct AdvancedSettingsScreen: View {
.onChange(of: context.optimizeMediaUploads) {
context.send(viewAction: .optimizeMediaUploadsChanged)
}
// TODO: Waiting for designs and copies
ListRow(label: .plain(title: "hide avatars",
description: ""),
kind: .toggle($context.hideInviteAvatars))
ListRow(label: .plain(title: "hide media",
description: ""),
kind: .toggle($context.hideTimelineMedia))
}
moderationAndSafetySection
}
.compoundList()
.navigationTitle(L10n.commonAdvancedSettings)
.navigationBarTitleDisplayMode(.inline)
}
private var moderationAndSafetySection: some View {
Section {
ListRow(label: .plain(title: L10n.screenAdvancedSettingsHideTimelineMediaToggleTitle),
kind: .toggle($context.hideTimelineMedia))
ListRow(label: .plain(title: L10n.screenAdvancedSettingsHideInviteAvatarsToggleTitle),
kind: .toggle($context.hideInviteAvatars))
} header: {
Text(L10n.screenAdvancedSettingsModerationAndSafetySectionTitle)
.compoundListSectionHeader()
}
}
}
private extension AppAppearance {