diff --git a/AccessibilityTests/Sources/GeneratedAccessibilityTests.swift b/AccessibilityTests/Sources/GeneratedAccessibilityTests.swift index 653e6e4ad..793a9f0a0 100644 --- a/AccessibilityTests/Sources/GeneratedAccessibilityTests.swift +++ b/AccessibilityTests/Sources/GeneratedAccessibilityTests.swift @@ -867,6 +867,10 @@ extension AccessibilityTests { try await performAccessibilityAudit(named: "VoiceMessageRoomTimelineView_Previews") } + func testVoiceMessageTrashButton() async throws { + try await performAccessibilityAudit(named: "VoiceMessageTrashButton_Previews") + } + func testWaveformCursorView() async throws { try await performAccessibilityAudit(named: "WaveformCursorView_Previews") } diff --git a/ElementX.xcodeproj/project.pbxproj b/ElementX.xcodeproj/project.pbxproj index 8d543bb61..5da1edbcf 100644 --- a/ElementX.xcodeproj/project.pbxproj +++ b/ElementX.xcodeproj/project.pbxproj @@ -188,6 +188,7 @@ 1C6B2A1A5A9699DD4C9755B3 /* BootDetectionManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6F054DE7D47849687662C9D9 /* BootDetectionManager.swift */; }; 1C8BC70A18060677E295A846 /* ShareToMapsAppActivity.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4481799F455B3DA243BDA2AC /* ShareToMapsAppActivity.swift */; }; 1C9BB74711E5F24C77B7FED0 /* RoomMembersListScreenCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5AEA0B743847CFA5B3C38EE4 /* RoomMembersListScreenCoordinator.swift */; }; + 1CA094038D4D036A6F0A1314 /* VoiceMessageTrashButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = ABF84AA68B2B7584D9275769 /* VoiceMessageTrashButton.swift */; }; 1D5DC685CED904386C89B7DA /* NSRegularExpresion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95BAC0F6C9644336E9567EE6 /* NSRegularExpresion.swift */; }; 1D623953F970D11F6F38499C /* AppLockService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 851B95BB98649B8E773D6790 /* AppLockService.swift */; }; 1D69E31913DF66426985909B /* EmojiPickerScreenViewModelProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11151E78D6BB2B04A8FBD389 /* EmojiPickerScreenViewModelProtocol.swift */; }; @@ -279,6 +280,7 @@ 2DA27D78560D5F79B917E163 /* AudioConverter.swift in Sources */ = {isa = PBXBuildFile; fileRef = E44E35AA87F49503E7B3BF6E /* AudioConverter.swift */; }; 2DD9D0FE7CB5CFC80D071451 /* AppLockScreenModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3C3E67E09FE5A35D73818C39 /* AppLockScreenModels.swift */; }; 2E43A3D221BE9587BC19C3F1 /* MatrixEntityRegexTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F31F59030205A6F65B057E1A /* MatrixEntityRegexTests.swift */; }; + 2E6AD068D7767BDC33626F1C /* SnapshotableGlassEffect.swift in Sources */ = {isa = PBXBuildFile; fileRef = CB04B2D794885025DACFCEFB /* SnapshotableGlassEffect.swift */; }; 2E8C6672D0EE7D5B1BEDB8E2 /* ServerConfirmationScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7478623CECC9438014244BA /* ServerConfirmationScreen.swift */; }; 2EAA1B35D9CA24F090F48792 /* SpaceRoomListProxyProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = EACD4855BDAD0799FD86B7B5 /* SpaceRoomListProxyProtocol.swift */; }; 2F2906AE9BC3D0E79A6F98F8 /* Bundle.swift in Sources */ = {isa = PBXBuildFile; fileRef = B6E89E530A8E92EC44301CA1 /* Bundle.swift */; }; @@ -2504,6 +2506,7 @@ AB26D5444A4A7E095222DE8B /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = "zh-Hans"; path = "zh-Hans.lproj/Localizable.stringsdict"; sourceTree = ""; }; AB389C38BD41EB3E47092CFB /* AccessibilityTests.xctestplan */ = {isa = PBXFileReference; path = AccessibilityTests.xctestplan; sourceTree = ""; }; ABA4CF2F5B4F68D02E412004 /* ServerConfirmationScreenViewModelProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ServerConfirmationScreenViewModelProtocol.swift; sourceTree = ""; }; + ABF84AA68B2B7584D9275769 /* VoiceMessageTrashButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VoiceMessageTrashButton.swift; sourceTree = ""; }; AC0275CEE9CA078B34028BDF /* AppLockScreenViewModelTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppLockScreenViewModelTests.swift; sourceTree = ""; }; AC1DA29A5A041CC0BACA7CB0 /* MockImageCache.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockImageCache.swift; sourceTree = ""; }; AC43313F21511C853D34544E /* SoftLogoutScreenViewModelTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SoftLogoutScreenViewModelTests.swift; sourceTree = ""; }; @@ -2686,6 +2689,7 @@ CA89A2DD51B6BBE1DA55E263 /* Application.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Application.swift; sourceTree = ""; }; CA90BD288E5AE6BC643AFDDF /* TemplateScreenCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TemplateScreenCoordinator.swift; sourceTree = ""; }; CACA846B3E3E9A521D98B178 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = ""; }; + CB04B2D794885025DACFCEFB /* SnapshotableGlassEffect.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SnapshotableGlassEffect.swift; sourceTree = ""; }; CB7B588A06911B455AC0B4C9 /* ManageRoomMemberSheetViewModelProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ManageRoomMemberSheetViewModelProtocol.swift; sourceTree = ""; }; CB98BFD8E93C7FCCEDEC46F9 /* SpacesScreenViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SpacesScreenViewModel.swift; sourceTree = ""; }; CBBCC6E74774E79B599625D0 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/Localizable.strings; sourceTree = ""; }; @@ -3754,6 +3758,7 @@ 7EB58E4E8D6D634C246AD5C2 /* RoomInviterLabel.swift */, 839E2C35DF3F9C7B54C3CE49 /* RoundedCornerShape.swift */, AEB5FF7A09B79B0C6B528F7C /* SFNumberedListView.swift */, + CB04B2D794885025DACFCEFB /* SnapshotableGlassEffect.swift */, A8558D41DD4B553A752C868A /* StackedAvatarsView.swift */, E10765FBC83B34A3BC4ADB23 /* TimelineScrollToBottomButton.swift */, 16D353E10A64172D863769BF /* TombstonedAvatarImage.swift */, @@ -5307,6 +5312,7 @@ 46A2AD86F7E618F468F6FAF5 /* VoiceMessageRecordingButton.swift */, 73A5C3F7C9C1DA10CAEC6A98 /* VoiceMessageRecordingComposer.swift */, 5E9CBF577B9711CFBB4FA40D /* VoiceMessageRecordingView.swift */, + ABF84AA68B2B7584D9275769 /* VoiceMessageTrashButton.swift */, ); path = View; sourceTree = ""; @@ -8701,6 +8707,7 @@ 274CE3C986841D15FD530BF5 /* ShimmerModifier.swift in Sources */, 5038E69A5E6A89DE1A345E04 /* ShouldScrollOnKeyboardDidShow.swift in Sources */, 77920AFA8091AC6B9F190C90 /* Signposter.swift in Sources */, + 2E6AD068D7767BDC33626F1C /* SnapshotableGlassEffect.swift in Sources */, F08F7BC07CA9AEF5CD157918 /* Snapshotting.swift in Sources */, 8BC8EF6705A78946C1F22891 /* SoftLogoutScreen.swift in Sources */, A3A7A05E8F9B7EB0E1A09A2A /* SoftLogoutScreenCoordinator.swift in Sources */, @@ -8919,6 +8926,7 @@ 55DF6DEEF2CEEF40F84B53B0 /* VoiceMessageRoomPlaybackView.swift in Sources */, 024E70451A7CD9E4E034D8A9 /* VoiceMessageRoomTimelineItem.swift in Sources */, 1224084B7E289E0830BA2C54 /* VoiceMessageRoomTimelineView.swift in Sources */, + 1CA094038D4D036A6F0A1314 /* VoiceMessageTrashButton.swift in Sources */, CA12AE0DCD57D49CD96C699A /* WaveformCursorView.swift in Sources */, 63CDC201A5980F304F6D0A1C /* WaveformInteractionModifier.swift in Sources */, B773ACD8881DB18E876D950C /* WaveformSource.swift in Sources */, diff --git a/ElementX/Resources/Assets.xcassets/images/composer/Contents.json b/ElementX/Resources/Assets.xcassets/images/composer/Contents.json deleted file mode 100644 index 73c00596a..000000000 --- a/ElementX/Resources/Assets.xcassets/images/composer/Contents.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/ElementX/Resources/Assets.xcassets/images/composer/close-rte.imageset/Contents.json b/ElementX/Resources/Assets.xcassets/images/composer/close-rte.imageset/Contents.json deleted file mode 100644 index f8a1d8ac2..000000000 --- a/ElementX/Resources/Assets.xcassets/images/composer/close-rte.imageset/Contents.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "images" : [ - { - "filename" : "close-rte.svg", - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "filename" : "close-rte-dark.svg", - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "preserves-vector-representation" : true - } -} diff --git a/ElementX/Resources/Assets.xcassets/images/composer/close-rte.imageset/close-rte-dark.svg b/ElementX/Resources/Assets.xcassets/images/composer/close-rte.imageset/close-rte-dark.svg deleted file mode 100644 index 5d2425a87..000000000 --- a/ElementX/Resources/Assets.xcassets/images/composer/close-rte.imageset/close-rte-dark.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/ElementX/Resources/Assets.xcassets/images/composer/close-rte.imageset/close-rte.svg b/ElementX/Resources/Assets.xcassets/images/composer/close-rte.imageset/close-rte.svg deleted file mode 100644 index 0e1630708..000000000 --- a/ElementX/Resources/Assets.xcassets/images/composer/close-rte.imageset/close-rte.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/ElementX/Resources/Assets.xcassets/images/composer/composer-attachment.imageset/Contents.json b/ElementX/Resources/Assets.xcassets/images/composer/composer-attachment.imageset/Contents.json deleted file mode 100644 index 54abde63f..000000000 --- a/ElementX/Resources/Assets.xcassets/images/composer/composer-attachment.imageset/Contents.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "images" : [ - { - "filename" : "composer-attachment-light.svg", - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "preserves-vector-representation" : true, - "template-rendering-intent" : "template" - } -} diff --git a/ElementX/Resources/Assets.xcassets/images/composer/composer-attachment.imageset/composer-attachment-light.svg b/ElementX/Resources/Assets.xcassets/images/composer/composer-attachment.imageset/composer-attachment-light.svg deleted file mode 100644 index 6147f0ee2..000000000 --- a/ElementX/Resources/Assets.xcassets/images/composer/composer-attachment.imageset/composer-attachment-light.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/ElementX/Resources/Assets.xcassets/images/composer/stop-recording.imageset/Contents.json b/ElementX/Resources/Assets.xcassets/images/composer/stop-recording.imageset/Contents.json deleted file mode 100644 index e2ff1961b..000000000 --- a/ElementX/Resources/Assets.xcassets/images/composer/stop-recording.imageset/Contents.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "images" : [ - { - "filename" : "stop-recording.svg", - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "preserves-vector-representation" : true, - "template-rendering-intent" : "template" - } -} diff --git a/ElementX/Resources/Assets.xcassets/images/composer/stop-recording.imageset/stop-recording.svg b/ElementX/Resources/Assets.xcassets/images/composer/stop-recording.imageset/stop-recording.svg deleted file mode 100644 index 4d0ff3f37..000000000 --- a/ElementX/Resources/Assets.xcassets/images/composer/stop-recording.imageset/stop-recording.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/ElementX/Resources/Assets.xcassets/images/media/Contents.json b/ElementX/Resources/Assets.xcassets/images/media/Contents.json deleted file mode 100644 index 73c00596a..000000000 --- a/ElementX/Resources/Assets.xcassets/images/media/Contents.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/ElementX/Resources/Assets.xcassets/images/media/media-pause.imageset/Contents.json b/ElementX/Resources/Assets.xcassets/images/media/media-pause.imageset/Contents.json deleted file mode 100644 index b9b6e445c..000000000 --- a/ElementX/Resources/Assets.xcassets/images/media/media-pause.imageset/Contents.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "images" : [ - { - "filename" : "media-pause.svg", - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "preserves-vector-representation" : true, - "template-rendering-intent" : "template" - } -} diff --git a/ElementX/Resources/Assets.xcassets/images/media/media-pause.imageset/media-pause.svg b/ElementX/Resources/Assets.xcassets/images/media/media-pause.imageset/media-pause.svg deleted file mode 100644 index 35b4cc4a2..000000000 --- a/ElementX/Resources/Assets.xcassets/images/media/media-pause.imageset/media-pause.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/ElementX/Resources/Assets.xcassets/images/media/media-play.imageset/Contents.json b/ElementX/Resources/Assets.xcassets/images/media/media-play.imageset/Contents.json deleted file mode 100644 index fa9d8becd..000000000 --- a/ElementX/Resources/Assets.xcassets/images/media/media-play.imageset/Contents.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "images" : [ - { - "filename" : "media-play.svg", - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "preserves-vector-representation" : true, - "template-rendering-intent" : "template" - } -} diff --git a/ElementX/Resources/Assets.xcassets/images/media/media-play.imageset/media-play.svg b/ElementX/Resources/Assets.xcassets/images/media/media-play.imageset/media-play.svg deleted file mode 100644 index d30429baa..000000000 --- a/ElementX/Resources/Assets.xcassets/images/media/media-play.imageset/media-play.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/ElementX/Sources/Generated/Assets.swift b/ElementX/Sources/Generated/Assets.swift index 084ee0ab8..9a12bc957 100644 --- a/ElementX/Sources/Generated/Assets.swift +++ b/ElementX/Sources/Generated/Assets.swift @@ -31,15 +31,10 @@ internal enum Asset { internal enum Images { internal static let appLogo = ImageAsset(name: "images/app-logo") internal static let backgroundBottom = ImageAsset(name: "images/background-bottom") - internal static let closeRte = ImageAsset(name: "images/close-rte") - internal static let composerAttachment = ImageAsset(name: "images/composer-attachment") - internal static let stopRecording = ImageAsset(name: "images/stop-recording") internal static let launchBackground = ImageAsset(name: "images/launch-background") internal static let locationMarkerShape = ImageAsset(name: "images/location-marker-shape") internal static let mapBlurred = ImageAsset(name: "images/mapBlurred") internal static let placeholderMap = ImageAsset(name: "images/placeholderMap") - internal static let mediaPause = ImageAsset(name: "images/media-pause") - internal static let mediaPlay = ImageAsset(name: "images/media-play") internal static let notificationsPromptGraphic = ImageAsset(name: "images/notifications-prompt-graphic") internal static let pollWinner = ImageAsset(name: "images/poll-winner") } diff --git a/ElementX/Sources/Other/SwiftUI/Views/SnapshotableGlassEffect.swift b/ElementX/Sources/Other/SwiftUI/Views/SnapshotableGlassEffect.swift new file mode 100644 index 000000000..0f876deac --- /dev/null +++ b/ElementX/Sources/Other/SwiftUI/Views/SnapshotableGlassEffect.swift @@ -0,0 +1,22 @@ +// +// Copyright 2026 Element Creations Ltd. +// +// SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial. +// Please see LICENSE files in the repository root for full details. +// + +import SwiftUI + +extension View { + /// Similar to the `.glassProminent` button style, `.glassEffect` breaks our preview tests so this modifier provides a fallback. + /// https://github.com/pointfreeco/swift-snapshot-testing/issues/1029#issuecomment-3366942138 + @ViewBuilder + @available(iOS 26, *) + func snapshotableGlassEffect(_ glass: Glass, snapshotBackground: Color, in shape: some Shape) -> some View { + if !ProcessInfo.isRunningUnitTests { + glassEffect(glass, in: shape) + } else { + background(snapshotBackground, in: shape) + } + } +} diff --git a/ElementX/Sources/Other/TestablePreview/TestablePreviewsDictionary.swift b/ElementX/Sources/Other/TestablePreview/TestablePreviewsDictionary.swift index d20d7cf2a..d49a39c61 100644 --- a/ElementX/Sources/Other/TestablePreview/TestablePreviewsDictionary.swift +++ b/ElementX/Sources/Other/TestablePreview/TestablePreviewsDictionary.swift @@ -224,6 +224,7 @@ enum TestablePreviewsDictionary { "VoiceMessageRecordingView_Previews" : VoiceMessageRecordingView_Previews.self, "VoiceMessageRoomPlaybackView_Previews" : VoiceMessageRoomPlaybackView_Previews.self, "VoiceMessageRoomTimelineView_Previews" : VoiceMessageRoomTimelineView_Previews.self, + "VoiceMessageTrashButton_Previews" : VoiceMessageTrashButton_Previews.self, "WaveformCursorView_Previews" : WaveformCursorView_Previews.self, ] } diff --git a/ElementX/Sources/Other/VoiceMessage/VoiceMessageButton.swift b/ElementX/Sources/Other/VoiceMessage/VoiceMessageButton.swift index 4e14fb082..4bfc45fce 100644 --- a/ElementX/Sources/Other/VoiceMessage/VoiceMessageButton.swift +++ b/ElementX/Sources/Other/VoiceMessage/VoiceMessageButton.swift @@ -6,31 +6,39 @@ // Please see LICENSE files in the repository root for full details. // +import Compound import SwiftUI struct VoiceMessageButton: View { @ScaledMetric private var buttonSize: CGFloat - + enum State { case loading case playing case paused } - + enum Size { case small case medium } - + let state: State let action: () -> Void - + + let iconSize: CompoundIcon.Size + let iconColor: Color + init(state: State, size: Size, action: @escaping () -> Void) { switch size { case .small: _buttonSize = .init(wrappedValue: 30) + iconSize = .small + iconColor = .compound.iconPrimary case .medium: _buttonSize = .init(wrappedValue: 36) + iconSize = .medium + iconColor = .compound.iconSecondary } self.state = state @@ -41,9 +49,12 @@ struct VoiceMessageButton: View { Button(action: action) { buttonLabel .frame(width: buttonSize, height: buttonSize) + .overlay { + Circle().stroke(.compound.borderInteractiveSecondary) + } } .animation(nil, value: state) - .buttonStyle(VoiceMessageButtonStyle()) + .buttonStyle(VoiceMessageButtonStyle(color: iconColor)) .disabled(state == .loading) .accessibilityLabel(accessibilityLabel) } @@ -54,14 +65,9 @@ struct VoiceMessageButton: View { case .loading: ProgressView() case .playing, .paused: - let imageAsset = state == .playing ? Asset.Images.mediaPause : Asset.Images.mediaPlay - let offset: CGFloat = state == .playing ? 0 : 2 - - Image(asset: imageAsset) - .resizable() - .scaledToFit() - .scaledFrame(width: 12, height: 14) - .offset(x: offset) + CompoundIcon(state == .playing ? \.pauseSolid : \.playSolid, + size: iconSize, + relativeTo: .compound.headingLG) } } @@ -79,10 +85,12 @@ struct VoiceMessageButton: View { private struct VoiceMessageButtonStyle: ButtonStyle { @Environment(\.isEnabled) var isEnabled: Bool + + let color: Color func makeBody(configuration: Configuration) -> some View { configuration.label - .foregroundColor(isEnabled ? .compound.textSecondary.opacity(configuration.isPressed ? 0.6 : 1) : .compound.iconDisabled) + .foregroundColor(isEnabled ? color.opacity(configuration.isPressed ? 0.6 : 1) : .compound.iconDisabled) .background(Circle() .foregroundColor(configuration.isPressed ? .compound.bgSubtlePrimary : .compound.bgCanvasDefault)) } @@ -114,6 +122,6 @@ struct VoiceMessageButton_Previews: PreviewProvider, TestablePreview { } } .padding() - .background(Color.gray) + .background(.compound.bgSubtleSecondary) } } diff --git a/ElementX/Sources/Screens/RoomScreen/ComposerToolbar/ComposerToolbarModels.swift b/ElementX/Sources/Screens/RoomScreen/ComposerToolbar/ComposerToolbarModels.swift index a03fe9ec7..48bc22c81 100644 --- a/ElementX/Sources/Screens/RoomScreen/ComposerToolbar/ComposerToolbarModels.swift +++ b/ElementX/Sources/Screens/RoomScreen/ComposerToolbar/ComposerToolbarModels.swift @@ -109,6 +109,14 @@ struct ComposerToolbarViewState: BindableState { } } + var sendButtonMode: SendButton.Mode { + composerMode.isEdit ? .edit : .send + } + + var sendButtonAccessibilityLabel: String { + composerMode.isEdit ? L10n.actionConfirm : L10n.actionSend + } + var sendButtonDisabled: Bool { if !canSend { return true diff --git a/ElementX/Sources/Screens/RoomScreen/ComposerToolbar/ComposerToolbarViewModel.swift b/ElementX/Sources/Screens/RoomScreen/ComposerToolbar/ComposerToolbarViewModel.swift index 46e58f3f7..b0756b97d 100644 --- a/ElementX/Sources/Screens/RoomScreen/ComposerToolbar/ComposerToolbarViewModel.swift +++ b/ElementX/Sources/Screens/RoomScreen/ComposerToolbar/ComposerToolbarViewModel.swift @@ -797,6 +797,69 @@ private final class ComposerMentionReplacer: MentionReplacer { } } +// MARK: - Mocks + +extension ComposerToolbarViewModel { + enum MockMode { case editing, recordVoiceMessage, previewVoiceMessage(isUploading: Bool), reply(isLoading: Bool) } + + static func mock(focused: Bool = false, + message: String = "", + mockMode: MockMode? = nil, + hasSuggestions: Bool = false, + canSend: Bool = true) -> ComposerToolbarViewModel { + let suggestions: [SuggestionItem] = if hasSuggestions { + [.init(suggestionType: .user(.init(id: "@user_mention_1:matrix.org", displayName: "User 1", avatarURL: nil)), range: .init(), rawSuggestionText: ""), + .init(suggestionType: .user(.init(id: "@user_mention_2:matrix.org", displayName: "User 2", avatarURL: .mockMXCUserAvatar)), range: .init(), rawSuggestionText: "")] + } else { + [] + } + + let roomProxy = JoinedRoomProxyMock(.init()) + + if !canSend { + roomProxy.identityStatusChangesPublisher = .init([.init(userId: RoomMemberProxyMock.mockAlice.userID, changedTo: .verificationViolation)]) + } + + let wysiwygViewModel = WysiwygComposerViewModel() + let viewModel = ComposerToolbarViewModel(roomProxy: roomProxy, + wysiwygViewModel: wysiwygViewModel, + completionSuggestionService: CompletionSuggestionServiceMock(configuration: .init(suggestions: suggestions)), + mediaProvider: MediaProviderMock(configuration: .init()), + mentionDisplayHelper: ComposerMentionDisplayHelper.mock, + appSettings: ServiceLocator.shared.settings, + analyticsService: ServiceLocator.shared.analytics, + composerDraftService: ComposerDraftServiceMock(.init())) + viewModel.state.bindings.composerFocused = focused + viewModel.state.bindings.plainComposerText = NSAttributedString(string: message) + + switch mockMode { + case .editing: + viewModel.state.composerMode = .edit(originalEventOrTransactionID: .eventID(""), type: .default) + case .recordVoiceMessage: + viewModel.state.composerMode = .recordVoiceMessage(state: AudioRecorderState()) + case .previewVoiceMessage(let isUploading): + viewModel.state.composerMode = .previewVoiceMessage(state: AudioPlayerState(id: .recorderPreview, + title: L10n.commonVoiceMessage, + duration: 10.0), + waveform: .data(Array(repeating: 1.0, count: 1000)), + isUploading: isUploading) + case .reply(let isLoading): + let replyDetails: TimelineItemReplyDetails = if isLoading { + .loading(eventID: "") + } else { + .loaded(sender: .init(id: "", displayName: "Test"), + eventID: "", + eventContent: .message(.text(.init(body: "Hello World!")))) + } + viewModel.state.composerMode = .reply(eventID: UUID().uuidString, replyDetails: replyDetails, isThread: false) + case nil: + break + } + + return viewModel + } +} + private struct PlainComposerContent { let text: String let mentionedUserIDs: Set diff --git a/ElementX/Sources/Screens/RoomScreen/ComposerToolbar/View/ComposerToolbar.swift b/ElementX/Sources/Screens/RoomScreen/ComposerToolbar/View/ComposerToolbar.swift index 89587cbc4..e1353f0b2 100644 --- a/ElementX/Sources/Screens/RoomScreen/ComposerToolbar/View/ComposerToolbar.swift +++ b/ElementX/Sources/Screens/RoomScreen/ComposerToolbar/View/ComposerToolbar.swift @@ -13,10 +13,27 @@ import SwiftUI import WysiwygComposer struct ComposerToolbar: View { + @Environment(\.verticalSizeClass) private var verticalSizeClass + @ObservedObject var context: ComposerToolbarViewModel.Context + @FocusState private var composerFocused: Bool @State private var frame: CGRect = .zero - @Environment(\.verticalSizeClass) private var verticalSizeClass + + /// - When Liquid Glass is available, the buttons and composer are all 44pt x 44pt. + /// - On iOS 18 and below, the main buttons are 30pt x 30pt and the composer is 42pt high, so some + /// additional padding is required to centre the buttons vertically when there's a single line of text, + /// but preserve their position (using bottom alignment) when there's 2 or more lines of text. + private var buttonVerticalPadding: CGFloat { + Compound.supportsGlass ? 0 : 6 + } + + /// - When Liquid Glass is available, the buttons and composer are all 44pt x 44pt. + /// - On iOS 18 and below, the trailing button is 36pt x 36pt and the composer is 42pt high, so some + /// additional padding is required to centre the button (and maintain alignment as described above). + private var trailingButtonVerticalPadding: CGFloat { + Compound.supportsGlass ? 0 : 3 + } var body: some View { VStack(spacing: 8) { @@ -32,8 +49,8 @@ struct ComposerToolbar: View { bottomBar } } - .padding(.leading, 5) - .padding(.trailing, 8) + .padding(.leading, 12) + .padding(.trailing, 12) .padding(.bottom, context.composerFormattingEnabled ? 8 : 12) .background { if context.composerFormattingEnabled { @@ -83,14 +100,14 @@ struct ComposerToolbar: View { if !context.composerFormattingEnabled { if context.viewState.isUploading { ProgressView() - .scaledFrame(size: 44, relativeTo: .compound.headingLG) - .padding(.leading, 3) + .scaledFrame(size: Compound.supportsGlass ? 44 : 36, relativeTo: .compound.headingLG) + .scaledPadding(.vertical, trailingButtonVerticalPadding, relativeTo: .compound.headingLG) } else if context.viewState.showSendButton { sendButton - .padding(.leading, 3) + .scaledPadding(.vertical, trailingButtonVerticalPadding, relativeTo: .compound.headingLG) } else { voiceMessageRecordingButton(mode: context.viewState.isVoiceMessageModeActivated ? .recording : .idle) - .padding(.leading, 3) + .scaledPadding(.vertical, trailingButtonVerticalPadding, relativeTo: .compound.headingLG) } } } @@ -98,20 +115,20 @@ struct ComposerToolbar: View { } private var bottomBar: some View { - HStack(alignment: .center, spacing: 9) { + HStack(alignment: .center, spacing: 4) { closeRTEButton FormattingToolbar(formatItems: context.formatItems) { action in context.send(viewAction: .composerAction(action: action.composerAction)) } + .padding(.horizontal, 5) sendButton - .padding(.leading, 7) } } private var topBarLayout: some Layout { - HStackLayout(alignment: .bottom, spacing: 5) + HStackLayout(alignment: .bottom, spacing: 12) } private var mainTopBarContent: some View { @@ -119,6 +136,7 @@ struct ComposerToolbar: View { topBarLayout { if !context.composerFormattingEnabled { RoomAttachmentPicker(context: context) + .scaledPadding(.vertical, buttonVerticalPadding, relativeTo: .compound.headingLG) } messageComposer } @@ -136,36 +154,22 @@ struct ComposerToolbar: View { context.composerFormattingEnabled = false context.composerExpanded = false } label: { - Image(Asset.Images.closeRte.name) - .resizable() - .scaledToFit() - .scaledFrame(size: 30, relativeTo: .compound.headingLG) - .scaledPadding(7, relativeTo: .compound.headingLG) + CompoundIcon(\.close, + size: Compound.supportsGlass ? .medium : .small, + relativeTo: .compound.headingLG) } + .buttonStyle(ComposerToolbarButtonStyle()) .accessibilityLabel(L10n.richTextEditorCloseFormattingOptions) .accessibilityIdentifier(A11yIdentifiers.roomScreen.composerToolbar.closeFormattingOptions) } private var sendButton: some View { - Group { - if context.viewState.composerMode.isEdit { - Button(action: sendMessage) { - CompoundIcon(\.check, size: .medium, relativeTo: .compound.headingLG) - .foregroundColor(.white) - .scaledPadding(6, relativeTo: .compound.headingLG) - .background(.compound.iconAccentTertiary, in: Circle()) - .accessibilityLabel(L10n.actionConfirm) - } - } else { - SendButton(action: sendMessage) - .accessibilityLabel(L10n.actionSend) - } - } - .scaledPadding(4, relativeTo: .compound.headingLG) - .disabled(context.viewState.sendButtonDisabled) - .animation(.linear(duration: 0.1).disabledDuringTests(), value: context.viewState.sendButtonDisabled) - .keyboardShortcut(.return, modifiers: [.command]) - .accessibilityIdentifier(A11yIdentifiers.roomScreen.sendButton) + SendButton(mode: context.viewState.sendButtonMode, action: sendMessage) + .accessibilityLabel(context.viewState.sendButtonAccessibilityLabel) + .disabled(context.viewState.sendButtonDisabled) + .animation(.linear(duration: 0.1).disabledDuringTests(), value: context.viewState.sendButtonDisabled) + .keyboardShortcut(.return, modifiers: [.command]) + .accessibilityIdentifier(A11yIdentifiers.roomScreen.sendButton) } private var messageComposer: some View { @@ -200,8 +204,6 @@ struct ComposerToolbar: View { } .environmentObject(context) .focused($composerFocused) - .padding(.leading, context.composerFormattingEnabled ? 7 : 0) - .padding(.trailing, context.composerFormattingEnabled ? 4 : 0) .accessibilityIdentifier(A11yIdentifiers.roomScreen.messageComposer) .onTapGesture { guard !composerFocused else { return } @@ -278,11 +280,13 @@ struct ComposerToolbar: View { case .recordVoiceMessage(let state): topBarLayout { voiceMessageTrashButton + .scaledPadding(.vertical, buttonVerticalPadding, relativeTo: .compound.headingLG) VoiceMessageRecordingComposer(recorderState: state) } case .previewVoiceMessage(let state, let waveform, let isUploading): topBarLayout { voiceMessageTrashButton + .scaledPadding(.vertical, buttonVerticalPadding, relativeTo: .compound.headingLG) voiceMessagePreviewComposer(audioPlayerState: state, waveform: waveform) } .disabled(isUploading) @@ -300,15 +304,9 @@ struct ComposerToolbar: View { } private var voiceMessageTrashButton: some View { - Button(role: .destructive) { + VoiceMessageTrashButton { context.send(viewAction: .voiceMessage(.deleteRecording)) - } label: { - CompoundIcon(\.delete) - .scaledToFit() - .scaledFrame(size: 30, relativeTo: .compound.headingLG) - .scaledPadding(7, relativeTo: .compound.headingLG) } - .buttonStyle(.compound(.textLink)) .accessibilityLabel(L10n.a11yDelete) } @@ -325,168 +323,103 @@ struct ComposerToolbar: View { } } +struct ComposerToolbarButtonStyle: ButtonStyle { + func makeBody(configuration: Configuration) -> some View { + if #available(iOS 26, *) { + configuration.label + .modifier(GlassStyle()) + } else { + configuration.label + .modifier(FlatStyle(isPressed: configuration.isPressed)) + } + } + + @available(iOS 26, *) + private struct GlassStyle: ViewModifier { + @Environment(\.isEnabled) private var isEnabled + + func body(content: Content) -> some View { + if isEnabled { + label(content: content) + .snapshotableGlassEffect(.regular.interactive(), + snapshotBackground: .compound.bgSubtleSecondary, + in: .circle) + } else { + label(content: content) + .background(.compound.bgSubtlePrimary, in: .circle) + } + } + + func label(content: Content) -> some View { + content + .foregroundStyle(isEnabled ? .compound.iconPrimary : .compound.iconDisabled) + .scaledPadding(10, relativeTo: .compound.headingLG) + } + } + + private struct FlatStyle: ViewModifier { + @Environment(\.isEnabled) private var isEnabled + + let isPressed: Bool + + func body(content: Content) -> some View { + content + .foregroundStyle(.compound.iconOnSolidPrimary) + .scaledPadding(5, relativeTo: .compound.headingLG) + .background(backgroundColor(isPressed: isPressed), in: .circle) + } + + private func backgroundColor(isPressed: Bool) -> Color { + guard isEnabled else { return .compound.bgActionPrimaryDisabled } + return isPressed ? .compound.bgActionPrimaryPressed : .compound.bgActionPrimaryRest + } + } +} + // MARK: - Previews struct ComposerToolbar_Previews: PreviewProvider, TestablePreview { - static let viewModel = TimelineViewModel.mock - static let wysiwygViewModel = WysiwygComposerViewModel() - static let composerViewModel = ComposerToolbarViewModel(roomProxy: JoinedRoomProxyMock(.init()), - wysiwygViewModel: wysiwygViewModel, - completionSuggestionService: CompletionSuggestionServiceMock(configuration: .init(suggestions: suggestions)), - mediaProvider: MediaProviderMock(configuration: .init()), - mentionDisplayHelper: ComposerMentionDisplayHelper.mock, - appSettings: ServiceLocator.shared.settings, - analyticsService: ServiceLocator.shared.analytics, - composerDraftService: ComposerDraftServiceMock(.init())) + static let timelineViewModel = TimelineViewModel.mock - static let suggestions: [SuggestionItem] = [ - .init(suggestionType: .user(.init(id: "@user_mention_1:matrix.org", displayName: "User 1", avatarURL: nil)), range: .init(), rawSuggestionText: ""), - .init(suggestionType: .user(.init(id: "@user_mention_2:matrix.org", displayName: "User 2", avatarURL: .mockMXCUserAvatar)), range: .init(), rawSuggestionText: "") - ] + static let viewModel = ComposerToolbarViewModel.mock() + static let focusedViewModel = ComposerToolbarViewModel.mock(focused: true, message: "Hello, World!") + static let editingViewModel = ComposerToolbarViewModel.mock(message: "Hello, Wrold!", mockMode: .editing) + static let multiLineViewModel = ComposerToolbarViewModel.mock(message: "Hello, World! This is a loooong message that wraps onto multiple lines.") + static let voiceMessageRecordingViewModel = ComposerToolbarViewModel.mock(mockMode: .recordVoiceMessage) + static let voiceMessagePreviewViewModel = ComposerToolbarViewModel.mock(mockMode: .previewVoiceMessage(isUploading: false)) + static let voiceMessageUploadingViewModel = ComposerToolbarViewModel.mock(mockMode: .previewVoiceMessage(isUploading: true)) + static let replyLoadingViewModel = ComposerToolbarViewModel.mock(mockMode: .reply(isLoading: true)) + static let replyLoadedViewModel = ComposerToolbarViewModel.mock(mockMode: .reply(isLoading: false)) + static let suggestionsViewModel = ComposerToolbarViewModel.mock(hasSuggestions: true) + static let disabledViewModel = ComposerToolbarViewModel.mock(canSend: false) static var previews: some View { - ComposerToolbar.mock(focused: true) - - // Putting them is VStack allows the completion suggestion preview to work properly in tests VStack(spacing: 8) { - // The mock functon can't be used in this context because it does not hold a reference to the view model, losing the combine subscriptions - ComposerToolbar(context: composerViewModel.context) + ComposerToolbar(context: viewModel.context) + ComposerToolbar(context: focusedViewModel.context) + ComposerToolbar(context: editingViewModel.context) + ComposerToolbar(context: multiLineViewModel.context) + .padding(.bottom) + + ComposerToolbar(context: voiceMessageRecordingViewModel.context) + ComposerToolbar(context: voiceMessagePreviewViewModel.context) + ComposerToolbar(context: voiceMessageUploadingViewModel.context) + .padding(.bottom) + + ComposerToolbar(context: disabledViewModel.context) + } + + // Putting them in a VStack allows the completion suggestion preview to work properly in tests + VStack(spacing: 8) { + ComposerToolbar(context: suggestionsViewModel.context) } .previewDisplayName("With Suggestions") VStack(spacing: 8) { - ComposerToolbar.textWithVoiceMessage(focused: false) - ComposerToolbar.textWithVoiceMessage(focused: true) - ComposerToolbar.voiceMessageRecordingMock() - ComposerToolbar.voiceMessagePreviewMock(uploading: false) + ComposerToolbar(context: replyLoadingViewModel.context) + ComposerToolbar(context: replyLoadedViewModel.context) } - .previewDisplayName("Voice Message") - - VStack(spacing: 8) { - ComposerToolbar.replyLoadingPreviewMock(isLoading: true) - ComposerToolbar.replyLoadingPreviewMock(isLoading: false) - } - .environmentObject(viewModel.context) + .environmentObject(timelineViewModel.context) .previewDisplayName("Reply") - - VStack(spacing: 8) { - ComposerToolbar.disabledPreviewMock() - } - .previewDisplayName("Disabled") - } -} - -extension ComposerToolbar { - static func mock(focused: Bool = true) -> ComposerToolbar { - let wysiwygViewModel = WysiwygComposerViewModel() - var composerViewModel: ComposerToolbarViewModel { - let model = ComposerToolbarViewModel(roomProxy: JoinedRoomProxyMock(.init()), - wysiwygViewModel: wysiwygViewModel, - completionSuggestionService: CompletionSuggestionServiceMock(configuration: .init()), - mediaProvider: MediaProviderMock(configuration: .init()), - mentionDisplayHelper: ComposerMentionDisplayHelper.mock, - appSettings: ServiceLocator.shared.settings, - analyticsService: ServiceLocator.shared.analytics, - composerDraftService: ComposerDraftServiceMock(.init())) - model.state.composerEmpty = focused - return model - } - return ComposerToolbar(context: composerViewModel.context) - } - - static func textWithVoiceMessage(focused: Bool = true) -> ComposerToolbar { - let wysiwygViewModel = WysiwygComposerViewModel() - var composerViewModel: ComposerToolbarViewModel { - let model = ComposerToolbarViewModel(roomProxy: JoinedRoomProxyMock(.init()), - wysiwygViewModel: wysiwygViewModel, - completionSuggestionService: CompletionSuggestionServiceMock(configuration: .init()), - mediaProvider: MediaProviderMock(configuration: .init()), - mentionDisplayHelper: ComposerMentionDisplayHelper.mock, - appSettings: ServiceLocator.shared.settings, - analyticsService: ServiceLocator.shared.analytics, - composerDraftService: ComposerDraftServiceMock(.init())) - model.state.composerEmpty = focused - return model - } - return ComposerToolbar(context: composerViewModel.context) - } - - static func voiceMessageRecordingMock() -> ComposerToolbar { - let wysiwygViewModel = WysiwygComposerViewModel() - var composerViewModel: ComposerToolbarViewModel { - let model = ComposerToolbarViewModel(roomProxy: JoinedRoomProxyMock(.init()), - wysiwygViewModel: wysiwygViewModel, - completionSuggestionService: CompletionSuggestionServiceMock(configuration: .init()), - mediaProvider: MediaProviderMock(configuration: .init()), - mentionDisplayHelper: ComposerMentionDisplayHelper.mock, - appSettings: ServiceLocator.shared.settings, - analyticsService: ServiceLocator.shared.analytics, - composerDraftService: ComposerDraftServiceMock(.init())) - model.state.composerMode = .recordVoiceMessage(state: AudioRecorderState()) - return model - } - return ComposerToolbar(context: composerViewModel.context) - } - - static func voiceMessagePreviewMock(uploading: Bool) -> ComposerToolbar { - let wysiwygViewModel = WysiwygComposerViewModel() - let waveformData: [Float] = Array(repeating: 1.0, count: 1000) - var composerViewModel: ComposerToolbarViewModel { - let model = ComposerToolbarViewModel(roomProxy: JoinedRoomProxyMock(.init()), - wysiwygViewModel: wysiwygViewModel, - completionSuggestionService: CompletionSuggestionServiceMock(configuration: .init()), - mediaProvider: MediaProviderMock(configuration: .init()), - mentionDisplayHelper: ComposerMentionDisplayHelper.mock, - appSettings: ServiceLocator.shared.settings, - analyticsService: ServiceLocator.shared.analytics, - composerDraftService: ComposerDraftServiceMock(.init())) - model.state.composerMode = .previewVoiceMessage(state: AudioPlayerState(id: .recorderPreview, - title: L10n.commonVoiceMessage, - duration: 10.0), - waveform: .data(waveformData), - isUploading: uploading) - return model - } - return ComposerToolbar(context: composerViewModel.context) - } - - static func replyLoadingPreviewMock(isLoading: Bool) -> ComposerToolbar { - let wysiwygViewModel = WysiwygComposerViewModel() - var composerViewModel: ComposerToolbarViewModel { - let model = ComposerToolbarViewModel(roomProxy: JoinedRoomProxyMock(.init()), - wysiwygViewModel: wysiwygViewModel, - completionSuggestionService: CompletionSuggestionServiceMock(configuration: .init()), - mediaProvider: MediaProviderMock(configuration: .init()), - mentionDisplayHelper: ComposerMentionDisplayHelper.mock, - appSettings: ServiceLocator.shared.settings, - analyticsService: ServiceLocator.shared.analytics, - composerDraftService: ComposerDraftServiceMock(.init())) - model.state.composerMode = isLoading ? .reply(eventID: UUID().uuidString, - replyDetails: .loading(eventID: ""), - isThread: false) : - .reply(eventID: UUID().uuidString, - replyDetails: .loaded(sender: .init(id: "", - displayName: "Test"), - eventID: "", eventContent: .message(.text(.init(body: "Hello World!")))), isThread: false) - return model - } - return ComposerToolbar(context: composerViewModel.context) - } - - static func disabledPreviewMock() -> ComposerToolbar { - let wysiwygViewModel = WysiwygComposerViewModel() - var composerViewModel: ComposerToolbarViewModel { - let model = ComposerToolbarViewModel(roomProxy: JoinedRoomProxyMock(.init()), - wysiwygViewModel: wysiwygViewModel, - completionSuggestionService: CompletionSuggestionServiceMock(configuration: .init()), - mediaProvider: MediaProviderMock(configuration: .init()), - mentionDisplayHelper: ComposerMentionDisplayHelper.mock, - appSettings: ServiceLocator.shared.settings, - analyticsService: ServiceLocator.shared.analytics, - composerDraftService: ComposerDraftServiceMock(.init())) - model.state.canSend = false - return model - } - return ComposerToolbar(context: composerViewModel.context) } } diff --git a/ElementX/Sources/Screens/RoomScreen/ComposerToolbar/View/FormattingToolbar.swift b/ElementX/Sources/Screens/RoomScreen/ComposerToolbar/View/FormattingToolbar.swift index 5ebf7f336..15390bf77 100644 --- a/ElementX/Sources/Screens/RoomScreen/ComposerToolbar/View/FormattingToolbar.swift +++ b/ElementX/Sources/Screens/RoomScreen/ComposerToolbar/View/FormattingToolbar.swift @@ -17,7 +17,7 @@ struct FormattingToolbar: View { var body: some View { ScrollView(.horizontal) { - HStack(spacing: 4) { + HStack(spacing: 5) { ForEach(formatItems) { item in Button { formatAction(item.type) @@ -27,7 +27,7 @@ struct FormattingToolbar: View { .padding(8) .background(item.backgroundColor) .cornerRadius(8) - .padding(4) + .padding(.vertical, Compound.supportsGlass ? 10 : 3) } .disabled(item.state == .disabled) .accessibilityIdentifier(item.accessibilityIdentifier) @@ -63,11 +63,13 @@ private extension FormatItem { struct FormattingToolbar_Previews: PreviewProvider, TestablePreview { static let items = FormatType.allCases.map { FormatItem(type: $0, state: .enabled) } + static let reversedItems = FormatType.allCases.map { FormatItem(type: $0, state: .reversed) } static let disabledItems = FormatType.allCases.map { FormatItem(type: $0, state: .disabled) } static var previews: some View { VStack(spacing: 16.0) { FormattingToolbar(formatItems: items) { _ in } + FormattingToolbar(formatItems: reversedItems) { _ in } FormattingToolbar(formatItems: disabledItems) { _ in } } } diff --git a/ElementX/Sources/Screens/RoomScreen/ComposerToolbar/View/MessageComposer.swift b/ElementX/Sources/Screens/RoomScreen/ComposerToolbar/View/MessageComposer.swift index 25eb6714f..939056539 100644 --- a/ElementX/Sources/Screens/RoomScreen/ComposerToolbar/View/MessageComposer.swift +++ b/ElementX/Sources/Screens/RoomScreen/ComposerToolbar/View/MessageComposer.swift @@ -140,11 +140,7 @@ private struct MessageComposerReplyHeader: View { let action: () -> Void var body: some View { - TimelineReplyView(placement: .composer, timelineItemReplyDetails: replyDetails) - .frame(maxWidth: .infinity, alignment: .leading) - .fixedSize(horizontal: false, vertical: true) - .padding(4.0) - .background(.compound.bgCanvasDefault, in: RoundedRectangle(cornerRadius: 13, style: .circular)) + TimelineReplyView(placement: .composer, timelineItemReplyDetails: replyDetails, maxWidth: .infinity) .overlay(alignment: .topTrailing) { Button(action: action) { CompoundIcon(\.close, size: .small, relativeTo: .compound.bodySMSemibold) @@ -206,28 +202,46 @@ extension View { } private struct MessageComposerStyleModifier: ViewModifier { - private let composerShape = RoundedRectangle(cornerRadius: 21, style: .circular) + @Environment(\.isEnabled) private var isEnabled let header: Header + private let composerShape = RoundedRectangle(cornerRadius: 21, style: .circular) + func body(content: Content) -> some View { + if #available(iOS 26, *) { + if isEnabled { + mainContent(content: content) + .snapshotableGlassEffect(.regular.interactive(), // Doesn't need to be interactive but Apple does it 🤷‍♂️ + snapshotBackground: .compound.bgSubtleSecondary, + in: composerShape) + } else { + mainContent(content: content) + .background(.compound.bgSubtlePrimary, in: composerShape) + } + } else { + mainContent(content: content) + .background { + ZStack { + composerShape + .fill(Color.compound.bgSubtleSecondary) + composerShape + .stroke(Color.compound.borderInteractiveSecondary, lineWidth: 0.5) + } + } + } + } + + func mainContent(content: Content) -> some View { VStack(alignment: .leading, spacing: -6) { header content .tint(.compound.iconAccentTertiary) - .padding(.vertical, 10) + .padding(.vertical, Compound.supportsGlass ? 11 : 10) } - .padding(.horizontal, 12.0) + .padding(.horizontal, Compound.supportsGlass ? 16 : 12) .clipShape(composerShape) - .background { - ZStack { - composerShape - .fill(Color.compound.bgSubtleSecondary) - composerShape - .stroke(Color.compound.borderInteractiveSecondary, lineWidth: 0.5) - } - } } } diff --git a/ElementX/Sources/Screens/RoomScreen/ComposerToolbar/View/RoomAttachmentPicker.swift b/ElementX/Sources/Screens/RoomScreen/ComposerToolbar/View/RoomAttachmentPicker.swift index edfe52a50..e78b01fbe 100644 --- a/ElementX/Sources/Screens/RoomScreen/ComposerToolbar/View/RoomAttachmentPicker.swift +++ b/ElementX/Sources/Screens/RoomScreen/ComposerToolbar/View/RoomAttachmentPicker.swift @@ -13,19 +13,17 @@ import WysiwygComposer struct RoomAttachmentPicker: View { @ObservedObject var context: ComposerToolbarViewModel.Context - @Environment(\.isEnabled) private var isEnabled - var body: some View { // Use a menu instead of the popover/sheet shown in Figma because overriding the colour scheme // results in a rendering bug on 17.1: https://github.com/element-hq/element-x-ios/issues/2157 Menu { menuContent } label: { - CompoundIcon(asset: Asset.Images.composerAttachment, size: .custom(30), relativeTo: .compound.headingLG) - .scaledPadding(7, relativeTo: .compound.headingLG) - .foregroundColor(isEnabled ? .compound.iconPrimary : .compound.iconDisabled) + CompoundIcon(\.plus, + size: Compound.supportsGlass ? .medium : .small, + relativeTo: .compound.headingLG) } - .buttonStyle(RoomAttachmentPickerButtonStyle()) + .buttonStyle(ComposerToolbarButtonStyle()) .accessibilityLabel(L10n.actionAddToTimeline) .accessibilityIdentifier(A11yIdentifiers.roomScreen.composerToolbar.openComposeOptions) } @@ -79,13 +77,6 @@ struct RoomAttachmentPicker: View { } } -private struct RoomAttachmentPickerButtonStyle: ButtonStyle { - func makeBody(configuration: Configuration) -> some View { - configuration.label - .foregroundStyle(configuration.isPressed ? .compound.bgActionPrimaryPressed : .compound.bgActionPrimaryRest) - } -} - struct RoomAttachmentPicker_Previews: PreviewProvider, TestablePreview { static let viewModel = ComposerToolbarViewModel(roomProxy: JoinedRoomProxyMock(.init()), wysiwygViewModel: WysiwygComposerViewModel(), diff --git a/ElementX/Sources/Screens/RoomScreen/ComposerToolbar/View/VoiceMessagePreviewComposer.swift b/ElementX/Sources/Screens/RoomScreen/ComposerToolbar/View/VoiceMessagePreviewComposer.swift index cf9899791..6c5ec3bd3 100644 --- a/ElementX/Sources/Screens/RoomScreen/ComposerToolbar/View/VoiceMessagePreviewComposer.swift +++ b/ElementX/Sources/Screens/RoomScreen/ComposerToolbar/View/VoiceMessagePreviewComposer.swift @@ -6,6 +6,7 @@ // Please see LICENSE files in the repository root for full details. // +import Compound import DSWaveformImage import DSWaveformImageViews import Foundation @@ -52,14 +53,12 @@ struct VoiceMessagePreviewComposer: View { .onChange(of: isDragging) { _, newValue in onScrubbing(newValue) } - .padding(.vertical, 4.0) - .padding(.horizontal, 6.0) + .padding(.vertical, Compound.supportsGlass ? 7 : 4) + .padding(.horizontal, Compound.supportsGlass ? 8 : 6) + .padding(.trailing, Compound.supportsGlass ? 8 : 0) .background { - let roundedRectangle = RoundedRectangle(cornerRadius: 12) - ZStack { - roundedRectangle - .fill(Color.compound.bgSubtleSecondary) - } + RoundedRectangle(cornerRadius: Compound.supportsGlass ? 21 : 12) + .fill(.compound.bgSubtleSecondary) } } @@ -96,6 +95,8 @@ private extension DateFormatter { }() } +// MARK: - Previews + struct VoiceMessagePreviewComposer_Previews: PreviewProvider, TestablePreview { static let playerState = AudioPlayerState(id: .recorderPreview, title: L10n.commonVoiceMessage, diff --git a/ElementX/Sources/Screens/RoomScreen/ComposerToolbar/View/VoiceMessageRecordingButton.swift b/ElementX/Sources/Screens/RoomScreen/ComposerToolbar/View/VoiceMessageRecordingButton.swift index 799f53127..83051d318 100644 --- a/ElementX/Sources/Screens/RoomScreen/ComposerToolbar/View/VoiceMessageRecordingButton.swift +++ b/ElementX/Sources/Screens/RoomScreen/ComposerToolbar/View/VoiceMessageRecordingButton.swift @@ -23,6 +23,11 @@ struct VoiceMessageRecordingButton: View { private let impactFeedbackGenerator = UIImpactFeedbackGenerator() + private var recordIconColour: Color { + guard isEnabled else { return .compound.iconDisabled } + return Compound.supportsGlass ? .compound.iconPrimary : .compound.iconSecondary + } + var body: some View { Button { impactFeedbackGenerator.impactOccurred() @@ -35,15 +40,19 @@ struct VoiceMessageRecordingButton: View { } label: { switch mode { case .idle: - CompoundIcon(\.micOn, size: .medium, relativeTo: .compound.headingLG) - .foregroundColor(isEnabled ? .compound.iconSecondary : .compound.iconDisabled) - .scaledPadding(10, relativeTo: .compound.headingLG) + CompoundIcon(Compound.supportsGlass ? \.micOnSolid : \.micOn, + size: .medium, + relativeTo: .compound.headingLG) + .foregroundColor(recordIconColour) + .scaledPadding(Compound.supportsGlass ? 10 : 6, relativeTo: .compound.headingLG) case .recording: - CompoundIcon(asset: Asset.Images.stopRecording, size: .medium, relativeTo: .compound.headingLG) + CompoundIcon(\.stopSolid, + size: Compound.supportsGlass ? .medium : .small, + relativeTo: .compound.headingLG) .foregroundColor(.compound.iconOnSolidPrimary) - .scaledPadding(6, relativeTo: .compound.headingLG) - .background(.compound.bgActionPrimaryRest, in: Circle()) - .scaledPadding(4, relativeTo: .compound.headingLG) + .scaledPadding(Compound.supportsGlass ? 10 : 8, relativeTo: .compound.headingLG) + .background(.compound.bgActionPrimaryRest, in: .circle) + .compositingGroup() } } .buttonStyle(VoiceMessageRecordingButtonStyle()) @@ -52,17 +61,32 @@ struct VoiceMessageRecordingButton: View { } private struct VoiceMessageRecordingButtonStyle: ButtonStyle { + @Environment(\.isEnabled) private var isEnabled + func makeBody(configuration: Configuration) -> some View { - configuration.label - .opacity(configuration.isPressed ? 0.6 : 1) + if #available(iOS 26, *) { + if isEnabled { + configuration.label + .snapshotableGlassEffect(.regular.interactive(), + snapshotBackground: .compound.bgSubtleSecondary, + in: .circle) + } else { + configuration.label + .background(.compound.bgSubtlePrimary, in: .circle) + } + } else { + configuration.label + .opacity(configuration.isPressed ? 0.6 : 1) + } } } struct VoiceMessageRecordingButton_Previews: PreviewProvider, TestablePreview { static var previews: some View { - HStack(spacing: 8) { + HStack(spacing: 12) { + VoiceMessageRecordingButton(mode: .idle) + .disabled(true) VoiceMessageRecordingButton(mode: .idle) - VoiceMessageRecordingButton(mode: .recording) } } diff --git a/ElementX/Sources/Screens/RoomScreen/ComposerToolbar/View/VoiceMessageRecordingComposer.swift b/ElementX/Sources/Screens/RoomScreen/ComposerToolbar/View/VoiceMessageRecordingComposer.swift index d2f5b078d..417e30552 100644 --- a/ElementX/Sources/Screens/RoomScreen/ComposerToolbar/View/VoiceMessageRecordingComposer.swift +++ b/ElementX/Sources/Screens/RoomScreen/ComposerToolbar/View/VoiceMessageRecordingComposer.swift @@ -15,18 +15,17 @@ struct VoiceMessageRecordingComposer: View { var body: some View { VoiceMessageRecordingView(recorderState: recorderState) - .padding(.vertical, 8.0) - .padding(.horizontal, 12.0) + .padding(.vertical, Compound.supportsGlass ? 14 : 8) + .padding(.horizontal, Compound.supportsGlass ? 16 : 12) .background { - let roundedRectangle = RoundedRectangle(cornerRadius: 12) - ZStack { - roundedRectangle - .fill(Color.compound.bgSubtleSecondary) - } + RoundedRectangle(cornerRadius: Compound.supportsGlass ? 21 : 12) + .fill(.compound.bgSubtleSecondary) } } } +// MARK: - Previews + struct VoiceMessageRecordingComposer_Previews: PreviewProvider, TestablePreview { static let recorderState = AudioRecorderState() diff --git a/ElementX/Sources/Screens/RoomScreen/ComposerToolbar/View/VoiceMessageTrashButton.swift b/ElementX/Sources/Screens/RoomScreen/ComposerToolbar/View/VoiceMessageTrashButton.swift new file mode 100644 index 000000000..b960965e4 --- /dev/null +++ b/ElementX/Sources/Screens/RoomScreen/ComposerToolbar/View/VoiceMessageTrashButton.swift @@ -0,0 +1,65 @@ +// +// Copyright 2026 Element Creations Ltd. +// +// SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial. +// Please see LICENSE files in the repository root for full details. +// + +import Compound +import SwiftUI + +struct VoiceMessageTrashButton: View { + let action: () -> Void + + var body: some View { + if #available(iOS 26, *) { + Button(role: .destructive, action: action) { + CompoundIcon(\.delete, size: .medium, relativeTo: .compound.headingLG) + .modifier(GlassStyle()) + .compositingGroup() + } + } else { + Button(role: .destructive, action: action) { + CompoundIcon(\.delete) + .scaledToFit() + .scaledFrame(size: 30, relativeTo: .compound.headingLG) + } + .buttonStyle(.compound(.textLink)) + } + } + + @available(iOS 26, *) + private struct GlassStyle: ViewModifier { + @Environment(\.isEnabled) private var isEnabled + + func body(content: Content) -> some View { + if isEnabled { + label(content: content) + .snapshotableGlassEffect(.regular.tint(.compound.bgCriticalPrimary).interactive(), + snapshotBackground: .compound.bgCriticalPrimary, + in: .circle) + } else { + label(content: content) + .background(.compound.bgSubtlePrimary, in: .circle) + } + } + + private func label(content: Content) -> some View { + content + .foregroundStyle(isEnabled ? .compound.iconOnSolidPrimary : .compound.iconDisabled) + .scaledPadding(10, relativeTo: .compound.headingLG) + } + } +} + +// MARK: - Previews + +struct VoiceMessageTrashButton_Previews: PreviewProvider, TestablePreview { + static var previews: some View { + HStack(spacing: 12) { + VoiceMessageTrashButton { } + .disabled(true) + VoiceMessageTrashButton { } + } + } +} diff --git a/ElementX/Sources/Screens/RoomScreen/View/RoomScreen.swift b/ElementX/Sources/Screens/RoomScreen/View/RoomScreen.swift index 4eefe49c1..93fbbadff 100644 --- a/ElementX/Sources/Screens/RoomScreen/View/RoomScreen.swift +++ b/ElementX/Sources/Screens/RoomScreen/View/RoomScreen.swift @@ -197,19 +197,20 @@ struct RoomScreen_Previews: PreviewProvider, TestablePreview { static let viewModels = makeViewModels() static let readOnlyViewModels = makeViewModels(canSendMessage: false) static let tombstonedViewModels = makeViewModels(hasSuccessor: true) + static let composerViewModel = ComposerToolbarViewModel.mock() static var previews: some View { ElementNavigationStack { RoomScreen(context: viewModels.room.context, timelineContext: viewModels.timeline.context, - composerToolbar: ComposerToolbar.mock()) + composerToolbar: ComposerToolbar(context: composerViewModel.context)) } .previewDisplayName("Normal") ElementNavigationStack { RoomScreen(context: readOnlyViewModels.room.context, timelineContext: readOnlyViewModels.timeline.context, - composerToolbar: ComposerToolbar.mock()) + composerToolbar: ComposerToolbar(context: composerViewModel.context)) } .previewDisplayName("Read-only") .snapshotPreferences(expect: readOnlyViewModels.room.context.$viewState.map { !$0.canSendMessage }) @@ -217,7 +218,7 @@ struct RoomScreen_Previews: PreviewProvider, TestablePreview { ElementNavigationStack { RoomScreen(context: tombstonedViewModels.room.context, timelineContext: tombstonedViewModels.timeline.context, - composerToolbar: ComposerToolbar.mock()) + composerToolbar: ComposerToolbar(context: composerViewModel.context)) } .previewDisplayName("Tombstoned") .snapshotPreferences(expect: tombstonedViewModels.room.context.$viewState.map(\.hasSuccessor)) diff --git a/ElementX/Sources/Screens/Timeline/View/Replies/TimelineReplyView.swift b/ElementX/Sources/Screens/Timeline/View/Replies/TimelineReplyView.swift index 6ec96ee14..c3b6b6d7f 100644 --- a/ElementX/Sources/Screens/Timeline/View/Replies/TimelineReplyView.swift +++ b/ElementX/Sources/Screens/Timeline/View/Replies/TimelineReplyView.swift @@ -17,8 +17,25 @@ enum TimelineReplyViewPlacement { struct TimelineReplyView: View { let placement: TimelineReplyViewPlacement let timelineItemReplyDetails: TimelineItemReplyDetails? + var maxWidth: CGFloat? + + private let backgroundShape = RoundedRectangle(cornerRadius: 6) var body: some View { + content + .fixedSize(horizontal: false, vertical: true) + .frame(maxWidth: maxWidth, alignment: .leading) + .padding(4.0) + .background { + ZStack { + backgroundShape.fill(.compound.bgCanvasDefault) + backgroundShape.stroke(.compound.borderInteractiveSecondary) + } + } + } + + @ViewBuilder + private var content: some View { if let timelineItemReplyDetails { switch timelineItemReplyDetails { case .loaded(let sender, _, let content): @@ -29,7 +46,7 @@ struct TimelineReplyView: View { ReplyView(sender: sender, plainBody: content.caption ?? content.filename, formattedBody: content.formattedCaption, - icon: .init(kind: .systemIcon("waveform"), cornerRadii: iconCornerRadii)) + icon: .init(kind: .systemIcon("waveform"))) case .emote(let content): ReplyView(sender: sender, plainBody: content.body, @@ -38,12 +55,12 @@ struct TimelineReplyView: View { ReplyView(sender: sender, plainBody: content.caption ?? content.filename, formattedBody: content.formattedCaption, - icon: .init(kind: .icon(\.document), cornerRadii: iconCornerRadii)) + icon: .init(kind: .icon(\.document))) case .image(let content): ReplyView(sender: sender, plainBody: content.caption ?? content.filename, formattedBody: content.formattedCaption, - icon: .init(kind: .mediaSource(content.thumbnailInfo?.source ?? content.imageInfo.source), cornerRadii: iconCornerRadii)) + icon: .init(kind: .mediaSource(content.thumbnailInfo?.source ?? content.imageInfo.source))) case .notice(let content): ReplyView(sender: sender, plainBody: content.body, @@ -56,33 +73,33 @@ struct TimelineReplyView: View { ReplyView(sender: sender, plainBody: content.caption ?? content.filename, formattedBody: content.formattedCaption, - icon: content.thumbnailInfo.map { .init(kind: .mediaSource($0.source), cornerRadii: iconCornerRadii) }) + icon: content.thumbnailInfo.map { .init(kind: .mediaSource($0.source)) }) case .voice: ReplyView(sender: sender, plainBody: L10n.commonVoiceMessage, formattedBody: nil, - icon: .init(kind: .icon(\.micOn), cornerRadii: iconCornerRadii)) + icon: .init(kind: .icon(\.micOn))) case .location: ReplyView(sender: sender, plainBody: L10n.commonSharedLocation, formattedBody: nil, - icon: .init(kind: .icon(\.locationPin), cornerRadii: iconCornerRadii)) + icon: .init(kind: .icon(\.locationPin))) } case .poll(let question): ReplyView(sender: sender, plainBody: question, formattedBody: nil, - icon: .init(kind: .icon(\.polls), cornerRadii: iconCornerRadii)) + icon: .init(kind: .icon(\.polls))) case .liveLocation: ReplyView(sender: sender, plainBody: L10n.commonSharedLiveLocation, formattedBody: nil, - icon: .init(kind: .icon(\.locationPin), cornerRadii: iconCornerRadii)) + icon: .init(kind: .icon(\.locationPin))) case .redacted: ReplyView(sender: sender, plainBody: L10n.commonMessageRemoved, formattedBody: nil, - icon: .init(kind: .icon(\.delete), cornerRadii: iconCornerRadii)) + icon: .init(kind: .icon(\.delete))) } default: LoadingReplyView() @@ -90,15 +107,6 @@ struct TimelineReplyView: View { } } - private var iconCornerRadii: Double { - switch placement { - case .composer: - return 9.0 - case .timeline: - return 4.0 - } - } - private struct LoadingReplyView: View { var body: some View { ReplyView(sender: .init(id: "@alice:matrix.org"), plainBody: "Hello world", formattedBody: nil) @@ -117,7 +125,7 @@ struct TimelineReplyView: View { } let kind: Kind - let cornerRadii: Double + let cornerRadii = 4.0 } @EnvironmentObject private var context: TimelineViewModel.Context @@ -180,7 +188,7 @@ struct TimelineReplyView: View { .aspectRatio(contentMode: .fit) .padding(8.0) case .icon(let keyPath): - CompoundIcon(keyPath, size: .small, relativeTo: .body) + CompoundIcon(keyPath, size: .medium, relativeTo: .body) } } } diff --git a/ElementX/Sources/Screens/Timeline/View/Style/TimelineItemBubbledStylerView.swift b/ElementX/Sources/Screens/Timeline/View/Style/TimelineItemBubbledStylerView.swift index 27b59b764..d87f4a738 100644 --- a/ElementX/Sources/Screens/Timeline/View/Style/TimelineItemBubbledStylerView.swift +++ b/ElementX/Sources/Screens/Timeline/View/Style/TimelineItemBubbledStylerView.swift @@ -197,12 +197,7 @@ struct TimelineItemBubbledStylerView: View { // The rendered reply bubble with a greedy width. The custom layout prevents // the infinite width from increasing the overall width of the view. - TimelineReplyView(placement: .timeline, timelineItemReplyDetails: replyDetails) - .fixedSize(horizontal: false, vertical: true) - .padding(4.0) - .frame(maxWidth: .infinity, alignment: .leading) - .background(Color.compound.bgCanvasDefault) - .cornerRadius(8) + TimelineReplyView(placement: .timeline, timelineItemReplyDetails: replyDetails, maxWidth: .infinity) .timelineBubbleLayoutSize(.bubbleWidth(mode: .rendering)) .onTapGesture { if context.viewState.timelineKind != .pinned { @@ -212,8 +207,6 @@ struct TimelineItemBubbledStylerView: View { // Add a fixed width reply bubble that is used for layout calculations but won't be rendered. TimelineReplyView(placement: .timeline, timelineItemReplyDetails: replyDetails) - .fixedSize(horizontal: false, vertical: true) - .padding(4.0) .timelineBubbleLayoutSize(.bubbleWidth(mode: .layout)) .hidden() } diff --git a/ElementX/Sources/Screens/Timeline/View/TimelineItemViews/FileRoomTimelineView.swift b/ElementX/Sources/Screens/Timeline/View/TimelineItemViews/FileRoomTimelineView.swift index 7f2f531b3..584a5d036 100644 --- a/ElementX/Sources/Screens/Timeline/View/TimelineItemViews/FileRoomTimelineView.swift +++ b/ElementX/Sources/Screens/Timeline/View/TimelineItemViews/FileRoomTimelineView.swift @@ -90,9 +90,9 @@ struct MediaFileRoomTimelineContent: View { .foregroundStyle(.compound.textPrimary) .lineLimit(2) } icon: { - CompoundIcon(icon, size: .xSmall, relativeTo: .body) + CompoundIcon(icon, size: .medium, relativeTo: .body) .foregroundColor(.compound.iconPrimary) - .scaledPadding(8) + .scaledPadding(6) .background(.compound.iconOnSolidPrimary, in: RoundedRectangle(cornerRadius: 4, style: .continuous)) } diff --git a/ElementX/Sources/Screens/Timeline/View/TimelineItemViews/HighlightedTimelineItemModifier.swift b/ElementX/Sources/Screens/Timeline/View/TimelineItemViews/HighlightedTimelineItemModifier.swift index 328dbc9d5..1a96d6846 100644 --- a/ElementX/Sources/Screens/Timeline/View/TimelineItemViews/HighlightedTimelineItemModifier.swift +++ b/ElementX/Sources/Screens/Timeline/View/TimelineItemViews/HighlightedTimelineItemModifier.swift @@ -88,6 +88,7 @@ struct HighlightedTimelineItemTimeline_Previews: PreviewProvider { static let roomProxyMock = JoinedRoomProxyMock(.init(name: "Preview room")) static let roomViewModel = RoomScreenViewModel.mock(roomProxyMock: roomProxyMock) static let focussedEventID = "RoomTimelineItemFixtures.default.5" + static let composerViewModel = ComposerToolbarViewModel.mock() static let timelineViewModel = TimelineViewModel(roomProxy: roomProxyMock, focussedEventID: focussedEventID, timelineController: MockTimelineController(), @@ -105,7 +106,7 @@ struct HighlightedTimelineItemTimeline_Previews: PreviewProvider { ElementNavigationStack { RoomScreen(context: roomViewModel.context, timelineContext: timelineViewModel.context, - composerToolbar: ComposerToolbar.mock()) + composerToolbar: ComposerToolbar(context: composerViewModel.context)) } .previewDisplayName("Timeline") } diff --git a/ElementX/Sources/Screens/Timeline/View/TimelineView.swift b/ElementX/Sources/Screens/Timeline/View/TimelineView.swift index 9216d5ee1..2acbbf71d 100644 --- a/ElementX/Sources/Screens/Timeline/View/TimelineView.swift +++ b/ElementX/Sources/Screens/Timeline/View/TimelineView.swift @@ -143,6 +143,7 @@ struct TimelineView_Previews: PreviewProvider { // Not testable as this preview static let roomProxyMock = JoinedRoomProxyMock(.init(id: "stable_id", name: "Preview room")) static let roomViewModel = RoomScreenViewModel.mock(roomProxyMock: roomProxyMock) + static let composerViewModel = ComposerToolbarViewModel.mock() static let timelineViewModel = TimelineViewModel(roomProxy: roomProxyMock, timelineController: MockTimelineController(), userSession: UserSessionMock(.init()), @@ -159,7 +160,7 @@ struct TimelineView_Previews: PreviewProvider { // Not testable as this preview ElementNavigationStack { RoomScreen(context: roomViewModel.context, timelineContext: timelineViewModel.context, - composerToolbar: ComposerToolbar.mock()) + composerToolbar: ComposerToolbar(context: composerViewModel.context)) } } } diff --git a/PreviewTests/Sources/GeneratedPreviewTests.swift b/PreviewTests/Sources/GeneratedPreviewTests.swift index a7aae746b..68033380a 100644 --- a/PreviewTests/Sources/GeneratedPreviewTests.swift +++ b/PreviewTests/Sources/GeneratedPreviewTests.swift @@ -1731,6 +1731,14 @@ extension PreviewTests { } } + @Test + func voiceMessageTrashButton() async throws { + AppSettings.resetAllSettings() // Ensure this test's previews start with fresh settings. + for (index, preview) in VoiceMessageTrashButton_Previews._allPreviews.enumerated() { + try await assertSnapshots(matching: preview, step: index) + } + } + @Test func waveformCursorView() async throws { AppSettings.resetAllSettings() // Ensure this test's previews start with fresh settings. diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/audioMediaEventsTimelineView.iPad-en-GB-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/audioMediaEventsTimelineView.iPad-en-GB-0.png index 616beb532..c7f3117e5 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/audioMediaEventsTimelineView.iPad-en-GB-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/audioMediaEventsTimelineView.iPad-en-GB-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ec1bb382778667fe1489e8d085214f4d79bd81d74510696d3adebcdfcfc713af -size 93456 +oid sha256:5ff036210c4b851fb52b45c7e6f75d264862879674d70f55f949001ad8f98b8f +size 93726 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/audioMediaEventsTimelineView.iPad-pseudo-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/audioMediaEventsTimelineView.iPad-pseudo-0.png index 616beb532..c7f3117e5 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/audioMediaEventsTimelineView.iPad-pseudo-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/audioMediaEventsTimelineView.iPad-pseudo-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ec1bb382778667fe1489e8d085214f4d79bd81d74510696d3adebcdfcfc713af -size 93456 +oid sha256:5ff036210c4b851fb52b45c7e6f75d264862879674d70f55f949001ad8f98b8f +size 93726 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/audioMediaEventsTimelineView.iPhone-en-GB-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/audioMediaEventsTimelineView.iPhone-en-GB-0.png index 3da71a866..a245f1db4 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/audioMediaEventsTimelineView.iPhone-en-GB-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/audioMediaEventsTimelineView.iPhone-en-GB-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f1a1809c4a5c833ad4ccd2edcd245fc004c8016b6669ae821af9dce5295acc8f -size 49654 +oid sha256:d8a3a472e8305e0d4d795a8c521f48c88f5d85dbc33a0645de279513f5c4ca4f +size 49824 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/audioMediaEventsTimelineView.iPhone-pseudo-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/audioMediaEventsTimelineView.iPhone-pseudo-0.png index 3da71a866..a245f1db4 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/audioMediaEventsTimelineView.iPhone-pseudo-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/audioMediaEventsTimelineView.iPhone-pseudo-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f1a1809c4a5c833ad4ccd2edcd245fc004c8016b6669ae821af9dce5295acc8f -size 49654 +oid sha256:d8a3a472e8305e0d4d795a8c521f48c88f5d85dbc33a0645de279513f5c4ca4f +size 49824 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/audioRoomTimelineView.iPad-en-GB-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/audioRoomTimelineView.iPad-en-GB-0.png index fb5edca46..04e1e9f49 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/audioRoomTimelineView.iPad-en-GB-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/audioRoomTimelineView.iPad-en-GB-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:511988d473710cfeb8cd4c79eaf061513ec7d2eddaee4924d90054501ed03e02 -size 100630 +oid sha256:18442638b7a6dc3fe925ab9b58ffc14edd8e01b9bee0aac5e6f9ea79c6f67b74 +size 100601 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/audioRoomTimelineView.iPad-pseudo-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/audioRoomTimelineView.iPad-pseudo-0.png index 019995c40..8e74af4ff 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/audioRoomTimelineView.iPad-pseudo-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/audioRoomTimelineView.iPad-pseudo-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6140d86983701122a6048d7a62e53af13b1f6cc0131cdf8b3bd0f12728295fae -size 102243 +oid sha256:5ac299342a3a05374528ec4db27c2b98db7a114b97e5130b1c2c10d2c4335e14 +size 102203 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/audioRoomTimelineView.iPhone-en-GB-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/audioRoomTimelineView.iPhone-en-GB-0.png index 14900c39f..e2f301096 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/audioRoomTimelineView.iPhone-en-GB-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/audioRoomTimelineView.iPhone-en-GB-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:073505b559115b954dd522f9022c0b9fa7a8c127b5ec2aec726e9442a38c76d5 -size 55503 +oid sha256:de431a055160ecdada6bcd5222b1d59f25d134ae5f5b89bf6ce5dced1cd17db8 +size 56727 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/audioRoomTimelineView.iPhone-pseudo-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/audioRoomTimelineView.iPhone-pseudo-0.png index 363d5b516..3f6e96eba 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/audioRoomTimelineView.iPhone-pseudo-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/audioRoomTimelineView.iPhone-pseudo-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1964389ab91210768b61f7305eb6b5f5a5b313bb1decbb872bf44480441c98c7 -size 56778 +oid sha256:f6e26a949fa8acf0f8acedc876add044a6a253eda6d3e89ce4f6d0740b286f11 +size 57958 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/composerToolbar.Disabled-iPad-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/composerToolbar.Disabled-iPad-en-GB.png deleted file mode 100644 index 7fa2e7ba0..000000000 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/composerToolbar.Disabled-iPad-en-GB.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:85e45276b103434f723b08aaf54cfe426abc13f0a7679613d5fbe8a83325ec94 -size 75323 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/composerToolbar.Disabled-iPad-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/composerToolbar.Disabled-iPad-pseudo.png deleted file mode 100644 index e0f073650..000000000 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/composerToolbar.Disabled-iPad-pseudo.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7d5021fa24b1d5f192ed76bb390dbff053100b5623047a63c152f0f35e30bcbd -size 75731 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/composerToolbar.Disabled-iPhone-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/composerToolbar.Disabled-iPhone-en-GB.png deleted file mode 100644 index 48de875e6..000000000 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/composerToolbar.Disabled-iPhone-en-GB.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9c35db320a8a6cc7f7fa972d7b21f22eef64c3f7c030e6851242901f4bc430e7 -size 34471 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/composerToolbar.Disabled-iPhone-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/composerToolbar.Disabled-iPhone-pseudo.png deleted file mode 100644 index 44f15b480..000000000 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/composerToolbar.Disabled-iPhone-pseudo.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c1ef324a6f8e718d4e0aa24d40f2fd24d4bc160cab1e9fda842a9d632b15b1c1 -size 34887 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/composerToolbar.Reply-iPad-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/composerToolbar.Reply-iPad-en-GB.png index d6f621853..8af3f72a2 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/composerToolbar.Reply-iPad-en-GB.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/composerToolbar.Reply-iPad-en-GB.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e29fbc6ee608e2b8c8577ebbaa8e5e81c62178843596f27be5b880a602678ecb -size 93521 +oid sha256:e26965b752ba937daa43aa9968c34df7f3fcc6de55aece0587be7a5401f668e5 +size 93829 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/composerToolbar.Reply-iPad-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/composerToolbar.Reply-iPad-pseudo.png index 372b11b94..674a14327 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/composerToolbar.Reply-iPad-pseudo.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/composerToolbar.Reply-iPad-pseudo.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:89e98c6a45920ba04a672f8870a31cc2c3a65f29598b4fc50d555fe7e1bb6d1d -size 94425 +oid sha256:9111498f1151b9c79dca8de75acd398b3f91b6aba1831052f92dc79dab4aebea +size 94638 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/composerToolbar.Reply-iPhone-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/composerToolbar.Reply-iPhone-en-GB.png index 5c7bc5c75..3fd8e1814 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/composerToolbar.Reply-iPhone-en-GB.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/composerToolbar.Reply-iPhone-en-GB.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ce454947bab757b85d78c786f3c7da0b8e9097bcf2e830ddbf43fe7a8a8f6896 -size 50581 +oid sha256:ddafeda34e05246030b24e2552bdbab5d9a0aa0ea4670e8002ab4816843602b8 +size 51811 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/composerToolbar.Reply-iPhone-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/composerToolbar.Reply-iPhone-pseudo.png index add5d1983..609927a18 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/composerToolbar.Reply-iPhone-pseudo.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/composerToolbar.Reply-iPhone-pseudo.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:beeab7135aadf7adfa80e8480e9d303daee66235fe92d7f07427fa7db9888798 -size 51446 +oid sha256:4e54d5e504f21680c2ca362b205e3729e07f86c5c87e746e756b2516529cd88a +size 52581 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/composerToolbar.Voice-Message-iPad-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/composerToolbar.Voice-Message-iPad-en-GB.png deleted file mode 100644 index 2b2dbf963..000000000 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/composerToolbar.Voice-Message-iPad-en-GB.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:bc4ac296b7324d7c671f5d9b2d9177503fc65da88ecb2e4ceb448c63b1719d94 -size 98949 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/composerToolbar.Voice-Message-iPad-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/composerToolbar.Voice-Message-iPad-pseudo.png deleted file mode 100644 index 7d18d9ded..000000000 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/composerToolbar.Voice-Message-iPad-pseudo.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5436ea7dff07d90938cf0272f031d7ca5ea421492af01210a207635758dd1dea -size 99763 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/composerToolbar.Voice-Message-iPhone-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/composerToolbar.Voice-Message-iPhone-en-GB.png deleted file mode 100644 index f3521ac96..000000000 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/composerToolbar.Voice-Message-iPhone-en-GB.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:07352ff97ea1b150f87496cf6b120301d691787b955d00f174f20544d71dfd6c -size 56086 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/composerToolbar.Voice-Message-iPhone-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/composerToolbar.Voice-Message-iPhone-pseudo.png deleted file mode 100644 index f328c5418..000000000 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/composerToolbar.Voice-Message-iPhone-pseudo.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c261a9f1e2f89bb4e4dc05dddb0841c43b78741ca2035ade2f8b23c411c3ab3c -size 56920 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/composerToolbar.With-Suggestions-iPad-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/composerToolbar.With-Suggestions-iPad-en-GB.png index 7f096c4ab..da81dc667 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/composerToolbar.With-Suggestions-iPad-en-GB.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/composerToolbar.With-Suggestions-iPad-en-GB.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7b900bb2a2da0750a6f4bf14e07b5ae0b884325844f7672417f05b91a6d07aeb -size 108348 +oid sha256:bfc947f1ae8f865872359c5bce68891ad85791f1acc42ea336157e5d3fe30c05 +size 108160 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/composerToolbar.With-Suggestions-iPad-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/composerToolbar.With-Suggestions-iPad-pseudo.png index 503bed84d..24a4b51ba 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/composerToolbar.With-Suggestions-iPad-pseudo.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/composerToolbar.With-Suggestions-iPad-pseudo.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:46ba3c105adda9a91f1b6227b15455200b8b1f5b8e87d6826067cdfec5dca334 -size 108764 +oid sha256:2c83ebe6eb8b73c72e4d1e7802489348f636417eb4d4ce653486b23b8933101e +size 108566 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/composerToolbar.With-Suggestions-iPhone-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/composerToolbar.With-Suggestions-iPhone-en-GB.png index 9b9a8a299..3f95175be 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/composerToolbar.With-Suggestions-iPhone-en-GB.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/composerToolbar.With-Suggestions-iPhone-en-GB.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9a2a6c34e7e14ecee0dcc66f519f95344ce67a9029f21727d6325d195e3320d0 -size 62683 +oid sha256:2be65102a1175ad965313481caf2de0e90916cff9da0ac1bc2ed2524b9174bd4 +size 62283 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/composerToolbar.With-Suggestions-iPhone-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/composerToolbar.With-Suggestions-iPhone-pseudo.png index 4429f339f..904fd64a3 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/composerToolbar.With-Suggestions-iPhone-pseudo.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/composerToolbar.With-Suggestions-iPhone-pseudo.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2120e2fc71bf507895247ed0443a0be8e031fb64918e298b0a8e567101e0c4f7 -size 63096 +oid sha256:16d292aef7301122c2da9b9438fe148dfc3864c7b27cb3aa036a53a7cf732792 +size 62678 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/composerToolbar.iPad-en-GB-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/composerToolbar.iPad-en-GB-0.png index 7e59dbdc1..bd06d36b8 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/composerToolbar.iPad-en-GB-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/composerToolbar.iPad-en-GB-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ea5b800aba78730d31cd47cafb275f9683ee9e4fe40208fa386408727c5be388 -size 75401 +oid sha256:9cd6bbd629067f53ad6885129dfee81c43f78ccf7c515f005a91df295c717532 +size 148095 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/composerToolbar.iPad-pseudo-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/composerToolbar.iPad-pseudo-0.png index 82a9ec227..cfb1f484b 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/composerToolbar.iPad-pseudo-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/composerToolbar.iPad-pseudo-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4e8778d01225ec03f6be4de5a6ead3d521b6a846f7dc930c15cdcd8c56ceffa6 -size 75812 +oid sha256:14ae4ba470af977284c488c79a3f37306f86bdc13fc0b883e022e41c61791f23 +size 149150 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/composerToolbar.iPhone-en-GB-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/composerToolbar.iPhone-en-GB-0.png index 8a5ee1052..606a49039 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/composerToolbar.iPhone-en-GB-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/composerToolbar.iPhone-en-GB-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:70bc2fff42a40d63ce3d536644a26735c887b7d6af9696a9963520cb14d2a83d -size 34626 +oid sha256:09023dab14a8f82bc0c0fadebfe61950f96a48b66243ad5aad0122a986ee4821 +size 100349 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/composerToolbar.iPhone-pseudo-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/composerToolbar.iPhone-pseudo-0.png index d4bbeedb9..39977411e 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/composerToolbar.iPhone-pseudo-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/composerToolbar.iPhone-pseudo-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:aeea98e9077d43b967681191d5e2da15dbfa788a745c3e2f8a1752698df6d412 -size 35045 +oid sha256:6d43565e0927d3378f0ad641cdc1893ec04daf2f8528e0cc73d5bb4fb2c16d3a +size 102182 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/fileMediaEventsTimelineView.iPad-en-GB-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/fileMediaEventsTimelineView.iPad-en-GB-0.png index 0ce7dffbc..122537d96 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/fileMediaEventsTimelineView.iPad-en-GB-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/fileMediaEventsTimelineView.iPad-en-GB-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:648dd14dff578845c45011f62423b82b0f31663646e578b76b42fd457236f63a -size 121182 +oid sha256:c1dc34c35df174c7c8d4b3665d97deea97008ea5f3130d42dc18a7f4c5333491 +size 121929 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/fileMediaEventsTimelineView.iPad-pseudo-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/fileMediaEventsTimelineView.iPad-pseudo-0.png index 0ce7dffbc..122537d96 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/fileMediaEventsTimelineView.iPad-pseudo-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/fileMediaEventsTimelineView.iPad-pseudo-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:648dd14dff578845c45011f62423b82b0f31663646e578b76b42fd457236f63a -size 121182 +oid sha256:c1dc34c35df174c7c8d4b3665d97deea97008ea5f3130d42dc18a7f4c5333491 +size 121929 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/fileMediaEventsTimelineView.iPhone-en-GB-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/fileMediaEventsTimelineView.iPhone-en-GB-0.png index 9daa51b22..129f6f765 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/fileMediaEventsTimelineView.iPhone-en-GB-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/fileMediaEventsTimelineView.iPhone-en-GB-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a01eb9a4ba39c43296196e1ce434e8826e7c44626ed04ca21786808e75056834 -size 74214 +oid sha256:b358f50697a6e5fe55f0107f7671efe30aceec8e13fc1bc2fecbaefee5327628 +size 75449 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/fileMediaEventsTimelineView.iPhone-pseudo-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/fileMediaEventsTimelineView.iPhone-pseudo-0.png index 9daa51b22..129f6f765 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/fileMediaEventsTimelineView.iPhone-pseudo-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/fileMediaEventsTimelineView.iPhone-pseudo-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a01eb9a4ba39c43296196e1ce434e8826e7c44626ed04ca21786808e75056834 -size 74214 +oid sha256:b358f50697a6e5fe55f0107f7671efe30aceec8e13fc1bc2fecbaefee5327628 +size 75449 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/fileRoomTimelineView.iPad-en-GB-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/fileRoomTimelineView.iPad-en-GB-0.png index 444247a0e..f5199f4f1 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/fileRoomTimelineView.iPad-en-GB-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/fileRoomTimelineView.iPad-en-GB-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:140c478c95147258894ea18dfa0b67c35b6ca209d7927b83582df4f2e842b4cf -size 154385 +oid sha256:37af44a7e611caacb2d2d06a0c09de7617b218123e1dff1271745cbb407588aa +size 155052 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/fileRoomTimelineView.iPad-pseudo-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/fileRoomTimelineView.iPad-pseudo-0.png index 91cfe6fab..05311ee57 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/fileRoomTimelineView.iPad-pseudo-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/fileRoomTimelineView.iPad-pseudo-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:50af185e5040f2dde21b1049fcc98afe0b6e1dc25db061d0ff1115c75058d0f9 -size 158479 +oid sha256:f261b91e9329722a372ad27c690d1159c8f963c5d6c0dd350805902720a4152a +size 159112 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/fileRoomTimelineView.iPhone-en-GB-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/fileRoomTimelineView.iPhone-en-GB-0.png index d1edd591d..6c82b867d 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/fileRoomTimelineView.iPhone-en-GB-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/fileRoomTimelineView.iPhone-en-GB-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:db3e0649000604635f786518ae36f6a787ae6fabdd519f77309cc97b1f43e46c -size 106925 +oid sha256:0954a711d9f64525a2721964433b7d9fcc9dcab5ca097d12e79abfadb771b30d +size 108469 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/fileRoomTimelineView.iPhone-pseudo-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/fileRoomTimelineView.iPhone-pseudo-0.png index a69d0c0ea..346c5bf95 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/fileRoomTimelineView.iPhone-pseudo-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/fileRoomTimelineView.iPhone-pseudo-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3a74b6591689cff1445daf23d518d489d1d307b6f3b85dfff9b726e2a11b1453 -size 110263 +oid sha256:860d42a1031f730f40d0936d86218d94f0148b26b74342a7355756fec483eadf +size 111525 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/formattingToolbar.iPad-en-GB-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/formattingToolbar.iPad-en-GB-0.png index 20070b9f3..514d1386f 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/formattingToolbar.iPad-en-GB-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/formattingToolbar.iPad-en-GB-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:53bf1224988a6b72e2d1661a0a3a664541e0e8f317a78face45bf08a53138e9d -size 77999 +oid sha256:aca922a460d54a446c16884f2f3ce5f509b28a57e887db5d60c72b7ee004d9a9 +size 87437 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/formattingToolbar.iPad-pseudo-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/formattingToolbar.iPad-pseudo-0.png index 20070b9f3..514d1386f 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/formattingToolbar.iPad-pseudo-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/formattingToolbar.iPad-pseudo-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:53bf1224988a6b72e2d1661a0a3a664541e0e8f317a78face45bf08a53138e9d -size 77999 +oid sha256:aca922a460d54a446c16884f2f3ce5f509b28a57e887db5d60c72b7ee004d9a9 +size 87437 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/formattingToolbar.iPhone-en-GB-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/formattingToolbar.iPhone-en-GB-0.png index 39e91b97b..46133cfde 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/formattingToolbar.iPhone-en-GB-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/formattingToolbar.iPhone-en-GB-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c3a67f6ea471afb4802522f3489f23cde7b7b560a6e36d02fca28239d4a0cae3 -size 33560 +oid sha256:1fc7f452a2c8b245313ae70c06fe00ce93a207e2a90113d5d34deb418c33a0a6 +size 41161 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/formattingToolbar.iPhone-pseudo-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/formattingToolbar.iPhone-pseudo-0.png index 39e91b97b..46133cfde 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/formattingToolbar.iPhone-pseudo-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/formattingToolbar.iPhone-pseudo-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c3a67f6ea471afb4802522f3489f23cde7b7b560a6e36d02fca28239d4a0cae3 -size 33560 +oid sha256:1fc7f452a2c8b245313ae70c06fe00ce93a207e2a90113d5d34deb418c33a0a6 +size 41161 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/liveLocationRoomTimelineView.Bubbles-iPad-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/liveLocationRoomTimelineView.Bubbles-iPad-en-GB.png index 47398e52f..be87dd282 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/liveLocationRoomTimelineView.Bubbles-iPad-en-GB.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/liveLocationRoomTimelineView.Bubbles-iPad-en-GB.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c4c8ec3fa76dfde7b52c37fb7349b1be4ac326f4a82ca854f5cc7694e0b63a58 -size 2062156 +oid sha256:43d866593057761090bb2b96e39ed678833441aa870bac82ac269274a5d78f87 +size 2062660 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/liveLocationRoomTimelineView.Bubbles-iPad-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/liveLocationRoomTimelineView.Bubbles-iPad-pseudo.png index 05d9ad02d..6aed9096c 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/liveLocationRoomTimelineView.Bubbles-iPad-pseudo.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/liveLocationRoomTimelineView.Bubbles-iPad-pseudo.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:da8862b27011b05259ea038c13b8ccb7b1ae1f72187a9db11624c940f087f5d3 -size 2088241 +oid sha256:17a6b41858d52fce6ce52b4d7708a95b70e71ac6ea054a02baac31d3ba6ff9d9 +size 2088606 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/liveLocationRoomTimelineView.Bubbles-iPhone-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/liveLocationRoomTimelineView.Bubbles-iPhone-en-GB.png index 6417f1054..7015ecaf9 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/liveLocationRoomTimelineView.Bubbles-iPhone-en-GB.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/liveLocationRoomTimelineView.Bubbles-iPhone-en-GB.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:da93cfeea45c3b2f4d3a96ecba3d1e091b7749deb3fdc52a67130fe5b65731cd -size 892730 +oid sha256:e08dbc6a8b42d40bf6ef8ef2fbfc9eea5f27934203543b2ea26f9f574dfbb759 +size 892677 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/liveLocationRoomTimelineView.Bubbles-iPhone-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/liveLocationRoomTimelineView.Bubbles-iPhone-pseudo.png index 083abe280..d1215aa7b 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/liveLocationRoomTimelineView.Bubbles-iPhone-pseudo.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/liveLocationRoomTimelineView.Bubbles-iPhone-pseudo.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:71e2e99f99fad5143cf775f97a797bc49ddbe7ed33e96f9e828ea5861a49611d -size 920079 +oid sha256:e984b80f719db3626eca2185eb0cde375079c92ef4f52a8faf259df7e86a42d0 +size 919828 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/locationRoomTimelineView.Bubbles-iPad-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/locationRoomTimelineView.Bubbles-iPad-en-GB.png index 71808fe5e..f47f8a263 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/locationRoomTimelineView.Bubbles-iPad-en-GB.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/locationRoomTimelineView.Bubbles-iPad-en-GB.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d15de26595447324d07c37743b11dad007f642ac89a3e7e3c48cd780bc4ecb81 -size 1294587 +oid sha256:1b8e1da549bebefa2452f375d0c14a195d4e985ac9cb7841b36121107787d043 +size 1295023 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/locationRoomTimelineView.Bubbles-iPad-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/locationRoomTimelineView.Bubbles-iPad-pseudo.png index dd9105141..3e82d2e69 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/locationRoomTimelineView.Bubbles-iPad-pseudo.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/locationRoomTimelineView.Bubbles-iPad-pseudo.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:18fc1f6ab7d0fb4594ab1967673562b47de74b5279d1cd48d38184d871a35b16 -size 1297733 +oid sha256:7dd31cdcf9a2f90466254b2d82f96287884d0a36551fdf825c211736e817eb3a +size 1298213 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/locationRoomTimelineView.Bubbles-iPhone-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/locationRoomTimelineView.Bubbles-iPhone-en-GB.png index c750fd95b..30cb3434e 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/locationRoomTimelineView.Bubbles-iPhone-en-GB.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/locationRoomTimelineView.Bubbles-iPhone-en-GB.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ea260f8c6615aca8ea3f3afcad493e1698a8c4112ea521312bdaab043499957d -size 574431 +oid sha256:26e5ccab47d30ce36dc519114ee5d487e113ee95d2601f42a5efbd1f8f24f547 +size 574401 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/locationRoomTimelineView.Bubbles-iPhone-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/locationRoomTimelineView.Bubbles-iPhone-pseudo.png index 460c985b6..f8eda9454 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/locationRoomTimelineView.Bubbles-iPhone-pseudo.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/locationRoomTimelineView.Bubbles-iPhone-pseudo.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:17b2a4d650fe20eca470d66dd074921413cdaf2cfbe5b7623f10765b47674096 -size 576073 +oid sha256:0b4ab15d397ed6bfc8f9b3c723ec692f26fe5115d87e6963b372de472d9de775 +size 575953 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/mediaEventsTimelineScreen.Files-iPad-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/mediaEventsTimelineScreen.Files-iPad-en-GB.png index 17ac35773..f00baa3e8 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/mediaEventsTimelineScreen.Files-iPad-en-GB.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/mediaEventsTimelineScreen.Files-iPad-en-GB.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:445596e14d6bdf911e848b362a4611d5f58d7d7be5f1d85d9b64b28273e5a251 -size 144598 +oid sha256:8abd361ead9b4ba3a4fcc775dbb5f30e9efacea8b04aed07efd568bc06f450e0 +size 150126 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/mediaEventsTimelineScreen.Files-iPad-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/mediaEventsTimelineScreen.Files-iPad-pseudo.png index f74e03d26..fe060051f 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/mediaEventsTimelineScreen.Files-iPad-pseudo.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/mediaEventsTimelineScreen.Files-iPad-pseudo.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b3fc285832442e302533f1b4ad593618b677a89c7d73db57085aa3fe6ed03cfa -size 146614 +oid sha256:f56532ab4444f2b83fa58ee52cc6e8fe9370bf33dd1fbe411bff843fdc8744d6 +size 152141 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/mediaEventsTimelineScreen.Files-iPhone-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/mediaEventsTimelineScreen.Files-iPhone-en-GB.png index df3258f7e..a0f373cca 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/mediaEventsTimelineScreen.Files-iPhone-en-GB.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/mediaEventsTimelineScreen.Files-iPhone-en-GB.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:92382bb10c78fb31d2736089f78cf70a78929542ba374959ade0954155864af1 -size 88014 +oid sha256:44ab513cb0d75b8665c8a0672aac12da40a1c1e620f002f0bee426f904dfdd4b +size 92914 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/mediaEventsTimelineScreen.Files-iPhone-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/mediaEventsTimelineScreen.Files-iPhone-pseudo.png index 26bece70a..6872a1501 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/mediaEventsTimelineScreen.Files-iPhone-pseudo.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/mediaEventsTimelineScreen.Files-iPhone-pseudo.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5e54dede9347e647422d7f84c4a8f0e7fb48a5f01965110ceb2629a9bb874708 -size 88915 +oid sha256:e0ca5e74f5d67f2f494df163a5d04d820bde4144f2d3ece3a0a082f5176e4656 +size 93836 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/mediaUploadPreviewScreen.iPad-en-GB-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/mediaUploadPreviewScreen.iPad-en-GB-0.png index 313b59694..0a25c750c 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/mediaUploadPreviewScreen.iPad-en-GB-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/mediaUploadPreviewScreen.iPad-en-GB-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:642e6b0ed22b29ca18c501193f44c307c150d8282ce4ff666d264c99e8055531 -size 90187 +oid sha256:b2e3f268b8061428159124d723cd7226d5cd651fba44bc5e2d0dc27ff20e9d41 +size 86287 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/mediaUploadPreviewScreen.iPad-pseudo-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/mediaUploadPreviewScreen.iPad-pseudo-0.png index 82c123968..163806653 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/mediaUploadPreviewScreen.iPad-pseudo-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/mediaUploadPreviewScreen.iPad-pseudo-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:08095d0d99f6d2d02f5b4064d0197647b4e71ae731494bde5d076e597ed7151d -size 91259 +oid sha256:990a7554e18ebedbf097699e682af78fb3e40523a72a6b7ad35d3c91bd01383c +size 87338 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/mediaUploadPreviewScreen.iPhone-en-GB-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/mediaUploadPreviewScreen.iPhone-en-GB-0.png index aad8b8824..de8ed1e03 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/mediaUploadPreviewScreen.iPhone-en-GB-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/mediaUploadPreviewScreen.iPhone-en-GB-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:905dcb4978da9630055c40ba9b5a0186c3fe1a5b92460f3fc1fab273f60bb5cc -size 43584 +oid sha256:a33973e5a643555e3ed785f1f34f7fff71e67f2be8099f1c4e654117dec62d05 +size 39920 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/mediaUploadPreviewScreen.iPhone-pseudo-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/mediaUploadPreviewScreen.iPhone-pseudo-0.png index 8f1d06dbd..705a4e9b6 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/mediaUploadPreviewScreen.iPhone-pseudo-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/mediaUploadPreviewScreen.iPhone-pseudo-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7185a60c207517a7c804d577f285fa94311fdb206c30fd42910400a88f96d054 -size 44153 +oid sha256:673f2f990cb59bf7b2f6e5e1fe25ce0dabb5a4c380ff69e2ee1a0a3ad1aa0cea +size 40373 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/messageComposer.Replying-iPad-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/messageComposer.Replying-iPad-en-GB.png index b024f4d2f..822bfda03 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/messageComposer.Replying-iPad-en-GB.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/messageComposer.Replying-iPad-en-GB.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7f4a59dc601b2272595612cc15929689e4d908e3443e6354e549dcd22d94d51d -size 209057 +oid sha256:5d1cee861368f1ff16fe9046f94033574f715b9cc517246eafca1b8d5ad2b52d +size 205021 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/messageComposer.Replying-iPad-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/messageComposer.Replying-iPad-pseudo.png index 305677c17..0d22b1d14 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/messageComposer.Replying-iPad-pseudo.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/messageComposer.Replying-iPad-pseudo.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b1b4bb1ac2b44f08067e8e290c469572e9d778d8d7d900d1572b19f884b9a5d5 -size 212362 +oid sha256:6db9d709a5e97790d355d95f22432984964294c7a923f002d282ed19a3edf835 +size 208254 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/messageComposer.Replying-iPhone-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/messageComposer.Replying-iPhone-en-GB.png index ed4062f2c..5e634cf4a 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/messageComposer.Replying-iPhone-en-GB.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/messageComposer.Replying-iPhone-en-GB.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:98f071a43f4d4b0ed53abaedd96ebc5713485aaff4cfdc06fc71165934a93313 -size 146556 +oid sha256:9474ca31071c9dafb275f1c00245d63590f2d3b6cc063a8193c38abb83f70720 +size 144717 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/messageComposer.Replying-iPhone-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/messageComposer.Replying-iPhone-pseudo.png index 8ae1a312d..894529cf8 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/messageComposer.Replying-iPhone-pseudo.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/messageComposer.Replying-iPhone-pseudo.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2dd55299a8dd12aaaa833f73f8986a5b0c970cf38d7936c396162fe8bfebc298 -size 149858 +oid sha256:240cbd13759c06666d4cd34d23e054b2166a115ad0ea878619e1a19563765394 +size 147531 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/messageComposer.Replying-in-thread-iPad-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/messageComposer.Replying-in-thread-iPad-en-GB.png index fe311aa05..d99501cea 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/messageComposer.Replying-in-thread-iPad-en-GB.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/messageComposer.Replying-in-thread-iPad-en-GB.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b438428319dc35cd36119e2f1268ad4e7233d5944784ee79a40d72529b8ed7ea -size 216228 +oid sha256:45146b4cba38e487a255a30f521274416921068cf75d640cf7a153139c7239d5 +size 212374 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/messageComposer.Replying-in-thread-iPad-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/messageComposer.Replying-in-thread-iPad-pseudo.png index 1f5866bb7..7c966dcbb 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/messageComposer.Replying-in-thread-iPad-pseudo.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/messageComposer.Replying-in-thread-iPad-pseudo.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f236a885a1f4eff5d8897910c22be6ccea17f36c9e5370816681eb84d3cec471 -size 222241 +oid sha256:53068a58b7f9f8c338c7fe528da9c0115f91df80c1de27cd33c1c8aeaf9228ea +size 218748 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/messageComposer.Replying-in-thread-iPhone-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/messageComposer.Replying-in-thread-iPhone-en-GB.png index 19e2c8525..e0a27d632 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/messageComposer.Replying-in-thread-iPhone-en-GB.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/messageComposer.Replying-in-thread-iPhone-en-GB.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3162a5a49b5fcd25ac7880ecd7837ef7c1efa3599d1b1fa0065dbd43b645dcaf -size 152742 +oid sha256:6727a8eb29ec64e3a1065c7564aed13db06059fe8b3863d433cb41a4162f66b3 +size 149930 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/messageComposer.Replying-in-thread-iPhone-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/messageComposer.Replying-in-thread-iPhone-pseudo.png index cc500da70..b4970508d 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/messageComposer.Replying-in-thread-iPhone-pseudo.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/messageComposer.Replying-in-thread-iPhone-pseudo.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7e5bd2e69da096c9c913fc90507afedb23e4dd7b61c4c1ac360da8cb9f442080 -size 158688 +oid sha256:864f452d4ca827d1e64b2a3345b6c09a45108ce087640d4b8075820003198348 +size 155737 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/messageComposer.iPad-en-GB-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/messageComposer.iPad-en-GB-0.png index 10bad520e..43be26f01 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/messageComposer.iPad-en-GB-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/messageComposer.iPad-en-GB-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:98bf01c02b68e39569825ffa1d733734ff63a875ccfea6e57b4e0a28f28d030a -size 152501 +oid sha256:d9b0281055ab7105b20f42b5b39e4ad5dbff2ec1d2638aabae2ba89c4dc0af24 +size 147525 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/messageComposer.iPad-pseudo-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/messageComposer.iPad-pseudo-0.png index 15e3269ca..5f5d5319f 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/messageComposer.iPad-pseudo-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/messageComposer.iPad-pseudo-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7260f5478a223b856671f77307e0ff007807815973cc90121362f9d89f491ffe -size 156788 +oid sha256:a3692e5c7d1b4b602dd8b6283873729f0f40f37fe856c0da00ed0303e07a06b7 +size 151966 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/messageComposer.iPhone-en-GB-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/messageComposer.iPhone-en-GB-0.png index 25bd5c66c..09fe5ef99 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/messageComposer.iPhone-en-GB-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/messageComposer.iPhone-en-GB-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ecedd1e6746be3373c7159c161bbb414a8940a678dea408489e46b8963cc881f -size 105148 +oid sha256:4edf15a40751f33aabbb280b3cdddafe8a2f4ffe099f06dfd4b568d45e3ec871 +size 103665 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/messageComposer.iPhone-pseudo-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/messageComposer.iPhone-pseudo-0.png index 616624509..0f9ae59df 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/messageComposer.iPhone-pseudo-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/messageComposer.iPhone-pseudo-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d7b2f9403956597e7ca39c470c0e4c8a78c35cc77c20f49f963197aef6faa056 -size 111088 +oid sha256:ad300dfd808122db80492924a4eefcc18b58b1a39b71b61920a173f7ff7e2b6c +size 109135 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/pillViewOnBubble.iPad-en-GB-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/pillViewOnBubble.iPad-en-GB-0.png index 7af9425d2..4154a9b76 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/pillViewOnBubble.iPad-en-GB-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/pillViewOnBubble.iPad-en-GB-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ab68f29e26e24bce909e856428e8325e6f0efed23407fd5288b10cde2882df13 -size 106033 +oid sha256:971cd40a685c67c3b3b3c7bf67aa4941e8561bab934ea369681ddb3ecfd09cc5 +size 102012 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/pillViewOnBubble.iPad-pseudo-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/pillViewOnBubble.iPad-pseudo-0.png index 95356d6b1..96c6e9cb9 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/pillViewOnBubble.iPad-pseudo-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/pillViewOnBubble.iPad-pseudo-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:95dc76d067cad2d7453059f2a8244085b144454ed2bcd756caf4e4198f2646ba -size 107222 +oid sha256:75d25b3963edef20f297d6ef9947254b4d3795ebd6d19d0f777131ec4c032124 +size 103206 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/pillViewOnBubble.iPhone-en-GB-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/pillViewOnBubble.iPhone-en-GB-0.png index e5b8ca53e..aa96071ec 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/pillViewOnBubble.iPhone-en-GB-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/pillViewOnBubble.iPhone-en-GB-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c34744794935039fc2fa0c1839bba347b43d31e8d8fdeb1c18f5cd747cb22a96 -size 61003 +oid sha256:c7956c9aeef76e991735e0edb636d50170234bf964e686878c3b744565a61c59 +size 57946 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/pillViewOnBubble.iPhone-pseudo-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/pillViewOnBubble.iPhone-pseudo-0.png index 89df9ecbf..456877d13 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/pillViewOnBubble.iPhone-pseudo-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/pillViewOnBubble.iPhone-pseudo-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9265c0c1d7004723cf7bf21e260a44117440564ed988d7d7ea148401a31cf5ba -size 64083 +oid sha256:f52e5b1312615297666b42affb652b1e831b4e7fa9935018767a33150ed29b82 +size 61298 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/roomAttachmentPicker.iPad-en-GB-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/roomAttachmentPicker.iPad-en-GB-0.png index 0e66de050..12711bf47 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/roomAttachmentPicker.iPad-en-GB-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/roomAttachmentPicker.iPad-en-GB-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1744288d87b83a7c03961f34fb9a812d897aed7a892260c8fa35d76b7904895e -size 67530 +oid sha256:2d95691d4d130987abdc68b7cb74d686f7a0c76022e6f1ddf9eef7bff7fa285d +size 67839 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/roomAttachmentPicker.iPad-pseudo-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/roomAttachmentPicker.iPad-pseudo-0.png index 0e66de050..12711bf47 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/roomAttachmentPicker.iPad-pseudo-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/roomAttachmentPicker.iPad-pseudo-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1744288d87b83a7c03961f34fb9a812d897aed7a892260c8fa35d76b7904895e -size 67530 +oid sha256:2d95691d4d130987abdc68b7cb74d686f7a0c76022e6f1ddf9eef7bff7fa285d +size 67839 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/roomAttachmentPicker.iPhone-en-GB-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/roomAttachmentPicker.iPhone-en-GB-0.png index 9e49e2642..8fb637817 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/roomAttachmentPicker.iPhone-en-GB-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/roomAttachmentPicker.iPhone-en-GB-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a7b036e97f1eb77338589fdb60912b37467e022e70fcaefc8d426fdaebbd9532 -size 27242 +oid sha256:322ddd6b538f7ba747c19afcb5e34a3de9f5c68629c14d6d1b7c228e5f41eae3 +size 27699 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/roomAttachmentPicker.iPhone-pseudo-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/roomAttachmentPicker.iPhone-pseudo-0.png index 9e49e2642..8fb637817 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/roomAttachmentPicker.iPhone-pseudo-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/roomAttachmentPicker.iPhone-pseudo-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a7b036e97f1eb77338589fdb60912b37467e022e70fcaefc8d426fdaebbd9532 -size 27242 +oid sha256:322ddd6b538f7ba747c19afcb5e34a3de9f5c68629c14d6d1b7c228e5f41eae3 +size 27699 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/roomScreen.Normal-iPad-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/roomScreen.Normal-iPad-en-GB.png index ad6f48176..ad7c4cbe7 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/roomScreen.Normal-iPad-en-GB.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/roomScreen.Normal-iPad-en-GB.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:abe4912a97d381e8e0dc958e5acb47beb69e3505180b7d2eff5561fa5d1da916 -size 291850 +oid sha256:b4eb07a38487a137a9be2853c1483e540d76f540998eb2b9570a2abf542cf132 +size 291478 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/roomScreen.Normal-iPad-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/roomScreen.Normal-iPad-pseudo.png index d8a445a80..13120f8a4 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/roomScreen.Normal-iPad-pseudo.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/roomScreen.Normal-iPad-pseudo.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:48ffb35c98280df48af0965200587b4a3e7103b0abf2c1ce913e04dda3a10bec -size 299721 +oid sha256:e24b5448e6f0bbeffe9ce7043ff54764efdc1f0082a6aeb4def7f8d4bcc7fad1 +size 299293 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/roomScreen.Normal-iPhone-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/roomScreen.Normal-iPhone-en-GB.png index 98efc6281..e6dfa4000 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/roomScreen.Normal-iPhone-en-GB.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/roomScreen.Normal-iPhone-en-GB.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cb39d076fa6d2b1f263448d0e1f41623f808681597d2a0bb5d11181c1616dc31 -size 176466 +oid sha256:dd758b1b4cf5debc05c5e884019a42a165b7e1ca53fc20cbc5132e5dd1d23688 +size 175928 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/roomScreen.Normal-iPhone-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/roomScreen.Normal-iPhone-pseudo.png index 28a319686..9009d896c 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/roomScreen.Normal-iPhone-pseudo.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/roomScreen.Normal-iPhone-pseudo.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5e4d481d39e5d97cebef54dccd4c8aa2e901c663430e9064932a5c2ce88443b2 -size 177201 +oid sha256:b97cf1a4f4734da9ab655c37e0d3658a402501ed39335b61dcddffcb6c10ae20 +size 176715 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Encryption-Forwarder-Info-iPad-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Encryption-Forwarder-Info-iPad-en-GB.png index c0d59a14a..ab12ecb8a 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Encryption-Forwarder-Info-iPad-en-GB.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Encryption-Forwarder-Info-iPad-en-GB.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f0dc983e2ebc86ac2d86c492218a8aa8a78a4e691633633a05e6280d2edb38ba -size 1204342 +oid sha256:462b1e016d366cd74742456ce491674e9e7711059503e5866143f83ba6184bfc +size 1205409 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Encryption-Forwarder-Info-iPad-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Encryption-Forwarder-Info-iPad-pseudo.png index c86ba21a3..33ffa261a 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Encryption-Forwarder-Info-iPad-pseudo.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Encryption-Forwarder-Info-iPad-pseudo.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c807d2d1a01248929824fcb0da3c5e583b9c1dc10619048d4bafe93446b49f87 -size 1206146 +oid sha256:7560c8595dd935207c79bebcacf69730607d0ae8297e9601ffd413782a4d0180 +size 1207255 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Encryption-Forwarder-Info-iPhone-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Encryption-Forwarder-Info-iPhone-en-GB.png index 7d9b00c5e..8285c5808 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Encryption-Forwarder-Info-iPhone-en-GB.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Encryption-Forwarder-Info-iPhone-en-GB.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b71d84f7b04d2a1dd672fbbd4786446cf0ec1f039d0e663eb1191157b3766360 -size 613925 +oid sha256:742bf0b74597d4974c85a1ee26e9d83945ce915888cb8c5ad440fe0e9ec688c5 +size 614819 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Encryption-Forwarder-Info-iPhone-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Encryption-Forwarder-Info-iPhone-pseudo.png index df72d8edd..3fdba379a 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Encryption-Forwarder-Info-iPhone-pseudo.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Encryption-Forwarder-Info-iPhone-pseudo.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3c69cbbf5fa7620895e3666aa64c1bc12481c4f3f493f65b21b8252627faf1f0 -size 617015 +oid sha256:c0c98cab6396c3d2a50e631a7d11e86f9e55909050509e1b69e8b6c73a25c649 +size 617936 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Encryption-Indicators-iPad-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Encryption-Indicators-iPad-en-GB.png index 392d41b79..c8ab656ac 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Encryption-Indicators-iPad-en-GB.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Encryption-Indicators-iPad-en-GB.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:48402a46248cfa91cc456f44c184d6bc1e10e4e0d094d899cd2593798edfe6bc -size 1220913 +oid sha256:e4c29c71c6e04943d9b04614c64361de4e52ef7f94a32e032b124cebeb40f132 +size 1222042 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Encryption-Indicators-iPad-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Encryption-Indicators-iPad-pseudo.png index 687ca4a9d..35444111e 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Encryption-Indicators-iPad-pseudo.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Encryption-Indicators-iPad-pseudo.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3500efd775a5f0d6241e400b3db9be08e49722d4445d4c50cfc7a5a213400a24 -size 1222942 +oid sha256:efbe1d2a1dce9f73de7590653792be0cd6a66cd97dfce742f763b082ba7b7077 +size 1224048 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Encryption-Indicators-iPhone-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Encryption-Indicators-iPhone-en-GB.png index 99cf27ba2..a42cf8c2e 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Encryption-Indicators-iPhone-en-GB.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Encryption-Indicators-iPhone-en-GB.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b63e7e8a86db618405a781fd85a1e1e81998852b67671ade56d59dbb353be633 -size 616013 +oid sha256:bc460684cbabdb138272620707902d98ac7ff6c0a22efcf7a86c727b140b5bd0 +size 616960 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Encryption-Indicators-iPhone-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Encryption-Indicators-iPhone-pseudo.png index 17e1738b9..6c9745016 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Encryption-Indicators-iPhone-pseudo.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Encryption-Indicators-iPhone-pseudo.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2a4ecd2fcdbc616e711318a78ec4b12275d8f5624e4157d9b3c911a6755b9ab7 -size 619496 +oid sha256:3f0a2bc0839392167811408435824559f99206483c987063dd746bebaa0649b9 +size 620480 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Pinned-messages-iPad-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Pinned-messages-iPad-en-GB.png index dce5cde77..b43ed04e4 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Pinned-messages-iPad-en-GB.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Pinned-messages-iPad-en-GB.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6158076fce47a4e6854b119a4e20fa0a3dd74f179caa81a58f8072726ba5f711 -size 1815273 +oid sha256:04b19cb901772855ab69072deec5c9de2fcca955235224c77c177e2c0b14d66c +size 1816652 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Pinned-messages-iPad-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Pinned-messages-iPad-pseudo.png index b027f4a62..d0f056e5a 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Pinned-messages-iPad-pseudo.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Pinned-messages-iPad-pseudo.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:86311c5b5907e327954c0b38ac41f7cb8e63fadded24399557547d9938f68a88 -size 1814820 +oid sha256:657750fbebbf6baa7d148efe72fc6749363c3424cd1194ed2f965b38f488beaf +size 1816226 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Pinned-messages-iPhone-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Pinned-messages-iPhone-en-GB.png index 4d76b698a..d7572ee83 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Pinned-messages-iPhone-en-GB.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Pinned-messages-iPhone-en-GB.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a0addba4ffe10072e07b5a861d3da93cbb2ae9a8acbec8493b6a779abb56af48 -size 761676 +oid sha256:7a2bb42a5c7d814cae4cd6c3cf8a4e76b14f6d1af35cb81f676175b318c079fd +size 762903 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Pinned-messages-iPhone-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Pinned-messages-iPhone-pseudo.png index 4d719f0c2..9d5020dd0 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Pinned-messages-iPhone-pseudo.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Pinned-messages-iPhone-pseudo.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:244e46696864cda84e77c22dac78d66901e6054c87f9d92031acf6361ed129d1 -size 760148 +oid sha256:0092c8c208f14b59b96b4d5cd0530a3025977e5b29431ff18a71446396e45857 +size 761320 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Replies-iPad-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Replies-iPad-en-GB.png index 36ab39c5f..f834d15c0 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Replies-iPad-en-GB.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Replies-iPad-en-GB.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:45f2dcbeadb8899f3eabb677895a8b66edcdea74b66ef85bbff6b3fac21a593c -size 106595 +oid sha256:003a4fb61c12b5b5c7c7a64d1287f76255bd4e43e92d394950781cb21a38ad1c +size 108333 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Replies-iPad-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Replies-iPad-pseudo.png index 80458ccc1..05136731e 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Replies-iPad-pseudo.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Replies-iPad-pseudo.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e607de6e766dcff120469b753462805480211c37cbf283c0d2dce51e3d84a8e5 -size 108244 +oid sha256:f60177b382250855ad1fb33c1a689b16cabdcf7fd409eb19b9706abe0bc771f0 +size 109793 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Replies-iPhone-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Replies-iPhone-en-GB.png index bd93dd077..911a67798 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Replies-iPhone-en-GB.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Replies-iPhone-en-GB.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4a4b8b711582ba479f9e6a70d2054dbd7f85ed8774e3ae6726204728433a8252 -size 65323 +oid sha256:7893dab6bb88391ed28a2a0d28d96ed91a4316f3ac6f0eea7228326510b25c05 +size 66251 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Replies-iPhone-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Replies-iPhone-pseudo.png index 2ea97e776..2c9d30423 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Replies-iPhone-pseudo.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Replies-iPhone-pseudo.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c7e3d61a7ce078aaf2252f9491245af8934cca2c74c589bc266a010df79fb12f -size 66429 +oid sha256:323b44563b36b34c5a1194648b2c4cd8ddce10237b316c8cb7fc0452ba8bbcb5 +size 67351 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Thread-decorator-iPad-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Thread-decorator-iPad-en-GB.png index fee57ab1b..1f283c204 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Thread-decorator-iPad-en-GB.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Thread-decorator-iPad-en-GB.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ed67d68b4171e56e6fd484fb586118e31a99fa8c08f3499fbc844c4e197817a5 -size 1911809 +oid sha256:eeb5bf3b6588dc634f54d23dbc3b520b6bb06b6401c43ba7cff72597fc8166dc +size 1917403 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Thread-decorator-iPad-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Thread-decorator-iPad-pseudo.png index 5977d0c94..3d8c08bdd 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Thread-decorator-iPad-pseudo.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Thread-decorator-iPad-pseudo.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cb3cd28b7914c1db6651e8e0d64b06243d38f7303e89db82ad2987fed4ed5333 -size 1918865 +oid sha256:7ed1bac359755669967e1472772d553be02c90fbc7041f3581dc5cf679db14bb +size 1924082 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Thread-decorator-iPhone-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Thread-decorator-iPhone-en-GB.png index 7a5437e7a..d5ea3dadf 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Thread-decorator-iPhone-en-GB.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Thread-decorator-iPhone-en-GB.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f11136e78896786891f9005cd19e48e3b87d722b93c920c149913363440f9371 -size 864403 +oid sha256:327806fa611e870614d0293d17fe76e81cd7f1826ef5e17db85dd3af15cd88b3 +size 868753 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Thread-decorator-iPhone-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Thread-decorator-iPhone-pseudo.png index c9edaa5c5..bf5c92723 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Thread-decorator-iPhone-pseudo.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Thread-decorator-iPhone-pseudo.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:590cfddcb1e312561da83ac34acc2e553f0c6dc114f107d48587f5468b056fb9 -size 868147 +oid sha256:cd2534d1c9781045b71d423e8b62ce82945b281e9dce1d881af92372dcedc8b4 +size 872302 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Thread-summary-iPad-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Thread-summary-iPad-en-GB.png index 823f20366..e1249ae7e 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Thread-summary-iPad-en-GB.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Thread-summary-iPad-en-GB.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:de688892ee994febd7848ab7a2ccea41bb718d30da5c322adeb41a6e2674d8e9 -size 1916010 +oid sha256:e6dcdae9fdd3523d12051de9ac9ccfd8300e18dc772223ee9d34b84557193c94 +size 1917412 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Thread-summary-iPad-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Thread-summary-iPad-pseudo.png index d47374c60..641d406d4 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Thread-summary-iPad-pseudo.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Thread-summary-iPad-pseudo.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:887531c95681b936f123bd27c54a3eeaa18db99836d2c6bb958a3d940794638f -size 1938141 +oid sha256:1149342016dee9e21e4d4c1504f0f05704ce636ee2c0f7e57042f8b8173ce675 +size 1939470 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Thread-summary-iPhone-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Thread-summary-iPhone-en-GB.png index 312f9e280..92fa0b746 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Thread-summary-iPhone-en-GB.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Thread-summary-iPhone-en-GB.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:31fb1bf77d9a55eb35b41032ec38caa7bc79c04e2918bfb67087811eb849ce99 -size 943965 +oid sha256:3fc2fc79a1b58b2465f954e675873e1c7ddcfee996673c3ea265498030363e16 +size 945172 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Thread-summary-iPhone-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Thread-summary-iPhone-pseudo.png index e2e4ed931..af1b6f9e4 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Thread-summary-iPhone-pseudo.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineItemBubbledStylerView.Thread-summary-iPhone-pseudo.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7b0e140468a93087d32bd68c2f85086c086a732db0467ed3fd89a45aa899b1f7 -size 944304 +oid sha256:d018de70de38ca26942b4db848d340ba22a08325b9ee0e03c5a41b97e4da5854 +size 945440 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineReplyView.iPad-en-GB-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineReplyView.iPad-en-GB-0.png index a165d624d..a150dd0a3 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineReplyView.iPad-en-GB-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineReplyView.iPad-en-GB-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:558ff66d70e97ddfcbaf1916b039134a6ffddaacb3f4e16b0780a31d3bfed534 -size 223886 +oid sha256:72dae82ccc4c09e3bba05309cdfb924779cd999c27f2f47c21fe8dc4f72827f1 +size 270105 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineReplyView.iPad-pseudo-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineReplyView.iPad-pseudo-0.png index 9ee8218c9..fb049c809 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineReplyView.iPad-pseudo-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineReplyView.iPad-pseudo-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1044b0a38c25644eec5c7d5e2524105fb11010784a41000ca4aeeb6f03066218 -size 233697 +oid sha256:d007db9851a4c9e95619b230ece6a4839180b37361e4edb0945d19f845668080 +size 280093 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineReplyView.iPhone-en-GB-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineReplyView.iPhone-en-GB-0.png index 681cf3206..7716c9a7c 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineReplyView.iPhone-en-GB-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineReplyView.iPhone-en-GB-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ae2983a16bfd1fd75070f08ae1e9e26113abbeb86f639dc2bb32aeace210ed7e -size 156980 +oid sha256:42be9887bb0987f44f393a898b8873983bb76019eb142ae701ed4263d3203d0f +size 191898 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineReplyView.iPhone-pseudo-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineReplyView.iPhone-pseudo-0.png index b64b961dc..2ea3135d6 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineReplyView.iPhone-pseudo-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/timelineReplyView.iPhone-pseudo-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3716823dde3657e305057be6ea28162987a1f0a51e77228179a971abcd2c8d68 -size 160766 +oid sha256:2d59bc84ed5b597804790fb1ef0ee0eeb098dfff11518dc932062287090bd5c5 +size 190260 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageButton.iPad-en-GB-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageButton.iPad-en-GB-0.png index 21ef68d30..a783ce8e4 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageButton.iPad-en-GB-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageButton.iPad-en-GB-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:103f5aaea4dec5dc620da733c0db5dfe19da76b93e76dcbf681931198b383ec4 -size 74696 +oid sha256:0d639ccfaa4ab059ddf53444570fca757671229c77cf1a7cc64c799a8207a2df +size 78718 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageButton.iPad-pseudo-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageButton.iPad-pseudo-0.png index 21ef68d30..a783ce8e4 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageButton.iPad-pseudo-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageButton.iPad-pseudo-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:103f5aaea4dec5dc620da733c0db5dfe19da76b93e76dcbf681931198b383ec4 -size 74696 +oid sha256:0d639ccfaa4ab059ddf53444570fca757671229c77cf1a7cc64c799a8207a2df +size 78718 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageButton.iPhone-en-GB-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageButton.iPhone-en-GB-0.png index d31ba5a2f..42da5287f 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageButton.iPhone-en-GB-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageButton.iPhone-en-GB-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3865e24406e33a024fbedad3903d68612de31b7cced347888d83d4a566158d7c -size 33502 +oid sha256:677b604f45b6a4254e481fc785b2f3f987cc33deffd2d499680498af606f5b95 +size 37065 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageButton.iPhone-pseudo-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageButton.iPhone-pseudo-0.png index d31ba5a2f..42da5287f 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageButton.iPhone-pseudo-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageButton.iPhone-pseudo-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3865e24406e33a024fbedad3903d68612de31b7cced347888d83d4a566158d7c -size 33502 +oid sha256:677b604f45b6a4254e481fc785b2f3f987cc33deffd2d499680498af606f5b95 +size 37065 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageMediaEventsTimelineView.iPad-en-GB-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageMediaEventsTimelineView.iPad-en-GB-0.png index d6e4145a6..e6b639cd9 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageMediaEventsTimelineView.iPad-en-GB-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageMediaEventsTimelineView.iPad-en-GB-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:feb50837f40d03e477c594c30430eb9778dee651fcfd40bcfb7e16ad5403cfa0 -size 75454 +oid sha256:01beb5d5eff0c6e56cfd331bb3001e85bb9d07da15ba3d6ee1aeec63ab5276e9 +size 76753 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageMediaEventsTimelineView.iPad-pseudo-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageMediaEventsTimelineView.iPad-pseudo-0.png index d6e4145a6..e6b639cd9 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageMediaEventsTimelineView.iPad-pseudo-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageMediaEventsTimelineView.iPad-pseudo-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:feb50837f40d03e477c594c30430eb9778dee651fcfd40bcfb7e16ad5403cfa0 -size 75454 +oid sha256:01beb5d5eff0c6e56cfd331bb3001e85bb9d07da15ba3d6ee1aeec63ab5276e9 +size 76753 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageMediaEventsTimelineView.iPhone-en-GB-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageMediaEventsTimelineView.iPhone-en-GB-0.png index 9896cf3a9..8cd2f77e0 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageMediaEventsTimelineView.iPhone-en-GB-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageMediaEventsTimelineView.iPhone-en-GB-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:61afbb01a1b740c7b2cd37d59d5af5a89a3ce904d23300b925ae5d57771609d0 -size 33500 +oid sha256:21414a61698f8175d01188368ba50d494ed9b8b1837ae11b36207ed081aed1f9 +size 34842 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageMediaEventsTimelineView.iPhone-pseudo-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageMediaEventsTimelineView.iPhone-pseudo-0.png index 9896cf3a9..8cd2f77e0 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageMediaEventsTimelineView.iPhone-pseudo-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageMediaEventsTimelineView.iPhone-pseudo-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:61afbb01a1b740c7b2cd37d59d5af5a89a3ce904d23300b925ae5d57771609d0 -size 33500 +oid sha256:21414a61698f8175d01188368ba50d494ed9b8b1837ae11b36207ed081aed1f9 +size 34842 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessagePreviewComposer.iPad-en-GB-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessagePreviewComposer.iPad-en-GB-0.png index 131d69697..2b93c9e16 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessagePreviewComposer.iPad-en-GB-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessagePreviewComposer.iPad-en-GB-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e73905b33bd46b40b2872ee378b04c30f1be789e0deb5e3bd5cde165b282b46d -size 71895 +oid sha256:41e330b9d835b802fbe962c2f9579add48087a1699f0efa4c73f6c8c6eb49981 +size 73713 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessagePreviewComposer.iPad-pseudo-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessagePreviewComposer.iPad-pseudo-0.png index 131d69697..2b93c9e16 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessagePreviewComposer.iPad-pseudo-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessagePreviewComposer.iPad-pseudo-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e73905b33bd46b40b2872ee378b04c30f1be789e0deb5e3bd5cde165b282b46d -size 71895 +oid sha256:41e330b9d835b802fbe962c2f9579add48087a1699f0efa4c73f6c8c6eb49981 +size 73713 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessagePreviewComposer.iPhone-en-GB-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessagePreviewComposer.iPhone-en-GB-0.png index dd160140c..9f1dc7e95 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessagePreviewComposer.iPhone-en-GB-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessagePreviewComposer.iPhone-en-GB-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ff0e48c5fe7c8a0f6bcbf9971a6142f625f13908c6d7bf45f2beaed4b501eba0 -size 31089 +oid sha256:6374f034e6c7de9305ab28fdfda13473b3a6a554361df1b67e5d351e6ad6c726 +size 32683 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessagePreviewComposer.iPhone-pseudo-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessagePreviewComposer.iPhone-pseudo-0.png index dd160140c..9f1dc7e95 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessagePreviewComposer.iPhone-pseudo-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessagePreviewComposer.iPhone-pseudo-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ff0e48c5fe7c8a0f6bcbf9971a6142f625f13908c6d7bf45f2beaed4b501eba0 -size 31089 +oid sha256:6374f034e6c7de9305ab28fdfda13473b3a6a554361df1b67e5d351e6ad6c726 +size 32683 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageRecordingButton.iPad-en-GB-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageRecordingButton.iPad-en-GB-0.png index 0848e7fbc..066f55ad4 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageRecordingButton.iPad-en-GB-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageRecordingButton.iPad-en-GB-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9d5d8de4ca18eea447e4cdb95eb47403d3eeb49b859280e526ad3c5e8a7a3b9b -size 68992 +oid sha256:d495c542a014f485925ac173567aa63cef4d16f3290f75726ee8219548f5cf61 +size 72742 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageRecordingButton.iPad-pseudo-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageRecordingButton.iPad-pseudo-0.png index 0848e7fbc..066f55ad4 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageRecordingButton.iPad-pseudo-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageRecordingButton.iPad-pseudo-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9d5d8de4ca18eea447e4cdb95eb47403d3eeb49b859280e526ad3c5e8a7a3b9b -size 68992 +oid sha256:d495c542a014f485925ac173567aa63cef4d16f3290f75726ee8219548f5cf61 +size 72742 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageRecordingButton.iPhone-en-GB-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageRecordingButton.iPhone-en-GB-0.png index f911e306a..eb440cb2e 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageRecordingButton.iPhone-en-GB-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageRecordingButton.iPhone-en-GB-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ecd7658525bb3149aee73779498aff65352fdc8426fb49b4c5aea5c0702d68f7 -size 28637 +oid sha256:2d1a031bf5bd497d844d52040883ed3be913c10c314fecf74a7ee3c9bcdb7c45 +size 32408 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageRecordingButton.iPhone-pseudo-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageRecordingButton.iPhone-pseudo-0.png index f911e306a..eb440cb2e 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageRecordingButton.iPhone-pseudo-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageRecordingButton.iPhone-pseudo-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ecd7658525bb3149aee73779498aff65352fdc8426fb49b4c5aea5c0702d68f7 -size 28637 +oid sha256:2d1a031bf5bd497d844d52040883ed3be913c10c314fecf74a7ee3c9bcdb7c45 +size 32408 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageRecordingComposer.iPad-en-GB-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageRecordingComposer.iPad-en-GB-0.png index 41800ed2e..c77d86ab8 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageRecordingComposer.iPad-en-GB-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageRecordingComposer.iPad-en-GB-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b89cdb0b751bd50fdd5677ed9ad20286263e1bc3045088caee64af9399e267b2 -size 69939 +oid sha256:bbb0e3870310fcef619efb817e5485e5b4bfa88437c44262c14d7e19dfbdf1f1 +size 70631 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageRecordingComposer.iPad-pseudo-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageRecordingComposer.iPad-pseudo-0.png index 41800ed2e..c77d86ab8 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageRecordingComposer.iPad-pseudo-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageRecordingComposer.iPad-pseudo-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b89cdb0b751bd50fdd5677ed9ad20286263e1bc3045088caee64af9399e267b2 -size 69939 +oid sha256:bbb0e3870310fcef619efb817e5485e5b4bfa88437c44262c14d7e19dfbdf1f1 +size 70631 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageRecordingComposer.iPhone-en-GB-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageRecordingComposer.iPhone-en-GB-0.png index 9cf32a906..c6cee8a60 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageRecordingComposer.iPhone-en-GB-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageRecordingComposer.iPhone-en-GB-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0968e165108397e29ca7f57d822ceb11e99c9b9fca2b75d6f4f64f584f71c7ed -size 29146 +oid sha256:b2b8f030dfa6c913de775a7fbe31cdb095b6e109ebdc67d5b6a49b138a0afedd +size 29555 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageRecordingComposer.iPhone-pseudo-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageRecordingComposer.iPhone-pseudo-0.png index 9cf32a906..c6cee8a60 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageRecordingComposer.iPhone-pseudo-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageRecordingComposer.iPhone-pseudo-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0968e165108397e29ca7f57d822ceb11e99c9b9fca2b75d6f4f64f584f71c7ed -size 29146 +oid sha256:b2b8f030dfa6c913de775a7fbe31cdb095b6e109ebdc67d5b6a49b138a0afedd +size 29555 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageRoomPlaybackView.iPad-en-GB-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageRoomPlaybackView.iPad-en-GB-0.png index 72c68a6a9..deafb5401 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageRoomPlaybackView.iPad-en-GB-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageRoomPlaybackView.iPad-en-GB-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e2a12b5a677132224a952071f612f2956416124422b276fb261f15de3a157cad -size 71988 +oid sha256:1dd9e7c85c1e5a3a1e4af43f81b7f5854bf48f59c526ba1bc1f8573cae8f7255 +size 74887 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageRoomPlaybackView.iPad-pseudo-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageRoomPlaybackView.iPad-pseudo-0.png index 72c68a6a9..deafb5401 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageRoomPlaybackView.iPad-pseudo-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageRoomPlaybackView.iPad-pseudo-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e2a12b5a677132224a952071f612f2956416124422b276fb261f15de3a157cad -size 71988 +oid sha256:1dd9e7c85c1e5a3a1e4af43f81b7f5854bf48f59c526ba1bc1f8573cae8f7255 +size 74887 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageRoomPlaybackView.iPhone-en-GB-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageRoomPlaybackView.iPhone-en-GB-0.png index 57f83bcfe..de629f40f 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageRoomPlaybackView.iPhone-en-GB-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageRoomPlaybackView.iPhone-en-GB-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dfd90b799f4983f713bd3154299b1dfc2dafc33deff23cfa2d059821a794bf0f -size 30920 +oid sha256:10fcd4146c14e5442cc05154db1bff42575d18bec68baea0b4517451a44683bf +size 32794 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageRoomPlaybackView.iPhone-pseudo-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageRoomPlaybackView.iPhone-pseudo-0.png index 57f83bcfe..de629f40f 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageRoomPlaybackView.iPhone-pseudo-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageRoomPlaybackView.iPhone-pseudo-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dfd90b799f4983f713bd3154299b1dfc2dafc33deff23cfa2d059821a794bf0f -size 30920 +oid sha256:10fcd4146c14e5442cc05154db1bff42575d18bec68baea0b4517451a44683bf +size 32794 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageRoomTimelineView.iPad-en-GB-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageRoomTimelineView.iPad-en-GB-0.png index b705ab05c..2814b3aec 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageRoomTimelineView.iPad-en-GB-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageRoomTimelineView.iPad-en-GB-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:77df3b170d834a274b45124f95b04ffe8f353d83df7576a61c2713cbc687e907 -size 79542 +oid sha256:7722c5f84a7010cc62369f54d4e6ab1e4cc49e0781cf6d5ed59fcde8ff3610ea +size 80748 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageRoomTimelineView.iPad-pseudo-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageRoomTimelineView.iPad-pseudo-0.png index 57ea00557..f146bdad4 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageRoomTimelineView.iPad-pseudo-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageRoomTimelineView.iPad-pseudo-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d25d21b74b01ac2cb81f8e55e2c46ad7f6e23de1ce75b0d8449f83a37ada843f -size 80300 +oid sha256:ee152432beaffcd8ac5f42e34831d6cdf4fa96116c51ef44e5fce85d65782c95 +size 81531 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageRoomTimelineView.iPhone-en-GB-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageRoomTimelineView.iPhone-en-GB-0.png index 597dcb519..372e5fcfc 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageRoomTimelineView.iPhone-en-GB-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageRoomTimelineView.iPhone-en-GB-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fe522efcdf05d9b19ea7d4ee341bc03898eaa12f98db531c90e307eac3681635 -size 37266 +oid sha256:89b9bfbc82d63e624e24a71a0c851b2cadb2c39adc45f58a99ff66d0411eed78 +size 38481 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageRoomTimelineView.iPhone-pseudo-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageRoomTimelineView.iPhone-pseudo-0.png index a13344dd4..9ec2da1c6 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageRoomTimelineView.iPhone-pseudo-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageRoomTimelineView.iPhone-pseudo-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:375e67138bbe43c27b20a0afe57136de03d7ca745262328545cf89035faf55b8 -size 37535 +oid sha256:10352dd007dd864e6c4746a4b266d9e6cf72edf62636723d221ddc9bce4401fd +size 38757 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageTrashButton.iPad-en-GB-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageTrashButton.iPad-en-GB-0.png new file mode 100644 index 000000000..a978adf89 --- /dev/null +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageTrashButton.iPad-en-GB-0.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:126bd1d3b5eb484304078e2272c8860cd6641fd75aa09e62419e767cd2209b10 +size 70168 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageTrashButton.iPad-pseudo-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageTrashButton.iPad-pseudo-0.png new file mode 100644 index 000000000..a978adf89 --- /dev/null +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageTrashButton.iPad-pseudo-0.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:126bd1d3b5eb484304078e2272c8860cd6641fd75aa09e62419e767cd2209b10 +size 70168 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageTrashButton.iPhone-en-GB-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageTrashButton.iPhone-en-GB-0.png new file mode 100644 index 000000000..cc2a6d994 --- /dev/null +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageTrashButton.iPhone-en-GB-0.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:635d5b091ec2be733e849ddb8e92940a98170ebc583900d03134c21098f15262 +size 29910 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageTrashButton.iPhone-pseudo-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageTrashButton.iPhone-pseudo-0.png new file mode 100644 index 000000000..cc2a6d994 --- /dev/null +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/voiceMessageTrashButton.iPhone-pseudo-0.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:635d5b091ec2be733e849ddb8e92940a98170ebc583900d03134c21098f15262 +size 29910 diff --git a/compound-ios/Sources/Compound/Buttons/SendButton.swift b/compound-ios/Sources/Compound/Buttons/SendButton.swift index 32235da86..992b83cf7 100644 --- a/compound-ios/Sources/Compound/Buttons/SendButton.swift +++ b/compound-ios/Sources/Compound/Buttons/SendButton.swift @@ -8,40 +8,62 @@ import SwiftUI /// The button component for sending messages and media. +/// +/// The button's size is 44pt x 44pt on iOS 26 and later, and 36pt x 36pt on iOS 18 and earlier. public struct SendButton: View { @Environment(\.isEnabled) private var isEnabled @Environment(\.colorScheme) private var colorScheme + public enum Mode { case send, edit } + /// Whether the button is for sending a new message or editing an existing one. + private let mode: Mode /// The action to perform when the user triggers the button. private let action: () -> Void + private var icon: KeyPath { + switch mode { + case .send: \.sendSolid + case .edit: \.check + } + } + private var iconColor: Color { guard isEnabled else { return .compound.iconQuaternary } return colorScheme == .light ? .compound.iconOnSolidPrimary : .compound.iconPrimary } - private var gradient: Gradient { - isEnabled ? .compound.action : .init(colors: [.clear]) + private var backgroundColor: Color { + isEnabled ? .compound.bgAccentRest : .clear } /// Creates a send button that performs the provided action. - public init(action: @escaping () -> Void) { + public init(mode: Mode = .send, action: @escaping () -> Void) { + self.mode = mode self.action = action } public var body: some View { Button(action: action) { - CompoundIcon(\.sendSolid, size: .medium, relativeTo: .compound.headingLG) - .foregroundStyle(iconColor) - .scaledPadding(6, relativeTo: .compound.headingLG) - .background { buttonShape } + label .compositingGroup() } } - var buttonShape: some View { - Circle() - .fill(LinearGradient(gradient: gradient, startPoint: .top, endPoint: .bottom)) + @ViewBuilder + public var label: some View { + if #available(iOS 26, *), isEnabled, !ProcessInfo.processInfo.isRunningTests { + baseIcon + .glassEffect(.regular.tint(backgroundColor).interactive(), in: .circle) + } else { + baseIcon + .background(backgroundColor, in: .circle) + } + } + + var baseIcon: some View { + CompoundIcon(icon, size: .medium, relativeTo: .compound.headingLG) + .foregroundStyle(iconColor) + .scaledPadding(Compound.supportsGlass ? 10 : 6, relativeTo: .compound.headingLG) } } @@ -66,6 +88,8 @@ public struct SendButton_Previews: PreviewProvider, TestablePreview { SendButton { } .disabled(true) SendButton { } + + SendButton(mode: .edit) { } } } } diff --git a/compound-ios/Sources/Compound/Extensions/ProcessInfo.swift b/compound-ios/Sources/Compound/Extensions/ProcessInfo.swift new file mode 100644 index 000000000..2a70ba4ee --- /dev/null +++ b/compound-ios/Sources/Compound/Extensions/ProcessInfo.swift @@ -0,0 +1,14 @@ +// +// Copyright 2026 Element Creations Ltd. +// +// SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial. +// Please see LICENSE files in the repository root for full details. +// + +import Foundation + +extension ProcessInfo { + var isRunningTests: Bool { + environment["XCTestBundlePath"] != nil + } +} diff --git a/compound-ios/Sources/Compound/Extensions/SupportsGlass.swift b/compound-ios/Sources/Compound/Extensions/SupportsGlass.swift new file mode 100644 index 000000000..93df5c735 --- /dev/null +++ b/compound-ios/Sources/Compound/Extensions/SupportsGlass.swift @@ -0,0 +1,16 @@ +// +// Copyright 2026 Element Creations Ltd. +// +// SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial. +// Please see LICENSE files in the repository root for full details. +// + +import SwiftUI + +public var supportsGlass: Bool { + if #available(iOS 26, *) { + true + } else { + false + } +} diff --git a/compound-ios/Tests/CompoundTests/__Snapshots__/PreviewTests/sendButton.iPad-en-US-0.png b/compound-ios/Tests/CompoundTests/__Snapshots__/PreviewTests/sendButton.iPad-en-US-0.png index 77533a4f4..5979c6e0b 100644 --- a/compound-ios/Tests/CompoundTests/__Snapshots__/PreviewTests/sendButton.iPad-en-US-0.png +++ b/compound-ios/Tests/CompoundTests/__Snapshots__/PreviewTests/sendButton.iPad-en-US-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:acfb01682b484e788e3fd8f883977baaf488cc7cea84da845fbe0bab8185733d -size 79822 +oid sha256:9dbba8e66eeb5c78a165952f3dcf2773708178f4d6e4a4a527e69b81b950ceb2 +size 76551 diff --git a/compound-ios/Tests/CompoundTests/__Snapshots__/PreviewTests/sendButton.iPhone-en-US-0.png b/compound-ios/Tests/CompoundTests/__Snapshots__/PreviewTests/sendButton.iPhone-en-US-0.png index af607c1e0..cacfad0e5 100644 --- a/compound-ios/Tests/CompoundTests/__Snapshots__/PreviewTests/sendButton.iPhone-en-US-0.png +++ b/compound-ios/Tests/CompoundTests/__Snapshots__/PreviewTests/sendButton.iPhone-en-US-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8857d2a0cc92634cf7f55390e9fd5a3b23bc496ebc25c2bd4fb660bb191c04d1 -size 39502 +oid sha256:5f972698dc7c7d720205c3ce53426a43b28a638778c1d238341c84fc85542f69 +size 35696