diff --git a/ElementX/Sources/Application/AppSettings.swift b/ElementX/Sources/Application/AppSettings.swift index 0c37794696..44bcb6b9fa 100644 --- a/ElementX/Sources/Application/AppSettings.swift +++ b/ElementX/Sources/Application/AppSettings.swift @@ -28,6 +28,8 @@ final class AppSettings { case hasRunNotificationPermissionsOnboarding case hasRunIdentityConfirmationOnboarding + case frequentlyUsedSystemEmojis + case enableNotifications case enableInAppNotifications case pusherProfileTag @@ -40,7 +42,6 @@ final class AppSettings { case hideTimelineMedia case elementCallBaseURLOverride - case elementCallEncryptionEnabled // Feature flags case slidingSyncDiscovery @@ -231,6 +232,9 @@ final class AppSettings { @UserPreference(key: UserDefaultsKeys.hasRunIdentityConfirmationOnboarding, defaultValue: false, storageType: .userDefaults(store)) var hasRunIdentityConfirmationOnboarding + @UserPreference(key: UserDefaultsKeys.frequentlyUsedSystemEmojis, defaultValue: [FrequentlyUsedEmoji](), storageType: .userDefaults(store)) + var frequentlyUsedSystemEmojis + // MARK: - Home Screen @UserPreference(key: UserDefaultsKeys.hideUnreadMessagesBadge, defaultValue: false, storageType: .userDefaults(store)) diff --git a/ElementX/Sources/Other/SwiftUI/Layout/TimelineMediaFrame.swift b/ElementX/Sources/Other/SwiftUI/Layout/TimelineMediaFrame.swift index c715f5fc93..cd5bb6399c 100644 --- a/ElementX/Sources/Other/SwiftUI/Layout/TimelineMediaFrame.swift +++ b/ElementX/Sources/Other/SwiftUI/Layout/TimelineMediaFrame.swift @@ -29,4 +29,9 @@ extension View { } } } + + @ViewBuilder + func mediaGalleryTimelineAspectRatio(imageInfo: ImageInfoProxy?) -> some View { + aspectRatio(imageInfo?.aspectRatio, contentMode: .fill) + } } diff --git a/ElementX/Sources/Screens/MediaEventsTimelineScreen/MediaEventsTimelineScreenModels.swift b/ElementX/Sources/Screens/MediaEventsTimelineScreen/MediaEventsTimelineScreenModels.swift index 38b12d8cbc..044caee6f6 100644 --- a/ElementX/Sources/Screens/MediaEventsTimelineScreen/MediaEventsTimelineScreenModels.swift +++ b/ElementX/Sources/Screens/MediaEventsTimelineScreen/MediaEventsTimelineScreenModels.swift @@ -23,6 +23,7 @@ struct MediaEventsTimelineGroup: Identifiable { } struct MediaEventsTimelineScreenViewState: BindableState { + var hasReachedTimelineStart = false var isBackPaginating = false var groups = [MediaEventsTimelineGroup]() @@ -31,6 +32,10 @@ struct MediaEventsTimelineScreenViewState: BindableState { var bindings: MediaEventsTimelineScreenViewStateBindings var currentPreviewItemID: TimelineItemIdentifier? + + var shouldShowEmptyState: Bool { + groups.isEmpty && hasReachedTimelineStart + } } struct MediaEventsTimelineScreenViewStateBindings { diff --git a/ElementX/Sources/Screens/MediaEventsTimelineScreen/MediaEventsTimelineScreenViewModel.swift b/ElementX/Sources/Screens/MediaEventsTimelineScreen/MediaEventsTimelineScreenViewModel.swift index 09ede04cf1..79bdbfc2ce 100644 --- a/ElementX/Sources/Screens/MediaEventsTimelineScreen/MediaEventsTimelineScreenViewModel.swift +++ b/ElementX/Sources/Screens/MediaEventsTimelineScreen/MediaEventsTimelineScreenViewModel.swift @@ -36,13 +36,13 @@ class MediaEventsTimelineScreenViewModel: MediaEventsTimelineScreenViewModelType init(mediaTimelineViewModel: TimelineViewModelProtocol, filesTimelineViewModel: TimelineViewModelProtocol, mediaProvider: MediaProviderProtocol, - screenMode: MediaEventsTimelineScreenMode = .media, + initialViewState: MediaEventsTimelineScreenViewState = .init(bindings: .init(screenMode: .media)), userIndicatorController: UserIndicatorControllerProtocol) { self.mediaTimelineViewModel = mediaTimelineViewModel self.filesTimelineViewModel = filesTimelineViewModel self.userIndicatorController = userIndicatorController - super.init(initialViewState: .init(bindings: .init(screenMode: screenMode)), mediaProvider: mediaProvider) + super.init(initialViewState: initialViewState, mediaProvider: mediaProvider) state.activeTimelineContextProvider = { [weak self] in guard let self else { fatalError() } @@ -131,6 +131,7 @@ class MediaEventsTimelineScreenViewModel: MediaEventsTimelineScreenViewModelType state.groups = newGroups state.isBackPaginating = (timelineViewState.timelineState.paginationState.backward == .paginating) +// state.hasReachedTimelineStart = (timelineViewState.timelineState.paginationState.backward == .timelineEndReached) backPaginateIfNecessary(paginationStatus: timelineViewState.timelineState.paginationState.backward) } diff --git a/ElementX/Sources/Screens/MediaEventsTimelineScreen/View/MediaEventsTimelineScreen.swift b/ElementX/Sources/Screens/MediaEventsTimelineScreen/View/MediaEventsTimelineScreen.swift index d13523376a..111896fe8b 100644 --- a/ElementX/Sources/Screens/MediaEventsTimelineScreen/View/MediaEventsTimelineScreen.swift +++ b/ElementX/Sources/Screens/MediaEventsTimelineScreen/View/MediaEventsTimelineScreen.swift @@ -34,6 +34,9 @@ struct MediaEventsTimelineScreen: View { } .environmentObject(context.viewState.activeTimelineContextProvider()) .environment(\.timelineContext, context.viewState.activeTimelineContextProvider()) + .onChange(of: context.screenMode) { _, _ in + context.send(viewAction: .changedScreenMode) + } } // The scale effects do the following: @@ -44,7 +47,7 @@ struct MediaEventsTimelineScreen: View { // * flip the items on both axes have them render correctly @ViewBuilder private var mainContent: some View { - if context.viewState.groups.isEmpty, !context.viewState.isBackPaginating { + if context.viewState.shouldShowEmptyState { emptyState } else { ScrollView { @@ -60,9 +63,6 @@ struct MediaEventsTimelineScreen: View { } } .scaleEffect(.init(width: 1, height: -1)) - .onChange(of: context.screenMode) { _, _ in - context.send(viewAction: .changedScreenMode) - } } } @@ -76,12 +76,7 @@ struct MediaEventsTimelineScreen: View { Button { tappedItem(item) } label: { - Color.clear // Let the image aspect fill in place - .aspectRatio(1, contentMode: .fill) - .overlay { - viewForTimelineItem(item) - } - .clipped() + viewForTimelineItem(item) .scaleEffect(scale(for: item, isGridLayout: true)) } .zoomTransitionSource(id: item.identifier, in: zoomTransition) @@ -260,7 +255,8 @@ struct MediaEventsTimelineScreen_Previews: PreviewProvider, TestablePreview { MediaEventsTimelineScreenViewModel(mediaTimelineViewModel: makeTimelineViewModel(timelineKind: timelineKind), filesTimelineViewModel: makeTimelineViewModel(timelineKind: timelineKind), mediaProvider: MediaProviderMock(configuration: .init()), - screenMode: screenMode, + initialViewState: .init(hasReachedTimelineStart: true, + bindings: .init(screenMode: screenMode)), userIndicatorController: UserIndicatorControllerMock()) } diff --git a/ElementX/Sources/Screens/MediaEventsTimelineScreen/View/TimelineViews/ImageMediaEventsTimelineView.swift b/ElementX/Sources/Screens/MediaEventsTimelineScreen/View/TimelineViews/ImageMediaEventsTimelineView.swift index 0b940429a1..97a36827f1 100644 --- a/ElementX/Sources/Screens/MediaEventsTimelineScreen/View/TimelineViews/ImageMediaEventsTimelineView.swift +++ b/ElementX/Sources/Screens/MediaEventsTimelineScreen/View/TimelineViews/ImageMediaEventsTimelineView.swift @@ -13,7 +13,12 @@ struct ImageMediaEventsTimelineView: View { let timelineItem: ImageRoomTimelineItem var body: some View { - loadableImage + Color.clear // Let the image aspect fill in place + .aspectRatio(1, contentMode: .fill) + .overlay { + loadableImage + } + .clipped() .accessibilityElement(children: .ignore) .accessibilityLabel(L10n.commonImage) } @@ -48,13 +53,6 @@ struct ImageMediaEventsTimelineView: View { } } -private extension View { - @ViewBuilder - func mediaGalleryTimelineAspectRatio(imageInfo: ImageInfoProxy?) -> some View { - aspectRatio(imageInfo?.aspectRatio, contentMode: .fill) - } -} - struct ImageMediaEventsTimelineView_Previews: PreviewProvider, TestablePreview { static let viewModel = TimelineViewModel.mock diff --git a/ElementX/Sources/Screens/MediaEventsTimelineScreen/View/TimelineViews/VideoMediaEventsTimelineView.swift b/ElementX/Sources/Screens/MediaEventsTimelineScreen/View/TimelineViews/VideoMediaEventsTimelineView.swift index 17e1d65ffc..08ea45da79 100644 --- a/ElementX/Sources/Screens/MediaEventsTimelineScreen/View/TimelineViews/VideoMediaEventsTimelineView.swift +++ b/ElementX/Sources/Screens/MediaEventsTimelineScreen/View/TimelineViews/VideoMediaEventsTimelineView.swift @@ -13,7 +13,13 @@ struct VideoMediaEventsTimelineView: View { let timelineItem: VideoRoomTimelineItem var body: some View { - thumbnail + Color.clear // Let the image aspect fill in place + .aspectRatio(1, contentMode: .fill) + .overlay { + thumbnail + } + .clipped() + .overlay(alignment: .bottom) { overlay } .accessibilityElement(children: .ignore) .accessibilityLabel(L10n.commonVideo) } @@ -25,23 +31,30 @@ struct VideoMediaEventsTimelineView: View { mediaType: .timelineItem(uniqueID: timelineItem.id.uniqueID.id), blurhash: timelineItem.content.blurhash, size: timelineItem.content.thumbnailInfo?.size, - mediaProvider: context?.mediaProvider) { imageView in - imageView - .overlay { playIcon } - } placeholder: { + mediaProvider: context?.mediaProvider) { placeholder } + .mediaGalleryTimelineAspectRatio(imageInfo: timelineItem.content.thumbnailInfo) } else { - playIcon + overlay } } - var playIcon: some View { - Image(systemName: "play.circle.fill") - .resizable() - .frame(width: 50, height: 50) - .background(.ultraThinMaterial, in: Circle()) - .foregroundColor(.white) + var overlay: some View { + HStack(spacing: 0) { + CompoundIcon(\.videoCallSolid) + Spacer() + Text(Duration.seconds(timelineItem.content.videoInfo.duration).formatted(.time(pattern: .minuteSecond))) + } + .padding(8) + .background { + LinearGradient(stops: [.init(color: .clear, location: 0.0), + .init(color: .compound.bgCanvasDefault, location: 1.0)], + startPoint: .top, + endPoint: .bottom) + } + .font(.compound.bodyXSSemibold) + .foregroundStyle(.compound.textPrimary) } var placeholder: some View { diff --git a/ElementX/Sources/Services/Emojis/EmojiProvider.swift b/ElementX/Sources/Services/Emojis/EmojiProvider.swift index 104f65ce23..877e0adda3 100644 --- a/ElementX/Sources/Services/Emojis/EmojiProvider.swift +++ b/ElementX/Sources/Services/Emojis/EmojiProvider.swift @@ -7,7 +7,6 @@ import Emojibase import Foundation -import OrderedCollections class EmojiProvider: EmojiProviderProtocol { private let maxFrequentEmojis = 20 @@ -61,14 +60,7 @@ class EmojiProvider: EmojiProviderProtocol { return [] } - guard let preferences = UserDefaults(suiteName: "com.apple.EmojiPreferences"), - let defaults = preferences.dictionary(forKey: "EMFDefaultsKey"), - let recents = defaults["EMFRecentsKey"] as? [String] - else { - return [] - } - - return recents + return appSettings.frequentlyUsedSystemEmojis.map(\.key) } func markEmojiAsFrequentlyUsed(_ emoji: String) { @@ -76,16 +68,19 @@ class EmojiProvider: EmojiProviderProtocol { return } - guard let preferences = UserDefaults(suiteName: "com.apple.EmojiPreferences"), - let defaults = preferences.dictionary(forKey: "EMFDefaultsKey"), - let recents = defaults["EMFRecentsKey"] as? [String] else { - return + let frequentlyUsed = if !frequentlyUsedSystemEmojis().contains(emoji) { + appSettings.frequentlyUsedSystemEmojis + [.init(count: 0, key: emoji)] + } else { + appSettings.frequentlyUsedSystemEmojis.map { frequentlyUsedEmoji in + if frequentlyUsedEmoji.key == emoji { + return FrequentlyUsedEmoji(count: frequentlyUsedEmoji.count + 1, key: emoji) + } + + return frequentlyUsedEmoji + } } - var uniqueOrderedRecents = OrderedSet(recents) - uniqueOrderedRecents.insert(emoji, at: 0) - - preferences.setValue(["EMFRecentsKey": Array(uniqueOrderedRecents)], forKey: "EMFDefaultsKey") + appSettings.frequentlyUsedSystemEmojis = frequentlyUsed.sorted { $0.count > $1.count } } // MARK: - Private diff --git a/ElementX/Sources/Services/Emojis/EmojiProviderProtocol.swift b/ElementX/Sources/Services/Emojis/EmojiProviderProtocol.swift index b0137716e8..377560b2ef 100644 --- a/ElementX/Sources/Services/Emojis/EmojiProviderProtocol.swift +++ b/ElementX/Sources/Services/Emojis/EmojiProviderProtocol.swift @@ -31,6 +31,15 @@ enum EmojiProviderState { case loaded([EmojiCategory]) } +struct FrequentlyUsedEmoji: Codable, Hashable { + let count: UInt + let key: String + + static func == (lhs: FrequentlyUsedEmoji, rhs: FrequentlyUsedEmoji) -> Bool { + lhs.key == rhs.key + } +} + @MainActor protocol EmojiProviderProtocol { var state: EmojiProviderState { get } diff --git a/ElementX/Sources/Services/Timeline/TimelineController/MockRoomTimelineController.swift b/ElementX/Sources/Services/Timeline/TimelineController/MockRoomTimelineController.swift index 922bda39ae..b4befe1c9d 100644 --- a/ElementX/Sources/Services/Timeline/TimelineController/MockRoomTimelineController.swift +++ b/ElementX/Sources/Services/Timeline/TimelineController/MockRoomTimelineController.swift @@ -36,18 +36,20 @@ class MockRoomTimelineController: RoomTimelineControllerProtocol { init(timelineKind: TimelineKind = .live, listenForSignals: Bool = false) { self.timelineKind = timelineKind - paginationState = PaginationState(backward: .idle, forward: .timelineEndReached) - callbacks.send(.isLive(true)) switch timelineKind { case .media: + paginationState = PaginationState(backward: .timelineEndReached, forward: .timelineEndReached) timelineItems = (0..<5).reduce([]) { partialResult, _ in partialResult + [RoomTimelineItemFixtures.separator] + RoomTimelineItemFixtures.mediaChunk } default: - break + paginationState = PaginationState(backward: .idle, forward: .timelineEndReached) } + callbacks.send(.paginationState(paginationState)) + callbacks.send(.isLive(true)) + guard listenForSignals else { return } do { diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/test_imageMediaEventsTimelineView-iPad-en-GB.1.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/test_imageMediaEventsTimelineView-iPad-en-GB.1.png index c9143a2f51..84f8e3bef7 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/test_imageMediaEventsTimelineView-iPad-en-GB.1.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/test_imageMediaEventsTimelineView-iPad-en-GB.1.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3e66d65ca577aa31e708a19e92ee3686b73a2fc9179c9dbad65c67c3a41a9ede -size 113146 +oid sha256:cdee3d600b60fdbd1a4ee024a32fcb96aa1acede48816ac44fea31dd6f98b2e0 +size 95367 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/test_imageMediaEventsTimelineView-iPad-pseudo.1.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/test_imageMediaEventsTimelineView-iPad-pseudo.1.png index c9143a2f51..84f8e3bef7 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/test_imageMediaEventsTimelineView-iPad-pseudo.1.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/test_imageMediaEventsTimelineView-iPad-pseudo.1.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3e66d65ca577aa31e708a19e92ee3686b73a2fc9179c9dbad65c67c3a41a9ede -size 113146 +oid sha256:cdee3d600b60fdbd1a4ee024a32fcb96aa1acede48816ac44fea31dd6f98b2e0 +size 95367 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/test_imageMediaEventsTimelineView-iPhone-16-en-GB.1.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/test_imageMediaEventsTimelineView-iPhone-16-en-GB.1.png index 0159d51e80..5e62e5d438 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/test_imageMediaEventsTimelineView-iPhone-16-en-GB.1.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/test_imageMediaEventsTimelineView-iPhone-16-en-GB.1.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:64e70e20286ebc6bbf25f0d93e4043b7113284a41ce96ab701c61a83b249ac18 -size 98920 +oid sha256:cc9a10f0defb81ffc49b373264d7a427a4586d00d2953474ed52d4750d0cced2 +size 83265 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/test_imageMediaEventsTimelineView-iPhone-16-pseudo.1.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/test_imageMediaEventsTimelineView-iPhone-16-pseudo.1.png index 0159d51e80..5e62e5d438 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/test_imageMediaEventsTimelineView-iPhone-16-pseudo.1.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/test_imageMediaEventsTimelineView-iPhone-16-pseudo.1.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:64e70e20286ebc6bbf25f0d93e4043b7113284a41ce96ab701c61a83b249ac18 -size 98920 +oid sha256:cc9a10f0defb81ffc49b373264d7a427a4586d00d2953474ed52d4750d0cced2 +size 83265 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/test_mediaEventsTimelineScreen-iPad-en-GB.Media.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/test_mediaEventsTimelineScreen-iPad-en-GB.Media.png index 9da05449f2..af0c0932ec 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/test_mediaEventsTimelineScreen-iPad-en-GB.Media.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/test_mediaEventsTimelineScreen-iPad-en-GB.Media.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:22b56f65c9574b55043aa8a7593065a075b253268bfb6e1cf4d5588375efcf98 -size 723194 +oid sha256:8c63ab40372661a448449f81e772cff9e05615a5ed4f027996984a46ee201bf5 +size 779262 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/test_mediaEventsTimelineScreen-iPad-pseudo.Media.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/test_mediaEventsTimelineScreen-iPad-pseudo.Media.png index 80b1ddbfaf..208393b866 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/test_mediaEventsTimelineScreen-iPad-pseudo.Media.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/test_mediaEventsTimelineScreen-iPad-pseudo.Media.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fc265e69d1938da9a7550fa049e4456d06c88aec5bf007613b2c2b896186d993 -size 730597 +oid sha256:3d9a1af757a18d9ab7d3ff8d7ac18a29a41ca54f61a6ffc5bea5fdf5692fe8ed +size 786023 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/test_mediaEventsTimelineScreen-iPhone-16-en-GB.Media.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/test_mediaEventsTimelineScreen-iPhone-16-en-GB.Media.png index b76e3f248d..c1e0f6eba4 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/test_mediaEventsTimelineScreen-iPhone-16-en-GB.Media.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/test_mediaEventsTimelineScreen-iPhone-16-en-GB.Media.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:86b5bf6112dde6e9de73e5e2b9268346f023bd959f4a07fde51ccaaf4ea6f31e -size 803264 +oid sha256:71d2fe4ff56b2f7f457f341570aa9b55a61cd699f3969a3841ca8757b0529403 +size 857564 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/test_mediaEventsTimelineScreen-iPhone-16-pseudo.Media.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/test_mediaEventsTimelineScreen-iPhone-16-pseudo.Media.png index b3dc42eb11..f18fb9a5cf 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/test_mediaEventsTimelineScreen-iPhone-16-pseudo.Media.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/test_mediaEventsTimelineScreen-iPhone-16-pseudo.Media.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b26928f0fb0f4e536909ecac7166a0e1cc6606dfeddb0e6b373a0fdd8ba94fac -size 809016 +oid sha256:cebdb3063cf19ef4fe6194c6d6cb014bed63daf15580ba7cfdaf1f2ea04d117e +size 863167 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/test_videoMediaEventsTimelineView-iPad-en-GB.1.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/test_videoMediaEventsTimelineView-iPad-en-GB.1.png index becc54bb49..96a62f0d24 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/test_videoMediaEventsTimelineView-iPad-en-GB.1.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/test_videoMediaEventsTimelineView-iPad-en-GB.1.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:463ae69de9a5919702d8d4561ad18f87d5cf32461b5e8fbd015f38710dc9cbfa -size 110192 +oid sha256:4a50a7265055b6ffceed4ee63d3d162c32eeb922629d40a40dcda275d836a238 +size 119650 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/test_videoMediaEventsTimelineView-iPad-pseudo.1.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/test_videoMediaEventsTimelineView-iPad-pseudo.1.png index becc54bb49..96a62f0d24 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/test_videoMediaEventsTimelineView-iPad-pseudo.1.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/test_videoMediaEventsTimelineView-iPad-pseudo.1.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:463ae69de9a5919702d8d4561ad18f87d5cf32461b5e8fbd015f38710dc9cbfa -size 110192 +oid sha256:4a50a7265055b6ffceed4ee63d3d162c32eeb922629d40a40dcda275d836a238 +size 119650 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/test_videoMediaEventsTimelineView-iPhone-16-en-GB.1.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/test_videoMediaEventsTimelineView-iPhone-16-en-GB.1.png index 2504793176..6714cf5736 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/test_videoMediaEventsTimelineView-iPhone-16-en-GB.1.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/test_videoMediaEventsTimelineView-iPhone-16-en-GB.1.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e8327696e387d06deb4a44651894a5ffee31a024093e1dfbebb99f704601991e -size 100670 +oid sha256:951340c103ad1445e8ca3c40f7f46388e0ed7f301bfea84cebad63240862221c +size 109436 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/test_videoMediaEventsTimelineView-iPhone-16-pseudo.1.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/test_videoMediaEventsTimelineView-iPhone-16-pseudo.1.png index 2504793176..6714cf5736 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/test_videoMediaEventsTimelineView-iPhone-16-pseudo.1.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/test_videoMediaEventsTimelineView-iPhone-16-pseudo.1.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e8327696e387d06deb4a44651894a5ffee31a024093e1dfbebb99f704601991e -size 100670 +oid sha256:951340c103ad1445e8ca3c40f7f46388e0ed7f301bfea84cebad63240862221c +size 109436