diff --git a/ElementX/Sources/Screens/MediaUploadPreviewScreen/MediaUploadPreviewScreenViewModel.swift b/ElementX/Sources/Screens/MediaUploadPreviewScreen/MediaUploadPreviewScreenViewModel.swift index d1610f673f..cca94f2cc3 100644 --- a/ElementX/Sources/Screens/MediaUploadPreviewScreen/MediaUploadPreviewScreenViewModel.swift +++ b/ElementX/Sources/Screens/MediaUploadPreviewScreen/MediaUploadPreviewScreenViewModel.swift @@ -45,9 +45,9 @@ class MediaUploadPreviewScreenViewModel: MediaUploadPreviewScreenViewModelType, switch viewAction { case .send: Task { - let progressSubject = CurrentValueSubject(0.0) + let progressSubject = AppSettings.isDevelopmentBuild ? nil : CurrentValueSubject(0.0) - startLoading(progressPublisher: progressSubject.asCurrentValuePublisher()) + startLoading(progressPublisher: progressSubject?.asCurrentValuePublisher()) switch await mediaUploadingPreprocessor.processMedia(at: url) { case .success(let mediaInfo): @@ -75,7 +75,7 @@ class MediaUploadPreviewScreenViewModel: MediaUploadPreviewScreenViewModelType, // MARK: - Private - private func sendAttachment(mediaInfo: MediaInfo, progressSubject: CurrentValueSubject) async -> Result { + private func sendAttachment(mediaInfo: MediaInfo, progressSubject: CurrentValueSubject?) async -> Result { let requestHandle: ((SendAttachmentJoinHandleProtocol) -> Void) = { [weak self] handle in self?.requestHandle = handle } @@ -94,10 +94,16 @@ class MediaUploadPreviewScreenViewModel: MediaUploadPreviewScreenViewModelType, private static let loadingIndicatorIdentifier = "\(MediaUploadPreviewScreenViewModel.self)-Loading" - private func startLoading(progressPublisher: CurrentValuePublisher) { + private func startLoading(progressPublisher: CurrentValuePublisher?) { + let progress: UserIndicator.Progress = if let progressPublisher { + .published(progressPublisher) + } else { + .indeterminate + } + userIndicatorController.submitIndicator( UserIndicator(id: Self.loadingIndicatorIdentifier, - type: .modal(progress: .published(progressPublisher), interactiveDismissDisabled: false, allowsInteraction: true), + type: .modal(progress: progress, interactiveDismissDisabled: false, allowsInteraction: true), title: L10n.commonSending, persistent: true) ) diff --git a/ElementX/Sources/Screens/Timeline/View/TimelineItemViews/ImageRoomTimelineView.swift b/ElementX/Sources/Screens/Timeline/View/TimelineItemViews/ImageRoomTimelineView.swift index 63cb9b04ef..2047c0ccef 100644 --- a/ElementX/Sources/Screens/Timeline/View/TimelineItemViews/ImageRoomTimelineView.swift +++ b/ElementX/Sources/Screens/Timeline/View/TimelineItemViews/ImageRoomTimelineView.swift @@ -17,19 +17,12 @@ struct ImageRoomTimelineView: View { var body: some View { TimelineStyler(timelineItem: timelineItem) { VStack(alignment: .leading, spacing: 4) { - LoadableImage(mediaSource: source, - mediaType: .timelineItem, - blurhash: timelineItem.content.blurhash, - mediaProvider: context.mediaProvider) { - placeholder - } - .timelineMediaFrame(height: timelineItem.content.height, - aspectRatio: timelineItem.content.aspectRatio) - .accessibilityElement(children: .ignore) - .accessibilityLabel(L10n.commonImage) - // This clip shape is distinct from the one in the styler as that one - // operates on the entire message so wouldn't round the bottom corners. - .clipShape(RoundedRectangle(cornerRadius: hasMediaCaption ? 6 : 0)) + loadableImage + .accessibilityElement(children: .ignore) + .accessibilityLabel(L10n.commonImage) + // This clip shape is distinct from the one in the styler as that one + // operates on the entire message so wouldn't round the bottom corners. + .clipShape(RoundedRectangle(cornerRadius: hasMediaCaption ? 6 : 0)) if let attributedCaption = timelineItem.content.formattedCaption { FormattedBodyText(attributedString: attributedCaption, @@ -44,15 +37,32 @@ struct ImageRoomTimelineView: View { } } - var source: MediaSourceProxy { - guard timelineItem.content.contentType != .gif, let thumbnailSource = timelineItem.content.thumbnailSource else { - return timelineItem.content.source + @ViewBuilder + private var loadableImage: some View { + if timelineItem.content.contentType == .gif { + LoadableImage(mediaSource: timelineItem.content.source, + mediaType: .timelineItem, + blurhash: timelineItem.content.blurhash, + size: timelineItem.content.size, + mediaProvider: context.mediaProvider) { + placeholder + } + .timelineMediaFrame(height: timelineItem.content.thumbnailSize?.height, + aspectRatio: timelineItem.content.aspectRatio) + } else { + LoadableImage(mediaSource: timelineItem.content.thumbnailSource ?? timelineItem.content.source, + mediaType: .timelineItem, + blurhash: timelineItem.content.blurhash, + size: timelineItem.content.thumbnailSize ?? timelineItem.content.size, + mediaProvider: context.mediaProvider) { + placeholder + } + .timelineMediaFrame(height: timelineItem.content.thumbnailSize?.height ?? timelineItem.content.size?.height, + aspectRatio: timelineItem.content.thumbnailAspectRatio ?? timelineItem.content.aspectRatio) } - - return thumbnailSource } - - var placeholder: some View { + + private var placeholder: some View { Rectangle() .foregroundColor(timelineItem.isOutgoing ? .compound._bgBubbleOutgoing : .compound._bgBubbleIncoming) .opacity(0.3) @@ -100,8 +110,8 @@ struct ImageRoomTimelineView_Previews: PreviewProvider, TestablePreview { sender: .init(id: "Bob"), content: .init(filename: "Blurhashed.jpg", source: MediaSourceProxy(url: .picturesDirectory, mimeType: "image/gif"), - thumbnailSource: nil, aspectRatio: 0.7, + thumbnailSource: nil, blurhash: "L%KUc%kqS$RP?Ks,WEf8OlrqaekW", contentType: .gif))) @@ -115,10 +125,9 @@ struct ImageRoomTimelineView_Previews: PreviewProvider, TestablePreview { content: .init(filename: "Blurhashed.jpg", caption: "This is a great image 😎", source: MediaSourceProxy(url: .picturesDirectory, mimeType: "image/png"), - thumbnailSource: nil, - width: 50, - height: 50, + size: .init(width: 50, height: 50), aspectRatio: 1, + thumbnailSource: nil, blurhash: "L%KUc%kqS$RP?Ks,WEf8OlrqaekW", contentType: .gif))) } diff --git a/ElementX/Sources/Screens/Timeline/View/TimelineItemViews/StickerRoomTimelineView.swift b/ElementX/Sources/Screens/Timeline/View/TimelineItemViews/StickerRoomTimelineView.swift index 65f155f53a..c0f4480ede 100644 --- a/ElementX/Sources/Screens/Timeline/View/TimelineItemViews/StickerRoomTimelineView.swift +++ b/ElementX/Sources/Screens/Timeline/View/TimelineItemViews/StickerRoomTimelineView.swift @@ -17,10 +17,11 @@ struct StickerRoomTimelineView: View { LoadableImage(url: timelineItem.imageURL, mediaType: .timelineItem, blurhash: timelineItem.blurhash, + size: timelineItem.size, mediaProvider: context.mediaProvider) { placeholder } - .timelineMediaFrame(height: timelineItem.height, + .timelineMediaFrame(height: timelineItem.size?.height, aspectRatio: timelineItem.aspectRatio) .accessibilityElement(children: .ignore) .accessibilityLabel("\(L10n.commonSticker), \(timelineItem.body)") diff --git a/ElementX/Sources/Screens/Timeline/View/TimelineItemViews/VideoRoomTimelineView.swift b/ElementX/Sources/Screens/Timeline/View/TimelineItemViews/VideoRoomTimelineView.swift index 27b0ddd69e..ea072fda76 100644 --- a/ElementX/Sources/Screens/Timeline/View/TimelineItemViews/VideoRoomTimelineView.swift +++ b/ElementX/Sources/Screens/Timeline/View/TimelineItemViews/VideoRoomTimelineView.swift @@ -18,7 +18,7 @@ struct VideoRoomTimelineView: View { TimelineStyler(timelineItem: timelineItem) { VStack(alignment: .leading, spacing: 4) { thumbnail - .timelineMediaFrame(height: timelineItem.content.height, + .timelineMediaFrame(height: timelineItem.content.thumbnailSize?.height, aspectRatio: timelineItem.content.aspectRatio) .accessibilityElement(children: .ignore) .accessibilityLabel(L10n.commonVideo) @@ -45,6 +45,7 @@ struct VideoRoomTimelineView: View { LoadableImage(mediaSource: thumbnailSource, mediaType: .timelineItem, blurhash: timelineItem.content.blurhash, + size: timelineItem.content.thumbnailSize, mediaProvider: context.mediaProvider) { imageView in imageView .overlay { playIcon } @@ -114,8 +115,8 @@ struct VideoRoomTimelineView_Previews: PreviewProvider, TestablePreview { content: .init(filename: "Blurhashed.mp4", duration: 23, source: nil, - thumbnailSource: nil, aspectRatio: 0.7, + thumbnailSource: nil, blurhash: "L%KUc%kqS$RP?Ks,WEf8OlrqaekW"))) VideoRoomTimelineView(timelineItem: VideoRoomTimelineItem(id: .randomEvent, diff --git a/ElementX/Sources/Services/Timeline/Fixtures/RoomTimelineItemFixtures.swift b/ElementX/Sources/Services/Timeline/Fixtures/RoomTimelineItemFixtures.swift index cf77fa6da9..79b9eace51 100644 --- a/ElementX/Sources/Services/Timeline/Fixtures/RoomTimelineItemFixtures.swift +++ b/ElementX/Sources/Services/Timeline/Fixtures/RoomTimelineItemFixtures.swift @@ -260,10 +260,9 @@ enum RoomTimelineItemFixtures { content: .init(filename: "video.mp4", duration: 100, source: .init(url: .picturesDirectory, mimeType: nil), - thumbnailSource: .init(url: .picturesDirectory, mimeType: nil), - width: 1920, - height: 1080, + size: .init(width: 1920, height: 1080), aspectRatio: 1.78, + thumbnailSource: .init(url: .picturesDirectory, mimeType: nil), blurhash: "KtI~70X5V?yss9oyrYs:t6")), ImageRoomTimelineItem(id: .randomEvent, timestamp: "10:47 am", @@ -274,10 +273,9 @@ enum RoomTimelineItemFixtures { sender: .init(id: ""), content: .init(filename: "image.jpg", source: .init(url: .picturesDirectory, mimeType: nil), - thumbnailSource: nil, - width: 5120, - height: 3412, + size: .init(width: 5120, height: 3412), aspectRatio: 1.5, + thumbnailSource: nil, blurhash: "KpE4oyayR5|GbHb];3j@of")) ] } diff --git a/ElementX/Sources/Services/Timeline/TimelineItems/Items/Messages/ImageRoomTimelineItemContent.swift b/ElementX/Sources/Services/Timeline/TimelineItems/Items/Messages/ImageRoomTimelineItemContent.swift index 01eb841510..4bf326422e 100644 --- a/ElementX/Sources/Services/Timeline/TimelineItems/Items/Messages/ImageRoomTimelineItemContent.swift +++ b/ElementX/Sources/Services/Timeline/TimelineItems/Items/Messages/ImageRoomTimelineItemContent.swift @@ -15,10 +15,13 @@ struct ImageRoomTimelineItemContent: Hashable { /// The original textual representation of the formatted caption directly from the event (usually HTML code) var formattedCaptionHTMLString: String? let source: MediaSourceProxy - let thumbnailSource: MediaSourceProxy? - var width: CGFloat? - var height: CGFloat? + var size: CGSize? var aspectRatio: CGFloat? + + let thumbnailSource: MediaSourceProxy? + var thumbnailSize: CGSize? + var thumbnailAspectRatio: CGFloat? + var blurhash: String? var contentType: UTType? } diff --git a/ElementX/Sources/Services/Timeline/TimelineItems/Items/Messages/VideoRoomTimelineItemContent.swift b/ElementX/Sources/Services/Timeline/TimelineItems/Items/Messages/VideoRoomTimelineItemContent.swift index 0790970edf..ff9ea5aa85 100644 --- a/ElementX/Sources/Services/Timeline/TimelineItems/Items/Messages/VideoRoomTimelineItemContent.swift +++ b/ElementX/Sources/Services/Timeline/TimelineItems/Items/Messages/VideoRoomTimelineItemContent.swift @@ -15,11 +15,15 @@ struct VideoRoomTimelineItemContent: Hashable { /// The original textual representation of the formatted caption directly from the event (usually HTML code) var formattedCaptionHTMLString: String? let duration: TimeInterval + let source: MediaSourceProxy? - let thumbnailSource: MediaSourceProxy? - var width: CGFloat? - var height: CGFloat? + var size: CGSize? var aspectRatio: CGFloat? + + let thumbnailSource: MediaSourceProxy? + var thumbnailSize: CGSize? + var thumbnailAspectRatio: CGFloat? + var blurhash: String? var contentType: UTType? } diff --git a/ElementX/Sources/Services/Timeline/TimelineItems/Items/Other/StickerRoomTimelineItem.swift b/ElementX/Sources/Services/Timeline/TimelineItems/Items/Other/StickerRoomTimelineItem.swift index 8c64723186..be7613d56e 100644 --- a/ElementX/Sources/Services/Timeline/TimelineItems/Items/Other/StickerRoomTimelineItem.swift +++ b/ElementX/Sources/Services/Timeline/TimelineItems/Items/Other/StickerRoomTimelineItem.swift @@ -19,8 +19,7 @@ struct StickerRoomTimelineItem: EventBasedTimelineItemProtocol, Equatable { let imageURL: URL - var width: CGFloat? - var height: CGFloat? + var size: CGSize? var aspectRatio: CGFloat? var blurhash: String? diff --git a/ElementX/Sources/Services/Timeline/TimelineItems/RoomTimelineItemFactory.swift b/ElementX/Sources/Services/Timeline/TimelineItems/RoomTimelineItemFactory.swift index f2794fbf47..13be1ddd38 100644 --- a/ElementX/Sources/Services/Timeline/TimelineItems/RoomTimelineItemFactory.swift +++ b/ElementX/Sources/Services/Timeline/TimelineItems/RoomTimelineItemFactory.swift @@ -121,11 +121,16 @@ struct RoomTimelineItemFactory: RoomTimelineItemFactoryProtocol { _ imageInfo: ImageInfo, _ imageURL: URL, _ isOutgoing: Bool) -> RoomTimelineItemProtocol { - var aspectRatio: CGFloat? - let width = imageInfo.width.map(CGFloat.init) - let height = imageInfo.height.map(CGFloat.init) - if let width, let height, width > 0, height > 0 { - aspectRatio = width / height + var imageSize: CGSize? + var imageAspectRatio: CGFloat? + + if let height = imageInfo.height, + let width = imageInfo.width { + imageSize = .init(width: CGFloat(width), height: CGFloat(height)) + + if width > 0, height > 0 { + imageAspectRatio = CGFloat(width) / CGFloat(height) + } } return StickerRoomTimelineItem(id: eventItemProxy.id, @@ -136,9 +141,8 @@ struct RoomTimelineItemFactory: RoomTimelineItemFactoryProtocol { canBeRepliedTo: eventItemProxy.canBeRepliedTo, sender: eventItemProxy.sender, imageURL: imageURL, - width: width, - height: height, - aspectRatio: aspectRatio, + size: imageSize, + aspectRatio: imageAspectRatio, blurhash: imageInfo.blurhash, properties: RoomTimelineItemProperties(reactions: aggregateReactions(eventItemProxy.reactions), deliveryStatus: eventItemProxy.deliveryStatus, @@ -513,18 +517,37 @@ struct RoomTimelineItemFactory: RoomTimelineItemFactoryProtocol { source: MediaSourceProxy(source: messageContent.source, mimeType: messageContent.info?.mimetype), contentType: UTType(mimeType: messageContent.info?.mimetype, fallbackFilename: messageContent.filename)) } - + private func buildImageTimelineItemContent(_ messageContent: ImageMessageContent) -> ImageRoomTimelineItemContent { let htmlCaption = messageContent.formattedCaption?.format == .html ? messageContent.formattedCaption?.body : nil let formattedCaption = htmlCaption != nil ? attributedStringBuilder.fromHTML(htmlCaption) : attributedStringBuilder.fromPlain(messageContent.caption) let thumbnailSource = messageContent.info?.thumbnailSource.map { MediaSourceProxy(source: $0, mimeType: messageContent.info?.thumbnailInfo?.mimetype) } - let width = messageContent.info?.width.map(CGFloat.init) - let height = messageContent.info?.height.map(CGFloat.init) - var aspectRatio: CGFloat? - if let width, let height, width > 0, height > 0 { - aspectRatio = width / height + var thumbnailSize: CGSize? + var thumbnailAspectRatio: CGFloat? + + if let thumbnailInfo = messageContent.info?.thumbnailInfo, + let height = thumbnailInfo.height, + let width = thumbnailInfo.width { + thumbnailSize = .init(width: CGFloat(width), height: CGFloat(height)) + + if width > 0, height > 0 { + thumbnailAspectRatio = CGFloat(width) / CGFloat(height) + } + } + + var imageSize: CGSize? + var imageAspectRatio: CGFloat? + + if let imageInfo = messageContent.info, + let height = imageInfo.height, + let width = imageInfo.width { + imageSize = .init(width: CGFloat(width), height: CGFloat(height)) + + if width > 0, height > 0 { + imageAspectRatio = CGFloat(width) / CGFloat(height) + } } return .init(filename: messageContent.filename, @@ -532,10 +555,11 @@ struct RoomTimelineItemFactory: RoomTimelineItemFactoryProtocol { formattedCaption: formattedCaption, formattedCaptionHTMLString: htmlCaption, source: MediaSourceProxy(source: messageContent.source, mimeType: messageContent.info?.mimetype), + size: imageSize, + aspectRatio: imageAspectRatio, thumbnailSource: thumbnailSource, - width: width, - height: height, - aspectRatio: aspectRatio, + thumbnailSize: thumbnailSize, + thumbnailAspectRatio: thumbnailAspectRatio, blurhash: messageContent.info?.blurhash, contentType: UTType(mimeType: messageContent.info?.mimetype, fallbackFilename: messageContent.filename)) } @@ -545,12 +569,31 @@ struct RoomTimelineItemFactory: RoomTimelineItemFactoryProtocol { let formattedCaption = htmlCaption != nil ? attributedStringBuilder.fromHTML(htmlCaption) : attributedStringBuilder.fromPlain(messageContent.caption) let thumbnailSource = messageContent.info?.thumbnailSource.map { MediaSourceProxy(source: $0, mimeType: messageContent.info?.thumbnailInfo?.mimetype) } - let width = messageContent.info?.width.map(CGFloat.init) - let height = messageContent.info?.height.map(CGFloat.init) + + var thumbnailSize: CGSize? + var thumbnailAspectRatio: CGFloat? + + if let thumbnailInfo = messageContent.info?.thumbnailInfo, + let height = thumbnailInfo.height, + let width = thumbnailInfo.width { + thumbnailSize = .init(width: CGFloat(width), height: CGFloat(height)) + + if width > 0, height > 0 { + thumbnailAspectRatio = CGFloat(width) / CGFloat(height) + } + } + + var videoSize: CGSize? + var videoAspectRatio: CGFloat? - var aspectRatio: CGFloat? - if let width, let height, width > 0, height > 0 { - aspectRatio = width / height + if let videoInfo = messageContent.info, + let height = videoInfo.height, + let width = videoInfo.width { + videoSize = .init(width: CGFloat(width), height: CGFloat(height)) + + if width > 0, height > 0 { + videoAspectRatio = CGFloat(width) / CGFloat(height) + } } return .init(filename: messageContent.filename, @@ -559,10 +602,11 @@ struct RoomTimelineItemFactory: RoomTimelineItemFactoryProtocol { formattedCaptionHTMLString: htmlCaption, duration: messageContent.info?.duration ?? 0, source: MediaSourceProxy(source: messageContent.source, mimeType: messageContent.info?.mimetype), + size: videoSize, + aspectRatio: videoAspectRatio, thumbnailSource: thumbnailSource, - width: width, - height: height, - aspectRatio: aspectRatio, + thumbnailSize: thumbnailSize, + thumbnailAspectRatio: thumbnailAspectRatio, blurhash: messageContent.info?.blurhash, contentType: UTType(mimeType: messageContent.info?.mimetype, fallbackFilename: messageContent.filename)) } diff --git a/ElementX/Sources/Services/Timeline/TimelineProxy.swift b/ElementX/Sources/Services/Timeline/TimelineProxy.swift index 64b5152d69..798ee7f4eb 100644 --- a/ElementX/Sources/Services/Timeline/TimelineProxy.swift +++ b/ElementX/Sources/Services/Timeline/TimelineProxy.swift @@ -234,7 +234,7 @@ final class TimelineProxy: TimelineProxyProtocol { progressWatcher: UploadProgressListener { progress in progressSubject?.send(progress) }, - useSendQueue: false) + useSendQueue: AppSettings.isDevelopmentBuild) await requestHandle(handle) @@ -260,7 +260,7 @@ final class TimelineProxy: TimelineProxyProtocol { progressWatcher: UploadProgressListener { progress in progressSubject?.send(progress) }, - useSendQueue: false) + useSendQueue: AppSettings.isDevelopmentBuild) await requestHandle(handle) @@ -290,7 +290,7 @@ final class TimelineProxy: TimelineProxyProtocol { progressWatcher: UploadProgressListener { progress in progressSubject?.send(progress) }, - useSendQueue: false) + useSendQueue: AppSettings.isDevelopmentBuild) await requestHandle(handle) @@ -338,7 +338,7 @@ final class TimelineProxy: TimelineProxyProtocol { progressWatcher: UploadProgressListener { progress in progressSubject?.send(progress) }, - useSendQueue: false) + useSendQueue: AppSettings.isDevelopmentBuild) await requestHandle(handle) @@ -368,7 +368,7 @@ final class TimelineProxy: TimelineProxyProtocol { progressWatcher: UploadProgressListener { progress in progressSubject?.send(progress) }, - useSendQueue: false) + useSendQueue: AppSettings.isDevelopmentBuild) await requestHandle(handle) diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/test_imageRoomTimelineView-iPad-en-GB.1.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/test_imageRoomTimelineView-iPad-en-GB.1.png index df4ec92cfe..cd99b8548f 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/test_imageRoomTimelineView-iPad-en-GB.1.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/test_imageRoomTimelineView-iPad-en-GB.1.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6cf2fd3de65756ae06e150b5353386e9b5bb554d18da2f77b0cf54246c3920eb -size 285656 +oid sha256:e96e572bd736c19bb9f3bd37216bd464276c9a1ebbd715fdae27973f9b6f36cc +size 333847 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/test_imageRoomTimelineView-iPad-pseudo.1.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/test_imageRoomTimelineView-iPad-pseudo.1.png index df4ec92cfe..cd99b8548f 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/test_imageRoomTimelineView-iPad-pseudo.1.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/test_imageRoomTimelineView-iPad-pseudo.1.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6cf2fd3de65756ae06e150b5353386e9b5bb554d18da2f77b0cf54246c3920eb -size 285656 +oid sha256:e96e572bd736c19bb9f3bd37216bd464276c9a1ebbd715fdae27973f9b6f36cc +size 333847 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/test_imageRoomTimelineView-iPhone-16-en-GB.1.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/test_imageRoomTimelineView-iPhone-16-en-GB.1.png index 70f26febce..2180dd9b0f 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/test_imageRoomTimelineView-iPhone-16-en-GB.1.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/test_imageRoomTimelineView-iPhone-16-en-GB.1.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0b2d7c9d9bf570589eb48fbbb11bf11f2970229599a5be9b06d3f54e855e0d06 -size 224889 +oid sha256:13f6dfd3e07222ae3757076e453cf99695424db88c8cc85fede448ea64e70519 +size 276862 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/test_imageRoomTimelineView-iPhone-16-pseudo.1.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/test_imageRoomTimelineView-iPhone-16-pseudo.1.png index 70f26febce..2180dd9b0f 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/test_imageRoomTimelineView-iPhone-16-pseudo.1.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/test_imageRoomTimelineView-iPhone-16-pseudo.1.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0b2d7c9d9bf570589eb48fbbb11bf11f2970229599a5be9b06d3f54e855e0d06 -size 224889 +oid sha256:13f6dfd3e07222ae3757076e453cf99695424db88c8cc85fede448ea64e70519 +size 276862