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 f7c7cf23ed
commit d3fd1e9b55
19 changed files with 98 additions and 53 deletions

View File

@@ -262,6 +262,8 @@
"common_waiting_for_decryption_key" = "Waiting for this message";
"common.copied_to_clipboard" = "Copied to clipboard";
"common.do_not_show_this_again" = "Do not show this again";
"common.empty_file" = "Empty file";
"common.line_copied_to_clipboard" = "Line copied to clipboard";
"common.open_source_licenses" = "Open source licenses";
"common.pinned" = "Pinned";
"common.send_to" = "Send to";
@@ -381,6 +383,9 @@
"screen_advanced_settings_element_call_base_url" = "Custom Element Call base URL";
"screen_advanced_settings_element_call_base_url_description" = "Set a custom base URL for Element Call.";
"screen_advanced_settings_element_call_base_url_validation_error" = "Invalid URL, please make sure you include the protocol (http/https) and the correct address.";
"screen_advanced_settings_hide_invite_avatars_toggle_title" = "Hide avatars in room invite requests";
"screen_advanced_settings_hide_timeline_media_toggle_title" = "Hide media previews in timeline";
"screen_advanced_settings_moderation_and_safety_section_title" = "Moderation and Safety";
"screen_bottom_sheet_create_dm_confirmation_button_title" = "Send invite";
"screen_bottom_sheet_create_dm_message" = "Would you like to start a chat with %1$@?";
"screen_bottom_sheet_create_dm_title" = "Send invite?";

View File

@@ -262,6 +262,8 @@
"common_waiting_for_decryption_key" = "Waiting for this message";
"common.copied_to_clipboard" = "Copied to clipboard";
"common.do_not_show_this_again" = "Do not show this again";
"common.empty_file" = "Empty file";
"common.line_copied_to_clipboard" = "Line copied to clipboard";
"common.open_source_licenses" = "Open source licenses";
"common.pinned" = "Pinned";
"common.send_to" = "Send to";
@@ -381,6 +383,9 @@
"screen_advanced_settings_element_call_base_url" = "Custom Element Call base URL";
"screen_advanced_settings_element_call_base_url_description" = "Set a custom base URL for Element Call.";
"screen_advanced_settings_element_call_base_url_validation_error" = "Invalid URL, please make sure you include the protocol (http/https) and the correct address.";
"screen_advanced_settings_hide_invite_avatars_toggle_title" = "Hide avatars in room invite requests";
"screen_advanced_settings_hide_timeline_media_toggle_title" = "Hide media previews in timeline";
"screen_advanced_settings_moderation_and_safety_section_title" = "Moderation and Safety";
"screen_bottom_sheet_create_dm_confirmation_button_title" = "Send invite";
"screen_bottom_sheet_create_dm_message" = "Would you like to start a chat with %1$@?";
"screen_bottom_sheet_create_dm_title" = "Send invite?";

View File

@@ -928,10 +928,16 @@ internal enum L10n {
internal static var screenAdvancedSettingsElementCallBaseUrlDescription: String { return L10n.tr("Localizable", "screen_advanced_settings_element_call_base_url_description") }
/// Invalid URL, please make sure you include the protocol (http/https) and the correct address.
internal static var screenAdvancedSettingsElementCallBaseUrlValidationError: String { return L10n.tr("Localizable", "screen_advanced_settings_element_call_base_url_validation_error") }
/// Hide avatars in room invite requests
internal static var screenAdvancedSettingsHideInviteAvatarsToggleTitle: String { return L10n.tr("Localizable", "screen_advanced_settings_hide_invite_avatars_toggle_title") }
/// Hide media previews in timeline
internal static var screenAdvancedSettingsHideTimelineMediaToggleTitle: String { return L10n.tr("Localizable", "screen_advanced_settings_hide_timeline_media_toggle_title") }
/// Upload photos and videos faster and reduce data usage
internal static var screenAdvancedSettingsMediaCompressionDescription: String { return L10n.tr("Localizable", "screen_advanced_settings_media_compression_description") }
/// Optimise media quality
internal static var screenAdvancedSettingsMediaCompressionTitle: String { return L10n.tr("Localizable", "screen_advanced_settings_media_compression_title") }
/// Moderation and Safety
internal static var screenAdvancedSettingsModerationAndSafetySectionTitle: String { return L10n.tr("Localizable", "screen_advanced_settings_moderation_and_safety_section_title") }
/// Disable the rich text editor to type Markdown manually.
internal static var screenAdvancedSettingsRichTextEditorDescription: String { return L10n.tr("Localizable", "screen_advanced_settings_rich_text_editor_description") }
/// Read receipts
@@ -2879,6 +2885,10 @@ internal enum L10n {
internal static var copiedToClipboard: String { return L10n.tr("Localizable", "common.copied_to_clipboard") }
/// Do not show this again
internal static var doNotShowThisAgain: String { return L10n.tr("Localizable", "common.do_not_show_this_again") }
/// Empty file
internal static var emptyFile: String { return L10n.tr("Localizable", "common.empty_file") }
/// Line copied to clipboard
internal static var lineCopiedToClipboard: String { return L10n.tr("Localizable", "common.line_copied_to_clipboard") }
/// Open source licenses
internal static var openSourceLicenses: String { return L10n.tr("Localizable", "common.open_source_licenses") }
/// Pinned

View File

@@ -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))

View File

@@ -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:

View File

@@ -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)

View File

@@ -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 {

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:7dbc230120926d73fde55e42c43e36ef868bd893e600e749c66f979daa3f5659
size 139055
oid sha256:56abc8e0527cef938e91400dcee94e42e175c6a16c004623ab449fbe73c6f128
size 164157

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:57b1efef6213243fdf44df0ff92c086e5997c42df2ad6065cd2d31c41df84543
size 159487
oid sha256:f43d6fd518a5e05fddc64d8a8202a156cb7281a75df14f5a34879af7ab8b1471
size 192479

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:a505289fc465bfdb3a40660c5fff6828c528574669cd4967fd9c63ce810043f8
size 89637
oid sha256:757b7bee819f1553d1470763a003da399c368ea722b29aef090b9bbf4095fb8f
size 114474

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:8aeb3ce65022cdfc26f7f4c87166cb58b76cf48645d4c7069d8c4fe12577788c
size 126940
oid sha256:b2bc7dc5754c2802ac9f7c2ea28e43cc9c50ccd2ddb4ff3c051437225707e604
size 163544

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:af04ac75b6cbaac778ddde75a61a13740f3f20e6b14d228d0008e63fefe894d7
size 269741
oid sha256:3d675d9e609a6c653409fd340cb93307ea2a06d1f3603d4bac8cd5f48b47db7b
size 312144

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:da6c66849638864f495f9c9fbeca4ed00a1135057a4fce2969c1f712a7b0f555
size 285733
oid sha256:3e55fbb94a46655b7ca88aef7dd71c88447de3383c695b5b35169c3480045a7d
size 331760

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:eb23902ceb5e67de3d7ab7964ac5b3212f112e93ff36ea1e3f689e2b721cfb16
size 185380
oid sha256:4f75c56f0788459cf6e26aed0c3cab9f05265b27e5e3a751221bb0c70c6e04ab
size 251916

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ff6ed21c446ef1f2697c5f857ca96892be1852d7fcbfdc961cef1e20181370fc
size 204198
oid sha256:5c434f5efdb18dd5cb3158342736a076286583e05dc9c6348e9256573a1c03a2
size 333485

View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:0a7b43824b56503b7e74a50ac850bb7202fbf96aea3d21c4e0d0ba64ed2ff5f7
size 142282

View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:a5018f37bf0d6022a7a0138914d0ccfd533862bb4649f5c7af401996baba4509
size 145718

View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:2450ea4e8db4a826e2f37384c1e5885ecdcb45ed937f6bbb6fe198514caf5b77
size 90370

View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:384e8ddcd330416b356690e856ed5ae6ff917654f927bbaf7e17079297e87347
size 100437