diff --git a/ElementX.xcodeproj/project.pbxproj b/ElementX.xcodeproj/project.pbxproj index 5d50f48e5..550670d45 100644 --- a/ElementX.xcodeproj/project.pbxproj +++ b/ElementX.xcodeproj/project.pbxproj @@ -152,7 +152,6 @@ 237FC70AA257B935F53316BA /* SessionVerificationControllerProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = C55D7E514F9DE4E3D72FDCAD /* SessionVerificationControllerProxy.swift */; }; 241CDEFE23819867D9B39066 /* RoomChangePermissionsScreenViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7AE75941583A033A9EDC9FE0 /* RoomChangePermissionsScreenViewModel.swift */; }; 244407B18B2F2D6466BA5961 /* RoomChangeRolesScreenCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 82DFA1B7B088D033E0794B82 /* RoomChangeRolesScreenCoordinator.swift */; }; - 245F7FE5961BD10C145A26E0 /* UITimelineView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EA689E792E679F5E3956F21 /* UITimelineView.swift */; }; 24A1BBADAC43DC3F3A7347DA /* AnalyticsPromptScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = E53BFB7E4F329621C844E8C3 /* AnalyticsPromptScreen.swift */; }; 24A75F72EEB7561B82D726FD /* Date.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2141693488CE5446BB391964 /* Date.swift */; }; 24B7CD41342C143117ADA768 /* Comparable.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2B1CC9AA154F4D5435BF60A /* Comparable.swift */; }; @@ -367,6 +366,7 @@ 56F0A22972A3BB519DA2261C /* HomeScreenViewModelProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 24F5530B2212862FA4BEFF2D /* HomeScreenViewModelProtocol.swift */; }; 5710AAB27D5D866292C1FE06 /* SessionVerificationScreenModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = AF848B41DAF1066F3054D4A1 /* SessionVerificationScreenModels.swift */; }; 5780E444F405AA1304E1C23E /* DeveloperOptionsScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38E521D6C2BF8DF0DFB35146 /* DeveloperOptionsScreen.swift */; }; + 57E115A8C33E599DE564F8C3 /* TimelineView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BDEB27575FEBCF414D4DEE31 /* TimelineView.swift */; }; 588411C8FD72B2A2DFE5F7DE /* XCUIElement.swift in Sources */ = {isa = PBXBuildFile; fileRef = E992D7B8BE54B2AB454613AF /* XCUIElement.swift */; }; 5894C2514400A4FBC9327632 /* ServerConfirmationScreenCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03277E40D0E0DE0712021A71 /* ServerConfirmationScreenCoordinator.swift */; }; 5897A59DDBD3592282092223 /* MediaSourceProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = D49B9785E3AD7D1C15A29F2F /* MediaSourceProxy.swift */; }; @@ -511,6 +511,7 @@ 7A642EE5F1ADC5D520F21924 /* MediaProviderProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 85EB16E7FE59A947CA441531 /* MediaProviderProtocol.swift */; }; 7A71AEF419904209BB8C2833 /* UserAgentBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F2529D434C750ED78ADF1ED /* UserAgentBuilder.swift */; }; 7A8B264506D3DDABC01B4EEB /* AppMediator.swift in Sources */ = {isa = PBXBuildFile; fileRef = B53AC78E49A297AC1D72A7CF /* AppMediator.swift */; }; + 7AE82514D96C725F8BDD0ED4 /* HighlightedTimelineItemModifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = D162B2280A15ACAF35360554 /* HighlightedTimelineItemModifier.swift */; }; 7B1605C6FFD4D195F264A684 /* RoomPollsHistoryScreenViewModelTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B40233F2989AD49906BB310D /* RoomPollsHistoryScreenViewModelTests.swift */; }; 7B5DAB915357BE596529BF25 /* MapTilerStaticMapProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 20872C3887F835958CE2F1D0 /* MapTilerStaticMapProtocol.swift */; }; 7B66DA4E7E5FE4D1A0FCEAA4 /* JoinRoomScreenViewModelProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = EEAB5662310AE73D93815134 /* JoinRoomScreenViewModelProtocol.swift */; }; @@ -1183,7 +1184,6 @@ 0DBB08A95EFA668F2CF27211 /* AppLockSetupFlowCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppLockSetupFlowCoordinator.swift; sourceTree = ""; }; 0DF5CBAF69BDF5DF31C661E1 /* IntentionalMentions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IntentionalMentions.swift; sourceTree = ""; }; 0E8BDC092D817B68CD9040C5 /* UserSessionStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserSessionStore.swift; sourceTree = ""; }; - 0EA689E792E679F5E3956F21 /* UITimelineView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UITimelineView.swift; sourceTree = ""; }; 0EE9EAF0309A2A1D67D8FAF5 /* sv */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = sv; path = sv.lproj/Localizable.stringsdict; sourceTree = ""; }; 0F5567A7EF6F2AB9473236F6 /* DocumentPicker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DocumentPicker.swift; sourceTree = ""; }; 0F64447FF544298A6A3BEF85 /* NotificationSettingsScreenModels.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationSettingsScreenModels.swift; sourceTree = ""; }; @@ -1859,6 +1859,7 @@ BBEC57C204D77908E355EF42 /* AudioRecorderProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AudioRecorderProtocol.swift; sourceTree = ""; }; BC8AA23D4F37CC26564F63C5 /* LayoutMocks.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LayoutMocks.swift; sourceTree = ""; }; BCF54536699ACEE3DB6BA3CB /* CompletionSuggestionService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CompletionSuggestionService.swift; sourceTree = ""; }; + BDEB27575FEBCF414D4DEE31 /* TimelineView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TimelineView.swift; sourceTree = ""; }; BE148A4FFEE853C5A281500C /* UNNotificationContent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UNNotificationContent.swift; sourceTree = ""; }; BE89A8BD65CCE3FCC925CA14 /* TimelineItemReplyDetails.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TimelineItemReplyDetails.swift; sourceTree = ""; }; BE9BBB18FB27F09032AD8769 /* NotificationPermissionsScreenViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationPermissionsScreenViewModel.swift; sourceTree = ""; }; @@ -1950,6 +1951,7 @@ D0A45283CF1DB96E583BECA6 /* ImageRoomTimelineView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImageRoomTimelineView.swift; sourceTree = ""; }; D0C2D52E36AD614B3C003EF6 /* RoomTimelineItemViewState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomTimelineItemViewState.swift; sourceTree = ""; }; D121B4FCFC38DBCC17BCC6D6 /* ComposerToolbar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ComposerToolbar.swift; sourceTree = ""; }; + D162B2280A15ACAF35360554 /* HighlightedTimelineItemModifier.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HighlightedTimelineItemModifier.swift; sourceTree = ""; }; D196116D2DD3F2757D45FCB7 /* hu */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = hu; path = hu.lproj/SAS.strings; sourceTree = ""; }; D1BC84BA0AF11C2128D58ABD /* Common.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Common.swift; sourceTree = ""; }; D1D8479BB704B7EF696F8ABE /* RoomPollsHistoryScreenCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomPollsHistoryScreenCoordinator.swift; sourceTree = ""; }; @@ -4480,6 +4482,7 @@ 56C1BCB9E83B09A45387FCA2 /* EncryptedRoomTimelineView.swift */, E51E3D86A84341C3A0CB8A40 /* FileRoomTimelineView.swift */, F73FF1A33198F5FAE9D34B1F /* FormattedBodyText.swift */, + D162B2280A15ACAF35360554 /* HighlightedTimelineItemModifier.swift */, D0A45283CF1DB96E583BECA6 /* ImageRoomTimelineView.swift */, 772334731A8BF8E6D90B194D /* LocationRoomTimelineView.swift */, B5B243E7818E5E9F6A4EDC7A /* NoticeRoomTimelineView.swift */, @@ -4495,8 +4498,8 @@ F9E785D5137510481733A3E8 /* TextRoomTimelineView.swift */, F9ED8E731E21055F728E5FED /* TimelineStartRoomTimelineView.swift */, 27B8315A340B46F98B9C5AF0 /* TimelineTableViewController.swift */, + BDEB27575FEBCF414D4DEE31 /* TimelineView.swift */, CE47A97726F0675DEE387BF9 /* TypingIndicatorView.swift */, - 0EA689E792E679F5E3956F21 /* UITimelineView.swift */, A2AC3C656E960E15B5905E05 /* UnsupportedRoomTimelineView.swift */, 1941C8817E6B6971BA4415F5 /* VideoRoomTimelineView.swift */, ); @@ -6032,6 +6035,7 @@ 55D18AA4F4A2257642EBDB94 /* GlobalSearchScreenViewModel.swift in Sources */, E32A18802EB37EEE3EF7B965 /* GlobalSearchScreenViewModelProtocol.swift in Sources */, D4D5595C4A2A702CFF4E94FF /* HeroImage.swift in Sources */, + 7AE82514D96C725F8BDD0ED4 /* HighlightedTimelineItemModifier.swift in Sources */, 964B9D2EC38C488C360CE0C9 /* HomeScreen.swift in Sources */, 62C5876C4254C58C2086F0DE /* HomeScreenContent.swift in Sources */, 8CC12086CBF91A7E10CDC205 /* HomeScreenCoordinator.swift in Sources */, @@ -6502,6 +6506,7 @@ 69BCBB4FB2DC3D61A28D3FD8 /* TimelineStyle.swift in Sources */, FFD3E4FF948E06C7585317FC /* TimelineStyler.swift in Sources */, 2B1E080B32167AE9EFC763A2 /* TimelineTableViewController.swift in Sources */, + 57E115A8C33E599DE564F8C3 /* TimelineView.swift in Sources */, E37044401D9951D6C02C0855 /* TracingConfiguration.swift in Sources */, 6D6E651ACACE27E9C5690818 /* TypingIndicatorView.swift in Sources */, 36AC963F2F04069B7FF1AA0C /* UIConstants.swift in Sources */, @@ -6511,7 +6516,6 @@ 384D6B9A7DFD7260139D6852 /* UITestsNotificationCenter.swift in Sources */, 22882C710BC99EC34A5024A0 /* UITestsScreenIdentifier.swift in Sources */, 706289B086B0A6B0C211763F /* UITestsSignalling.swift in Sources */, - 245F7FE5961BD10C145A26E0 /* UITimelineView.swift in Sources */, D02AA6208C7ACB9BE6332394 /* UNNotificationContent.swift in Sources */, 071A017E415AD378F2961B11 /* URL.swift in Sources */, 6FD8053301C5FEFA82D2F246 /* URLComponents.swift in Sources */, diff --git a/ElementX/Sources/Mocks/Generated/GeneratedMocks.swift b/ElementX/Sources/Mocks/Generated/GeneratedMocks.swift index 890932057..00e7513c3 100644 --- a/ElementX/Sources/Mocks/Generated/GeneratedMocks.swift +++ b/ElementX/Sources/Mocks/Generated/GeneratedMocks.swift @@ -7137,6 +7137,74 @@ class RoomProxyMock: RoomProxyProtocol { unsubscribeFromUpdatesCallsCount += 1 unsubscribeFromUpdatesClosure?() } + //MARK: - timelineFocusedOnEvent + + var timelineFocusedOnEventEventIDNumberOfEventsUnderlyingCallsCount = 0 + var timelineFocusedOnEventEventIDNumberOfEventsCallsCount: Int { + get { + if Thread.isMainThread { + return timelineFocusedOnEventEventIDNumberOfEventsUnderlyingCallsCount + } else { + var returnValue: Int? = nil + DispatchQueue.main.sync { + returnValue = timelineFocusedOnEventEventIDNumberOfEventsUnderlyingCallsCount + } + + return returnValue! + } + } + set { + if Thread.isMainThread { + timelineFocusedOnEventEventIDNumberOfEventsUnderlyingCallsCount = newValue + } else { + DispatchQueue.main.sync { + timelineFocusedOnEventEventIDNumberOfEventsUnderlyingCallsCount = newValue + } + } + } + } + var timelineFocusedOnEventEventIDNumberOfEventsCalled: Bool { + return timelineFocusedOnEventEventIDNumberOfEventsCallsCount > 0 + } + var timelineFocusedOnEventEventIDNumberOfEventsReceivedArguments: (eventID: String, numberOfEvents: UInt16)? + var timelineFocusedOnEventEventIDNumberOfEventsReceivedInvocations: [(eventID: String, numberOfEvents: UInt16)] = [] + + var timelineFocusedOnEventEventIDNumberOfEventsUnderlyingReturnValue: Result! + var timelineFocusedOnEventEventIDNumberOfEventsReturnValue: Result! { + get { + if Thread.isMainThread { + return timelineFocusedOnEventEventIDNumberOfEventsUnderlyingReturnValue + } else { + var returnValue: Result? = nil + DispatchQueue.main.sync { + returnValue = timelineFocusedOnEventEventIDNumberOfEventsUnderlyingReturnValue + } + + return returnValue! + } + } + set { + if Thread.isMainThread { + timelineFocusedOnEventEventIDNumberOfEventsUnderlyingReturnValue = newValue + } else { + DispatchQueue.main.sync { + timelineFocusedOnEventEventIDNumberOfEventsUnderlyingReturnValue = newValue + } + } + } + } + var timelineFocusedOnEventEventIDNumberOfEventsClosure: ((String, UInt16) async -> Result)? + + func timelineFocusedOnEvent(eventID: String, numberOfEvents: UInt16) async -> Result { + timelineFocusedOnEventEventIDNumberOfEventsCallsCount += 1 + timelineFocusedOnEventEventIDNumberOfEventsReceivedArguments = (eventID: eventID, numberOfEvents: numberOfEvents) + timelineFocusedOnEventEventIDNumberOfEventsReceivedInvocations.append((eventID: eventID, numberOfEvents: numberOfEvents)) + if let timelineFocusedOnEventEventIDNumberOfEventsClosure = timelineFocusedOnEventEventIDNumberOfEventsClosure { + return await timelineFocusedOnEventEventIDNumberOfEventsClosure(eventID, numberOfEvents) + } else { + return timelineFocusedOnEventEventIDNumberOfEventsReturnValue + } + } //MARK: - redact var redactUnderlyingCallsCount = 0 @@ -9585,17 +9653,22 @@ class RoomSummaryProviderMock: RoomSummaryProviderProtocol { } } class RoomTimelineProviderMock: RoomTimelineProviderProtocol { - var updatePublisher: AnyPublisher { + var updatePublisher: AnyPublisher<([TimelineItemProxy], PaginationState), Never> { get { return underlyingUpdatePublisher } set(value) { underlyingUpdatePublisher = value } } - var underlyingUpdatePublisher: AnyPublisher! + var underlyingUpdatePublisher: AnyPublisher<([TimelineItemProxy], PaginationState), Never>! var itemProxies: [TimelineItemProxy] = [] - var backPaginationState: BackPaginationStatus { - get { return underlyingBackPaginationState } - set(value) { underlyingBackPaginationState = value } + var paginationState: PaginationState { + get { return underlyingPaginationState } + set(value) { underlyingPaginationState = value } } - var underlyingBackPaginationState: BackPaginationStatus! + var underlyingPaginationState: PaginationState! + var isLive: Bool { + get { return underlyingIsLive } + set(value) { underlyingIsLive = value } + } + var underlyingIsLive: Bool! var membershipChangePublisher: AnyPublisher { get { return underlyingMembershipChangePublisher } set(value) { underlyingMembershipChangePublisher = value } @@ -10338,16 +10411,16 @@ class TimelineProxyMock: TimelineProxyProtocol { set(value) { underlyingActions = value } } var underlyingActions: AnyPublisher! + var isLive: Bool { + get { return underlyingIsLive } + set(value) { underlyingIsLive = value } + } + var underlyingIsLive: Bool! var timelineProvider: RoomTimelineProviderProtocol { get { return underlyingTimelineProvider } set(value) { underlyingTimelineProvider = value } } var underlyingTimelineProvider: RoomTimelineProviderProtocol! - var timelineStartReached: Bool { - get { return underlyingTimelineStartReached } - set(value) { underlyingTimelineStartReached = value } - } - var underlyingTimelineStartReached: Bool! //MARK: - subscribeForUpdates @@ -10705,8 +10778,8 @@ class TimelineProxyMock: TimelineProxyProtocol { var paginateBackwardsRequestSizeCalled: Bool { return paginateBackwardsRequestSizeCallsCount > 0 } - var paginateBackwardsRequestSizeReceivedRequestSize: UInt? - var paginateBackwardsRequestSizeReceivedInvocations: [UInt] = [] + var paginateBackwardsRequestSizeReceivedRequestSize: UInt16? + var paginateBackwardsRequestSizeReceivedInvocations: [UInt16] = [] var paginateBackwardsRequestSizeUnderlyingReturnValue: Result! var paginateBackwardsRequestSizeReturnValue: Result! { @@ -10732,9 +10805,9 @@ class TimelineProxyMock: TimelineProxyProtocol { } } } - var paginateBackwardsRequestSizeClosure: ((UInt) async -> Result)? + var paginateBackwardsRequestSizeClosure: ((UInt16) async -> Result)? - func paginateBackwards(requestSize: UInt) async -> Result { + func paginateBackwards(requestSize: UInt16) async -> Result { paginateBackwardsRequestSizeCallsCount += 1 paginateBackwardsRequestSizeReceivedRequestSize = requestSize paginateBackwardsRequestSizeReceivedInvocations.append(requestSize) @@ -10744,17 +10817,17 @@ class TimelineProxyMock: TimelineProxyProtocol { return paginateBackwardsRequestSizeReturnValue } } - //MARK: - paginateBackwards + //MARK: - paginateForwards - var paginateBackwardsRequestSizeUntilNumberOfItemsUnderlyingCallsCount = 0 - var paginateBackwardsRequestSizeUntilNumberOfItemsCallsCount: Int { + var paginateForwardsRequestSizeUnderlyingCallsCount = 0 + var paginateForwardsRequestSizeCallsCount: Int { get { if Thread.isMainThread { - return paginateBackwardsRequestSizeUntilNumberOfItemsUnderlyingCallsCount + return paginateForwardsRequestSizeUnderlyingCallsCount } else { var returnValue: Int? = nil DispatchQueue.main.sync { - returnValue = paginateBackwardsRequestSizeUntilNumberOfItemsUnderlyingCallsCount + returnValue = paginateForwardsRequestSizeUnderlyingCallsCount } return returnValue! @@ -10762,29 +10835,29 @@ class TimelineProxyMock: TimelineProxyProtocol { } set { if Thread.isMainThread { - paginateBackwardsRequestSizeUntilNumberOfItemsUnderlyingCallsCount = newValue + paginateForwardsRequestSizeUnderlyingCallsCount = newValue } else { DispatchQueue.main.sync { - paginateBackwardsRequestSizeUntilNumberOfItemsUnderlyingCallsCount = newValue + paginateForwardsRequestSizeUnderlyingCallsCount = newValue } } } } - var paginateBackwardsRequestSizeUntilNumberOfItemsCalled: Bool { - return paginateBackwardsRequestSizeUntilNumberOfItemsCallsCount > 0 + var paginateForwardsRequestSizeCalled: Bool { + return paginateForwardsRequestSizeCallsCount > 0 } - var paginateBackwardsRequestSizeUntilNumberOfItemsReceivedArguments: (requestSize: UInt, untilNumberOfItems: UInt)? - var paginateBackwardsRequestSizeUntilNumberOfItemsReceivedInvocations: [(requestSize: UInt, untilNumberOfItems: UInt)] = [] + var paginateForwardsRequestSizeReceivedRequestSize: UInt16? + var paginateForwardsRequestSizeReceivedInvocations: [UInt16] = [] - var paginateBackwardsRequestSizeUntilNumberOfItemsUnderlyingReturnValue: Result! - var paginateBackwardsRequestSizeUntilNumberOfItemsReturnValue: Result! { + var paginateForwardsRequestSizeUnderlyingReturnValue: Result! + var paginateForwardsRequestSizeReturnValue: Result! { get { if Thread.isMainThread { - return paginateBackwardsRequestSizeUntilNumberOfItemsUnderlyingReturnValue + return paginateForwardsRequestSizeUnderlyingReturnValue } else { var returnValue: Result? = nil DispatchQueue.main.sync { - returnValue = paginateBackwardsRequestSizeUntilNumberOfItemsUnderlyingReturnValue + returnValue = paginateForwardsRequestSizeUnderlyingReturnValue } return returnValue! @@ -10792,24 +10865,24 @@ class TimelineProxyMock: TimelineProxyProtocol { } set { if Thread.isMainThread { - paginateBackwardsRequestSizeUntilNumberOfItemsUnderlyingReturnValue = newValue + paginateForwardsRequestSizeUnderlyingReturnValue = newValue } else { DispatchQueue.main.sync { - paginateBackwardsRequestSizeUntilNumberOfItemsUnderlyingReturnValue = newValue + paginateForwardsRequestSizeUnderlyingReturnValue = newValue } } } } - var paginateBackwardsRequestSizeUntilNumberOfItemsClosure: ((UInt, UInt) async -> Result)? + var paginateForwardsRequestSizeClosure: ((UInt16) async -> Result)? - func paginateBackwards(requestSize: UInt, untilNumberOfItems: UInt) async -> Result { - paginateBackwardsRequestSizeUntilNumberOfItemsCallsCount += 1 - paginateBackwardsRequestSizeUntilNumberOfItemsReceivedArguments = (requestSize: requestSize, untilNumberOfItems: untilNumberOfItems) - paginateBackwardsRequestSizeUntilNumberOfItemsReceivedInvocations.append((requestSize: requestSize, untilNumberOfItems: untilNumberOfItems)) - if let paginateBackwardsRequestSizeUntilNumberOfItemsClosure = paginateBackwardsRequestSizeUntilNumberOfItemsClosure { - return await paginateBackwardsRequestSizeUntilNumberOfItemsClosure(requestSize, untilNumberOfItems) + func paginateForwards(requestSize: UInt16) async -> Result { + paginateForwardsRequestSizeCallsCount += 1 + paginateForwardsRequestSizeReceivedRequestSize = requestSize + paginateForwardsRequestSizeReceivedInvocations.append(requestSize) + if let paginateForwardsRequestSizeClosure = paginateForwardsRequestSizeClosure { + return await paginateForwardsRequestSizeClosure(requestSize) } else { - return paginateBackwardsRequestSizeUntilNumberOfItemsReturnValue + return paginateForwardsRequestSizeReturnValue } } //MARK: - sendAudio diff --git a/ElementX/Sources/Mocks/RoomProxyMock.swift b/ElementX/Sources/Mocks/RoomProxyMock.swift index 6f176d168..9974bb8fc 100644 --- a/ElementX/Sources/Mocks/RoomProxyMock.swift +++ b/ElementX/Sources/Mocks/RoomProxyMock.swift @@ -30,16 +30,7 @@ struct RoomProxyMockConfiguration { var hasOngoingCall = true var canonicalAlias: String? - var timeline = { - let mock = TimelineProxyMock() - mock.underlyingActions = Empty(completeImmediately: false).eraseToAnyPublisher() - mock.timelineStartReached = false - - let timelineProvider = RoomTimelineProviderMock() - timelineProvider.underlyingMembershipChangePublisher = PassthroughSubject().eraseToAnyPublisher() - mock.underlyingTimelineProvider = timelineProvider - return mock - }() + var timelineStartReached = false var members: [RoomMemberProxyMock] = .allMembers var ownUserID = RoomMemberProxyMock.mockMe.userID @@ -47,6 +38,17 @@ struct RoomProxyMockConfiguration { var canUserInvite = true var canUserTriggerRoomNotification = false var canUserJoinCall = true + + func makeTimeline() -> TimelineProxyMock { + let mock = TimelineProxyMock() + mock.underlyingActions = Empty(completeImmediately: false).eraseToAnyPublisher() + + let timelineProvider = RoomTimelineProviderMock() + timelineProvider.paginationState = .init(backward: timelineStartReached ? .timelineStartReached : .idle, forward: .timelineStartReached) + timelineProvider.underlyingMembershipChangePublisher = PassthroughSubject().eraseToAnyPublisher() + mock.underlyingTimelineProvider = timelineProvider + return mock + } } enum RoomProxyMockError: Error { @@ -69,7 +71,7 @@ extension RoomProxyMock { hasOngoingCall = configuration.hasOngoingCall canonicalAlias = configuration.canonicalAlias - timeline = configuration.timeline + timeline = configuration.makeTimeline() ownUserID = configuration.ownUserID membership = .joined diff --git a/ElementX/Sources/Screens/RoomPollsHistoryScreen/RoomPollsHistoryScreenViewModel.swift b/ElementX/Sources/Screens/RoomPollsHistoryScreen/RoomPollsHistoryScreenViewModel.swift index 995ad3b27..2e5cadc8a 100644 --- a/ElementX/Sources/Screens/RoomPollsHistoryScreen/RoomPollsHistoryScreenViewModel.swift +++ b/ElementX/Sources/Screens/RoomPollsHistoryScreen/RoomPollsHistoryScreenViewModel.swift @@ -23,7 +23,7 @@ typealias RoomPollsHistoryScreenViewModelType = StateStoreViewModel() @@ -232,4 +243,8 @@ struct TimelineViewState { var itemViewStates: [RoomTimelineItemViewState] { itemsDictionary.values.elements } + + func hasLoadedItem(with eventID: String) -> Bool { + itemViewStates.contains { $0.identifier.eventID == eventID } + } } diff --git a/ElementX/Sources/Screens/RoomScreen/RoomScreenViewModel.swift b/ElementX/Sources/Screens/RoomScreen/RoomScreenViewModel.swift index 6b82eaa56..4a408b0cc 100644 --- a/ElementX/Sources/Screens/RoomScreen/RoomScreenViewModel.swift +++ b/ElementX/Sources/Screens/RoomScreen/RoomScreenViewModel.swift @@ -23,8 +23,9 @@ typealias RoomScreenViewModelType = StateStoreViewModel? + private var paginateForwardsTask: Task? init(roomProxy: RoomProxyProtocol, focussedEventID: String? = nil, @@ -86,6 +88,7 @@ class RoomScreenViewModel: RoomScreenViewModelType, RoomScreenViewModelProtocol roomAvatarURL: roomProxy.avatarURL, timelineStyle: appSettings.timelineStyle, isEncryptedOneToOneRoom: roomProxy.isEncryptedOneToOneRoom, + timelineViewState: TimelineViewState(focussedEventID: focussedEventID), ownUserID: roomProxy.ownUserID, hasOngoingCall: roomProxy.hasOngoingCall, bindings: .init(reactionsCollapsed: [:])), @@ -170,6 +173,8 @@ class RoomScreenViewModel: RoomScreenViewModelType, RoomScreenViewModelProtocol Task { await timelineController.cancelSending(itemID: itemID) } case .paginateBackwards: paginateBackwards() + case .paginateForwards: + paginateForwards() case .poll(let pollAction): processPollAction(pollAction) case .audio(let audioAction): @@ -179,8 +184,11 @@ class RoomScreenViewModel: RoomScreenViewModelType, RoomScreenViewModelProtocol case .showReadReceipts(itemID: let itemID): showReadReceipts(for: itemID) case .focusOnEventID(let eventID): - // TODO: .. something - break + Task { await focusOnEvent(eventID: eventID) } + case .focusLive: + focusLive() + case .clearFocussedEvent: + state.timelineViewState.focussedEventID = nil } } @@ -214,10 +222,31 @@ class RoomScreenViewModel: RoomScreenViewModelType, RoomScreenViewModelProtocol } } - func focusOnEvent(eventID: String) async { } + func focusOnEvent(eventID: String) async { + if state.timelineViewState.hasLoadedItem(with: eventID) { + state.timelineViewState.focussedEventID = eventID + return + } + + showFocusLoadingIndicator() + defer { hideFocusLoadingIndicator() } + + switch await timelineController.focusOnEvent(eventID, timelineSize: Constants.detachedTimelineSize) { + case .success: + state.timelineViewState.focussedEventID = eventID + case .failure(let error): + MXLog.error("Failed to focus on event \(eventID)") + displayError(.toast(L10n.commonFailed)) + } + } // MARK: - Private + private func focusLive() { + timelineController.focusLive() + state.timelineViewState.focussedEventID = nil + } + private func attach(_ attachment: ComposerAttachmentType) { switch attachment { case .camera: @@ -297,14 +326,19 @@ class RoomScreenViewModel: RoomScreenViewModelType, RoomScreenViewModelProtocol switch callback { case .updatedTimelineItems: - self.buildTimelineViews() - case .canBackPaginate(let canBackPaginate): - if self.state.timelineViewState.canBackPaginate != canBackPaginate { - self.state.timelineViewState.canBackPaginate = canBackPaginate + buildTimelineViews() + case .paginationState(let paginationState): + if state.timelineViewState.paginationState != paginationState { + state.timelineViewState.paginationState = paginationState } - case .isBackPaginating(let isBackPaginating): - if self.state.timelineViewState.isBackPaginating != isBackPaginating { - self.state.timelineViewState.isBackPaginating = isBackPaginating + case .isLive(let isLive): + if state.timelineViewState.isLive != isLive { + state.timelineViewState.isLive = isLive + + // Remove the event highlight *only* when transitioning from non-live to live. + if isLive, state.timelineViewState.focussedEventID != nil { + state.timelineViewState.focussedEventID = nil + } } } } @@ -414,7 +448,7 @@ class RoomScreenViewModel: RoomScreenViewModelType, RoomScreenViewModelProtocol return } - switch await timelineController.paginateBackwards(requestSize: Constants.backPaginationEventLimit, untilNumberOfItems: Constants.backPaginationPageSize) { + switch await timelineController.paginateBackwards(requestSize: Constants.paginationEventLimit) { case .failure: displayError(.toast(L10n.errorFailedLoadingMessages)) default: @@ -424,6 +458,31 @@ class RoomScreenViewModel: RoomScreenViewModelType, RoomScreenViewModelProtocol } } + private func paginateForwards() { + guard paginateForwardsTask == nil else { + return + } + + paginateForwardsTask = Task { [weak self] in + guard let self else { + return + } + + switch await timelineController.paginateForwards(requestSize: Constants.paginationEventLimit) { + case .failure: + displayError(.toast(L10n.errorFailedLoadingMessages)) + default: + break + } + + if state.timelineViewState.paginationState.forward == .timelineStartReached { + focusLive() + } + + paginateForwardsTask = nil + } + } + private func sendReadReceiptIfNeeded(for lastVisibleItemID: TimelineItemIdentifier) async { guard appMediator.appState == .active else { return } @@ -636,6 +695,17 @@ class RoomScreenViewModel: RoomScreenViewModelType, RoomScreenViewModelProtocol // MARK: - User Indicators + private func showFocusLoadingIndicator() { + userIndicatorController.submitIndicator(UserIndicator(id: Constants.focusTimelineToastIndicatorID, + type: .toast(progress: .indeterminate), + title: L10n.commonLoading, + persistent: true)) + } + + private func hideFocusLoadingIndicator() { + userIndicatorController.retractIndicatorWithId(Constants.focusTimelineToastIndicatorID) + } + private func displayError(_ type: RoomScreenErrorType) { switch type { case .alert(let message): @@ -662,6 +732,7 @@ private extension RoomProxyProtocol { extension RoomScreenViewModel { static let mock = RoomScreenViewModel(roomProxy: RoomProxyMock(with: .init(name: "Preview room")), + focussedEventID: nil, timelineController: MockRoomTimelineController(), mediaProvider: MockMediaProvider(), mediaPlayerProvider: MediaPlayerProviderMock(), @@ -674,14 +745,23 @@ extension RoomScreenViewModel { } private struct RoomContextKey: EnvironmentKey { - @MainActor - static let defaultValue = RoomScreenViewModel.mock.context + @MainActor static let defaultValue = RoomScreenViewModel.mock.context +} + +private struct FocussedEventID: EnvironmentKey { + static let defaultValue: String? = nil } extension EnvironmentValues { - /// Used to access and inject and access the room context without observing it + /// Used to access and inject the room context without observing it var roomContext: RoomScreenViewModel.Context { get { self[RoomContextKey.self] } set { self[RoomContextKey.self] = newValue } } + + /// An event ID which will be non-nil when a timeline item should show as focussed. + var focussedEventID: String? { + get { self[FocussedEventID.self] } + set { self[FocussedEventID.self] = newValue } + } } diff --git a/ElementX/Sources/Screens/RoomScreen/View/RoomScreen.swift b/ElementX/Sources/Screens/RoomScreen/View/RoomScreen.swift index d75210e52..886a9c187 100644 --- a/ElementX/Sources/Screens/RoomScreen/View/RoomScreen.swift +++ b/ElementX/Sources/Screens/RoomScreen/View/RoomScreen.swift @@ -92,17 +92,18 @@ struct RoomScreen: View { } private var timeline: some View { - UITimelineView() + TimelineView() .id(context.viewState.roomID) .environmentObject(context) .environment(\.timelineStyle, context.viewState.timelineStyle) + .environment(\.focussedEventID, context.viewState.timelineViewState.focussedEventID) .overlay(alignment: .bottomTrailing) { scrollToBottomButton } } private var scrollToBottomButton: some View { - Button { context.viewState.timelineViewState.scrollToBottomPublisher.send(()) } label: { + Button(action: scrollToBottom) { Image(systemName: "chevron.down") .font(.compound.bodyLG) .fontWeight(.semibold) @@ -117,9 +118,21 @@ struct RoomScreen: View { } .padding() } - .opacity(context.isScrolledToBottom ? 0.0 : 1.0) - .accessibilityHidden(context.isScrolledToBottom) - .animation(.elementDefault, value: context.isScrolledToBottom) + .opacity(isAtBottomAndLive ? 0.0 : 1.0) + .accessibilityHidden(isAtBottomAndLive) + .animation(.elementDefault, value: isAtBottomAndLive) + } + + private var isAtBottomAndLive: Bool { + context.isScrolledToBottom && context.viewState.timelineViewState.isLive + } + + private func scrollToBottom() { + if context.viewState.timelineViewState.isLive { + context.viewState.timelineViewState.scrollToBottomPublisher.send(()) + } else { + context.send(viewAction: .focusLive) + } } @ViewBuilder diff --git a/ElementX/Sources/Screens/RoomScreen/View/Style/TimelineItemBubbledStylerView.swift b/ElementX/Sources/Screens/RoomScreen/View/Style/TimelineItemBubbledStylerView.swift index c35129a17..4c08e2648 100644 --- a/ElementX/Sources/Screens/RoomScreen/View/Style/TimelineItemBubbledStylerView.swift +++ b/ElementX/Sources/Screens/RoomScreen/View/Style/TimelineItemBubbledStylerView.swift @@ -22,12 +22,14 @@ import Compound struct TimelineItemBubbledStylerView: View { @EnvironmentObject private var context: RoomScreenViewModel.Context @Environment(\.timelineGroupStyle) private var timelineGroupStyle + @Environment(\.focussedEventID) private var focussedEventID let timelineItem: EventBasedTimelineItemProtocol let adjustedDeliveryStatus: TimelineItemDeliveryStatus? @ViewBuilder let content: () -> Content private var isEncryptedOneToOneRoom: Bool { context.viewState.isEncryptedOneToOneRoom } + private var isFocussed: Bool { focussedEventID != nil && timelineItem.id.eventID == focussedEventID } /// The base padding applied to bubbles on either side. /// @@ -71,6 +73,8 @@ struct TimelineItemBubbledStylerView: View { .padding(.leading, bubbleAvatarPadding) } } + .padding(TimelineStyle.bubbles.rowInsets) + .highlightedTimelineItem(isFocussed) } @ViewBuilder @@ -528,8 +532,6 @@ struct TimelineItemBubbledStylerView_Previews: PreviewProvider, TestablePreview VStack(alignment: .leading, spacing: 0) { ForEach(viewModel.state.timelineViewState.itemViewStates) { viewState in RoomTimelineItemView(viewState: viewState) - .padding(TimelineStyle.bubbles.rowInsets) - // Insets added in the table view cells } } } diff --git a/ElementX/Sources/Screens/RoomScreen/View/Style/TimelineItemPlainStylerView.swift b/ElementX/Sources/Screens/RoomScreen/View/Style/TimelineItemPlainStylerView.swift index fdd427144..f6e7ec610 100644 --- a/ElementX/Sources/Screens/RoomScreen/View/Style/TimelineItemPlainStylerView.swift +++ b/ElementX/Sources/Screens/RoomScreen/View/Style/TimelineItemPlainStylerView.swift @@ -20,10 +20,13 @@ import SwiftUI struct TimelineItemPlainStylerView: View { @EnvironmentObject private var context: RoomScreenViewModel.Context @Environment(\.timelineGroupStyle) private var timelineGroupStyle + @Environment(\.focussedEventID) private var focussedEventID let timelineItem: EventBasedTimelineItemProtocol let adjustedDeliveryStatus: TimelineItemDeliveryStatus? @ViewBuilder let content: () -> Content + + private var isFocussed: Bool { focussedEventID != nil && timelineItem.id.eventID == focussedEventID } var body: some View { VStack(alignment: .trailing, spacing: 0) { @@ -38,6 +41,8 @@ struct TimelineItemPlainStylerView: View { TimelineItemStatusView(timelineItem: timelineItem, adjustedDeliveryStatus: adjustedDeliveryStatus) .environmentObject(context) } + .padding(TimelineStyle.plain.rowInsets) + .highlightedTimelineItem(isFocussed) } @ViewBuilder @@ -151,7 +156,6 @@ struct TimelineItemPlainStylerView_Previews: PreviewProvider, TestablePreview { ForEach(1.. some View { + modifier(HighlightedTimelineItemModifier(isHighlighted: isHighlighted)) + } +} + +private struct HighlightedTimelineItemModifier: ViewModifier { + let isHighlighted: Bool + + func body(content: Content) -> some View { + content + .background { + if isHighlighted { + VStack(spacing: 0) { + Color.compound._bgBubbleHighlighted + LinearGradient(colors: [.compound._bgBubbleHighlighted, .clear], + startPoint: .top, + endPoint: .bottom) + .frame(maxHeight: 200) + .layoutPriority(1) + } + .overlay(alignment: .top) { + Color.compound.bgAccentRest + .frame(height: 1) + } + } + } + } +} + +struct HighlightedTimelineItemModifier_Previews: PreviewProvider, TestablePreview { + static var previews: some View { + ScrollView { + VStack(spacing: 16) { + Bubble(text: "Hello 👋") + .highlightedTimelineItem(true) + + Bubble(text: "Not highlighted") + .highlightedTimelineItem(false) + + Bubble(text: """ + Bacon ipsum dolor amet brisket bacon hamburger filet mignon ham hock, capicola meatloaf corned beef tongue. Ribeye filet mignon shoulder drumstick doner shank. Landjaeger shankle chislic brisket short loin pig. Frankfurter sirloin jerky bresaola tri-tip cow buffalo. Beef tongue shankle venison, sirloin boudin biltong ham hock corned beef. Sirloin shankle pork belly, strip steak pancetta brisket flank ribeye cow chislic. Pork ham landjaeger, pastrami beef sausage capicola meatball. + + Cow brisket bresaola, burgdoggen cupim turducken sirloin andouille shankle sausage jerky chicken pig. Tail capicola landjaeger frankfurter. Kevin pancetta brisket spare ribs, sausage chuck tail pork. Ground round boudin chuck tri-tip corned beef. Pork belly ham bresaola tail, pork chop meatloaf biltong filet mignon strip steak ribeye boudin shoulder frankfurter. + """, + isOutgoing: true) + .highlightedTimelineItem(true) + } + } + } + + struct Bubble: View { + let text: String + var isOutgoing = false + + var body: some View { + Text(text) + .padding(10) + .background(isOutgoing ? .compound._bgBubbleOutgoing : .compound._bgBubbleIncoming, + in: RoundedRectangle(cornerRadius: 12)) + .padding(isOutgoing ? .leading : .trailing, 40) + .frame(maxWidth: .infinity, alignment: isOutgoing ? .trailing : .leading) + .padding(12) + } + } +} diff --git a/ElementX/Sources/Screens/RoomScreen/View/Timeline/LocationRoomTimelineView.swift b/ElementX/Sources/Screens/RoomScreen/View/Timeline/LocationRoomTimelineView.swift index c837aaeec..ebf445871 100644 --- a/ElementX/Sources/Screens/RoomScreen/View/Timeline/LocationRoomTimelineView.swift +++ b/ElementX/Sources/Screens/RoomScreen/View/Timeline/LocationRoomTimelineView.swift @@ -89,7 +89,6 @@ struct LocationRoomTimelineView_Previews: PreviewProvider, TestablePreview { ScrollView { VStack(spacing: 8) { states - .padding(.horizontal) } } .environmentObject(viewModel.context) @@ -98,7 +97,6 @@ struct LocationRoomTimelineView_Previews: PreviewProvider, TestablePreview { ScrollView { VStack(spacing: 0) { states - .padding(.horizontal) } } .environment(\.timelineStyle, .plain) diff --git a/ElementX/Sources/Screens/RoomScreen/View/Timeline/PaginationIndicatorRoomTimelineView.swift b/ElementX/Sources/Screens/RoomScreen/View/Timeline/PaginationIndicatorRoomTimelineView.swift index 44a879579..0ab7e5105 100644 --- a/ElementX/Sources/Screens/RoomScreen/View/Timeline/PaginationIndicatorRoomTimelineView.swift +++ b/ElementX/Sources/Screens/RoomScreen/View/Timeline/PaginationIndicatorRoomTimelineView.swift @@ -28,7 +28,7 @@ struct PaginationIndicatorRoomTimelineView: View { struct PaginationIndicatorRoomTimelineView_Previews: PreviewProvider, TestablePreview { static var previews: some View { - let item = PaginationIndicatorRoomTimelineItem() + let item = PaginationIndicatorRoomTimelineItem(position: .start) PaginationIndicatorRoomTimelineView(timelineItem: item) } } diff --git a/ElementX/Sources/Screens/RoomScreen/View/Timeline/ReadMarkerRoomTimelineView.swift b/ElementX/Sources/Screens/RoomScreen/View/Timeline/ReadMarkerRoomTimelineView.swift index c1247449b..ce552baba 100644 --- a/ElementX/Sources/Screens/RoomScreen/View/Timeline/ReadMarkerRoomTimelineView.swift +++ b/ElementX/Sources/Screens/RoomScreen/View/Timeline/ReadMarkerRoomTimelineView.swift @@ -64,7 +64,6 @@ struct ReadMarkerRoomTimelineView_Previews: PreviewProvider, TestablePreview { sender: .init(id: "", displayName: "Alice"), content: .init(body: "This is a message"))), groupStyle: .single)) } - .padding(.horizontal, 8) .environmentObject(viewModel.context) } } diff --git a/ElementX/Sources/Screens/RoomScreen/View/Timeline/TimelineTableViewController.swift b/ElementX/Sources/Screens/RoomScreen/View/Timeline/TimelineTableViewController.swift index bdc2c4c94..328b67953 100644 --- a/ElementX/Sources/Screens/RoomScreen/View/Timeline/TimelineTableViewController.swift +++ b/ElementX/Sources/Screens/RoomScreen/View/Timeline/TimelineTableViewController.swift @@ -15,6 +15,7 @@ // import Combine +import Compound import SwiftUI import OrderedCollections @@ -52,33 +53,71 @@ class TypingMembersObservableObject: ObservableObject { /// extra keyboard handling magic that wasn't playing well with SwiftUI (as of iOS 16.1). /// Also this TableViewController uses a **flipped tableview** class TimelineTableViewController: UIViewController { - private let coordinator: UITimelineView.Coordinator + private let coordinator: TimelineView.Coordinator private let tableView = UITableView(frame: .zero, style: .plain) var timelineStyle: TimelineStyle var timelineItemsDictionary = OrderedDictionary() { didSet { + if !isLive, isDraggingScrollView { + // Forward pagination doesn't play well with the user scrolling, so we wait for it to stop. + hasPendingItems = true + return + } + applySnapshot() if timelineItemsDictionary.isEmpty { - paginateBackwardsPublisher.send() + paginatePublisher.send() } sendLastVisibleItemReadReceipt() } } - /// Whether or not the timeline has more messages to back paginate. - var canBackPaginate = true + /// There are pending items in `timelineItemsDictionary` that haven't been applied to the data source. + var hasPendingItems = false - /// Whether or not the timeline is waiting for more messages to be added to the top. - var isBackPaginating = false { + /// The user is dragging the scroll view (or it is still decelerating after a drag). + var isDraggingScrollView = false { didSet { - // Paginate again if the threshold hasn't been satisfied. - paginateBackwardsPublisher.send(()) + if !isDraggingScrollView, hasPendingItems { + hasPendingItems = false + applySnapshot() + } } } + /// Whether or not the current timeline is live or built around an event ID. + var isLive = true { + didSet { + // Update isScrolledToBottom when switching back to a live timeline. + if isLive { scrollViewDidScroll(tableView) } + } + } + + /// The state of pagination (in both directions) of the current timeline. + var paginationState: PaginationState = .default { + didSet { + // Paginate again if the threshold hasn't been satisfied. + paginatePublisher.send(()) + } + } + + /// The ID of the focussed event if opening the room to an event permalink. + var focussedEventID: String? { + didSet { + guard let focussedEventID else { return } + + focussedEventNeedsDisplay = true + scrollToItem(eventID: focussedEventID, animated: false) + } + } + + /// Whether the timeline should scroll to `focussedEventID` when that item is added to the data source. + /// This is necessary as the focussed event can be set before the timeline builder has built its item. + var focussedEventNeedsDisplay = false + /// Used to hold an observable object that the typing indicator can use let typingMembers = TypingMembersObservableObject(members: []) @@ -103,12 +142,13 @@ class TimelineTableViewController: UIViewController { /// A publisher used to throttle back pagination requests. /// /// Our view actions get wrapped in a `Task` so it is possible that a second call in - /// quick succession can execute before ``isBackPaginating`` becomes `true`. - private let paginateBackwardsPublisher = PassthroughSubject() + /// quick succession can execute before ``paginationState`` acknowledges that + /// pagination is in progress. + private let paginatePublisher = PassthroughSubject() /// Whether or not the view has been shown on screen yet. private var hasAppearedOnce = false - init(coordinator: UITimelineView.Coordinator, + init(coordinator: TimelineView.Coordinator, timelineStyle: TimelineStyle, isScrolledToBottom: Binding, scrollToBottomPublisher: PassthroughSubject) { @@ -133,14 +173,17 @@ class TimelineTableViewController: UIViewController { scrollToBottomPublisher .sink { [weak self] _ in - self?.scrollToBottom(animated: true) + guard let self else { return } + + scrollToNewestItem(animated: true) + coordinator.send(viewAction: .clearFocussedEvent) } .store(in: &cancellables) - paginateBackwardsPublisher + paginatePublisher .collect(.byTime(DispatchQueue.main, 0.1)) .sink { [weak self] _ in - self?.paginateBackwardsIfNeeded() + self?.paginateIfNeeded() } .store(in: &cancellables) @@ -164,7 +207,7 @@ class TimelineTableViewController: UIViewController { guard !hasAppearedOnce else { return } tableView.contentOffset.y = -1 hasAppearedOnce = true - paginateBackwardsPublisher.send() + paginatePublisher.send() } override func viewWillLayoutSubviews() { @@ -210,6 +253,7 @@ class TimelineTableViewController: UIViewController { guard let viewState else { return cell } + cell.contentConfiguration = UIHostingConfiguration { RoomTimelineItemView(viewState: viewState) .id(id) @@ -217,7 +261,7 @@ class TimelineTableViewController: UIViewController { .environmentObject(coordinator.context) // Attempted fix at a crash in TimelineItemContextMenu .environment(\.roomContext, coordinator.context) } - .margins(.all, self.timelineStyle.rowInsets) + .margins(.all, 0) // Margins are handled in the stylers .minSize(height: 1) .background(Color.clear) @@ -257,42 +301,67 @@ class TimelineTableViewController: UIViewController { let currentSnapshot = dataSource.snapshot() MXLog.verbose("DIFF: \(snapshot.itemIdentifiers.difference(from: currentSnapshot.itemIdentifiers))") - // We only animate when new items come at the end of the timeline, ignoring transitions through empty. - let animated = currentSnapshot.sectionIdentifiers.contains(.main) && - snapshot.sectionIdentifiers.contains(.main) && - currentSnapshot.numberOfItems(inSection: .main) > 0 && - snapshot.numberOfItems(inSection: .main) > 0 && - snapshot.itemIdentifiers(inSection: .main).first != currentSnapshot.itemIdentifiers(inSection: .main).first + // We only animate when new items come at the end of a live timeline, ignoring transitions through empty. + let newestItemIdentifier = snapshot.mainItemIdentifiers.first + let currentNewestItemIdentifier = currentSnapshot.mainItemIdentifiers.first + let newestItemIDChanged = snapshot.numberOfMainItems > 0 && currentSnapshot.numberOfMainItems > 0 && newestItemIdentifier != currentNewestItemIdentifier + let animated = isLive && newestItemIDChanged + + let layout: Layout? = if !isLive, newestItemIDChanged { + snapshotLayout() + } else { + nil + } dataSource.apply(snapshot, animatingDifferences: animated) + + if let focussedEventID, focussedEventNeedsDisplay { + scrollToItem(eventID: focussedEventID, animated: false) + } else if let layout { + restoreLayout(layout) + } } - /// Scrolls to the bottom of the timeline. - private func scrollToBottom(animated: Bool) { + /// Scrolls to the newest item in the timeline. + private func scrollToNewestItem(animated: Bool) { guard !timelineItemsIDs.isEmpty else { return } tableView.scrollToRow(at: IndexPath(item: 0, section: 0), at: .top, animated: animated) } - /// Scrolls to the top of the timeline. - private func scrollToTop(animated: Bool) { + /// Scrolls to the oldest item in the timeline. + private func scrollToOldestItem(animated: Bool) { guard !timelineItemsIDs.isEmpty else { return } tableView.scrollToRow(at: IndexPath(item: timelineItemsIDs.count - 1, section: 1), at: .bottom, animated: animated) } - /// Checks whether or a backwards pagination is needed and requests one if so. + /// Scrolls to the item with the corresponding event ID if loaded in the timeline. + private func scrollToItem(eventID: String, animated: Bool) { + if let kvPair = timelineItemsDictionary.first(where: { $0.value.identifier.eventID == focussedEventID }), + let indexPath = dataSource?.indexPath(for: kvPair.key) { + tableView.scrollToRow(at: indexPath, at: .middle, animated: animated) + focussedEventNeedsDisplay = false + } + } + + /// Checks whether or not pagination is needed in either direction and requests one if so. /// - /// Prefer not to call this directly, instead using ``paginateBackwardsPublisher`` to throttle requests. - private func paginateBackwardsIfNeeded() { - guard canBackPaginate, - !isBackPaginating, - tableView.contentOffset.y > tableView.contentSize.height - tableView.visibleSize.height * 2.0 - else { return } + /// **Note:** Prefer not to call this directly, instead using ``paginatePublisher`` to throttle requests. + private func paginateIfNeeded() { + guard !hasPendingItems else { return } - coordinator.send(viewAction: .paginateBackwards) + if paginationState.backward == .idle, + tableView.contentOffset.y > tableView.contentSize.height - tableView.visibleSize.height * 2.0 { + coordinator.send(viewAction: .paginateBackwards) + } + if !isLive, + paginationState.forward == .idle, + tableView.contentOffset.y < tableView.visibleSize.height { + coordinator.send(viewAction: .paginateForwards) + } } private func sendLastVisibleItemReadReceipt() { @@ -316,7 +385,7 @@ class TimelineTableViewController: UIViewController { extension TimelineTableViewController: UITableViewDelegate { func scrollViewDidScroll(_ scrollView: UIScrollView) { - paginateBackwardsPublisher.send(()) + paginatePublisher.send(()) // Dispatch to fix runtime warning about making changes during a view update. DispatchQueue.main.async { [weak self] in @@ -335,18 +404,26 @@ extension TimelineTableViewController: UITableViewDelegate { scrollView.contentOffset.y = -1 } } - + func scrollViewShouldScrollToTop(_ scrollView: UIScrollView) -> Bool { - scrollToTop(animated: true) + scrollToOldestItem(animated: true) return false } + func scrollViewWillBeginDragging(_ scrollView: UIScrollView) { + isDraggingScrollView = true + } + func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) { sendLastVisibleItemReadReceipt() + if !decelerate { + isDraggingScrollView = false + } } func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) { sendLastVisibleItemReadReceipt() + isDraggingScrollView = false } func scrollViewDidEndScrollingAnimation(_ scrollView: UIScrollView) { @@ -354,7 +431,7 @@ extension TimelineTableViewController: UITableViewDelegate { } } -// MARK: - Layout Types +// MARK: - Layout extension TimelineTableViewController { /// The sections of the table view used in the diffable data source. @@ -362,4 +439,67 @@ extension TimelineTableViewController { case main case typingIndicator } + + /// A representation of the table's layout based on a particular item. + private struct Layout { + let id: TimelineItemIdentifier + let frame: CGRect + } + + /// The current layout of the table, based on the newest timeline item. + private func snapshotLayout() -> Layout? { + guard let newestItemID = newestVisibleItemID(), + let newestCellFrame = cellFrame(for: newestItemID.timelineID) else { + return nil + } + return Layout(id: newestItemID, frame: newestCellFrame) + } + + /// Restores the timeline's layout from an old snapshot. + private func restoreLayout(_ layout: Layout) { + if let indexPath = dataSource?.indexPath(for: layout.id.timelineID) { + // Scroll the item into view. + tableView.scrollToRow(at: indexPath, at: .top, animated: false) + + // Remove any unwanted offset that was added by scrollToRow. + if let frame = cellFrame(for: layout.id.timelineID) { + let deltaY = frame.maxY - layout.frame.maxY + if deltaY != 0 { + tableView.contentOffset.y -= deltaY + } + } + } + } + + /// Returns the frame of the cell for a particular timeline item. + private func cellFrame(for id: String) -> CGRect? { + guard let timelineCell = tableView.visibleCells.first(where: { ($0 as? TimelineItemCell)?.item?.id == id }) else { + return nil + } + + return tableView.convert(timelineCell.frame, to: tableView.superview) + } + + /// The item ID of the newest visible item in the timeline. + private func newestVisibleItemID() -> TimelineItemIdentifier? { + guard let timelineCell = tableView.visibleCells.first(where: { + guard let cell = $0 as? TimelineItemCell else { return false } + return !(cell.item?.type is PaginationIndicatorRoomTimelineItem) + }) else { + return nil + } + return (timelineCell as? TimelineItemCell)?.item?.identifier + } +} + +private extension NSDiffableDataSourceSnapshot { + var numberOfMainItems: Int { + guard sectionIdentifiers.contains(.main) else { return 0 } + return numberOfItems(inSection: .main) + } + + var mainItemIdentifiers: [String] { + guard sectionIdentifiers.contains(.main) else { return [] } + return itemIdentifiers(inSection: .main) + } } diff --git a/ElementX/Sources/Screens/RoomScreen/View/Timeline/UITimelineView.swift b/ElementX/Sources/Screens/RoomScreen/View/Timeline/TimelineView.swift similarity index 84% rename from ElementX/Sources/Screens/RoomScreen/View/Timeline/UITimelineView.swift rename to ElementX/Sources/Screens/RoomScreen/View/Timeline/TimelineView.swift index b6be7d932..d00243bee 100644 --- a/ElementX/Sources/Screens/RoomScreen/View/Timeline/UITimelineView.swift +++ b/ElementX/Sources/Screens/RoomScreen/View/Timeline/TimelineView.swift @@ -18,7 +18,7 @@ import SwiftUI import WysiwygComposer /// A table view wrapper that displays the timeline of a room. -struct UITimelineView: UIViewControllerRepresentable { +struct TimelineView: UIViewControllerRepresentable { @EnvironmentObject private var viewModelContext: RoomScreenViewModel.Context @Environment(\.timelineStyle) private var timelineStyle @@ -56,11 +56,14 @@ struct UITimelineView: UIViewControllerRepresentable { if tableViewController.timelineItemsDictionary != context.viewState.timelineViewState.itemsDictionary { tableViewController.timelineItemsDictionary = context.viewState.timelineViewState.itemsDictionary } - if tableViewController.canBackPaginate != context.viewState.timelineViewState.canBackPaginate { - tableViewController.canBackPaginate = context.viewState.timelineViewState.canBackPaginate + if tableViewController.paginationState != context.viewState.timelineViewState.paginationState { + tableViewController.paginationState = context.viewState.timelineViewState.paginationState } - if tableViewController.isBackPaginating != context.viewState.timelineViewState.isBackPaginating { - tableViewController.isBackPaginating = context.viewState.timelineViewState.isBackPaginating + if tableViewController.isLive != context.viewState.timelineViewState.isLive { + tableViewController.isLive = context.viewState.timelineViewState.isLive + } + if tableViewController.focussedEventID != context.viewState.timelineViewState.focussedEventID { + tableViewController.focussedEventID = context.viewState.timelineViewState.focussedEventID } if tableViewController.typingMembers.members != context.viewState.typingMembers { @@ -76,7 +79,7 @@ struct UITimelineView: UIViewControllerRepresentable { // MARK: - Previews -struct UITimelineView_Previews: PreviewProvider, TestablePreview { +struct TimelineView_Previews: PreviewProvider, TestablePreview { static let viewModel = RoomScreenViewModel(roomProxy: RoomProxyMock(with: .init(name: "Preview room")), timelineController: MockRoomTimelineController(), mediaProvider: MockMediaProvider(), diff --git a/ElementX/Sources/Services/Room/RoomProxy.swift b/ElementX/Sources/Services/Room/RoomProxy.swift index a06e25004..93894273e 100644 --- a/ElementX/Sources/Services/Room/RoomProxy.swift +++ b/ElementX/Sources/Services/Room/RoomProxy.swift @@ -51,59 +51,11 @@ class RoomProxy: RoomProxyProtocol { actionsSubject.eraseToAnyPublisher() } + lazy var id: String = room.id() + var ownUserID: String { room.ownUserId() } - - init?(roomListItem: RoomListItemProtocol, - room: RoomProtocol) async { - self.roomListItem = roomListItem - self.room = room - - do { - timeline = try await TimelineProxy(timeline: room.timeline()) - } catch { - MXLog.error("Failed creating timeline with error: \(error)") - return nil - } - - Task { - await updateMembers() - } - } - - func subscribeForUpdates() async { - guard !subscribedForUpdates else { - MXLog.warning("Room already subscribed for updates") - return - } - - subscribedForUpdates = true - let settings = RoomSubscription(requiredState: [RequiredState(key: "m.room.name", value: ""), - RequiredState(key: "m.room.topic", value: ""), - RequiredState(key: "m.room.avatar", value: ""), - RequiredState(key: "m.room.canonical_alias", value: ""), - RequiredState(key: "m.room.join_rules", value: "")], - timelineLimit: UInt32(SlidingSyncConstants.defaultTimelineLimit)) - roomListItem.subscribe(settings: settings) - Self.subscriptionCountPerRoom[roomListItem.id()] = (Self.subscriptionCountPerRoom[roomListItem.id()] ?? 0) + 1 - - await timeline.subscribeForUpdates() - - subscribeToRoomInfoUpdates() - - subscribeToTypingNotifications() - } - - func unsubscribeFromUpdates() { - Self.subscriptionCountPerRoom[roomListItem.id()] = max(0, (Self.subscriptionCountPerRoom[roomListItem.id()] ?? 0) - 1) - - if Self.subscriptionCountPerRoom[roomListItem.id()] ?? 0 <= 0 { - roomListItem.unsubscribe() - } - } - - lazy var id: String = room.id() var name: String? { roomListItem.name() @@ -158,6 +110,65 @@ class RoomProxy: RoomProxyProtocol { var activeMembersCount: Int { Int(room.activeMembersCount()) } + + init?(roomListItem: RoomListItemProtocol, + room: RoomProtocol) async { + self.roomListItem = roomListItem + self.room = room + + do { + timeline = try await TimelineProxy(timeline: room.timeline(), isLive: true) + } catch { + MXLog.error("Failed creating timeline with error: \(error)") + return nil + } + + Task { + await updateMembers() + } + } + + func subscribeForUpdates() async { + guard !subscribedForUpdates else { + MXLog.warning("Room already subscribed for updates") + return + } + + subscribedForUpdates = true + let settings = RoomSubscription(requiredState: [RequiredState(key: "m.room.name", value: ""), + RequiredState(key: "m.room.topic", value: ""), + RequiredState(key: "m.room.avatar", value: ""), + RequiredState(key: "m.room.canonical_alias", value: ""), + RequiredState(key: "m.room.join_rules", value: "")], + timelineLimit: UInt32(SlidingSyncConstants.defaultTimelineLimit)) + roomListItem.subscribe(settings: settings) + Self.subscriptionCountPerRoom[roomListItem.id()] = (Self.subscriptionCountPerRoom[roomListItem.id()] ?? 0) + 1 + + await timeline.subscribeForUpdates() + + subscribeToRoomInfoUpdates() + + subscribeToTypingNotifications() + } + + func unsubscribeFromUpdates() { + Self.subscriptionCountPerRoom[roomListItem.id()] = max(0, (Self.subscriptionCountPerRoom[roomListItem.id()] ?? 0) - 1) + + if Self.subscriptionCountPerRoom[roomListItem.id()] ?? 0 <= 0 { + roomListItem.unsubscribe() + } + } + + func timelineFocusedOnEvent(eventID: String, numberOfEvents: UInt16) async -> Result { + .failure(.sdkError(RoomProxyMockError.generic)) +// do { +// let timeline = try await room.timelineFocusedOnEvent(eventId: eventID, numContextEvents: numberOfEvents, internalIdPrefix: UUID().uuidString) +// return .success(TimelineProxy(timeline: timeline, isLive: false)) +// } catch { +// MXLog.error("Failed to create a timeline focussed on: \(eventID) with error: \(error)") +// return .failure(.sdkError(error)) +// } + } func redact(_ eventID: String) async -> Result { await Task.dispatch(on: userInitiatedDispatchQueue) { diff --git a/ElementX/Sources/Services/Room/RoomProxyProtocol.swift b/ElementX/Sources/Services/Room/RoomProxyProtocol.swift index aab830ed2..e3e63b170 100644 --- a/ElementX/Sources/Services/Room/RoomProxyProtocol.swift +++ b/ElementX/Sources/Services/Room/RoomProxyProtocol.swift @@ -64,6 +64,8 @@ protocol RoomProxyProtocol { func unsubscribeFromUpdates() + func timelineFocusedOnEvent(eventID: String, numberOfEvents: UInt16) async -> Result + func redact(_ eventID: String) async -> Result func reportContent(_ eventID: String, reason: String?) async -> Result diff --git a/ElementX/Sources/Services/Room/RoomSummary/RoomSummaryProvider.swift b/ElementX/Sources/Services/Room/RoomSummary/RoomSummaryProvider.swift index c986c0929..ef60774d3 100644 --- a/ElementX/Sources/Services/Room/RoomSummary/RoomSummaryProvider.swift +++ b/ElementX/Sources/Services/Room/RoomSummary/RoomSummaryProvider.swift @@ -227,7 +227,7 @@ class RoomSummaryProvider: RoomSummaryProviderProtocol { var lastMessageFormattedTimestamp: String? if let latestRoomMessage = roomInfo.latestEvent { - let lastMessage = EventTimelineItemProxy(item: latestRoomMessage, id: 0) + let lastMessage = EventTimelineItemProxy(item: latestRoomMessage, id: "0") lastMessageFormattedTimestamp = lastMessage.timestamp.formattedMinimal() attributedLastMessage = eventStringBuilder.buildAttributedString(for: lastMessage) } diff --git a/ElementX/Sources/Services/Timeline/RoomTimelineProvider.swift b/ElementX/Sources/Services/Timeline/RoomTimelineProvider.swift index 455495279..fd53d277f 100644 --- a/ElementX/Sources/Services/Timeline/RoomTimelineProvider.swift +++ b/ElementX/Sources/Services/Timeline/RoomTimelineProvider.swift @@ -22,9 +22,9 @@ class RoomTimelineProvider: RoomTimelineProviderProtocol { private var cancellables = Set() private let serialDispatchQueue: DispatchQueue - private let backPaginationStateSubject = CurrentValueSubject(.idle) - var backPaginationState: BackPaginationStatus { - backPaginationStateSubject.value + private let paginationStateSubject = CurrentValueSubject(.default) + var paginationState: PaginationState { + paginationStateSubject.value } private let itemProxiesSubject: CurrentValueSubject<[TimelineItemProxy], Never> @@ -32,13 +32,14 @@ class RoomTimelineProvider: RoomTimelineProviderProtocol { itemProxiesSubject.value } - var updatePublisher: AnyPublisher { + var updatePublisher: AnyPublisher<([TimelineItemProxy], PaginationState), Never> { itemProxiesSubject - .combineLatest(backPaginationStateSubject) - .map { _, _ in () } + .combineLatest(paginationStateSubject) .eraseToAnyPublisher() } + private(set) var isLive: Bool + private let membershipChangeSubject = PassthroughSubject() var membershipChangePublisher: AnyPublisher { membershipChangeSubject @@ -46,10 +47,12 @@ class RoomTimelineProvider: RoomTimelineProviderProtocol { } init(currentItems: [TimelineItem], + isLive: Bool, updatePublisher: AnyPublisher<[TimelineDiff], Never>, - backPaginationStatePublisher: AnyPublisher) { + paginationStatePublisher: AnyPublisher) { serialDispatchQueue = DispatchQueue(label: "io.element.elementx.roomtimelineprovider", qos: .utility) itemProxiesSubject = CurrentValueSubject<[TimelineItemProxy], Never>(currentItems.map(TimelineItemProxy.init)) + self.isLive = isLive // Manually call it here as the didSet doesn't work from constructors itemProxiesSubject.send(itemProxies) @@ -59,8 +62,10 @@ class RoomTimelineProvider: RoomTimelineProviderProtocol { .sink { [weak self] in self?.updateItemsWithDiffs($0) } .store(in: &cancellables) - backPaginationStatePublisher - .sink { [weak self] in self?.backPaginationStateSubject.send($0) } + paginationStatePublisher + .sink { [weak self] in + self?.paginationStateSubject.send($0) + } .store(in: &cancellables) } diff --git a/ElementX/Sources/Services/Timeline/RoomTimelineProviderProtocol.swift b/ElementX/Sources/Services/Timeline/RoomTimelineProviderProtocol.swift index ff7036c7e..896b709c6 100644 --- a/ElementX/Sources/Services/Timeline/RoomTimelineProviderProtocol.swift +++ b/ElementX/Sources/Services/Timeline/RoomTimelineProviderProtocol.swift @@ -16,18 +16,25 @@ import Combine import Foundation - import MatrixRustSDK +struct PaginationState: Equatable { + static var `default` = PaginationState(backward: .idle, forward: .timelineStartReached) + let backward: BackPaginationStatus + let forward: BackPaginationStatus +} + @MainActor // sourcery: AutoMockable protocol RoomTimelineProviderProtocol { - /// A publisher that signals when ``itemProxies`` or ``backPaginationState`` are changed. - var updatePublisher: AnyPublisher { get } + /// A publisher that signals when ``itemProxies`` or ``paginationState`` are changed. + var updatePublisher: AnyPublisher<([TimelineItemProxy], PaginationState), Never> { get } /// The current set of items in the timeline. var itemProxies: [TimelineItemProxy] { get } - /// Whether the timeline is back paginating or not (or has reached the start of the room). - var backPaginationState: BackPaginationStatus { get } + /// Whether the timeline is back/forward paginating or not (or has reached the start/end of the room). + var paginationState: PaginationState { get } + /// Whether or not the provider is for a live timeline. + var isLive: Bool { get } /// A publisher that signals when changes to the room's membership have occurred through `/sync`. /// /// This is temporary and will be replace by a subscription on the room itself. diff --git a/ElementX/Sources/Services/Timeline/TimelineController/MockRoomTimelineController.swift b/ElementX/Sources/Services/Timeline/TimelineController/MockRoomTimelineController.swift index 844c7e7d9..902088449 100644 --- a/ElementX/Sources/Services/Timeline/TimelineController/MockRoomTimelineController.swift +++ b/ElementX/Sources/Services/Timeline/TimelineController/MockRoomTimelineController.swift @@ -36,6 +36,9 @@ class MockRoomTimelineController: RoomTimelineControllerProtocol { private var client: UITestsSignalling.Client? init(listenForSignals: Bool = false) { + callbacks.send(.paginationState(PaginationState(backward: .idle, forward: .timelineStartReached))) + callbacks.send(.isLive(true)) + guard listenForSignals else { return } do { @@ -44,17 +47,35 @@ class MockRoomTimelineController: RoomTimelineControllerProtocol { fatalError("Failure setting up signalling: \(error)") } } - - func paginateBackwards(requestSize: UInt) async -> Result { - try? await simulateBackPagination() + + private(set) var focusOnEventCallCount = 0 + func focusOnEvent(_ eventID: String, timelineSize: UInt16) async -> Result { + focusOnEventCallCount += 1 + callbacks.send(.isLive(false)) return .success(()) } + + private(set) var focusLiveCallCount = 0 + func focusLive() { + focusLiveCallCount += 1 + callbacks.send(.isLive(true)) + } - func paginateBackwards(requestSize: UInt, untilNumberOfItems: UInt) async -> Result { - callbacks.send(.canBackPaginate(false)) + func paginateBackwards(requestSize: UInt16) async -> Result { + callbacks.send(.paginationState(PaginationState(backward: .paginating, forward: .timelineStartReached))) + + if client == nil { + try? await simulateBackPagination() + } + return .success(()) } + func paginateForwards(requestSize: UInt16) async -> Result { + // try? await simulateForwardPagination() + .success(()) + } + func sendReadReceipt(for itemID: TimelineItemIdentifier) async { guard let roomProxy, let eventID = itemID.eventID else { return } _ = await roomProxy.timeline.sendReadReceipt(for: eventID, type: .read) @@ -151,14 +172,16 @@ class MockRoomTimelineController: RoomTimelineControllerProtocol { /// Prepends the next chunk of items to the `timelineItems` array. private func simulateBackPagination() async throws { + defer { + callbacks.send(.paginationState(PaginationState(backward: backPaginationResponses.isEmpty ? .timelineStartReached : .idle, + forward: .timelineStartReached))) + } + guard !backPaginationResponses.isEmpty else { return } - callbacks.send(.isBackPaginating(true)) let newItems = backPaginationResponses.removeFirst() timelineItems.insert(contentsOf: newItems, at: 0) callbacks.send(.updatedTimelineItems) - callbacks.send(.isBackPaginating(false)) - callbacks.send(.canBackPaginate(!backPaginationResponses.isEmpty)) try client?.send(.success) } diff --git a/ElementX/Sources/Services/Timeline/TimelineController/RoomTimelineController.swift b/ElementX/Sources/Services/Timeline/TimelineController/RoomTimelineController.swift index 36ba3e9d3..93deae4d6 100644 --- a/ElementX/Sources/Services/Timeline/TimelineController/RoomTimelineController.swift +++ b/ElementX/Sources/Services/Timeline/TimelineController/RoomTimelineController.swift @@ -21,7 +21,7 @@ import UIKit class RoomTimelineController: RoomTimelineControllerProtocol { private let roomProxy: RoomProxyProtocol - private let timelineProvider: RoomTimelineProviderProtocol + private let liveTimelineProvider: RoomTimelineProviderProtocol private let timelineItemFactory: RoomTimelineItemFactoryProtocol private let appSettings: AppSettings private let serialDispatchQueue: DispatchQueue @@ -30,6 +30,13 @@ class RoomTimelineController: RoomTimelineControllerProtocol { let callbacks = PassthroughSubject() + private var activeTimeline: TimelineProxyProtocol + private var activeTimelineProvider: RoomTimelineProviderProtocol { + didSet { + configureActiveTimelineProvider(clearExistingItems: true) + } + } + private(set) var timelineItems = [RoomTimelineItemProtocol]() var roomID: String { @@ -40,34 +47,39 @@ class RoomTimelineController: RoomTimelineControllerProtocol { timelineItemFactory: RoomTimelineItemFactoryProtocol, appSettings: AppSettings) { self.roomProxy = roomProxy - timelineProvider = roomProxy.timeline.timelineProvider + liveTimelineProvider = roomProxy.timeline.timelineProvider self.timelineItemFactory = timelineItemFactory self.appSettings = appSettings serialDispatchQueue = DispatchQueue(label: "io.element.elementx.roomtimelineprovider", qos: .utility) - timelineProvider - .updatePublisher - .receive(on: serialDispatchQueue) - .sink { [weak self] _ in - guard let self else { return } - - self.updateTimelineItems() - } - .store(in: &cancellables) - - // Inform the world that the initial items are loading from the store - callbacks.send(.isBackPaginating(true)) - serialDispatchQueue.async { - self.updateTimelineItems() - self.callbacks.send(.isBackPaginating(false)) - } + activeTimeline = roomProxy.timeline + activeTimelineProvider = liveTimelineProvider + configureActiveTimelineProvider() NotificationCenter.default.addObserver(self, selector: #selector(contentSizeCategoryDidChange), name: UIContentSizeCategory.didChangeNotification, object: nil) } - func paginateBackwards(requestSize: UInt) async -> Result { + func focusOnEvent(_ eventID: String, timelineSize: UInt16) async -> Result { + switch await roomProxy.timelineFocusedOnEvent(eventID: eventID, numberOfEvents: timelineSize) { + case .success(let timeline): + await timeline.subscribeForUpdates() + activeTimeline = timeline + activeTimelineProvider = timeline.timelineProvider + return .success(()) + case .failure: + return .failure(.generic) + } + } + + func focusLive() { + activeTimeline = roomProxy.timeline + activeTimelineProvider = liveTimelineProvider + callbacks.send(.isLive(true)) + } + + func paginateBackwards(requestSize: UInt16) async -> Result { MXLog.info("Started back pagination request") - switch await roomProxy.timeline.paginateBackwards(requestSize: requestSize) { + switch await activeTimeline.paginateBackwards(requestSize: requestSize) { case .success: MXLog.info("Finished back pagination request") return .success(()) @@ -77,14 +89,14 @@ class RoomTimelineController: RoomTimelineControllerProtocol { } } - func paginateBackwards(requestSize: UInt, untilNumberOfItems: UInt) async -> Result { - MXLog.info("Started back pagination request") - switch await roomProxy.timeline.paginateBackwards(requestSize: requestSize, untilNumberOfItems: untilNumberOfItems) { + func paginateForwards(requestSize: UInt16) async -> Result { + MXLog.info("Started forward pagination request") + switch await activeTimeline.paginateForwards(requestSize: requestSize) { case .success: - MXLog.info("Finished back pagination request") + MXLog.info("Finished forward pagination request") return .success(()) case .failure(let error): - MXLog.error("Failed back pagination request with error: \(error)") + MXLog.error("Failed forward pagination request with error: \(error)") return .failure(.generic) } } @@ -149,7 +161,7 @@ class RoomTimelineController: RoomTimelineControllerProtocol { return } - switch await roomProxy.timeline.toggleReaction(reaction, to: eventID) { + switch await activeTimeline.toggleReaction(reaction, to: eventID) { case .success: MXLog.info("Finished toggling reaction") case .failure(let error): @@ -169,10 +181,10 @@ class RoomTimelineController: RoomTimelineControllerProtocol { await cancelSending(itemID: itemID) await sendMessage(newMessage, html: html, intentionalMentions: intentionalMentions) } else if let eventID = itemID.eventID { - switch await roomProxy.timeline.editMessage(newMessage, - html: html, - original: eventID, - intentionalMentions: intentionalMentions) { + switch await activeTimeline.editMessage(newMessage, + html: html, + original: eventID, + intentionalMentions: intentionalMentions) { case .success: MXLog.info("Finished editing message") case .failure(let error): @@ -199,7 +211,7 @@ class RoomTimelineController: RoomTimelineControllerProtocol { // Handle this parallel to the timeline items so we're not forced // to bundle the Rust side objects within them func debugInfo(for itemID: TimelineItemIdentifier) -> TimelineItemDebugInfo { - for timelineItemProxy in timelineProvider.itemProxies { + for timelineItemProxy in activeTimelineProvider.itemProxies { switch timelineItemProxy { case .event(let item): if item.id == itemID { @@ -214,7 +226,7 @@ class RoomTimelineController: RoomTimelineControllerProtocol { } func retryDecryption(for sessionID: String) async { - await roomProxy.timeline.retryDecryption(for: sessionID) + await activeTimeline.retryDecryption(for: sessionID) } func retrySending(itemID: TimelineItemIdentifier) async { @@ -239,19 +251,46 @@ class RoomTimelineController: RoomTimelineControllerProtocol { // MARK: - Private - @objc private func contentSizeCategoryDidChange() { - // Recompute all attributed strings on content size changes -> DynamicType support - serialDispatchQueue.async { - self.updateTimelineItems() + /// The cancellable used to update the timeline items. + private var updateTimelineItemsCancellable: AnyCancellable? + + /// Configures the controller to listen to `activeTimeline` for events. + /// - Parameter clearExistingItems: Whether or not to clear any existing items before loading the timeline's contents. + private func configureActiveTimelineProvider(clearExistingItems: Bool = false) { + updateTimelineItemsCancellable = activeTimelineProvider + .updatePublisher + .receive(on: serialDispatchQueue) + .sink { [weak self] items, paginationState in + self?.updateTimelineItems(itemProxies: items, paginationState: paginationState) + } + + // Inform the world that the initial items are loading from the store + callbacks.send(.paginationState(.init(backward: .paginating, forward: .paginating))) + callbacks.send(.isLive(activeTimelineProvider.isLive)) + + if clearExistingItems { + // Transition through empty to prevent animations. + timelineItems.removeAll() + callbacks.send(.updatedTimelineItems) + } + + serialDispatchQueue.async { [activeTimelineProvider] in + self.updateTimelineItems(itemProxies: activeTimelineProvider.itemProxies, paginationState: activeTimelineProvider.paginationState) + self.callbacks.send(.paginationState(.init(backward: .idle, forward: .idle))) } } - private func updateTimelineItems() { + @objc private func contentSizeCategoryDidChange() { + // Recompute all attributed strings on content size changes -> DynamicType support + serialDispatchQueue.async { [activeTimelineProvider] in + self.updateTimelineItems(itemProxies: activeTimelineProvider.itemProxies, paginationState: activeTimelineProvider.paginationState) + } + } + + private func updateTimelineItems(itemProxies: [TimelineItemProxy], paginationState: PaginationState) { var newTimelineItems = [RoomTimelineItemProtocol]() - var canBackPaginate = !roomProxy.timeline.timelineStartReached - var isBackPaginating = false - let collapsibleChunks = timelineProvider.itemProxies.groupBy { isItemCollapsible($0) } + let collapsibleChunks = itemProxies.groupBy { isItemCollapsible($0) } for (index, collapsibleChunk) in collapsibleChunks.enumerated() { let isLastItem = index == collapsibleChunks.indices.last @@ -281,27 +320,31 @@ class RoomTimelineController: RoomTimelineControllerProtocol { } // Check if we need to add anything to the top of the timeline. - switch timelineProvider.backPaginationState { + switch paginationState.backward { case .timelineStartReached: if !roomProxy.isEncryptedOneToOneRoom { let timelineStart = TimelineStartRoomTimelineItem(name: roomProxy.name) newTimelineItems.insert(timelineStart, at: 0) } - canBackPaginate = false case .paginating: - newTimelineItems.insert(PaginationIndicatorRoomTimelineItem(), at: 0) - isBackPaginating = true + newTimelineItems.insert(PaginationIndicatorRoomTimelineItem(position: .start), at: 0) case .idle: break } + switch paginationState.forward { + case .paginating: + newTimelineItems.insert(PaginationIndicatorRoomTimelineItem(position: .end), at: newTimelineItems.count) + case .idle, .timelineStartReached: + break + } + DispatchQueue.main.sync { timelineItems = newTimelineItems } callbacks.send(.updatedTimelineItems) - callbacks.send(.canBackPaginate(canBackPaginate)) - callbacks.send(.isBackPaginating(isBackPaginating)) + callbacks.send(.paginationState(paginationState)) } private func buildTimelineItem(for itemProxy: TimelineItemProxy) -> RoomTimelineItemProtocol? { @@ -355,10 +398,10 @@ class RoomTimelineController: RoomTimelineControllerProtocol { switch timelineItem.replyDetails { case .notLoaded: - roomProxy.timeline.fetchDetails(for: eventID) + activeTimeline.fetchDetails(for: eventID) case .error: if refetchOnError { - roomProxy.timeline.fetchDetails(for: eventID) + activeTimeline.fetchDetails(for: eventID) } default: break @@ -366,7 +409,7 @@ class RoomTimelineController: RoomTimelineControllerProtocol { } func eventTimestamp(for itemID: TimelineItemIdentifier) -> Date? { - for itemProxy in roomProxy.timeline.timelineProvider.itemProxies { + for itemProxy in activeTimelineProvider.itemProxies { switch itemProxy { case .event(let eventTimelineItemProxy): if eventTimelineItemProxy.id == itemID { diff --git a/ElementX/Sources/Services/Timeline/TimelineController/RoomTimelineControllerProtocol.swift b/ElementX/Sources/Services/Timeline/TimelineController/RoomTimelineControllerProtocol.swift index 2671696cc..7f1e4de46 100644 --- a/ElementX/Sources/Services/Timeline/TimelineController/RoomTimelineControllerProtocol.swift +++ b/ElementX/Sources/Services/Timeline/TimelineController/RoomTimelineControllerProtocol.swift @@ -20,8 +20,8 @@ import UIKit enum RoomTimelineControllerCallback { case updatedTimelineItems - case canBackPaginate(Bool) - case isBackPaginating(Bool) + case paginationState(PaginationState) + case isLive(Bool) } enum RoomTimelineControllerAction { @@ -45,9 +45,11 @@ protocol RoomTimelineControllerProtocol { func processItemDisappearance(_ itemID: TimelineItemIdentifier) async - func paginateBackwards(requestSize: UInt) async -> Result + func focusOnEvent(_ eventID: String, timelineSize: UInt16) async -> Result + func focusLive() - func paginateBackwards(requestSize: UInt, untilNumberOfItems: UInt) async -> Result + func paginateBackwards(requestSize: UInt16) async -> Result + func paginateForwards(requestSize: UInt16) async -> Result func sendReadReceipt(for itemID: TimelineItemIdentifier) async diff --git a/ElementX/Sources/Services/Timeline/TimelineItemProxy.swift b/ElementX/Sources/Services/Timeline/TimelineItemProxy.swift index b07557e48..371030fdf 100644 --- a/ElementX/Sources/Services/Timeline/TimelineItemProxy.swift +++ b/ElementX/Sources/Services/Timeline/TimelineItemProxy.swift @@ -46,7 +46,7 @@ enum TimelineItemProxy { init(item: MatrixRustSDK.TimelineItem) { if let eventItem = item.asEvent() { - self = .event(EventTimelineItemProxy(item: eventItem, id: item.uniqueId())) + self = .event(EventTimelineItemProxy(item: eventItem, id: String(item.uniqueId()))) } else if let virtualItem = item.asVirtual() { self = .virtual(virtualItem, timelineID: String(item.uniqueId())) } else { @@ -67,9 +67,9 @@ class EventTimelineItemProxy { let item: MatrixRustSDK.EventTimelineItem let id: TimelineItemIdentifier - init(item: MatrixRustSDK.EventTimelineItem, id: UInt64) { + init(item: MatrixRustSDK.EventTimelineItem, id: String) { self.item = item - self.id = TimelineItemIdentifier(timelineID: String(id), eventID: item.eventId(), transactionID: item.transactionId()) + self.id = TimelineItemIdentifier(timelineID: id, eventID: item.eventId(), transactionID: item.transactionId()) } lazy var deliveryStatus: TimelineItemDeliveryStatus? = { diff --git a/ElementX/Sources/Services/Timeline/TimelineItems/Items/Virtual/PaginationIndicatorRoomTimelineItem.swift b/ElementX/Sources/Services/Timeline/TimelineItems/Items/Virtual/PaginationIndicatorRoomTimelineItem.swift index 166cfb35d..f75e27f00 100644 --- a/ElementX/Sources/Services/Timeline/TimelineItems/Items/Virtual/PaginationIndicatorRoomTimelineItem.swift +++ b/ElementX/Sources/Services/Timeline/TimelineItems/Items/Virtual/PaginationIndicatorRoomTimelineItem.swift @@ -17,5 +17,20 @@ import Foundation struct PaginationIndicatorRoomTimelineItem: DecorationTimelineItemProtocol, Equatable { - let id = TimelineItemIdentifier(timelineID: "paginationIndicatorTimelineItemIdentifier") + let id: TimelineItemIdentifier + + enum Position { + case start, end + + var id: String { + switch self { + case .start: "backwardPaginationIndicatorTimelineItemIdentifier" + case .end: "forwardPaginationIndicatorTimelineItemIdentifier" + } + } + } + + init(position: Position) { + id = TimelineItemIdentifier(timelineID: position.id) + } } diff --git a/ElementX/Sources/Services/Timeline/TimelineProxy.swift b/ElementX/Sources/Services/Timeline/TimelineProxy.swift index fc74b6f02..e43e72414 100644 --- a/ElementX/Sources/Services/Timeline/TimelineProxy.swift +++ b/ElementX/Sources/Services/Timeline/TimelineProxy.swift @@ -25,21 +25,22 @@ final class TimelineProxy: TimelineProxyProtocol { private let messageSendingDispatchQueue = DispatchQueue(label: "io.element.elementx.roomproxy.message_sending", qos: .userInitiated) private let userInitiatedDispatchQueue = DispatchQueue(label: "io.element.elementx.roomproxy.user_initiated", qos: .userInitiated) - private var backPaginationStateObservationToken: TaskHandle? + private var backPaginationStatusObservationToken: TaskHandle? private var roomTimelineObservationToken: TaskHandle? // periphery:ignore - retaining purpose private var timelineListener: RoomTimelineListener? - - private let backPaginationStateSubject = PassthroughSubject() + + private let backPaginationStatusSubject = CurrentValueSubject(.idle) + private let forwardPaginationStatusSubject = CurrentValueSubject(.timelineStartReached) private let timelineUpdatesSubject = PassthroughSubject<[TimelineDiff], Never>() - - private(set) var timelineStartReached = false private let actionsSubject = PassthroughSubject() var actions: AnyPublisher { actionsSubject.eraseToAnyPublisher() } + + let isLive: Bool private var innerTimelineProvider: RoomTimelineProviderProtocol! var timelineProvider: RoomTimelineProviderProtocol { @@ -47,12 +48,13 @@ final class TimelineProxy: TimelineProxyProtocol { } deinit { - backPaginationStateObservationToken?.cancel() + backPaginationStatusObservationToken?.cancel() roomTimelineObservationToken?.cancel() } - init(timeline: Timeline) { + init(timeline: Timeline, isLive: Bool) { self.timeline = timeline + self.isLive = isLive } func subscribeForUpdates() async { @@ -70,11 +72,17 @@ final class TimelineProxy: TimelineProxyProtocol { let result = await timeline.addListener(listener: timelineListener) roomTimelineObservationToken = result.itemsStream - subscribeToBackpagination() + let paginationStatePublisher = backPaginationStatusSubject + .combineLatest(forwardPaginationStatusSubject) + .map { PaginationState(backward: $0.0, forward: $0.1) } + .eraseToAnyPublisher() + + subscribeToPagination() innerTimelineProvider = await RoomTimelineProvider(currentItems: result.items, + isLive: isLive, updatePublisher: timelineUpdatesSubject.eraseToAnyPublisher(), - backPaginationStatePublisher: backPaginationStateSubject.eraseToAnyPublisher()) + paginationStatePublisher: paginationStatePublisher) } func cancelSend(transactionID: String) async { @@ -138,38 +146,43 @@ final class TimelineProxy: TimelineProxyProtocol { } } - func paginateBackwards(requestSize: UInt) async -> Result { - MXLog.info("Paginating backwards with requestSize: \(requestSize)") + func paginateBackwards(requestSize: UInt16) async -> Result { + MXLog.info("Paginating backwards") do { - try await Task.dispatch(on: .global()) { - try self.timeline.paginateBackwards(opts: .simpleRequest(eventLimit: UInt16(requestSize), waitForToken: true)) - } - - MXLog.info("Finished paginating backwards with requestSize: \(requestSize)") + _ = try timeline.paginateBackwards(opts: .simpleRequest(eventLimit: requestSize, waitForToken: true)) + MXLog.info("Finished paginating backwards") return .success(()) } catch { - MXLog.error("Failed paginating backwards with requestSize: \(requestSize) with error: \(error)") + MXLog.error("Failed paginating backwards with error: \(error)") return .failure(.failedPaginatingBackwards) } } - func paginateBackwards(requestSize: UInt, untilNumberOfItems: UInt) async -> Result { - MXLog.info("Paginating backwards with requestSize: \(requestSize), untilNumberOfItems: \(untilNumberOfItems)") - - do { - try await Task.dispatch(on: .global()) { - try self.timeline.paginateBackwards(opts: .untilNumItems(eventLimit: UInt16(requestSize), items: UInt16(untilNumberOfItems), waitForToken: true)) - } - - MXLog.info("Finished paginating backwards with requestSize: \(requestSize), untilNumberOfItems: \(untilNumberOfItems)") - - return .success(()) - } catch { - MXLog.error("Finished paginating backwards with requestSize: \(requestSize), untilNumberOfItems: \(untilNumberOfItems) with error: \(error)") - return .failure(.failedPaginatingBackwards) - } + func paginateForwards(requestSize: UInt16) async -> Result { + .failure(.failedPaginatingBackwards) + // This extra check is necessary as forwards pagination status doesn't support subscribing. + // We need it to make sure we send a valid status after a failure. +// guard forwardPaginationStatusSubject.value == .idle else { +// MXLog.error("Attempting to paginate forwards when already at the end.") +// return .failure(.failedPaginatingBackwards) +// } +// +// MXLog.info("Paginating forwards") +// forwardPaginationStatusSubject.send(.paginating) +// +// do { +// let timelineEndReached = try await timeline.paginateForwards(numEvents: requestSize) +// MXLog.info("Finished paginating forwards") +// +// forwardPaginationStatusSubject.send(timelineEndReached ? .timelineEndReached : .idle) +// return .success(()) +// } catch { +// MXLog.error("Failed paginating forwards with error: \(error)") +// forwardPaginationStatusSubject.send(.idle) +// return .failure(.failedPaginatingBackwards) +// } } func retryDecryption(for sessionID: String) async { @@ -536,18 +549,18 @@ final class TimelineProxy: TimelineProxyProtocol { } } - private func subscribeToBackpagination() { - let listener = RoomBackpaginationStatusListener { [weak self] status in - if status == .timelineStartReached { - self?.timelineStartReached = true - } - self?.backPaginationStateSubject.send(status) + private func subscribeToPagination() { + let backPaginationListener = RoomPaginationStatusListener { [weak self] status in + self?.backPaginationStatusSubject.send(status) } do { - backPaginationStateObservationToken = try timeline.subscribeToBackPaginationStatus(listener: listener) + backPaginationStatusObservationToken = try timeline.subscribeToBackPaginationStatus(listener: backPaginationListener) } catch { - MXLog.error("Failed to subscribe to back pagination state with error: \(error)") + MXLog.error("Failed to subscribe to back pagination status with error: \(error)") } + + // Forward pagination doesn't support observation, set the initial state ourself. + forwardPaginationStatusSubject.send(isLive ? .timelineStartReached : .idle) } } @@ -563,7 +576,7 @@ private final class RoomTimelineListener: TimelineListener { } } -private final class RoomBackpaginationStatusListener: BackPaginationStatusListener { +private final class RoomPaginationStatusListener: BackPaginationStatusListener { private let onUpdateClosure: (BackPaginationStatus) -> Void init(_ onUpdateClosure: @escaping (BackPaginationStatus) -> Void) { diff --git a/ElementX/Sources/Services/Timeline/TimelineProxyProtocol.swift b/ElementX/Sources/Services/Timeline/TimelineProxyProtocol.swift index 40599195b..70866b363 100644 --- a/ElementX/Sources/Services/Timeline/TimelineProxyProtocol.swift +++ b/ElementX/Sources/Services/Timeline/TimelineProxyProtocol.swift @@ -41,9 +41,9 @@ enum TimelineProxyAction { protocol TimelineProxyProtocol { var actions: AnyPublisher { get } - var timelineProvider: RoomTimelineProviderProtocol { get } + var isLive: Bool { get } - var timelineStartReached: Bool { get } + var timelineProvider: RoomTimelineProviderProtocol { get } func subscribeForUpdates() async @@ -64,9 +64,8 @@ protocol TimelineProxyProtocol { /// Retries sending a failed message given its transaction ID func retrySend(transactionID: String) async - func paginateBackwards(requestSize: UInt) async -> Result - - func paginateBackwards(requestSize: UInt, untilNumberOfItems: UInt) async -> Result + func paginateBackwards(requestSize: UInt16) async -> Result + func paginateForwards(requestSize: UInt16) async -> Result func sendAudio(url: URL, audioInfo: AudioInfo, diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_audioRoomTimelineView-iPad-en-GB.1.png b/PreviewTests/__Snapshots__/PreviewTests/test_audioRoomTimelineView-iPad-en-GB.1.png index 5b0969386..c5c16fad0 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_audioRoomTimelineView-iPad-en-GB.1.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_audioRoomTimelineView-iPad-en-GB.1.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c7f0fd9b44f02c77dd16eb42923bf40a42970f384ca9b8d61f6474a0083388ce -size 82339 +oid sha256:2bbb3c58d23a7d2845f1856bea66eccd129a8d09141550c6b361fa387b0264a7 +size 82232 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_audioRoomTimelineView-iPad-en-GB.2.png b/PreviewTests/__Snapshots__/PreviewTests/test_audioRoomTimelineView-iPad-en-GB.2.png index d3f7c8bab..76d2b7b07 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_audioRoomTimelineView-iPad-en-GB.2.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_audioRoomTimelineView-iPad-en-GB.2.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e28312355d30b5bf3473ee327ba84a622a94af9bdcb9dd1f4435b356b52fc45d -size 81405 +oid sha256:92660bb907b382a5628237ac27c85045f944803af5b8088eb6cec590a7398d36 +size 81124 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_audioRoomTimelineView-iPad-pseudo.1.png b/PreviewTests/__Snapshots__/PreviewTests/test_audioRoomTimelineView-iPad-pseudo.1.png index 5b0969386..c5c16fad0 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_audioRoomTimelineView-iPad-pseudo.1.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_audioRoomTimelineView-iPad-pseudo.1.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c7f0fd9b44f02c77dd16eb42923bf40a42970f384ca9b8d61f6474a0083388ce -size 82339 +oid sha256:2bbb3c58d23a7d2845f1856bea66eccd129a8d09141550c6b361fa387b0264a7 +size 82232 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_audioRoomTimelineView-iPad-pseudo.2.png b/PreviewTests/__Snapshots__/PreviewTests/test_audioRoomTimelineView-iPad-pseudo.2.png index d3f7c8bab..76d2b7b07 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_audioRoomTimelineView-iPad-pseudo.2.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_audioRoomTimelineView-iPad-pseudo.2.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e28312355d30b5bf3473ee327ba84a622a94af9bdcb9dd1f4435b356b52fc45d -size 81405 +oid sha256:92660bb907b382a5628237ac27c85045f944803af5b8088eb6cec590a7398d36 +size 81124 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_audioRoomTimelineView-iPhone-15-en-GB.1.png b/PreviewTests/__Snapshots__/PreviewTests/test_audioRoomTimelineView-iPhone-15-en-GB.1.png index e804a43c4..f12cad69c 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_audioRoomTimelineView-iPhone-15-en-GB.1.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_audioRoomTimelineView-iPhone-15-en-GB.1.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c4d662451a74318edb71684b01b9d79b388f37e977e5dcb459c71e5ddd645b29 -size 41108 +oid sha256:8ecf85f4211a6455b977a5dfa99df1f10ae17d352cd4562ad9aa9d2cb0048507 +size 41081 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_audioRoomTimelineView-iPhone-15-en-GB.2.png b/PreviewTests/__Snapshots__/PreviewTests/test_audioRoomTimelineView-iPhone-15-en-GB.2.png index db624ddbb..7b98abbc3 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_audioRoomTimelineView-iPhone-15-en-GB.2.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_audioRoomTimelineView-iPhone-15-en-GB.2.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4d28917da204938efb19eab7a37876b1c85a838c76771fa844504018501059bc -size 39218 +oid sha256:7b7bd3d48947a17e82677111bd17705b467431b8c37bebd4eeb19965c01668a8 +size 39385 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_audioRoomTimelineView-iPhone-15-pseudo.1.png b/PreviewTests/__Snapshots__/PreviewTests/test_audioRoomTimelineView-iPhone-15-pseudo.1.png index e804a43c4..f12cad69c 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_audioRoomTimelineView-iPhone-15-pseudo.1.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_audioRoomTimelineView-iPhone-15-pseudo.1.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c4d662451a74318edb71684b01b9d79b388f37e977e5dcb459c71e5ddd645b29 -size 41108 +oid sha256:8ecf85f4211a6455b977a5dfa99df1f10ae17d352cd4562ad9aa9d2cb0048507 +size 41081 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_audioRoomTimelineView-iPhone-15-pseudo.2.png b/PreviewTests/__Snapshots__/PreviewTests/test_audioRoomTimelineView-iPhone-15-pseudo.2.png index db624ddbb..7b98abbc3 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_audioRoomTimelineView-iPhone-15-pseudo.2.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_audioRoomTimelineView-iPhone-15-pseudo.2.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4d28917da204938efb19eab7a37876b1c85a838c76771fa844504018501059bc -size 39218 +oid sha256:7b7bd3d48947a17e82677111bd17705b467431b8c37bebd4eeb19965c01668a8 +size 39385 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_emoteRoomTimelineView-iPad-en-GB.1.png b/PreviewTests/__Snapshots__/PreviewTests/test_emoteRoomTimelineView-iPad-en-GB.1.png index 8a6ffec54..3721989f3 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_emoteRoomTimelineView-iPad-en-GB.1.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_emoteRoomTimelineView-iPad-en-GB.1.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:67180b4ee57f47033e96ef4e83bc6e83ab805862f4a2a4b6bf84ee6dfdcd75f0 -size 157785 +oid sha256:6ff0b2914f532f31a8ac83ba7b519a6b3141d5e7a568fb75bf73e2dffa8ace5b +size 157729 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_emoteRoomTimelineView-iPad-en-GB.2.png b/PreviewTests/__Snapshots__/PreviewTests/test_emoteRoomTimelineView-iPad-en-GB.2.png index efbaf5c6e..2e9c81996 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_emoteRoomTimelineView-iPad-en-GB.2.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_emoteRoomTimelineView-iPad-en-GB.2.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:56099858a70a02f99eb1d6888178d17e38af9202667c71b76f02b2ebd9b75ce9 -size 146163 +oid sha256:9e390ccbcee9066126af5401f3c5a97251e9b0ca22f0e05040f66e071b6a637b +size 146485 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_emoteRoomTimelineView-iPad-pseudo.1.png b/PreviewTests/__Snapshots__/PreviewTests/test_emoteRoomTimelineView-iPad-pseudo.1.png index 8a6ffec54..3721989f3 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_emoteRoomTimelineView-iPad-pseudo.1.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_emoteRoomTimelineView-iPad-pseudo.1.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:67180b4ee57f47033e96ef4e83bc6e83ab805862f4a2a4b6bf84ee6dfdcd75f0 -size 157785 +oid sha256:6ff0b2914f532f31a8ac83ba7b519a6b3141d5e7a568fb75bf73e2dffa8ace5b +size 157729 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_emoteRoomTimelineView-iPad-pseudo.2.png b/PreviewTests/__Snapshots__/PreviewTests/test_emoteRoomTimelineView-iPad-pseudo.2.png index efbaf5c6e..2e9c81996 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_emoteRoomTimelineView-iPad-pseudo.2.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_emoteRoomTimelineView-iPad-pseudo.2.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:56099858a70a02f99eb1d6888178d17e38af9202667c71b76f02b2ebd9b75ce9 -size 146163 +oid sha256:9e390ccbcee9066126af5401f3c5a97251e9b0ca22f0e05040f66e071b6a637b +size 146485 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_emoteRoomTimelineView-iPhone-15-en-GB.1.png b/PreviewTests/__Snapshots__/PreviewTests/test_emoteRoomTimelineView-iPhone-15-en-GB.1.png index 88d6a5a49..f18fcf6e6 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_emoteRoomTimelineView-iPhone-15-en-GB.1.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_emoteRoomTimelineView-iPhone-15-en-GB.1.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dc05b4dbd777a3c215578ac7ffbe18500ac33796dd6cb2efc0d466b6a2cb1a1f -size 113524 +oid sha256:1bc2d0f7003812a67914a99b513b4779002cf475138df290699e1c04d07b70b2 +size 106809 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_emoteRoomTimelineView-iPhone-15-en-GB.2.png b/PreviewTests/__Snapshots__/PreviewTests/test_emoteRoomTimelineView-iPhone-15-en-GB.2.png index 3b8f9a014..3619ca5f6 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_emoteRoomTimelineView-iPhone-15-en-GB.2.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_emoteRoomTimelineView-iPhone-15-en-GB.2.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:de3db7d2bcb4e8bb0c9f268498d514799be2f861b33e5589d506f5f04b330f06 -size 112778 +oid sha256:1a6fa6b4ace02767e1e0fd4be7dfbeb1f2a82274b290e5d9edd2afd624b0e2a3 +size 115544 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_emoteRoomTimelineView-iPhone-15-pseudo.1.png b/PreviewTests/__Snapshots__/PreviewTests/test_emoteRoomTimelineView-iPhone-15-pseudo.1.png index 88d6a5a49..f18fcf6e6 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_emoteRoomTimelineView-iPhone-15-pseudo.1.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_emoteRoomTimelineView-iPhone-15-pseudo.1.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dc05b4dbd777a3c215578ac7ffbe18500ac33796dd6cb2efc0d466b6a2cb1a1f -size 113524 +oid sha256:1bc2d0f7003812a67914a99b513b4779002cf475138df290699e1c04d07b70b2 +size 106809 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_emoteRoomTimelineView-iPhone-15-pseudo.2.png b/PreviewTests/__Snapshots__/PreviewTests/test_emoteRoomTimelineView-iPhone-15-pseudo.2.png index 3b8f9a014..3619ca5f6 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_emoteRoomTimelineView-iPhone-15-pseudo.2.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_emoteRoomTimelineView-iPhone-15-pseudo.2.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:de3db7d2bcb4e8bb0c9f268498d514799be2f861b33e5589d506f5f04b330f06 -size 112778 +oid sha256:1a6fa6b4ace02767e1e0fd4be7dfbeb1f2a82274b290e5d9edd2afd624b0e2a3 +size 115544 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_encryptedRoomTimelineView-iPad-en-GB.1.png b/PreviewTests/__Snapshots__/PreviewTests/test_encryptedRoomTimelineView-iPad-en-GB.1.png index 2d2638e1b..f8c44668f 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_encryptedRoomTimelineView-iPad-en-GB.1.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_encryptedRoomTimelineView-iPad-en-GB.1.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1e48b87b3088ce9c484e22bdc7b1588c3fdd1459dfe19a67507936cd5ef3e480 -size 141594 +oid sha256:fa2e560bb9d8712fb15d42659c71b3d792107cc19c2ceabf1e75ccf8b968aa22 +size 141818 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_encryptedRoomTimelineView-iPad-en-GB.2.png b/PreviewTests/__Snapshots__/PreviewTests/test_encryptedRoomTimelineView-iPad-en-GB.2.png index e068f1b1c..42160289d 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_encryptedRoomTimelineView-iPad-en-GB.2.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_encryptedRoomTimelineView-iPad-en-GB.2.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3821eb8fe850e4e61d6d05fa5021af479f055fefba23420b75114a87699969b7 -size 148059 +oid sha256:43b49691652bd10bb2b9084fd2d99c1aa6ef6be856876ac37e982c77fa7f948b +size 147924 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_encryptedRoomTimelineView-iPad-pseudo.1.png b/PreviewTests/__Snapshots__/PreviewTests/test_encryptedRoomTimelineView-iPad-pseudo.1.png index 953b3336c..3f728c77a 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_encryptedRoomTimelineView-iPad-pseudo.1.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_encryptedRoomTimelineView-iPad-pseudo.1.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:41ec7744300fb39d245125caef055c4d4351a72e4d85a62e8673398d876b89d1 -size 170436 +oid sha256:b37afbd96b254929526afb83349b7630d12052c4de8e1cb68b4cbcede892ab5b +size 170707 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_encryptedRoomTimelineView-iPad-pseudo.2.png b/PreviewTests/__Snapshots__/PreviewTests/test_encryptedRoomTimelineView-iPad-pseudo.2.png index 8aae3746f..656602f10 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_encryptedRoomTimelineView-iPad-pseudo.2.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_encryptedRoomTimelineView-iPad-pseudo.2.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b011b384e6f91067411fa24bb0d8342df77a0b8950469bddb9a1214469ee9801 -size 174583 +oid sha256:fdd421633d635ddbc97e6b70af7c250c5f6745a6cddf836bb52068e51b8e064b +size 174448 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_encryptedRoomTimelineView-iPhone-15-en-GB.1.png b/PreviewTests/__Snapshots__/PreviewTests/test_encryptedRoomTimelineView-iPhone-15-en-GB.1.png index f34273abd..3fa91fb7a 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_encryptedRoomTimelineView-iPhone-15-en-GB.1.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_encryptedRoomTimelineView-iPhone-15-en-GB.1.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:93941194dab68bfdaaeb9ffed2ef008b7543fbdb5610752ed25f899c28ed6237 -size 95356 +oid sha256:0cb4899a4b8c8137032a3fd1bbebb90ee6cbbb046fa63e9ee93cbc006967dc0b +size 95288 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_encryptedRoomTimelineView-iPhone-15-en-GB.2.png b/PreviewTests/__Snapshots__/PreviewTests/test_encryptedRoomTimelineView-iPhone-15-en-GB.2.png index b7761a986..262700e3f 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_encryptedRoomTimelineView-iPhone-15-en-GB.2.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_encryptedRoomTimelineView-iPhone-15-en-GB.2.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:efe21fa7a76a7e6fbe3a2ae7eebb157402bee2c2a5cc1caa90ff2dd366cc5b74 -size 96666 +oid sha256:795fa3d15330da37ce618aca7cbcad354cb682ab9b8a25db9b95fdf574d674e1 +size 96872 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_encryptedRoomTimelineView-iPhone-15-pseudo.1.png b/PreviewTests/__Snapshots__/PreviewTests/test_encryptedRoomTimelineView-iPhone-15-pseudo.1.png index 6a358d59b..57129a5da 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_encryptedRoomTimelineView-iPhone-15-pseudo.1.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_encryptedRoomTimelineView-iPhone-15-pseudo.1.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bbd2238dbfbac3488dddc4bb7bbf7aa1a53322704de7379bdfb4b3ec9bf2a145 -size 119678 +oid sha256:302db60dd203b46fc0f2e86c1fe4b3a10e0c1e7a87a58c94271aff16b09ad286 +size 119698 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_encryptedRoomTimelineView-iPhone-15-pseudo.2.png b/PreviewTests/__Snapshots__/PreviewTests/test_encryptedRoomTimelineView-iPhone-15-pseudo.2.png index f66c74d74..4286ef724 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_encryptedRoomTimelineView-iPhone-15-pseudo.2.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_encryptedRoomTimelineView-iPhone-15-pseudo.2.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6a0103abfe8db831722bb0053b3c424d1f36a522c4077dc5bac0d941bceef85e -size 117412 +oid sha256:782db7ccbb921306596333d6facf9230103b3811f3b84d6039795fb0594d376b +size 117937 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_fileRoomTimelineView-iPad-en-GB.1.png b/PreviewTests/__Snapshots__/PreviewTests/test_fileRoomTimelineView-iPad-en-GB.1.png index 6044a6b3b..bbb144a64 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_fileRoomTimelineView-iPad-en-GB.1.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_fileRoomTimelineView-iPad-en-GB.1.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0909462bb2e40c319298f28febfaff2b60f5eeb2e3befd48a681b729fc9ea1e3 -size 116219 +oid sha256:98df779d41661e155680a4b97420b7e9123c5ffd6363f0a55a619d503e158f5f +size 117026 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_fileRoomTimelineView-iPad-en-GB.2.png b/PreviewTests/__Snapshots__/PreviewTests/test_fileRoomTimelineView-iPad-en-GB.2.png index 88893e263..692832a0f 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_fileRoomTimelineView-iPad-en-GB.2.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_fileRoomTimelineView-iPad-en-GB.2.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2312f81d5bfe24e5b7932ba3c9e79c0ddc5f52003b8a0a23dccdcdef94bc7c8c -size 113350 +oid sha256:d208619c617fd89ae28a9b7e6a5f1bbc4c7efa132e8f646cee7778b5700a4675 +size 113446 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_fileRoomTimelineView-iPad-pseudo.1.png b/PreviewTests/__Snapshots__/PreviewTests/test_fileRoomTimelineView-iPad-pseudo.1.png index 6044a6b3b..bbb144a64 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_fileRoomTimelineView-iPad-pseudo.1.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_fileRoomTimelineView-iPad-pseudo.1.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0909462bb2e40c319298f28febfaff2b60f5eeb2e3befd48a681b729fc9ea1e3 -size 116219 +oid sha256:98df779d41661e155680a4b97420b7e9123c5ffd6363f0a55a619d503e158f5f +size 117026 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_fileRoomTimelineView-iPad-pseudo.2.png b/PreviewTests/__Snapshots__/PreviewTests/test_fileRoomTimelineView-iPad-pseudo.2.png index 88893e263..692832a0f 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_fileRoomTimelineView-iPad-pseudo.2.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_fileRoomTimelineView-iPad-pseudo.2.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2312f81d5bfe24e5b7932ba3c9e79c0ddc5f52003b8a0a23dccdcdef94bc7c8c -size 113350 +oid sha256:d208619c617fd89ae28a9b7e6a5f1bbc4c7efa132e8f646cee7778b5700a4675 +size 113446 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_fileRoomTimelineView-iPhone-15-en-GB.1.png b/PreviewTests/__Snapshots__/PreviewTests/test_fileRoomTimelineView-iPhone-15-en-GB.1.png index 2e48cb98d..d167ccd02 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_fileRoomTimelineView-iPhone-15-en-GB.1.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_fileRoomTimelineView-iPhone-15-en-GB.1.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9bb29d5c76803f8de3eae0a17ae6e8b3de07607797ae617cc789542eb0519bf8 -size 71886 +oid sha256:93b9372d15943ba675b50b5181fc806e04c8a05f926d6cca7524584d7f472a53 +size 71727 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_fileRoomTimelineView-iPhone-15-en-GB.2.png b/PreviewTests/__Snapshots__/PreviewTests/test_fileRoomTimelineView-iPhone-15-en-GB.2.png index 7fa2b2a4b..0b108582f 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_fileRoomTimelineView-iPhone-15-en-GB.2.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_fileRoomTimelineView-iPhone-15-en-GB.2.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f89fd4a4e1151ff425ce27048ba53d9c3d2c8fa0437c16d103af54a4cdc95737 -size 66412 +oid sha256:498a9665748ee7101823647e156d947afc2d8ae90dde54fb8272cc84613b1440 +size 66535 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_fileRoomTimelineView-iPhone-15-pseudo.1.png b/PreviewTests/__Snapshots__/PreviewTests/test_fileRoomTimelineView-iPhone-15-pseudo.1.png index 2e48cb98d..d167ccd02 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_fileRoomTimelineView-iPhone-15-pseudo.1.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_fileRoomTimelineView-iPhone-15-pseudo.1.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9bb29d5c76803f8de3eae0a17ae6e8b3de07607797ae617cc789542eb0519bf8 -size 71886 +oid sha256:93b9372d15943ba675b50b5181fc806e04c8a05f926d6cca7524584d7f472a53 +size 71727 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_fileRoomTimelineView-iPhone-15-pseudo.2.png b/PreviewTests/__Snapshots__/PreviewTests/test_fileRoomTimelineView-iPhone-15-pseudo.2.png index 7fa2b2a4b..0b108582f 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_fileRoomTimelineView-iPhone-15-pseudo.2.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_fileRoomTimelineView-iPhone-15-pseudo.2.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f89fd4a4e1151ff425ce27048ba53d9c3d2c8fa0437c16d103af54a4cdc95737 -size 66412 +oid sha256:498a9665748ee7101823647e156d947afc2d8ae90dde54fb8272cc84613b1440 +size 66535 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_highlightedTimelineItemModifier-iPad-en-GB.1.png b/PreviewTests/__Snapshots__/PreviewTests/test_highlightedTimelineItemModifier-iPad-en-GB.1.png new file mode 100644 index 000000000..552ef2fc5 --- /dev/null +++ b/PreviewTests/__Snapshots__/PreviewTests/test_highlightedTimelineItemModifier-iPad-en-GB.1.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:94a132c8800c74bc3f9e9299323c06166a4a351fa9f54ba1a3fdc680086a277d +size 417744 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_highlightedTimelineItemModifier-iPad-pseudo.1.png b/PreviewTests/__Snapshots__/PreviewTests/test_highlightedTimelineItemModifier-iPad-pseudo.1.png new file mode 100644 index 000000000..552ef2fc5 --- /dev/null +++ b/PreviewTests/__Snapshots__/PreviewTests/test_highlightedTimelineItemModifier-iPad-pseudo.1.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:94a132c8800c74bc3f9e9299323c06166a4a351fa9f54ba1a3fdc680086a277d +size 417744 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_highlightedTimelineItemModifier-iPhone-15-en-GB.1.png b/PreviewTests/__Snapshots__/PreviewTests/test_highlightedTimelineItemModifier-iPhone-15-en-GB.1.png new file mode 100644 index 000000000..39f5eaf28 --- /dev/null +++ b/PreviewTests/__Snapshots__/PreviewTests/test_highlightedTimelineItemModifier-iPhone-15-en-GB.1.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8a3a0c17c3a5069ac1e80799e4830bc7f8ae593e0d36b83b2b094fc9f90abfa0 +size 342251 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_highlightedTimelineItemModifier-iPhone-15-pseudo.1.png b/PreviewTests/__Snapshots__/PreviewTests/test_highlightedTimelineItemModifier-iPhone-15-pseudo.1.png new file mode 100644 index 000000000..39f5eaf28 --- /dev/null +++ b/PreviewTests/__Snapshots__/PreviewTests/test_highlightedTimelineItemModifier-iPhone-15-pseudo.1.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8a3a0c17c3a5069ac1e80799e4830bc7f8ae593e0d36b83b2b094fc9f90abfa0 +size 342251 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_imageRoomTimelineView-iPad-en-GB.1.png b/PreviewTests/__Snapshots__/PreviewTests/test_imageRoomTimelineView-iPad-en-GB.1.png index 19f08728c..d7d56f605 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_imageRoomTimelineView-iPad-en-GB.1.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_imageRoomTimelineView-iPad-en-GB.1.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dff2f18016d86073da1da8ece3b53b8cf7606d10527a454679b774a83468d0ff -size 504901 +oid sha256:cc8ee2aa6c7afecc953412c2b0790534aef18190f9af602056c19d0bbdd47b4e +size 494102 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_imageRoomTimelineView-iPad-en-GB.2.png b/PreviewTests/__Snapshots__/PreviewTests/test_imageRoomTimelineView-iPad-en-GB.2.png index 0a6f79a79..5685d691d 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_imageRoomTimelineView-iPad-en-GB.2.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_imageRoomTimelineView-iPad-en-GB.2.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:91dba8f81be93b9b31207bed50f5f446fbd6f40462061b0fee9700c209619d72 -size 419090 +oid sha256:029055b31ae7cc27c8560b3fd5030b84ec645b52582a12c244e7678c5d02a301 +size 372971 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_imageRoomTimelineView-iPad-pseudo.1.png b/PreviewTests/__Snapshots__/PreviewTests/test_imageRoomTimelineView-iPad-pseudo.1.png index 19f08728c..d7d56f605 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_imageRoomTimelineView-iPad-pseudo.1.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_imageRoomTimelineView-iPad-pseudo.1.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dff2f18016d86073da1da8ece3b53b8cf7606d10527a454679b774a83468d0ff -size 504901 +oid sha256:cc8ee2aa6c7afecc953412c2b0790534aef18190f9af602056c19d0bbdd47b4e +size 494102 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_imageRoomTimelineView-iPad-pseudo.2.png b/PreviewTests/__Snapshots__/PreviewTests/test_imageRoomTimelineView-iPad-pseudo.2.png index 0a6f79a79..5685d691d 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_imageRoomTimelineView-iPad-pseudo.2.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_imageRoomTimelineView-iPad-pseudo.2.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:91dba8f81be93b9b31207bed50f5f446fbd6f40462061b0fee9700c209619d72 -size 419090 +oid sha256:029055b31ae7cc27c8560b3fd5030b84ec645b52582a12c244e7678c5d02a301 +size 372971 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_imageRoomTimelineView-iPhone-15-en-GB.1.png b/PreviewTests/__Snapshots__/PreviewTests/test_imageRoomTimelineView-iPhone-15-en-GB.1.png index 35d3137e8..c551b1041 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_imageRoomTimelineView-iPhone-15-en-GB.1.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_imageRoomTimelineView-iPhone-15-en-GB.1.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5de9104e9fc47f0312f2f2db2f33fd573ce8e8478a6023f32d5c6867c0be5bf8 -size 428907 +oid sha256:d511366baed1f80e105fa01cbdf7a1fa217174c60fbd0199976786abf44d4c12 +size 427226 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_imageRoomTimelineView-iPhone-15-en-GB.2.png b/PreviewTests/__Snapshots__/PreviewTests/test_imageRoomTimelineView-iPhone-15-en-GB.2.png index e5891744c..b1cab84bf 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_imageRoomTimelineView-iPhone-15-en-GB.2.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_imageRoomTimelineView-iPhone-15-en-GB.2.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0f7ed89f5351220e3e944d38d0b03dbece79e16a84acc44d16260921d8498ee1 -size 355681 +oid sha256:a5680675c106c66e06a13a6e6985eee63a42ebaa9810e2876b2526788f86f334 +size 330339 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_imageRoomTimelineView-iPhone-15-pseudo.1.png b/PreviewTests/__Snapshots__/PreviewTests/test_imageRoomTimelineView-iPhone-15-pseudo.1.png index 35d3137e8..c551b1041 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_imageRoomTimelineView-iPhone-15-pseudo.1.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_imageRoomTimelineView-iPhone-15-pseudo.1.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5de9104e9fc47f0312f2f2db2f33fd573ce8e8478a6023f32d5c6867c0be5bf8 -size 428907 +oid sha256:d511366baed1f80e105fa01cbdf7a1fa217174c60fbd0199976786abf44d4c12 +size 427226 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_imageRoomTimelineView-iPhone-15-pseudo.2.png b/PreviewTests/__Snapshots__/PreviewTests/test_imageRoomTimelineView-iPhone-15-pseudo.2.png index e5891744c..b1cab84bf 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_imageRoomTimelineView-iPhone-15-pseudo.2.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_imageRoomTimelineView-iPhone-15-pseudo.2.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0f7ed89f5351220e3e944d38d0b03dbece79e16a84acc44d16260921d8498ee1 -size 355681 +oid sha256:a5680675c106c66e06a13a6e6985eee63a42ebaa9810e2876b2526788f86f334 +size 330339 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_locationRoomTimelineView-iPad-en-GB.Bubbles.png b/PreviewTests/__Snapshots__/PreviewTests/test_locationRoomTimelineView-iPad-en-GB.Bubbles.png index fa2e75e69..2b07621a9 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_locationRoomTimelineView-iPad-en-GB.Bubbles.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_locationRoomTimelineView-iPad-en-GB.Bubbles.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1af4d7cd133df217bbc26f43fa4c970eb4ef10e35954945da39a549e9ebb668c -size 1288328 +oid sha256:6587e7c2273bf13a522112920a992edf40d208a5429a057edbdc2c156d1bd5b5 +size 1276710 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_locationRoomTimelineView-iPad-en-GB.Plain.png b/PreviewTests/__Snapshots__/PreviewTests/test_locationRoomTimelineView-iPad-en-GB.Plain.png index ae79dbd14..a81e351f5 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_locationRoomTimelineView-iPad-en-GB.Plain.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_locationRoomTimelineView-iPad-en-GB.Plain.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:06e1dd46ac72554947eb1856be67112c5e1ab81f1454c96a14a498e4fbeeb876 -size 2057030 +oid sha256:3f32ba660c108171642b406d249fab677dff07bfc31f3917cec1fbcad9e9c653 +size 1968207 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_locationRoomTimelineView-iPad-pseudo.Bubbles.png b/PreviewTests/__Snapshots__/PreviewTests/test_locationRoomTimelineView-iPad-pseudo.Bubbles.png index 11ee138b6..ae7cdd84d 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_locationRoomTimelineView-iPad-pseudo.Bubbles.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_locationRoomTimelineView-iPad-pseudo.Bubbles.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d2e5c8f552cc3d0e17f8d99c27a9f9bcb2a7119a75bb884566ca155234b843e7 -size 1291092 +oid sha256:60c5616025a89b3927be7d935c482987ea4999105ff6c9060c41095324a3ed9d +size 1279646 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_locationRoomTimelineView-iPad-pseudo.Plain.png b/PreviewTests/__Snapshots__/PreviewTests/test_locationRoomTimelineView-iPad-pseudo.Plain.png index a5c0fce6b..4e61fe592 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_locationRoomTimelineView-iPad-pseudo.Plain.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_locationRoomTimelineView-iPad-pseudo.Plain.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:90897bfc2c972ab133693f9aa3ddc0896f7b8bd7bcdcab548748568d981af59b -size 2059535 +oid sha256:9bbb7b1e365926ee5488f7b1f07fc6a79211b5648163d391147d24140c6f2455 +size 1970745 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_locationRoomTimelineView-iPhone-15-en-GB.Bubbles.png b/PreviewTests/__Snapshots__/PreviewTests/test_locationRoomTimelineView-iPhone-15-en-GB.Bubbles.png index dfd9cfc2f..e7f95a84d 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_locationRoomTimelineView-iPhone-15-en-GB.Bubbles.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_locationRoomTimelineView-iPhone-15-en-GB.Bubbles.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:96e0ebbc9aff636db5a6fac913496447bac478445e7465a370e9d7de6a508b1b -size 665961 +oid sha256:2b91b2adc30713f300fc28b791cc38cd749681266eff1e70a113d0c4dc03d9aa +size 705133 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_locationRoomTimelineView-iPhone-15-en-GB.Plain.png b/PreviewTests/__Snapshots__/PreviewTests/test_locationRoomTimelineView-iPhone-15-en-GB.Plain.png index 7d4aa106d..8019a4c4f 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_locationRoomTimelineView-iPhone-15-en-GB.Plain.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_locationRoomTimelineView-iPhone-15-en-GB.Plain.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:921b9b72b2c572148d29baacea2064dd74ae802a55cc028e8d77cca47c0d8dcb -size 825276 +oid sha256:8b9fdf961d5b1393bf22e6702b38a5e13acb208a28004dbc09619b3ca4d7930c +size 778692 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_locationRoomTimelineView-iPhone-15-pseudo.Bubbles.png b/PreviewTests/__Snapshots__/PreviewTests/test_locationRoomTimelineView-iPhone-15-pseudo.Bubbles.png index 8ad3ecd2b..ab5ef7a0f 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_locationRoomTimelineView-iPhone-15-pseudo.Bubbles.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_locationRoomTimelineView-iPhone-15-pseudo.Bubbles.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f8ae1cd119af0a98fbd2210043222c2f584a538e345ac491cba8a62f59c81355 -size 667896 +oid sha256:76a7bbccdfff97455611a976a01296a6be77893585854cfef47e05eb3210746a +size 707176 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_locationRoomTimelineView-iPhone-15-pseudo.Plain.png b/PreviewTests/__Snapshots__/PreviewTests/test_locationRoomTimelineView-iPhone-15-pseudo.Plain.png index e567bcf73..2b139fa5c 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_locationRoomTimelineView-iPhone-15-pseudo.Plain.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_locationRoomTimelineView-iPhone-15-pseudo.Plain.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8c448950747d849141a42aba56c56fbbf0b0778366e7991e0f80e1c06914de49 -size 827444 +oid sha256:4b16e23fb51b6de5dede9e986ab66586c8f065640cba180db0aa365d503c2e5b +size 780849 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_noticeRoomTimelineView-iPad-en-GB.1.png b/PreviewTests/__Snapshots__/PreviewTests/test_noticeRoomTimelineView-iPad-en-GB.1.png index 889d93fd3..4e0894a54 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_noticeRoomTimelineView-iPad-en-GB.1.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_noticeRoomTimelineView-iPad-en-GB.1.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:25036e6256843b213075a119aac6ce5164d59aed9d8e8d358dbb591341defd2c -size 154157 +oid sha256:fa2d7a304da7ab9ce23eb0b53066058c53b011cd7f018d198ff540eac0f8f33b +size 154213 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_noticeRoomTimelineView-iPad-en-GB.2.png b/PreviewTests/__Snapshots__/PreviewTests/test_noticeRoomTimelineView-iPad-en-GB.2.png index 5e8d01d4a..af9fb0912 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_noticeRoomTimelineView-iPad-en-GB.2.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_noticeRoomTimelineView-iPad-en-GB.2.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:84d82125ed3767b907deafed61d921a4b3b35c3cd958287762e5f592757712cd -size 148741 +oid sha256:8bf831eb3f299786b929120fc7db833612e661f41993bc846b527a137942e6a8 +size 157280 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_noticeRoomTimelineView-iPad-pseudo.1.png b/PreviewTests/__Snapshots__/PreviewTests/test_noticeRoomTimelineView-iPad-pseudo.1.png index 889d93fd3..4e0894a54 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_noticeRoomTimelineView-iPad-pseudo.1.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_noticeRoomTimelineView-iPad-pseudo.1.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:25036e6256843b213075a119aac6ce5164d59aed9d8e8d358dbb591341defd2c -size 154157 +oid sha256:fa2d7a304da7ab9ce23eb0b53066058c53b011cd7f018d198ff540eac0f8f33b +size 154213 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_noticeRoomTimelineView-iPad-pseudo.2.png b/PreviewTests/__Snapshots__/PreviewTests/test_noticeRoomTimelineView-iPad-pseudo.2.png index 5e8d01d4a..af9fb0912 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_noticeRoomTimelineView-iPad-pseudo.2.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_noticeRoomTimelineView-iPad-pseudo.2.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:84d82125ed3767b907deafed61d921a4b3b35c3cd958287762e5f592757712cd -size 148741 +oid sha256:8bf831eb3f299786b929120fc7db833612e661f41993bc846b527a137942e6a8 +size 157280 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_noticeRoomTimelineView-iPhone-15-en-GB.1.png b/PreviewTests/__Snapshots__/PreviewTests/test_noticeRoomTimelineView-iPhone-15-en-GB.1.png index f3fd0236d..b12871227 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_noticeRoomTimelineView-iPhone-15-en-GB.1.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_noticeRoomTimelineView-iPhone-15-en-GB.1.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1d9d6eceb9005111eccabd7e9d1b151c4e92dfc57be74ef685521b2ff6f8dafc -size 108441 +oid sha256:49ebadb734a1149164b50700288ebeb0359b65e49d0fb5b17b4fc7149f5f6fd1 +size 109841 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_noticeRoomTimelineView-iPhone-15-en-GB.2.png b/PreviewTests/__Snapshots__/PreviewTests/test_noticeRoomTimelineView-iPhone-15-en-GB.2.png index ec3b12638..44e4e2cd7 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_noticeRoomTimelineView-iPhone-15-en-GB.2.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_noticeRoomTimelineView-iPhone-15-en-GB.2.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c4425439fcf7659f0c09bf597ff82066f23a06b734df1b8d42fb52a8fa45b07c -size 107495 +oid sha256:6196d7f1151122738b1e5dab76315e4959b41e272b95c3b0b41702e2c66306aa +size 110391 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_noticeRoomTimelineView-iPhone-15-pseudo.1.png b/PreviewTests/__Snapshots__/PreviewTests/test_noticeRoomTimelineView-iPhone-15-pseudo.1.png index f3fd0236d..b12871227 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_noticeRoomTimelineView-iPhone-15-pseudo.1.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_noticeRoomTimelineView-iPhone-15-pseudo.1.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1d9d6eceb9005111eccabd7e9d1b151c4e92dfc57be74ef685521b2ff6f8dafc -size 108441 +oid sha256:49ebadb734a1149164b50700288ebeb0359b65e49d0fb5b17b4fc7149f5f6fd1 +size 109841 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_noticeRoomTimelineView-iPhone-15-pseudo.2.png b/PreviewTests/__Snapshots__/PreviewTests/test_noticeRoomTimelineView-iPhone-15-pseudo.2.png index ec3b12638..44e4e2cd7 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_noticeRoomTimelineView-iPhone-15-pseudo.2.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_noticeRoomTimelineView-iPhone-15-pseudo.2.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c4425439fcf7659f0c09bf597ff82066f23a06b734df1b8d42fb52a8fa45b07c -size 107495 +oid sha256:6196d7f1151122738b1e5dab76315e4959b41e272b95c3b0b41702e2c66306aa +size 110391 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-en-GB.Creator-disclosed-Bubble.png b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-en-GB.Creator-disclosed-Bubble.png index 86d61b042..bf302390e 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-en-GB.Creator-disclosed-Bubble.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-en-GB.Creator-disclosed-Bubble.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7c62cade197de0d567ba48058c7e0533cfb484c8a2a38190d5bd81cc5e665232 -size 137179 +oid sha256:3c73649702827933425cc3c8c6558e3756860057ba623865991f343bef064220 +size 137274 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-en-GB.Creator-disclosed-Plain.png b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-en-GB.Creator-disclosed-Plain.png index 9d7b68e8f..a6ef3101e 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-en-GB.Creator-disclosed-Plain.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-en-GB.Creator-disclosed-Plain.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:df94381b2455b89be47c19d0752fc737411950c5c253982f2e570a0f619bba7a -size 131772 +oid sha256:f0172431a6f305aeb9ddb190c2b994552221e5e193da6b0c2c93f3fbef90bc21 +size 131993 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-en-GB.Creator-no-votes-Bubble.png b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-en-GB.Creator-no-votes-Bubble.png index 85f2bfaa3..e675fe7de 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-en-GB.Creator-no-votes-Bubble.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-en-GB.Creator-no-votes-Bubble.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0beff403c2f874428268850cf483714ed97db0c0733c7274e7a625209b562ed6 -size 135827 +oid sha256:54dab3885831a52b9cba04245d3488c738ce780d393575a06c929c08c49e59d5 +size 135640 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-en-GB.Creator-no-votes-Plain.png b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-en-GB.Creator-no-votes-Plain.png index 18654b91b..a32d61385 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-en-GB.Creator-no-votes-Plain.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-en-GB.Creator-no-votes-Plain.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d8b3c4c48f738eae0c1373e8670ad717c338851a5304a143ac0829b8a777e73d -size 130207 +oid sha256:f06c8969850250df17d7fb2fa306caca80fc2e4ab340a038b428f6da60ee46c3 +size 130259 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-en-GB.Disclosed-Bubble.png b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-en-GB.Disclosed-Bubble.png index 3b0baa649..e7fcc825f 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-en-GB.Disclosed-Bubble.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-en-GB.Disclosed-Bubble.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:492f0a474747564e2b329ba0376ba87d42eadf3b9b39fba42609200c4a39d519 -size 133090 +oid sha256:5e127dd47c2178f2a634f840f28b3b4f2a45ed39c9f40e174138b51f6129da96 +size 133664 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-en-GB.Disclosed-Plain.png b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-en-GB.Disclosed-Plain.png index be5b1fff4..9129c1f25 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-en-GB.Disclosed-Plain.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-en-GB.Disclosed-Plain.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:577dcf13ed9b52b9b37dad0f5aefac7cb41184d00ffd25d706d8f59bee9457f3 -size 125601 +oid sha256:dbda9c2e4e4376e8319ce4097d1924f9f8b85340c813877697c6c9cb66aff902 +size 125732 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-en-GB.Ended-Disclosed-Bubble.png b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-en-GB.Ended-Disclosed-Bubble.png index 48457742b..6fa2b9119 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-en-GB.Ended-Disclosed-Bubble.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-en-GB.Ended-Disclosed-Bubble.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4ccb2d1d1d6cf9cbae4131dc57fa16c048f5f13dd30003570ca6ef1aa3c5da98 -size 131206 +oid sha256:505d815656885aeae9a36b2c647afae961afeb1e3c385016687e9f9d547c0a4a +size 131127 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-en-GB.Ended-Disclosed-Plain.png b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-en-GB.Ended-Disclosed-Plain.png index a0303927e..ef3b279c1 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-en-GB.Ended-Disclosed-Plain.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-en-GB.Ended-Disclosed-Plain.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0b448fa74d12787557b088c4b45584639edae0f71d9891592f2970094cfa5ea3 -size 127107 +oid sha256:1f795993376a6c3b9f291e03fdaef3b2784d807f0147ef1d16bd693a05e44053 +size 127236 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-en-GB.Ended-Undisclosed-Bubble.png b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-en-GB.Ended-Undisclosed-Bubble.png index 48457742b..6fa2b9119 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-en-GB.Ended-Undisclosed-Bubble.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-en-GB.Ended-Undisclosed-Bubble.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4ccb2d1d1d6cf9cbae4131dc57fa16c048f5f13dd30003570ca6ef1aa3c5da98 -size 131206 +oid sha256:505d815656885aeae9a36b2c647afae961afeb1e3c385016687e9f9d547c0a4a +size 131127 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-en-GB.Ended-Undisclosed-Plain.png b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-en-GB.Ended-Undisclosed-Plain.png index a0303927e..ef3b279c1 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-en-GB.Ended-Undisclosed-Plain.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-en-GB.Ended-Undisclosed-Plain.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0b448fa74d12787557b088c4b45584639edae0f71d9891592f2970094cfa5ea3 -size 127107 +oid sha256:1f795993376a6c3b9f291e03fdaef3b2784d807f0147ef1d16bd693a05e44053 +size 127236 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-en-GB.Undisclosed-Bubble.png b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-en-GB.Undisclosed-Bubble.png index 0908f8de6..ac885b0fb 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-en-GB.Undisclosed-Bubble.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-en-GB.Undisclosed-Bubble.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:408c5cefbd8061b339791a6064ba02497d2c4a5972c46481c8e4c7e34d0fa51c -size 129733 +oid sha256:118734066102f2fd529784900191cc555e9564b640c0925927b2ebef43767767 +size 129894 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-en-GB.Undisclosed-Plain.png b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-en-GB.Undisclosed-Plain.png index abec84d39..ee5052ca0 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-en-GB.Undisclosed-Plain.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-en-GB.Undisclosed-Plain.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b321e3fb1652aa0324d5a6ff27cc6efcba3d2c22f709cd3f994807eefbe70955 -size 122058 +oid sha256:2ec33801f098d33f4ad38d32468d1e0e86410c274895788f32d7436ccac2e25c +size 122227 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-pseudo.Creator-disclosed-Bubble.png b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-pseudo.Creator-disclosed-Bubble.png index 3623edd00..18c1ffcd0 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-pseudo.Creator-disclosed-Bubble.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-pseudo.Creator-disclosed-Bubble.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c4568d67b0a56511e756e7de3e2b7eb81267449dfdc9e5cac991cbe8e5a12f13 -size 171150 +oid sha256:6f94b63706d4a53cdf1379da740ab1f7670492c7c725871b317b63468fef26e2 +size 170915 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-pseudo.Creator-disclosed-Plain.png b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-pseudo.Creator-disclosed-Plain.png index 8b1fc6c25..10b2e5e18 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-pseudo.Creator-disclosed-Plain.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-pseudo.Creator-disclosed-Plain.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e8af9aa6950352829494d9722d25f3b16a1b2fa048e6a8a286377588bf2cc56a -size 164467 +oid sha256:18362981e27f647fcd54609a9408aeadf0dd1913cb63afed0c99261e59dd0fce +size 164687 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-pseudo.Creator-no-votes-Bubble.png b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-pseudo.Creator-no-votes-Bubble.png index 75d1d315a..37d021f9b 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-pseudo.Creator-no-votes-Bubble.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-pseudo.Creator-no-votes-Bubble.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b88696e4baba38713e85469d5cf15587f68f42912bf880cd35f5393afe071e24 -size 170937 +oid sha256:d118895f87b7100ac1909aa3aec625ced9ba48931957db8b2c9c447d346422a4 +size 170702 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-pseudo.Creator-no-votes-Plain.png b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-pseudo.Creator-no-votes-Plain.png index 57ce920f0..aa7cfb48c 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-pseudo.Creator-no-votes-Plain.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-pseudo.Creator-no-votes-Plain.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2720d4cb654f66d145f6ed4fbc8acb7942130301b727344b26d9fce5d7d20b64 -size 164015 +oid sha256:b7802b46409bd4af868a9ed66ba490c3281d29312f6f27639e095d185ecc5a2c +size 164110 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-pseudo.Disclosed-Bubble.png b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-pseudo.Disclosed-Bubble.png index eb562b91a..ebf04a8d6 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-pseudo.Disclosed-Bubble.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-pseudo.Disclosed-Bubble.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3ca79ec8ca325f4fc3093394dc73af6226e6967d61d8a836b10c126c90bbbd49 -size 163899 +oid sha256:9bba408d9435a687dc5603aad534bdb746a9b24ec4148a153364f76a134b1855 +size 164499 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-pseudo.Disclosed-Plain.png b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-pseudo.Disclosed-Plain.png index f71610ecd..85344aaa6 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-pseudo.Disclosed-Plain.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-pseudo.Disclosed-Plain.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:15760588069a7b48cdeedb462c4f2164ad3428709ccb0d154e7e62512bbd6ff7 -size 155579 +oid sha256:f723f31334810fed4c92bb3665fc43475e8a6cd0104115f98de513d68ab9d994 +size 156468 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-pseudo.Ended-Disclosed-Bubble.png b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-pseudo.Ended-Disclosed-Bubble.png index 46399ffc0..1e331bd4d 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-pseudo.Ended-Disclosed-Bubble.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-pseudo.Ended-Disclosed-Bubble.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a204ee2479cbe21a878d152624f5e7b44db76bc5ecd91e857c767ab3a80d132b -size 160526 +oid sha256:ae3ab7b97e7f260c570ef899ae0dab8e8f3c4bf379f6fedb661cda2199e39dbd +size 160432 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-pseudo.Ended-Disclosed-Plain.png b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-pseudo.Ended-Disclosed-Plain.png index 656b0d5ca..3de777ab8 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-pseudo.Ended-Disclosed-Plain.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-pseudo.Ended-Disclosed-Plain.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f15fa413ebc1710d0eaa418a8ffd26de92da2618e33420f764d127fca922fbd9 -size 156056 +oid sha256:62e3d2d3b31bfb31ee6720e6562a44ceb2ff9a18f32d675e862b31215708a5f3 +size 156913 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-pseudo.Ended-Undisclosed-Bubble.png b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-pseudo.Ended-Undisclosed-Bubble.png index 46399ffc0..1e331bd4d 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-pseudo.Ended-Undisclosed-Bubble.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-pseudo.Ended-Undisclosed-Bubble.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a204ee2479cbe21a878d152624f5e7b44db76bc5ecd91e857c767ab3a80d132b -size 160526 +oid sha256:ae3ab7b97e7f260c570ef899ae0dab8e8f3c4bf379f6fedb661cda2199e39dbd +size 160432 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-pseudo.Ended-Undisclosed-Plain.png b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-pseudo.Ended-Undisclosed-Plain.png index 656b0d5ca..3de777ab8 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-pseudo.Ended-Undisclosed-Plain.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-pseudo.Ended-Undisclosed-Plain.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f15fa413ebc1710d0eaa418a8ffd26de92da2618e33420f764d127fca922fbd9 -size 156056 +oid sha256:62e3d2d3b31bfb31ee6720e6562a44ceb2ff9a18f32d675e862b31215708a5f3 +size 156913 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-pseudo.Undisclosed-Bubble.png b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-pseudo.Undisclosed-Bubble.png index e6d41cf1f..f3a950e91 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-pseudo.Undisclosed-Bubble.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-pseudo.Undisclosed-Bubble.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4fe9c1d7b988f09b3e35274385d0dafbdfe1aa73e8ea37c17492755dbbea1866 -size 141089 +oid sha256:66eeb4d00c2c611a4863a558e0ccb9ffe569571c7c636310553f7bf123093883 +size 141233 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-pseudo.Undisclosed-Plain.png b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-pseudo.Undisclosed-Plain.png index e7b7ca757..9a3982750 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-pseudo.Undisclosed-Plain.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPad-pseudo.Undisclosed-Plain.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2f2601fda8f9125960582c9984338abaac0907e65f6e241296df8dcb93848385 -size 132076 +oid sha256:baf8844e1f7aa36494e56c713cfbcff45b34590768eed7f4d2e8cfa97e916cc8 +size 132355 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-en-GB.Creator-disclosed-Bubble.png b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-en-GB.Creator-disclosed-Bubble.png index b044f2eb2..b774a99f9 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-en-GB.Creator-disclosed-Bubble.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-en-GB.Creator-disclosed-Bubble.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:de2d1dd6af9c4049498ff2ee508d981efe61c5bf7c17c1da318c842fe9166e22 -size 86764 +oid sha256:db1a0bc5a94eb8faa2423211c1a3d1630f2642e6c97e65682f490d678edc4584 +size 89178 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-en-GB.Creator-disclosed-Plain.png b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-en-GB.Creator-disclosed-Plain.png index 6ea754e35..000b468c1 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-en-GB.Creator-disclosed-Plain.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-en-GB.Creator-disclosed-Plain.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:edcc1e06c82724d19343f5ef54664a92d0a86fa7686c66ef0fe0108e54bd1da2 -size 82538 +oid sha256:395ac514acb272d4c07af321957b8049a33d52697722327f9a94bc2477a4c94b +size 82747 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-en-GB.Creator-no-votes-Bubble.png b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-en-GB.Creator-no-votes-Bubble.png index b28529b08..5c29535d7 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-en-GB.Creator-no-votes-Bubble.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-en-GB.Creator-no-votes-Bubble.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4c9367b6331dc476b3767c3a67bba2522b0eb8bb634abf4c832206d83739b123 -size 86465 +oid sha256:fb5eba644f9f3d61fe998156e1a8b16094fcd51d31566c4a1ef7345967fde807 +size 88734 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-en-GB.Creator-no-votes-Plain.png b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-en-GB.Creator-no-votes-Plain.png index 6b089699d..8d9fc8266 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-en-GB.Creator-no-votes-Plain.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-en-GB.Creator-no-votes-Plain.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6ef7b4334ecb461302a1bbd2f6985aa6f34c37b13d64e963c38230196fa2208f -size 82026 +oid sha256:9761e068896c86e7eab8afd471625285057fccf429115d908bdba8643bccb810 +size 82213 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-en-GB.Disclosed-Bubble.png b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-en-GB.Disclosed-Bubble.png index ca9d46dff..d1fc7d22f 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-en-GB.Disclosed-Bubble.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-en-GB.Disclosed-Bubble.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8ffeb32f0cc71cc03e142273119f8df6e75af2e301e5e557502c0b9301ddad46 -size 82400 +oid sha256:26a0d4b2c1f64a34a5d8bc26b4c3d350d5a2653ed857af0c900a92e3e4307985 +size 85769 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-en-GB.Disclosed-Plain.png b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-en-GB.Disclosed-Plain.png index 15346bda3..48db68ca6 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-en-GB.Disclosed-Plain.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-en-GB.Disclosed-Plain.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:94b88ed3825b4436659a22a4aad47b1d3fccff8de5fc7bb53600a07c4aba9154 -size 77454 +oid sha256:8b5947c7e5c3b650fbdb1fa99458570e529cb3b2a5a45072ad481a2f7b67c069 +size 77716 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-en-GB.Ended-Disclosed-Bubble.png b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-en-GB.Ended-Disclosed-Bubble.png index 18664d01d..4644956ea 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-en-GB.Ended-Disclosed-Bubble.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-en-GB.Ended-Disclosed-Bubble.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:80392bea5d7d5b22fa23543e3b6fb74b4cb9a249d53eba883144da8e32f60ecb -size 80984 +oid sha256:3a57aa096a9dd68532a3604df40a99662a877fa41a530042d7f36193b2b94f4c +size 83606 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-en-GB.Ended-Disclosed-Plain.png b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-en-GB.Ended-Disclosed-Plain.png index 367b31fd9..3df2e9087 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-en-GB.Ended-Disclosed-Plain.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-en-GB.Ended-Disclosed-Plain.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:736a3f1f2e096931525f68b61cafe7dfe6a5bdbc6156d3792d193ad7c2b89bac -size 78430 +oid sha256:d86795666d9121381bc98674d3254d5aea3e80310a05457ceff3b0328d135bad +size 78681 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-en-GB.Ended-Undisclosed-Bubble.png b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-en-GB.Ended-Undisclosed-Bubble.png index 18664d01d..4644956ea 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-en-GB.Ended-Undisclosed-Bubble.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-en-GB.Ended-Undisclosed-Bubble.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:80392bea5d7d5b22fa23543e3b6fb74b4cb9a249d53eba883144da8e32f60ecb -size 80984 +oid sha256:3a57aa096a9dd68532a3604df40a99662a877fa41a530042d7f36193b2b94f4c +size 83606 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-en-GB.Ended-Undisclosed-Plain.png b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-en-GB.Ended-Undisclosed-Plain.png index 367b31fd9..3df2e9087 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-en-GB.Ended-Undisclosed-Plain.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-en-GB.Ended-Undisclosed-Plain.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:736a3f1f2e096931525f68b61cafe7dfe6a5bdbc6156d3792d193ad7c2b89bac -size 78430 +oid sha256:d86795666d9121381bc98674d3254d5aea3e80310a05457ceff3b0328d135bad +size 78681 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-en-GB.Undisclosed-Bubble.png b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-en-GB.Undisclosed-Bubble.png index 40a3a44a6..9b2f013ae 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-en-GB.Undisclosed-Bubble.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-en-GB.Undisclosed-Bubble.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:50c3f3080bba5a92f2e58cd47940f7b8c267e9fecd24ae0ec70e161f3c0d142f -size 81128 +oid sha256:08e23c4ecc19595ed973d8d38fe62f370bbc4fbe8d3a5e1ae9cab8aecd324910 +size 85596 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-en-GB.Undisclosed-Plain.png b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-en-GB.Undisclosed-Plain.png index 3dcbfc677..ac345976f 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-en-GB.Undisclosed-Plain.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-en-GB.Undisclosed-Plain.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b390d8349d364b580e2a228baf968160de01e6c5873a339bb3d55109523e45ef -size 76218 +oid sha256:6ac59c017038810b6ec1dfce611f87ece67ec26d4b4d1254c1a4a862d44df085 +size 76392 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-pseudo.Creator-disclosed-Bubble.png b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-pseudo.Creator-disclosed-Bubble.png index 373a1ee80..50dcf6e57 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-pseudo.Creator-disclosed-Bubble.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-pseudo.Creator-disclosed-Bubble.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a8ce20afa82dfca98d23af3c4339902bb60cbbf169f45f2bb8b68722082aef73 -size 117099 +oid sha256:91b205ab4f95e3a9ba4ed80ec344952002ff39a6ccf3b29cd0c7bb37d884522f +size 111917 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-pseudo.Creator-disclosed-Plain.png b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-pseudo.Creator-disclosed-Plain.png index e314a9271..089cbad91 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-pseudo.Creator-disclosed-Plain.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-pseudo.Creator-disclosed-Plain.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:38085ad652d90d885eca85107c64970af2aae4d0e69847477197f2b320d0bc48 -size 111227 +oid sha256:1569d066923f8de777cdaf7e319a26bf18d52114fe48994c9cdf5579a785fb8d +size 111796 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-pseudo.Creator-no-votes-Bubble.png b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-pseudo.Creator-no-votes-Bubble.png index f3adbb03e..52add5a7d 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-pseudo.Creator-no-votes-Bubble.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-pseudo.Creator-no-votes-Bubble.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f75cd47c9d6bc280ec0fdc97ce0b03296d3efc2a2037cda018046865951815d7 -size 117868 +oid sha256:c559aaf441aa5759ec599436a361b6a26d2b3be6a8074ce3ccab6c2810fb1061 +size 112411 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-pseudo.Creator-no-votes-Plain.png b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-pseudo.Creator-no-votes-Plain.png index 774fef363..344791b53 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-pseudo.Creator-no-votes-Plain.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-pseudo.Creator-no-votes-Plain.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3dd1381a5d0121a11d6bd2e9964737ea8cc8fb0e4379e370d372eef22912384b -size 111830 +oid sha256:c6e08faecbbbc794a4a379d60b25874e993aba1d33a47c0c3ea077e8a661b31c +size 112459 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-pseudo.Disclosed-Bubble.png b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-pseudo.Disclosed-Bubble.png index 9415ccd6a..683c04db7 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-pseudo.Disclosed-Bubble.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-pseudo.Disclosed-Bubble.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5e813ff8125d03b58d86ee2fe638865d3044f65ddff4d4b45c44b698a440b68b -size 110556 +oid sha256:580c9cb7653eb3b5bf4af8a391a656aa05311fde96113655a26326dd6e2c9ecc +size 107193 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-pseudo.Disclosed-Plain.png b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-pseudo.Disclosed-Plain.png index 935c9ce87..659318ea0 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-pseudo.Disclosed-Plain.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-pseudo.Disclosed-Plain.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c3a88f9cb493462da10375cee7bbfb976648129b5f4eeaf7afd1fe7eb8a00f74 -size 104199 +oid sha256:34202e6104adb8eebd87cd41154d65318a78383cd3e2756e0128bfed0ddf5b13 +size 104282 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-pseudo.Ended-Disclosed-Bubble.png b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-pseudo.Ended-Disclosed-Bubble.png index d6b246844..b0d86e680 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-pseudo.Ended-Disclosed-Bubble.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-pseudo.Ended-Disclosed-Bubble.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:17f0c43730decca6eb0d5d99aebbc0302a6108c47801d0199333c2e97f174333 -size 110789 +oid sha256:bd124ce26010cee20268eb3e3838019a606b36b25c0535e1dd8109e4708fd4d8 +size 112265 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-pseudo.Ended-Disclosed-Plain.png b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-pseudo.Ended-Disclosed-Plain.png index 5752c7cd0..b696653bc 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-pseudo.Ended-Disclosed-Plain.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-pseudo.Ended-Disclosed-Plain.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:14200e454733865199cb6a26b054b406fbaa102585bd9a30b1bc010c7545cfd4 -size 106512 +oid sha256:1ab14e3c63b48105bc8c964242553bcf9f0e9ba8a7aa9a0dec98e923b26d1bbc +size 106516 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-pseudo.Ended-Undisclosed-Bubble.png b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-pseudo.Ended-Undisclosed-Bubble.png index d6b246844..b0d86e680 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-pseudo.Ended-Undisclosed-Bubble.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-pseudo.Ended-Undisclosed-Bubble.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:17f0c43730decca6eb0d5d99aebbc0302a6108c47801d0199333c2e97f174333 -size 110789 +oid sha256:bd124ce26010cee20268eb3e3838019a606b36b25c0535e1dd8109e4708fd4d8 +size 112265 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-pseudo.Ended-Undisclosed-Plain.png b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-pseudo.Ended-Undisclosed-Plain.png index 5752c7cd0..b696653bc 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-pseudo.Ended-Undisclosed-Plain.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-pseudo.Ended-Undisclosed-Plain.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:14200e454733865199cb6a26b054b406fbaa102585bd9a30b1bc010c7545cfd4 -size 106512 +oid sha256:1ab14e3c63b48105bc8c964242553bcf9f0e9ba8a7aa9a0dec98e923b26d1bbc +size 106516 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-pseudo.Undisclosed-Bubble.png b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-pseudo.Undisclosed-Bubble.png index 3fcb6974e..bbc4ffeec 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-pseudo.Undisclosed-Bubble.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-pseudo.Undisclosed-Bubble.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:10bcb78fadaa5921ce3c37740316810a8927948b319e22bb542b305a8139a3d4 -size 94888 +oid sha256:8fa8482cf8b344c0d24a6839756d160f816c6f3100dbae5764c91028772490dd +size 96878 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-pseudo.Undisclosed-Plain.png b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-pseudo.Undisclosed-Plain.png index 88a262f30..0176ea8cc 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-pseudo.Undisclosed-Plain.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_pollRoomTimelineView-iPhone-15-pseudo.Undisclosed-Plain.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:40951abbf68f2f2ef8622033a249935b0351b2b718a8ee0764a781dbd7ca9776 -size 89494 +oid sha256:2287fc1b5034210a7bcfd7398dc104448d4b33a0593985ffd7402cc2ef8c3a14 +size 89686 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_readMarkerRoomTimelineView-iPad-en-GB.1.png b/PreviewTests/__Snapshots__/PreviewTests/test_readMarkerRoomTimelineView-iPad-en-GB.1.png index 9ad5e46b8..bc1eb524b 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_readMarkerRoomTimelineView-iPad-en-GB.1.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_readMarkerRoomTimelineView-iPad-en-GB.1.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:38e4c9400e359ca83916d66a144f483292999e037cc9a2fcc10e3cf03ff6b4c4 -size 103326 +oid sha256:bb77a4f0a9706c2fa7fcac9256e247e8142273ada25bb8236cf27e3ba2b0d1a0 +size 103347 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_readMarkerRoomTimelineView-iPad-pseudo.1.png b/PreviewTests/__Snapshots__/PreviewTests/test_readMarkerRoomTimelineView-iPad-pseudo.1.png index ca641260a..df3a30966 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_readMarkerRoomTimelineView-iPad-pseudo.1.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_readMarkerRoomTimelineView-iPad-pseudo.1.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c29db4834e35355cd94a9a65bd7dc77169137d0220cc832175515db7b3cf67e7 -size 104828 +oid sha256:1e9c3c6ab79e2eb2b36f24dcdda957eabce65587d21b71f3f61d986274ff7792 +size 104848 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_readMarkerRoomTimelineView-iPhone-15-en-GB.1.png b/PreviewTests/__Snapshots__/PreviewTests/test_readMarkerRoomTimelineView-iPhone-15-en-GB.1.png index 1a9801a7c..afa4b2937 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_readMarkerRoomTimelineView-iPhone-15-en-GB.1.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_readMarkerRoomTimelineView-iPhone-15-en-GB.1.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c001f4ef2a9504d7ef76fcbb2cf7bc55544d86d5de8139d3945971a3d0ae98f2 -size 61702 +oid sha256:f5848cd2ec93f9187d25654536c2fcc892c066699e90c5a1f750e1d7c38e8288 +size 61706 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_readMarkerRoomTimelineView-iPhone-15-pseudo.1.png b/PreviewTests/__Snapshots__/PreviewTests/test_readMarkerRoomTimelineView-iPhone-15-pseudo.1.png index 1a06f0053..78d6bb0ce 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_readMarkerRoomTimelineView-iPhone-15-pseudo.1.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_readMarkerRoomTimelineView-iPhone-15-pseudo.1.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:894d83b8db25d5c97633fb1bb9c6ae183e5d6dfa7c97448b468eaf3783b9327a -size 63317 +oid sha256:1cbafcc3688435bc17be6121399c962841e54fef8bdd3958b90e6515d82836fd +size 63341 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_redactedRoomTimelineView-iPad-en-GB.1.png b/PreviewTests/__Snapshots__/PreviewTests/test_redactedRoomTimelineView-iPad-en-GB.1.png index 028293e15..fec929e5b 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_redactedRoomTimelineView-iPad-en-GB.1.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_redactedRoomTimelineView-iPad-en-GB.1.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f84e49036cc65666becdc16e2ea06122467cbff6cb02ba86f0dabca561d582c7 -size 85898 +oid sha256:7a2dbd62df175bfe059d5c090d96af6a41271451386933cf4357ab53c585eb3e +size 86061 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_redactedRoomTimelineView-iPad-pseudo.1.png b/PreviewTests/__Snapshots__/PreviewTests/test_redactedRoomTimelineView-iPad-pseudo.1.png index 2a4db42e0..0d717426e 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_redactedRoomTimelineView-iPad-pseudo.1.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_redactedRoomTimelineView-iPad-pseudo.1.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0ecbfa76fa29064d8c3b6f020c03123d13626a6f9ab26fd2a82e7c3b767f7b35 -size 95532 +oid sha256:94355c5e9787d2a131ecf49df2922271ff04672d3cb4e136c4eae2437f01a447 +size 95683 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_redactedRoomTimelineView-iPhone-15-en-GB.1.png b/PreviewTests/__Snapshots__/PreviewTests/test_redactedRoomTimelineView-iPhone-15-en-GB.1.png index 62fa681ae..7c2e6724c 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_redactedRoomTimelineView-iPhone-15-en-GB.1.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_redactedRoomTimelineView-iPhone-15-en-GB.1.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:90c390789693d762732006b42d9ce2ac3f93fe0bc26c799fa7419930c713196e -size 43993 +oid sha256:c7a991fffd33e0b5b3581e8cac87469f5668c9ab188cbdf21f560a5318cf27f2 +size 44098 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_redactedRoomTimelineView-iPhone-15-pseudo.1.png b/PreviewTests/__Snapshots__/PreviewTests/test_redactedRoomTimelineView-iPhone-15-pseudo.1.png index c420f7b86..082043fd1 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_redactedRoomTimelineView-iPhone-15-pseudo.1.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_redactedRoomTimelineView-iPhone-15-pseudo.1.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f4efaa78b5203646d7edf9ce621986ad8808c0aa1d3bfd450385638242a3c751 -size 52887 +oid sha256:23f02280155b96cb5b00101df0d6ff075de4c6eca362a837c3ba2a6f867a7eaf +size 53009 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_roomScreen-iPad-en-GB.1.png b/PreviewTests/__Snapshots__/PreviewTests/test_roomScreen-iPad-en-GB.1.png index a485421cb..a24753542 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_roomScreen-iPad-en-GB.1.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_roomScreen-iPad-en-GB.1.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bd64d442d2fbafae0504ee7dfb50913ffb7ece83fa49ed12046db8abd3a0193b -size 414938 +oid sha256:681f42cd5c242b4564dc9fb97f47217eb05e02cb16b33ae0ea6675e4ba6dee80 +size 416815 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_roomScreen-iPad-pseudo.1.png b/PreviewTests/__Snapshots__/PreviewTests/test_roomScreen-iPad-pseudo.1.png index a9a9a573c..ba44ae986 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_roomScreen-iPad-pseudo.1.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_roomScreen-iPad-pseudo.1.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b2e21d30cf418675858966e4b40211c8b9682ca7e99bd61f34a24e760435d347 -size 424851 +oid sha256:79cbf258b45844d0b29515aab55a3ac979f3aa6bdb7a21fef508c2025a428258 +size 427856 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_roomScreen-iPhone-15-en-GB.1.png b/PreviewTests/__Snapshots__/PreviewTests/test_roomScreen-iPhone-15-en-GB.1.png index b91f7c719..b28a1fe9a 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_roomScreen-iPhone-15-en-GB.1.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_roomScreen-iPhone-15-en-GB.1.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1a1231b36d73b3b3e60b89ad62e8e6226a4de1b9ebac60b2587b0c8f2fd9a977 -size 270729 +oid sha256:9a3471828f2b36c052dd0583628cb4cfaa0b3cc5cfc767bc0907f20b33d2b55b +size 270815 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_roomScreen-iPhone-15-pseudo.1.png b/PreviewTests/__Snapshots__/PreviewTests/test_roomScreen-iPhone-15-pseudo.1.png index 1daffa513..caf2559ea 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_roomScreen-iPhone-15-pseudo.1.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_roomScreen-iPhone-15-pseudo.1.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b54258fca13f34ec79c8132f81eb39ad2784fffbbefc60f4bba8cde4139f18f6 -size 277944 +oid sha256:32dca0d76ee5447d16211aa51b7d963502cfe3a5eb49daa216d06e9022782e0e +size 278037 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_stickerRoomTimelineView-iPad-en-GB.1.png b/PreviewTests/__Snapshots__/PreviewTests/test_stickerRoomTimelineView-iPad-en-GB.1.png index 4c795218f..858c4aebe 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_stickerRoomTimelineView-iPad-en-GB.1.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_stickerRoomTimelineView-iPad-en-GB.1.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:317e49b8e5279a6b8408df02f449bc4100fabfdc0eb3048e4e2171e69138f759 -size 596304 +oid sha256:3e4d143a368f4c2773bbd58d00008ea23698ceb7053d0ed16196a87faab04c3f +size 585437 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_stickerRoomTimelineView-iPad-en-GB.2.png b/PreviewTests/__Snapshots__/PreviewTests/test_stickerRoomTimelineView-iPad-en-GB.2.png index 3adeda98c..f97ef0dae 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_stickerRoomTimelineView-iPad-en-GB.2.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_stickerRoomTimelineView-iPad-en-GB.2.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fc16714af9d70f362ea98fa0d5c6da51127ac17935b7bf78cd2377f7c67cfe19 -size 500902 +oid sha256:478239db52469a7aac43c97cb275973700ff51751ab74255f7283299d7455485 +size 448850 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_stickerRoomTimelineView-iPad-pseudo.1.png b/PreviewTests/__Snapshots__/PreviewTests/test_stickerRoomTimelineView-iPad-pseudo.1.png index 4c795218f..858c4aebe 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_stickerRoomTimelineView-iPad-pseudo.1.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_stickerRoomTimelineView-iPad-pseudo.1.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:317e49b8e5279a6b8408df02f449bc4100fabfdc0eb3048e4e2171e69138f759 -size 596304 +oid sha256:3e4d143a368f4c2773bbd58d00008ea23698ceb7053d0ed16196a87faab04c3f +size 585437 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_stickerRoomTimelineView-iPad-pseudo.2.png b/PreviewTests/__Snapshots__/PreviewTests/test_stickerRoomTimelineView-iPad-pseudo.2.png index 3adeda98c..f97ef0dae 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_stickerRoomTimelineView-iPad-pseudo.2.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_stickerRoomTimelineView-iPad-pseudo.2.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fc16714af9d70f362ea98fa0d5c6da51127ac17935b7bf78cd2377f7c67cfe19 -size 500902 +oid sha256:478239db52469a7aac43c97cb275973700ff51751ab74255f7283299d7455485 +size 448850 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_stickerRoomTimelineView-iPhone-15-en-GB.1.png b/PreviewTests/__Snapshots__/PreviewTests/test_stickerRoomTimelineView-iPhone-15-en-GB.1.png index 014090860..64c2a34fa 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_stickerRoomTimelineView-iPhone-15-en-GB.1.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_stickerRoomTimelineView-iPhone-15-en-GB.1.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:628b1f0c027bdb26fe3c7adbc87c8891c2a32e996e5291d9497fecef29f4b85f -size 516035 +oid sha256:df827c47d5509d11e5a32a170946051ea59b8c6a1fad52321063fe8b8581efe8 +size 513677 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_stickerRoomTimelineView-iPhone-15-en-GB.2.png b/PreviewTests/__Snapshots__/PreviewTests/test_stickerRoomTimelineView-iPhone-15-en-GB.2.png index bab390209..8f7f41371 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_stickerRoomTimelineView-iPhone-15-en-GB.2.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_stickerRoomTimelineView-iPhone-15-en-GB.2.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f78754f36a6c96d694879f12e38711701a2466109d5e33b505a52ade18d16945 -size 431151 +oid sha256:faa3ed2627f49b9049153cea538feade7c4a7ff73f7a1a20c4fb7f98482769b1 +size 400541 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_stickerRoomTimelineView-iPhone-15-pseudo.1.png b/PreviewTests/__Snapshots__/PreviewTests/test_stickerRoomTimelineView-iPhone-15-pseudo.1.png index 014090860..64c2a34fa 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_stickerRoomTimelineView-iPhone-15-pseudo.1.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_stickerRoomTimelineView-iPhone-15-pseudo.1.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:628b1f0c027bdb26fe3c7adbc87c8891c2a32e996e5291d9497fecef29f4b85f -size 516035 +oid sha256:df827c47d5509d11e5a32a170946051ea59b8c6a1fad52321063fe8b8581efe8 +size 513677 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_stickerRoomTimelineView-iPhone-15-pseudo.2.png b/PreviewTests/__Snapshots__/PreviewTests/test_stickerRoomTimelineView-iPhone-15-pseudo.2.png index bab390209..8f7f41371 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_stickerRoomTimelineView-iPhone-15-pseudo.2.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_stickerRoomTimelineView-iPhone-15-pseudo.2.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f78754f36a6c96d694879f12e38711701a2466109d5e33b505a52ade18d16945 -size 431151 +oid sha256:faa3ed2627f49b9049153cea538feade7c4a7ff73f7a1a20c4fb7f98482769b1 +size 400541 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_textRoomTimelineView-iPad-en-GB.Bubble-RTL.png b/PreviewTests/__Snapshots__/PreviewTests/test_textRoomTimelineView-iPad-en-GB.Bubble-RTL.png index 53b779634..446069028 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_textRoomTimelineView-iPad-en-GB.Bubble-RTL.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_textRoomTimelineView-iPad-en-GB.Bubble-RTL.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4ac68eed58d9d8b615ca8a76b62ec8c34787c2f03b764677eff80453d90387a7 -size 293107 +oid sha256:c49713046b38a409924bff5434fb3463bd9b9c653c052c15a27b55014d8bc8aa +size 293818 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_textRoomTimelineView-iPad-en-GB.Bubble.png b/PreviewTests/__Snapshots__/PreviewTests/test_textRoomTimelineView-iPad-en-GB.Bubble.png index b590e6753..02df26622 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_textRoomTimelineView-iPad-en-GB.Bubble.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_textRoomTimelineView-iPad-en-GB.Bubble.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6d2dd1165ecb470c9d8848135c86c6f79c7a15900b51235bbd13c7499023ab1f -size 293772 +oid sha256:981d6fd98c3b154f8efc0f3f0172596e6642de41603a38d8505e4945c53b3bfa +size 294501 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_textRoomTimelineView-iPad-en-GB.Plain-RTL.png b/PreviewTests/__Snapshots__/PreviewTests/test_textRoomTimelineView-iPad-en-GB.Plain-RTL.png index c96a12493..03b537618 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_textRoomTimelineView-iPad-en-GB.Plain-RTL.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_textRoomTimelineView-iPad-en-GB.Plain-RTL.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2ba5f094068717c65b178aff99d58ea8a770ec99c73326c765d7fd47635ac764 -size 281636 +oid sha256:d5135a5b30b15d22a1257540676259de489b403aa10b394349a69540b7cc861f +size 273950 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_textRoomTimelineView-iPad-en-GB.Plain.png b/PreviewTests/__Snapshots__/PreviewTests/test_textRoomTimelineView-iPad-en-GB.Plain.png index e471c06bd..f0d46276a 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_textRoomTimelineView-iPad-en-GB.Plain.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_textRoomTimelineView-iPad-en-GB.Plain.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:54d848947b9aa2c8b9781474bbf57b377ffed832f9276ef0eb360a8ee86e15ad -size 281426 +oid sha256:942f4eb457435195901bc6d09c81b6631cc98e040fe643b8e1245a1b026a1968 +size 273136 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_textRoomTimelineView-iPad-pseudo.Bubble-RTL.png b/PreviewTests/__Snapshots__/PreviewTests/test_textRoomTimelineView-iPad-pseudo.Bubble-RTL.png index 53b779634..446069028 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_textRoomTimelineView-iPad-pseudo.Bubble-RTL.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_textRoomTimelineView-iPad-pseudo.Bubble-RTL.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4ac68eed58d9d8b615ca8a76b62ec8c34787c2f03b764677eff80453d90387a7 -size 293107 +oid sha256:c49713046b38a409924bff5434fb3463bd9b9c653c052c15a27b55014d8bc8aa +size 293818 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_textRoomTimelineView-iPad-pseudo.Bubble.png b/PreviewTests/__Snapshots__/PreviewTests/test_textRoomTimelineView-iPad-pseudo.Bubble.png index b590e6753..02df26622 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_textRoomTimelineView-iPad-pseudo.Bubble.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_textRoomTimelineView-iPad-pseudo.Bubble.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6d2dd1165ecb470c9d8848135c86c6f79c7a15900b51235bbd13c7499023ab1f -size 293772 +oid sha256:981d6fd98c3b154f8efc0f3f0172596e6642de41603a38d8505e4945c53b3bfa +size 294501 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_textRoomTimelineView-iPad-pseudo.Plain-RTL.png b/PreviewTests/__Snapshots__/PreviewTests/test_textRoomTimelineView-iPad-pseudo.Plain-RTL.png index c96a12493..03b537618 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_textRoomTimelineView-iPad-pseudo.Plain-RTL.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_textRoomTimelineView-iPad-pseudo.Plain-RTL.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2ba5f094068717c65b178aff99d58ea8a770ec99c73326c765d7fd47635ac764 -size 281636 +oid sha256:d5135a5b30b15d22a1257540676259de489b403aa10b394349a69540b7cc861f +size 273950 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_textRoomTimelineView-iPad-pseudo.Plain.png b/PreviewTests/__Snapshots__/PreviewTests/test_textRoomTimelineView-iPad-pseudo.Plain.png index e471c06bd..f0d46276a 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_textRoomTimelineView-iPad-pseudo.Plain.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_textRoomTimelineView-iPad-pseudo.Plain.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:54d848947b9aa2c8b9781474bbf57b377ffed832f9276ef0eb360a8ee86e15ad -size 281426 +oid sha256:942f4eb457435195901bc6d09c81b6631cc98e040fe643b8e1245a1b026a1968 +size 273136 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_textRoomTimelineView-iPhone-15-en-GB.Bubble-RTL.png b/PreviewTests/__Snapshots__/PreviewTests/test_textRoomTimelineView-iPhone-15-en-GB.Bubble-RTL.png index 06d55a7a2..a9b3fb69f 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_textRoomTimelineView-iPhone-15-en-GB.Bubble-RTL.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_textRoomTimelineView-iPhone-15-en-GB.Bubble-RTL.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1cbcdc06f812f564caa617d473adc6e5c79f417f725eebfb25c4a9fab82ee79e -size 236908 +oid sha256:e1ec0e0c103d3829d83b7a958cf35483d6d7173651096d68b9ecd905a6b0ee6e +size 213110 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_textRoomTimelineView-iPhone-15-en-GB.Bubble.png b/PreviewTests/__Snapshots__/PreviewTests/test_textRoomTimelineView-iPhone-15-en-GB.Bubble.png index c65464e2e..59f486d6f 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_textRoomTimelineView-iPhone-15-en-GB.Bubble.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_textRoomTimelineView-iPhone-15-en-GB.Bubble.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9f049bcd40dcd4566fb48a5bb02c9f5708801a4133f7220a9a6713d3a1ac8c75 -size 236088 +oid sha256:7a4ec1802ec41c4f60e6b8c8251689faccfcb87345d048deaf804120a3027157 +size 212381 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_textRoomTimelineView-iPhone-15-en-GB.Plain-RTL.png b/PreviewTests/__Snapshots__/PreviewTests/test_textRoomTimelineView-iPhone-15-en-GB.Plain-RTL.png index 8f18319c9..12358cc74 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_textRoomTimelineView-iPhone-15-en-GB.Plain-RTL.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_textRoomTimelineView-iPhone-15-en-GB.Plain-RTL.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:90014506c8effd363178fcdb87ed6359b55cdfad260e9fb6ae9ed8f0717081a8 -size 236022 +oid sha256:de3b9171d9233c5a45568dd98e649fbf2301d778beda7ff2529ac8f30d9bcb42 +size 235052 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_textRoomTimelineView-iPhone-15-en-GB.Plain.png b/PreviewTests/__Snapshots__/PreviewTests/test_textRoomTimelineView-iPhone-15-en-GB.Plain.png index dbb9dd5ce..2c214f217 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_textRoomTimelineView-iPhone-15-en-GB.Plain.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_textRoomTimelineView-iPhone-15-en-GB.Plain.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8d5fa0963b9e855e4c2fdfbc08a6cdcf1e9c78d589553096fc0786f7dcc83cdf -size 236326 +oid sha256:c516b3946ba8dda2cbebce441e6a67e8b88ec6ba368cf2044508bf9f9d4f2c3b +size 234972 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_textRoomTimelineView-iPhone-15-pseudo.Bubble-RTL.png b/PreviewTests/__Snapshots__/PreviewTests/test_textRoomTimelineView-iPhone-15-pseudo.Bubble-RTL.png index 06d55a7a2..a9b3fb69f 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_textRoomTimelineView-iPhone-15-pseudo.Bubble-RTL.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_textRoomTimelineView-iPhone-15-pseudo.Bubble-RTL.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1cbcdc06f812f564caa617d473adc6e5c79f417f725eebfb25c4a9fab82ee79e -size 236908 +oid sha256:e1ec0e0c103d3829d83b7a958cf35483d6d7173651096d68b9ecd905a6b0ee6e +size 213110 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_textRoomTimelineView-iPhone-15-pseudo.Bubble.png b/PreviewTests/__Snapshots__/PreviewTests/test_textRoomTimelineView-iPhone-15-pseudo.Bubble.png index c65464e2e..59f486d6f 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_textRoomTimelineView-iPhone-15-pseudo.Bubble.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_textRoomTimelineView-iPhone-15-pseudo.Bubble.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9f049bcd40dcd4566fb48a5bb02c9f5708801a4133f7220a9a6713d3a1ac8c75 -size 236088 +oid sha256:7a4ec1802ec41c4f60e6b8c8251689faccfcb87345d048deaf804120a3027157 +size 212381 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_textRoomTimelineView-iPhone-15-pseudo.Plain-RTL.png b/PreviewTests/__Snapshots__/PreviewTests/test_textRoomTimelineView-iPhone-15-pseudo.Plain-RTL.png index 8f18319c9..12358cc74 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_textRoomTimelineView-iPhone-15-pseudo.Plain-RTL.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_textRoomTimelineView-iPhone-15-pseudo.Plain-RTL.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:90014506c8effd363178fcdb87ed6359b55cdfad260e9fb6ae9ed8f0717081a8 -size 236022 +oid sha256:de3b9171d9233c5a45568dd98e649fbf2301d778beda7ff2529ac8f30d9bcb42 +size 235052 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_textRoomTimelineView-iPhone-15-pseudo.Plain.png b/PreviewTests/__Snapshots__/PreviewTests/test_textRoomTimelineView-iPhone-15-pseudo.Plain.png index dbb9dd5ce..2c214f217 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_textRoomTimelineView-iPhone-15-pseudo.Plain.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_textRoomTimelineView-iPhone-15-pseudo.Plain.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8d5fa0963b9e855e4c2fdfbc08a6cdcf1e9c78d589553096fc0786f7dcc83cdf -size 236326 +oid sha256:c516b3946ba8dda2cbebce441e6a67e8b88ec6ba368cf2044508bf9f9d4f2c3b +size 234972 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPad-en-GB.Mock-Timeline-RTL.png b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPad-en-GB.Mock-Timeline-RTL.png index ae91f5629..4c01de818 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPad-en-GB.Mock-Timeline-RTL.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPad-en-GB.Mock-Timeline-RTL.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:35515a268826ce83b745dc4094ca848a062be6c9af3862eaf8ffceac3b9d501f -size 420043 +oid sha256:2599398f4b8630b7c371ca5dc8d8e47c9685ecc827ddb94e84dac4a9147777b5 +size 420100 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPad-en-GB.Mock-Timeline.png b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPad-en-GB.Mock-Timeline.png index 7addabef5..5c3b4b168 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPad-en-GB.Mock-Timeline.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPad-en-GB.Mock-Timeline.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b787bfd4602c3c0d493b7d8c361f75ada33a2d54c9d4f69a1745e1fd690e067d -size 418191 +oid sha256:129b51008eda7b618f53a600cf0bd0767c874527d56c9b1ee7389fe44a9055fb +size 418295 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPad-en-GB.Replies.png b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPad-en-GB.Replies.png index e381575c6..6da39d7b1 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPad-en-GB.Replies.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPad-en-GB.Replies.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:df9bf62fe9ec6a623fe3c332bf9a8c7db63a25cd5a5a7a602a8483077af085b4 -size 141166 +oid sha256:d9ce97086b902741d61f2524f93adcd75fa6ca8e7bb737cca555b21f650075c6 +size 141201 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPad-en-GB.Thread-decorator.png b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPad-en-GB.Thread-decorator.png index 111d32853..10e55bda6 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPad-en-GB.Thread-decorator.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPad-en-GB.Thread-decorator.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f6bbcfbfabe3f655f7256cc24b109415ca0a5b506b2e3c840c72ba885e66fcdd -size 442511 +oid sha256:92c50fbd9040fe01633c275d56098d4454cd1802436fde319e3af825a3267913 +size 426435 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPad-pseudo.Mock-Timeline-RTL.png b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPad-pseudo.Mock-Timeline-RTL.png index 819ddf72a..9fc543639 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPad-pseudo.Mock-Timeline-RTL.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPad-pseudo.Mock-Timeline-RTL.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7c50cf65cec7204807d61857715e72084852d877e2d738c8cea1276925369a72 -size 423959 +oid sha256:218948492715ded5229b1796333f55488361a9e5fb1dd2342ddfec7914b4a6d9 +size 423844 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPad-pseudo.Mock-Timeline.png b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPad-pseudo.Mock-Timeline.png index a4ef638bd..4ca05502f 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPad-pseudo.Mock-Timeline.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPad-pseudo.Mock-Timeline.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9f5429942eb1a1a8ed8e75c59c8e385c68c5ad0e8a65d4a72ebdc2e911fcbc4d -size 422107 +oid sha256:b066626ab9420fd34d5f6ea05f65424081b1d63e7663308a50ea79ac5d214be4 +size 422084 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPad-pseudo.Replies.png b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPad-pseudo.Replies.png index e381575c6..6da39d7b1 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPad-pseudo.Replies.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPad-pseudo.Replies.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:df9bf62fe9ec6a623fe3c332bf9a8c7db63a25cd5a5a7a602a8483077af085b4 -size 141166 +oid sha256:d9ce97086b902741d61f2524f93adcd75fa6ca8e7bb737cca555b21f650075c6 +size 141201 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPad-pseudo.Thread-decorator.png b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPad-pseudo.Thread-decorator.png index b9077fa6e..8aaf8013e 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPad-pseudo.Thread-decorator.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPad-pseudo.Thread-decorator.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0f80e2ed9754ed9d7d6d44ec4c9555ad6d101d6a65504e6c49ad3b9b7c06f98a -size 453596 +oid sha256:0c6483e3cbcf724078f8780f4255e408e75f0e5bd0bdabaea9f464041765fd74 +size 437357 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPhone-15-en-GB.Mock-Timeline-RTL.png b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPhone-15-en-GB.Mock-Timeline-RTL.png index f14ddfa93..56be8d9c5 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPhone-15-en-GB.Mock-Timeline-RTL.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPhone-15-en-GB.Mock-Timeline-RTL.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1747ae9bcfe0ca5565ae6d5f9efa9f0c1f6908821a4c3cf64772c3644dc63648 -size 302463 +oid sha256:46f575566b7d2414436ee0fb7fbc8a08d2a19fa5b94346aa0420ccd67647212c +size 302598 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPhone-15-en-GB.Mock-Timeline.png b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPhone-15-en-GB.Mock-Timeline.png index 8e2cd220b..2d3217944 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPhone-15-en-GB.Mock-Timeline.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPhone-15-en-GB.Mock-Timeline.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c98c3c97708739b88f320716a97b08603e2cc0073e1d4e09f7d682210021c914 -size 299780 +oid sha256:89bd5ab4fb8d8a92bb48f684c03d96d444039b3407add4f188257b3595fc632d +size 299866 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPhone-15-en-GB.Replies.png b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPhone-15-en-GB.Replies.png index 777ca0638..e8e8444cb 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPhone-15-en-GB.Replies.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPhone-15-en-GB.Replies.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8ec889d3b7d40b39a0f440370437220d724d271dda67649aafbcc392fde75a32 -size 96325 +oid sha256:b08be51506ad6b3790e2bd9891a8f3dbe4f1092b639f6122bb2ee498e920bd72 +size 97914 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPhone-15-en-GB.Thread-decorator.png b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPhone-15-en-GB.Thread-decorator.png index ec4e01792..1a2cbd012 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPhone-15-en-GB.Thread-decorator.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPhone-15-en-GB.Thread-decorator.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4048e83b978194ccd1be35c2c10063429dc89b82952ed07304e398517cff9af8 -size 357894 +oid sha256:ea9902fb1669a9dc133c4518484cf4d54fd8575375909a69e237e592e2178379 +size 325689 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPhone-15-pseudo.Mock-Timeline-RTL.png b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPhone-15-pseudo.Mock-Timeline-RTL.png index d4701f0d6..1d3ec6180 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPhone-15-pseudo.Mock-Timeline-RTL.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPhone-15-pseudo.Mock-Timeline-RTL.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:20f3d1c8326da986b00ec7b15f89030101d3e6afb59409a2e4c09244d992a569 -size 302793 +oid sha256:96bf684036abb9cf3443cf6867559c1b37904f6afbdba5e2318f98e05ef4d0c1 +size 303076 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPhone-15-pseudo.Mock-Timeline.png b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPhone-15-pseudo.Mock-Timeline.png index 2e8c8cfff..2219c405d 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPhone-15-pseudo.Mock-Timeline.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPhone-15-pseudo.Mock-Timeline.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4792b4a20acc6da6e44572621273560ec74d8224b9e6d240c69b10036f106817 -size 299719 +oid sha256:7f9372b1646e0142c1b71e42ce876763b118c8bb67c1b3d33265401f0141e2fd +size 299978 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPhone-15-pseudo.Replies.png b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPhone-15-pseudo.Replies.png index 777ca0638..e8e8444cb 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPhone-15-pseudo.Replies.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPhone-15-pseudo.Replies.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8ec889d3b7d40b39a0f440370437220d724d271dda67649aafbcc392fde75a32 -size 96325 +oid sha256:b08be51506ad6b3790e2bd9891a8f3dbe4f1092b639f6122bb2ee498e920bd72 +size 97914 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPhone-15-pseudo.Thread-decorator.png b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPhone-15-pseudo.Thread-decorator.png index 1e6bfc9d4..da288cd58 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPhone-15-pseudo.Thread-decorator.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPhone-15-pseudo.Thread-decorator.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:16dc7bb2f9a30443f636aa9c0dfe824f4f446789e6aa29cb12f938b12f5fa2ac -size 366325 +oid sha256:d620bc5a742d8a2c7e48c3c9e9035f10ebf48b0d4f07c8da75004cfe5a40c3ba +size 334034 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemPlainStylerView-iPad-en-GB.1.png b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemPlainStylerView-iPad-en-GB.1.png index 84e99a1bb..49df86d4b 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemPlainStylerView-iPad-en-GB.1.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemPlainStylerView-iPad-en-GB.1.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:314fb9de8d8f3a615ece7fd476056a7e9ec1971a40508921ce99fb81a53c8799 -size 414145 +oid sha256:40170f9599ddaaa5c494032b5e7e74185fb8b79819ac5d346d6955909447fda5 +size 413316 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemPlainStylerView-iPad-en-GB.Replies.png b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemPlainStylerView-iPad-en-GB.Replies.png index cec690985..18cdc85c8 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemPlainStylerView-iPad-en-GB.Replies.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemPlainStylerView-iPad-en-GB.Replies.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4dabc72ecc786b2b66f05bc7fe58f0d3f0878e08d9448d447c3ddfd0d5bb9c3b -size 148571 +oid sha256:17cd98c0b05291e5b7d388e6595c558ed6d897b0294ebc27b292cc4ad2e91ebc +size 148132 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemPlainStylerView-iPad-en-GB.Threads.png b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemPlainStylerView-iPad-en-GB.Threads.png index d21265b20..3df25f24b 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemPlainStylerView-iPad-en-GB.Threads.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemPlainStylerView-iPad-en-GB.Threads.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:efd6634d6436a7dc8b89c34828c2290d2f7de9f8bacbd67be427f9206166a334 -size 326778 +oid sha256:215e905c1235a1b49b9743bc1f54a2e7bbaaf962490dcee3434e2c0a7dcb5d51 +size 264794 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemPlainStylerView-iPad-pseudo.1.png b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemPlainStylerView-iPad-pseudo.1.png index 334ae2a42..a88760c6b 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemPlainStylerView-iPad-pseudo.1.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemPlainStylerView-iPad-pseudo.1.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ece710b2859e5ca1b4b3a8f22141ea7c4c5bccca65e864e7915c796be04b0ce4 -size 419192 +oid sha256:ae170580ef18cdafc56da72944fc6b5950ac083e6d1a44941ce892c3033adbcd +size 418325 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemPlainStylerView-iPad-pseudo.Replies.png b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemPlainStylerView-iPad-pseudo.Replies.png index cec690985..18cdc85c8 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemPlainStylerView-iPad-pseudo.Replies.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemPlainStylerView-iPad-pseudo.Replies.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4dabc72ecc786b2b66f05bc7fe58f0d3f0878e08d9448d447c3ddfd0d5bb9c3b -size 148571 +oid sha256:17cd98c0b05291e5b7d388e6595c558ed6d897b0294ebc27b292cc4ad2e91ebc +size 148132 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemPlainStylerView-iPad-pseudo.Threads.png b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemPlainStylerView-iPad-pseudo.Threads.png index 69be05b52..09d7638e0 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemPlainStylerView-iPad-pseudo.Threads.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemPlainStylerView-iPad-pseudo.Threads.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:765f1e1402e72a7eda8c838cc263ad14f0b7006ee97a06ca21837603291eb0dd -size 337847 +oid sha256:ca52e6126a354fbff8c3dc305a7ef3a11b825a144fa25eed68234edba48bda67 +size 275892 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemPlainStylerView-iPhone-15-en-GB.1.png b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemPlainStylerView-iPhone-15-en-GB.1.png index 523d34183..df8d09319 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemPlainStylerView-iPhone-15-en-GB.1.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemPlainStylerView-iPhone-15-en-GB.1.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:aaebf448044d4a380fc15476c2126977ead0f081ff4c022545d96e1b607e17b7 -size 346620 +oid sha256:fb2ad6842e2823dd8aa584e703e6d814f9fba2225374453a1903ae726d2cea12 +size 346922 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemPlainStylerView-iPhone-15-en-GB.Replies.png b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemPlainStylerView-iPhone-15-en-GB.Replies.png index 8262c52a5..5a887a349 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemPlainStylerView-iPhone-15-en-GB.Replies.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemPlainStylerView-iPhone-15-en-GB.Replies.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9c84e73ae05903801dc7e1b00b01c78d9b5d80d8482697d3440874f5f94ea050 -size 99523 +oid sha256:58f90590fda80320909718ac35683ff463129ab94f9f9639152752444635500d +size 105326 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemPlainStylerView-iPhone-15-en-GB.Threads.png b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemPlainStylerView-iPhone-15-en-GB.Threads.png index 464aa732d..0ac472fe1 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemPlainStylerView-iPhone-15-en-GB.Threads.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemPlainStylerView-iPhone-15-en-GB.Threads.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9256b84e0ae70963a6edf4698e1d991af77c1bfc6ec1f4ba392fde055cfc750e -size 275793 +oid sha256:6e0a3148fe594d38cc7a596c088b4d811ad1465907fb7428989acd6de531a167 +size 218673 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemPlainStylerView-iPhone-15-pseudo.1.png b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemPlainStylerView-iPhone-15-pseudo.1.png index 9f8191079..41e8d1c3e 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemPlainStylerView-iPhone-15-pseudo.1.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemPlainStylerView-iPhone-15-pseudo.1.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9072c2005c08180806053782013cd986556b325334878e345c90196870a52d77 -size 347551 +oid sha256:6bdfdc357a05c15a014e07d7fb658a1505cd4fa6ff61fe2737ee8053f11fa466 +size 347801 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemPlainStylerView-iPhone-15-pseudo.Replies.png b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemPlainStylerView-iPhone-15-pseudo.Replies.png index 8262c52a5..5a887a349 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemPlainStylerView-iPhone-15-pseudo.Replies.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemPlainStylerView-iPhone-15-pseudo.Replies.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9c84e73ae05903801dc7e1b00b01c78d9b5d80d8482697d3440874f5f94ea050 -size 99523 +oid sha256:58f90590fda80320909718ac35683ff463129ab94f9f9639152752444635500d +size 105326 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemPlainStylerView-iPhone-15-pseudo.Threads.png b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemPlainStylerView-iPhone-15-pseudo.Threads.png index 3084d8357..9c1456eef 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemPlainStylerView-iPhone-15-pseudo.Threads.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemPlainStylerView-iPhone-15-pseudo.Threads.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:78793903fdd7f55a49a4a43ab4bdde3c9d98aa9bba349a005e9c5a77b0c112db -size 284563 +oid sha256:3104de8460ab1cedc492bba9eef8334ac34eee74c2d3d33add3e335165807a79 +size 227406 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemStyler-iPad-en-GB.Bubbles-LTR-with-different-layout-languages.png b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemStyler-iPad-en-GB.Bubbles-LTR-with-different-layout-languages.png index 5e2175a99..6bd2f3d86 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemStyler-iPad-en-GB.Bubbles-LTR-with-different-layout-languages.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemStyler-iPad-en-GB.Bubbles-LTR-with-different-layout-languages.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:002dea944edc141a4bafa7fa27f56337aaa7d5cc895f0371a5d752a7b5644d78 -size 134105 +oid sha256:0d89b27306a742ff99dcf35015bfe14e2a655127f0c817df70a6731a75b19df1 +size 134256 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemStyler-iPad-en-GB.Bubbles-RTL-with-different-layout-languages.png b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemStyler-iPad-en-GB.Bubbles-RTL-with-different-layout-languages.png index de589e924..c7686adbf 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemStyler-iPad-en-GB.Bubbles-RTL-with-different-layout-languages.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemStyler-iPad-en-GB.Bubbles-RTL-with-different-layout-languages.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:07b9650a9e039a30d986f43fb830c32f60de77a77f2926ccb52e938ae95c7e2c -size 132694 +oid sha256:e4215ff5d22acd21eedd07a20e3ba21fcf89d7b65130f4bb4d5c842f44f832a7 +size 132681 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemStyler-iPad-en-GB.Bubbles.png b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemStyler-iPad-en-GB.Bubbles.png index 71a5f3171..d555bf956 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemStyler-iPad-en-GB.Bubbles.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemStyler-iPad-en-GB.Bubbles.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d0b6f20ab24610fc51cafba705c711b4c43a43b59cade67b05079ad74273347e -size 106001 +oid sha256:45ecb9c818dc9a02f1b50ba986519851b66ee210dac44e2d9789bc4663834788 +size 106080 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemStyler-iPad-en-GB.Plain.png b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemStyler-iPad-en-GB.Plain.png index 439195a78..eba5c36f3 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemStyler-iPad-en-GB.Plain.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemStyler-iPad-en-GB.Plain.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f147853e075766253bba86439dadd34d40d27329a4a418bd910bc5f505e58b73 -size 161957 +oid sha256:b5ba9b186437002810f41a5dda5c66d16a9c1b63101d66ca1bf719f3e7e99a69 +size 162291 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemStyler-iPad-pseudo.Bubbles-LTR-with-different-layout-languages.png b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemStyler-iPad-pseudo.Bubbles-LTR-with-different-layout-languages.png index 5e2175a99..6bd2f3d86 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemStyler-iPad-pseudo.Bubbles-LTR-with-different-layout-languages.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemStyler-iPad-pseudo.Bubbles-LTR-with-different-layout-languages.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:002dea944edc141a4bafa7fa27f56337aaa7d5cc895f0371a5d752a7b5644d78 -size 134105 +oid sha256:0d89b27306a742ff99dcf35015bfe14e2a655127f0c817df70a6731a75b19df1 +size 134256 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemStyler-iPad-pseudo.Bubbles-RTL-with-different-layout-languages.png b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemStyler-iPad-pseudo.Bubbles-RTL-with-different-layout-languages.png index de589e924..c7686adbf 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemStyler-iPad-pseudo.Bubbles-RTL-with-different-layout-languages.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemStyler-iPad-pseudo.Bubbles-RTL-with-different-layout-languages.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:07b9650a9e039a30d986f43fb830c32f60de77a77f2926ccb52e938ae95c7e2c -size 132694 +oid sha256:e4215ff5d22acd21eedd07a20e3ba21fcf89d7b65130f4bb4d5c842f44f832a7 +size 132681 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemStyler-iPad-pseudo.Bubbles.png b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemStyler-iPad-pseudo.Bubbles.png index 71a5f3171..d555bf956 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemStyler-iPad-pseudo.Bubbles.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemStyler-iPad-pseudo.Bubbles.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d0b6f20ab24610fc51cafba705c711b4c43a43b59cade67b05079ad74273347e -size 106001 +oid sha256:45ecb9c818dc9a02f1b50ba986519851b66ee210dac44e2d9789bc4663834788 +size 106080 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemStyler-iPad-pseudo.Plain.png b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemStyler-iPad-pseudo.Plain.png index 439195a78..eba5c36f3 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemStyler-iPad-pseudo.Plain.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemStyler-iPad-pseudo.Plain.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f147853e075766253bba86439dadd34d40d27329a4a418bd910bc5f505e58b73 -size 161957 +oid sha256:b5ba9b186437002810f41a5dda5c66d16a9c1b63101d66ca1bf719f3e7e99a69 +size 162291 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemStyler-iPhone-15-en-GB.Bubbles-LTR-with-different-layout-languages.png b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemStyler-iPhone-15-en-GB.Bubbles-LTR-with-different-layout-languages.png index cea59af77..4812a22dd 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemStyler-iPhone-15-en-GB.Bubbles-LTR-with-different-layout-languages.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemStyler-iPhone-15-en-GB.Bubbles-LTR-with-different-layout-languages.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5860ead87d5600554cae77cc712a2c30272154c6beba29a99d306cd10d525450 -size 87462 +oid sha256:2e9646a24ab0c88ef758621137b623bce763358bba1f2f8081a3ff6e5416d716 +size 87639 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemStyler-iPhone-15-en-GB.Bubbles-RTL-with-different-layout-languages.png b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemStyler-iPhone-15-en-GB.Bubbles-RTL-with-different-layout-languages.png index 6e03b47cf..8369ff698 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemStyler-iPhone-15-en-GB.Bubbles-RTL-with-different-layout-languages.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemStyler-iPhone-15-en-GB.Bubbles-RTL-with-different-layout-languages.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ea3a0a1c9884523a1a84c2773339e1de25e39da499135088f49f0fdac1399d11 -size 86479 +oid sha256:232181c280cb34ef51846b8a501726641cb76b3931b8a6f57120611531c09d0f +size 86436 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemStyler-iPhone-15-en-GB.Bubbles.png b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemStyler-iPhone-15-en-GB.Bubbles.png index 944ad93ae..1f66adcf4 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemStyler-iPhone-15-en-GB.Bubbles.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemStyler-iPhone-15-en-GB.Bubbles.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:724f711cb5eea3ad75fda27790fc66ebd1ad89fdc92c1512b0cc16d9e1c8d06d -size 62228 +oid sha256:e6999c9239cfb2bd00e7075633951f3c74ab1ef031d06a949b7198ce410b6d02 +size 62401 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemStyler-iPhone-15-en-GB.Plain.png b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemStyler-iPhone-15-en-GB.Plain.png index 159eac054..ce853560b 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemStyler-iPhone-15-en-GB.Plain.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemStyler-iPhone-15-en-GB.Plain.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5ef5eca8e92c5bba3905c6e7615d3d54fb432b917c3b86bcf83cd13ee2fc9050 -size 108019 +oid sha256:769ab15ca599512796183e8fa3cff4acc4b282a0924d36246e87214d6d1b1580 +size 108093 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemStyler-iPhone-15-pseudo.Bubbles-LTR-with-different-layout-languages.png b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemStyler-iPhone-15-pseudo.Bubbles-LTR-with-different-layout-languages.png index cea59af77..4812a22dd 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemStyler-iPhone-15-pseudo.Bubbles-LTR-with-different-layout-languages.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemStyler-iPhone-15-pseudo.Bubbles-LTR-with-different-layout-languages.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5860ead87d5600554cae77cc712a2c30272154c6beba29a99d306cd10d525450 -size 87462 +oid sha256:2e9646a24ab0c88ef758621137b623bce763358bba1f2f8081a3ff6e5416d716 +size 87639 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemStyler-iPhone-15-pseudo.Bubbles-RTL-with-different-layout-languages.png b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemStyler-iPhone-15-pseudo.Bubbles-RTL-with-different-layout-languages.png index 6e03b47cf..8369ff698 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemStyler-iPhone-15-pseudo.Bubbles-RTL-with-different-layout-languages.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemStyler-iPhone-15-pseudo.Bubbles-RTL-with-different-layout-languages.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ea3a0a1c9884523a1a84c2773339e1de25e39da499135088f49f0fdac1399d11 -size 86479 +oid sha256:232181c280cb34ef51846b8a501726641cb76b3931b8a6f57120611531c09d0f +size 86436 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemStyler-iPhone-15-pseudo.Bubbles.png b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemStyler-iPhone-15-pseudo.Bubbles.png index 944ad93ae..1f66adcf4 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemStyler-iPhone-15-pseudo.Bubbles.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemStyler-iPhone-15-pseudo.Bubbles.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:724f711cb5eea3ad75fda27790fc66ebd1ad89fdc92c1512b0cc16d9e1c8d06d -size 62228 +oid sha256:e6999c9239cfb2bd00e7075633951f3c74ab1ef031d06a949b7198ce410b6d02 +size 62401 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemStyler-iPhone-15-pseudo.Plain.png b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemStyler-iPhone-15-pseudo.Plain.png index 159eac054..ce853560b 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemStyler-iPhone-15-pseudo.Plain.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_timelineItemStyler-iPhone-15-pseudo.Plain.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5ef5eca8e92c5bba3905c6e7615d3d54fb432b917c3b86bcf83cd13ee2fc9050 -size 108019 +oid sha256:769ab15ca599512796183e8fa3cff4acc4b282a0924d36246e87214d6d1b1580 +size 108093 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_timelineView-iPad-en-GB.1.png b/PreviewTests/__Snapshots__/PreviewTests/test_timelineView-iPad-en-GB.1.png new file mode 100644 index 000000000..a24753542 --- /dev/null +++ b/PreviewTests/__Snapshots__/PreviewTests/test_timelineView-iPad-en-GB.1.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:681f42cd5c242b4564dc9fb97f47217eb05e02cb16b33ae0ea6675e4ba6dee80 +size 416815 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_timelineView-iPad-pseudo.1.png b/PreviewTests/__Snapshots__/PreviewTests/test_timelineView-iPad-pseudo.1.png new file mode 100644 index 000000000..ba44ae986 --- /dev/null +++ b/PreviewTests/__Snapshots__/PreviewTests/test_timelineView-iPad-pseudo.1.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:79cbf258b45844d0b29515aab55a3ac979f3aa6bdb7a21fef508c2025a428258 +size 427856 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_timelineView-iPhone-15-en-GB.1.png b/PreviewTests/__Snapshots__/PreviewTests/test_timelineView-iPhone-15-en-GB.1.png new file mode 100644 index 000000000..b28a1fe9a --- /dev/null +++ b/PreviewTests/__Snapshots__/PreviewTests/test_timelineView-iPhone-15-en-GB.1.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9a3471828f2b36c052dd0583628cb4cfaa0b3cc5cfc767bc0907f20b33d2b55b +size 270815 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_timelineView-iPhone-15-pseudo.1.png b/PreviewTests/__Snapshots__/PreviewTests/test_timelineView-iPhone-15-pseudo.1.png new file mode 100644 index 000000000..caf2559ea --- /dev/null +++ b/PreviewTests/__Snapshots__/PreviewTests/test_timelineView-iPhone-15-pseudo.1.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:32dca0d76ee5447d16211aa51b7d963502cfe3a5eb49daa216d06e9022782e0e +size 278037 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_uITimelineView-iPad-en-GB.1.png b/PreviewTests/__Snapshots__/PreviewTests/test_uITimelineView-iPad-en-GB.1.png deleted file mode 100644 index a485421cb..000000000 --- a/PreviewTests/__Snapshots__/PreviewTests/test_uITimelineView-iPad-en-GB.1.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:bd64d442d2fbafae0504ee7dfb50913ffb7ece83fa49ed12046db8abd3a0193b -size 414938 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_uITimelineView-iPad-pseudo.1.png b/PreviewTests/__Snapshots__/PreviewTests/test_uITimelineView-iPad-pseudo.1.png deleted file mode 100644 index a9a9a573c..000000000 --- a/PreviewTests/__Snapshots__/PreviewTests/test_uITimelineView-iPad-pseudo.1.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b2e21d30cf418675858966e4b40211c8b9682ca7e99bd61f34a24e760435d347 -size 424851 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_uITimelineView-iPhone-15-en-GB.1.png b/PreviewTests/__Snapshots__/PreviewTests/test_uITimelineView-iPhone-15-en-GB.1.png deleted file mode 100644 index b91f7c719..000000000 --- a/PreviewTests/__Snapshots__/PreviewTests/test_uITimelineView-iPhone-15-en-GB.1.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1a1231b36d73b3b3e60b89ad62e8e6226a4de1b9ebac60b2587b0c8f2fd9a977 -size 270729 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_uITimelineView-iPhone-15-pseudo.1.png b/PreviewTests/__Snapshots__/PreviewTests/test_uITimelineView-iPhone-15-pseudo.1.png deleted file mode 100644 index 1daffa513..000000000 --- a/PreviewTests/__Snapshots__/PreviewTests/test_uITimelineView-iPhone-15-pseudo.1.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b54258fca13f34ec79c8132f81eb39ad2784fffbbefc60f4bba8cde4139f18f6 -size 277944 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_unsupportedRoomTimelineView-iPad-en-GB.1.png b/PreviewTests/__Snapshots__/PreviewTests/test_unsupportedRoomTimelineView-iPad-en-GB.1.png index 62ede2f81..3cbf5aad1 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_unsupportedRoomTimelineView-iPad-en-GB.1.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_unsupportedRoomTimelineView-iPad-en-GB.1.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:824785d8d0b4730667ce27e390310eb7cf0d66fcc86ce5d621a41c769da8e62a -size 126138 +oid sha256:69ce04278512bfb0ba95fb881e11d86548a0cb6b89c8b906f55a862945e55089 +size 126091 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_unsupportedRoomTimelineView-iPad-en-GB.2.png b/PreviewTests/__Snapshots__/PreviewTests/test_unsupportedRoomTimelineView-iPad-en-GB.2.png index 9857f3547..fd6b9d2ef 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_unsupportedRoomTimelineView-iPad-en-GB.2.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_unsupportedRoomTimelineView-iPad-en-GB.2.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6f314e1449f2f7dfb6e8ddb5350c852a85c4c706a409a867160851be6cacafe0 -size 127525 +oid sha256:64ada0621751968740d46de3a29d12161c872b93ffa135d9108e817d2abd5e98 +size 127578 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_unsupportedRoomTimelineView-iPad-pseudo.1.png b/PreviewTests/__Snapshots__/PreviewTests/test_unsupportedRoomTimelineView-iPad-pseudo.1.png index 2587d2211..f0b697019 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_unsupportedRoomTimelineView-iPad-pseudo.1.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_unsupportedRoomTimelineView-iPad-pseudo.1.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:99ef40bb3cf8deb574b45dcaf31c01fb727c01759030a7167549a6615ffbd46d -size 133492 +oid sha256:6d4e727d78e3c51a7f2cf56fe464c2fd7d4d78b2b96fdd0401e8532a8943bb79 +size 133740 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_unsupportedRoomTimelineView-iPad-pseudo.2.png b/PreviewTests/__Snapshots__/PreviewTests/test_unsupportedRoomTimelineView-iPad-pseudo.2.png index dd7c63f2b..55c04c12c 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_unsupportedRoomTimelineView-iPad-pseudo.2.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_unsupportedRoomTimelineView-iPad-pseudo.2.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e41bac0f80a169874c9717a3ebfc8866276df8adad9f9f2c179aad39d91d094e -size 134821 +oid sha256:aec4c6aef3670137616d8e9e62cd26c2c93350ac310b2dfa57e993022dcc876e +size 134886 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_unsupportedRoomTimelineView-iPhone-15-en-GB.1.png b/PreviewTests/__Snapshots__/PreviewTests/test_unsupportedRoomTimelineView-iPhone-15-en-GB.1.png index 2814a1c35..9b925d6e2 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_unsupportedRoomTimelineView-iPhone-15-en-GB.1.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_unsupportedRoomTimelineView-iPhone-15-en-GB.1.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f66a9e03380822df6deabc685a98b1cbd5f2fe8f296dc3ad8d52edbaee16c867 -size 77639 +oid sha256:6b365a9495d050a72a28008c87b8f2270049769cd94cb2ecdf513040a5be5e77 +size 77638 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_unsupportedRoomTimelineView-iPhone-15-en-GB.2.png b/PreviewTests/__Snapshots__/PreviewTests/test_unsupportedRoomTimelineView-iPhone-15-en-GB.2.png index 58270babb..e7c5370a7 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_unsupportedRoomTimelineView-iPhone-15-en-GB.2.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_unsupportedRoomTimelineView-iPhone-15-en-GB.2.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b937de96af477bcd418b4ff1499d2fc18144c0e5d22ad12002e5cc50a7ef8b14 -size 78860 +oid sha256:3c8a4220270035117a53aa96d646163d701c6e8976e9915c30273e4c97362292 +size 79226 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_unsupportedRoomTimelineView-iPhone-15-pseudo.1.png b/PreviewTests/__Snapshots__/PreviewTests/test_unsupportedRoomTimelineView-iPhone-15-pseudo.1.png index 5d33e8666..f3fac1e60 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_unsupportedRoomTimelineView-iPhone-15-pseudo.1.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_unsupportedRoomTimelineView-iPhone-15-pseudo.1.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c6f4fb8156ad4c8553239f94c98ab5c15951ab41a573c52885bd11b77b919b08 -size 86412 +oid sha256:3ed083811b436bde2d230b8b3822fbb4d738a8cee2e2214f07c47531df6dc2e3 +size 84677 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_unsupportedRoomTimelineView-iPhone-15-pseudo.2.png b/PreviewTests/__Snapshots__/PreviewTests/test_unsupportedRoomTimelineView-iPhone-15-pseudo.2.png index 63e57b937..92112eef9 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_unsupportedRoomTimelineView-iPhone-15-pseudo.2.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_unsupportedRoomTimelineView-iPhone-15-pseudo.2.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cd48d3d11f3765403cff6c751a302c1f62bf2d639487dde94f44a2e66818dcd7 -size 83519 +oid sha256:a34605ea50ace351d1370881eff2db2ab8a885ff06bbe9b7cca2acf56056a6c2 +size 83858 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_videoRoomTimelineView-iPad-en-GB.1.png b/PreviewTests/__Snapshots__/PreviewTests/test_videoRoomTimelineView-iPad-en-GB.1.png index 9d1222562..fa332a3aa 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_videoRoomTimelineView-iPad-en-GB.1.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_videoRoomTimelineView-iPad-en-GB.1.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:abd768c65dbe8a5575e1ada54c4cc0117b3877f743ea8348d4714440a5f0da8b -size 87657 +oid sha256:c32b05a11c006caf11b1fcb17e4fdcfde5d786978fbf03111a8936f24d63f4e2 +size 87753 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_videoRoomTimelineView-iPad-en-GB.2.png b/PreviewTests/__Snapshots__/PreviewTests/test_videoRoomTimelineView-iPad-en-GB.2.png index a2508a353..2d77e696b 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_videoRoomTimelineView-iPad-en-GB.2.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_videoRoomTimelineView-iPad-en-GB.2.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4b8b485f5fb4abf8abc40f628bf252e844a0ab4d9268ea4c278261cbdeee227f -size 87355 +oid sha256:7dd471e614d9664e2cb09af2b682236fd58af9d5ac70eff382f5eb71e7a9ebb7 +size 87430 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_videoRoomTimelineView-iPad-pseudo.1.png b/PreviewTests/__Snapshots__/PreviewTests/test_videoRoomTimelineView-iPad-pseudo.1.png index 9d1222562..fa332a3aa 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_videoRoomTimelineView-iPad-pseudo.1.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_videoRoomTimelineView-iPad-pseudo.1.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:abd768c65dbe8a5575e1ada54c4cc0117b3877f743ea8348d4714440a5f0da8b -size 87657 +oid sha256:c32b05a11c006caf11b1fcb17e4fdcfde5d786978fbf03111a8936f24d63f4e2 +size 87753 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_videoRoomTimelineView-iPad-pseudo.2.png b/PreviewTests/__Snapshots__/PreviewTests/test_videoRoomTimelineView-iPad-pseudo.2.png index a2508a353..2d77e696b 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_videoRoomTimelineView-iPad-pseudo.2.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_videoRoomTimelineView-iPad-pseudo.2.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4b8b485f5fb4abf8abc40f628bf252e844a0ab4d9268ea4c278261cbdeee227f -size 87355 +oid sha256:7dd471e614d9664e2cb09af2b682236fd58af9d5ac70eff382f5eb71e7a9ebb7 +size 87430 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_videoRoomTimelineView-iPhone-15-en-GB.1.png b/PreviewTests/__Snapshots__/PreviewTests/test_videoRoomTimelineView-iPhone-15-en-GB.1.png index 0f8f64e93..89626a890 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_videoRoomTimelineView-iPhone-15-en-GB.1.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_videoRoomTimelineView-iPhone-15-en-GB.1.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1415a29a09f3bf763db5282000a5e7d4f01b143a572f9215df84de2c1d9f781b -size 47237 +oid sha256:88bfbf33bfe6252981b50dbcefb6d29d644ca238d4de4b3491734da175e7d27d +size 47672 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_videoRoomTimelineView-iPhone-15-en-GB.2.png b/PreviewTests/__Snapshots__/PreviewTests/test_videoRoomTimelineView-iPhone-15-en-GB.2.png index 00ef1b785..1e109c884 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_videoRoomTimelineView-iPhone-15-en-GB.2.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_videoRoomTimelineView-iPhone-15-en-GB.2.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:02cfec59ae2f8c9b0d6e6f4b603606d8142c41bc7e071fab30a2ebff0ce6e329 -size 44815 +oid sha256:96dacaf19ebba7ff93e65cdc69227d40b0e1503f5eef2336bcc06dd1bda4d42b +size 44817 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_videoRoomTimelineView-iPhone-15-pseudo.1.png b/PreviewTests/__Snapshots__/PreviewTests/test_videoRoomTimelineView-iPhone-15-pseudo.1.png index 0f8f64e93..89626a890 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_videoRoomTimelineView-iPhone-15-pseudo.1.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_videoRoomTimelineView-iPhone-15-pseudo.1.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1415a29a09f3bf763db5282000a5e7d4f01b143a572f9215df84de2c1d9f781b -size 47237 +oid sha256:88bfbf33bfe6252981b50dbcefb6d29d644ca238d4de4b3491734da175e7d27d +size 47672 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_videoRoomTimelineView-iPhone-15-pseudo.2.png b/PreviewTests/__Snapshots__/PreviewTests/test_videoRoomTimelineView-iPhone-15-pseudo.2.png index 00ef1b785..1e109c884 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_videoRoomTimelineView-iPhone-15-pseudo.2.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_videoRoomTimelineView-iPhone-15-pseudo.2.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:02cfec59ae2f8c9b0d6e6f4b603606d8142c41bc7e071fab30a2ebff0ce6e329 -size 44815 +oid sha256:96dacaf19ebba7ff93e65cdc69227d40b0e1503f5eef2336bcc06dd1bda4d42b +size 44817 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_voiceMessageRoomTimelineView-iPad-en-GB.Bubble.png b/PreviewTests/__Snapshots__/PreviewTests/test_voiceMessageRoomTimelineView-iPad-en-GB.Bubble.png index 34ae17077..9d6fda821 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_voiceMessageRoomTimelineView-iPad-en-GB.Bubble.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_voiceMessageRoomTimelineView-iPad-en-GB.Bubble.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:736384fae61a6ad9fa4c0446684d3cf311c72275564c96558d47dbd07e6e6671 -size 81487 +oid sha256:4fab7e64c5ba3535a36d35e89ecd1896840e668ca1819506ba4883ebd7d69c81 +size 81625 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_voiceMessageRoomTimelineView-iPad-en-GB.Plain.png b/PreviewTests/__Snapshots__/PreviewTests/test_voiceMessageRoomTimelineView-iPad-en-GB.Plain.png index 3f649e6e4..2bf60daee 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_voiceMessageRoomTimelineView-iPad-en-GB.Plain.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_voiceMessageRoomTimelineView-iPad-en-GB.Plain.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f8f51cd6e2cc7a3e6c7e1d9068d0f04c940babbb487172a87b2de08d7f053be6 -size 78824 +oid sha256:723be5233cc3878644b0ddbed6533ff5370233507840396db87c6ba374604e8a +size 78952 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_voiceMessageRoomTimelineView-iPad-pseudo.Bubble.png b/PreviewTests/__Snapshots__/PreviewTests/test_voiceMessageRoomTimelineView-iPad-pseudo.Bubble.png index 34ae17077..9d6fda821 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_voiceMessageRoomTimelineView-iPad-pseudo.Bubble.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_voiceMessageRoomTimelineView-iPad-pseudo.Bubble.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:736384fae61a6ad9fa4c0446684d3cf311c72275564c96558d47dbd07e6e6671 -size 81487 +oid sha256:4fab7e64c5ba3535a36d35e89ecd1896840e668ca1819506ba4883ebd7d69c81 +size 81625 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_voiceMessageRoomTimelineView-iPad-pseudo.Plain.png b/PreviewTests/__Snapshots__/PreviewTests/test_voiceMessageRoomTimelineView-iPad-pseudo.Plain.png index 3f649e6e4..2bf60daee 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_voiceMessageRoomTimelineView-iPad-pseudo.Plain.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_voiceMessageRoomTimelineView-iPad-pseudo.Plain.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f8f51cd6e2cc7a3e6c7e1d9068d0f04c940babbb487172a87b2de08d7f053be6 -size 78824 +oid sha256:723be5233cc3878644b0ddbed6533ff5370233507840396db87c6ba374604e8a +size 78952 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_voiceMessageRoomTimelineView-iPhone-15-en-GB.Bubble.png b/PreviewTests/__Snapshots__/PreviewTests/test_voiceMessageRoomTimelineView-iPhone-15-en-GB.Bubble.png index 2f38091c0..68b9b225f 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_voiceMessageRoomTimelineView-iPhone-15-en-GB.Bubble.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_voiceMessageRoomTimelineView-iPhone-15-en-GB.Bubble.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:69fe06d4b8fed3ec9b79400838d50f5120ae37907fe5b7a22bdeb68999157537 -size 40130 +oid sha256:5c9e2ccb7d956b7ac26f5fa4c2cc216c5666d862e4034ed3fa03baf36d3df1c5 +size 40621 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_voiceMessageRoomTimelineView-iPhone-15-en-GB.Plain.png b/PreviewTests/__Snapshots__/PreviewTests/test_voiceMessageRoomTimelineView-iPhone-15-en-GB.Plain.png index a8b9416e7..f1a82f43b 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_voiceMessageRoomTimelineView-iPhone-15-en-GB.Plain.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_voiceMessageRoomTimelineView-iPhone-15-en-GB.Plain.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9e7518a22e826a00f9279f75b68b581ee0b388ed03757520c63f546509f4cb0e -size 37752 +oid sha256:61d6e6339ad49b49fccc88347d1c36d34b12ff590e87c41d4ac35a8725a07fae +size 37421 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_voiceMessageRoomTimelineView-iPhone-15-pseudo.Bubble.png b/PreviewTests/__Snapshots__/PreviewTests/test_voiceMessageRoomTimelineView-iPhone-15-pseudo.Bubble.png index 2f38091c0..68b9b225f 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_voiceMessageRoomTimelineView-iPhone-15-pseudo.Bubble.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_voiceMessageRoomTimelineView-iPhone-15-pseudo.Bubble.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:69fe06d4b8fed3ec9b79400838d50f5120ae37907fe5b7a22bdeb68999157537 -size 40130 +oid sha256:5c9e2ccb7d956b7ac26f5fa4c2cc216c5666d862e4034ed3fa03baf36d3df1c5 +size 40621 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_voiceMessageRoomTimelineView-iPhone-15-pseudo.Plain.png b/PreviewTests/__Snapshots__/PreviewTests/test_voiceMessageRoomTimelineView-iPhone-15-pseudo.Plain.png index a8b9416e7..f1a82f43b 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_voiceMessageRoomTimelineView-iPhone-15-pseudo.Plain.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_voiceMessageRoomTimelineView-iPhone-15-pseudo.Plain.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9e7518a22e826a00f9279f75b68b581ee0b388ed03757520c63f546509f4cb0e -size 37752 +oid sha256:61d6e6339ad49b49fccc88347d1c36d34b12ff590e87c41d4ac35a8725a07fae +size 37421 diff --git a/UITests/Sources/__Snapshots__/Application/roomPlainNoAvatar-iPad-10th-generation-en-GB.UI.png b/UITests/Sources/__Snapshots__/Application/roomPlainNoAvatar-iPad-10th-generation-en-GB.UI.png index 74deb0f8d..ad441a6fd 100644 --- a/UITests/Sources/__Snapshots__/Application/roomPlainNoAvatar-iPad-10th-generation-en-GB.UI.png +++ b/UITests/Sources/__Snapshots__/Application/roomPlainNoAvatar-iPad-10th-generation-en-GB.UI.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1e7e5de041b8203b747bd2d9385b52e9e30129cf92b4be85fb2e4fc7e0c5aa58 -size 292270 +oid sha256:a4cc6a35cfe2614ba55d17f3aecc7336ec1dd48937ee48b719163bc72dac14a2 +size 292215 diff --git a/UITests/Sources/__Snapshots__/Application/roomPlainNoAvatar-iPhone-15-en-GB.UI.png b/UITests/Sources/__Snapshots__/Application/roomPlainNoAvatar-iPhone-15-en-GB.UI.png index 4a29770d1..638a4dd88 100644 --- a/UITests/Sources/__Snapshots__/Application/roomPlainNoAvatar-iPhone-15-en-GB.UI.png +++ b/UITests/Sources/__Snapshots__/Application/roomPlainNoAvatar-iPhone-15-en-GB.UI.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1359679eed9a62a57d4dc597f5dad30550ac5f9ec7cb55f0274494c9b685bb56 -size 373789 +oid sha256:091843bb18a614544534f0eabd2970a5cd6f775e75591428bd3fed1ac9c74328 +size 374446 diff --git a/UnitTests/Sources/RoomFlowCoordinatorTests.swift b/UnitTests/Sources/RoomFlowCoordinatorTests.swift index 8c5a07eb6..36075b248 100644 --- a/UnitTests/Sources/RoomFlowCoordinatorTests.swift +++ b/UnitTests/Sources/RoomFlowCoordinatorTests.swift @@ -209,6 +209,23 @@ class RoomFlowCoordinatorTests: XCTestCase { XCTAssertTrue(navigationStackCoordinator.stackCoordinators.last is RoomScreenCoordinator) } + func testEventRoute() async throws { + await setupRoomFlowCoordinator() + + try await process(route: .event(roomID: "1", eventID: "1")) + XCTAssert(navigationStackCoordinator.rootCoordinator is RoomScreenCoordinator) + XCTAssertEqual(navigationStackCoordinator.stackCoordinators.count, 0) + + try await process(route: .event(roomID: "1", eventID: "2")) + XCTAssert(navigationStackCoordinator.rootCoordinator is RoomScreenCoordinator) + XCTAssertEqual(navigationStackCoordinator.stackCoordinators.count, 0) + + try await process(route: .childEvent(roomID: "2", eventID: "3")) + XCTAssert(navigationStackCoordinator.rootCoordinator is RoomScreenCoordinator) + XCTAssertEqual(navigationStackCoordinator.stackCoordinators.count, 1) + XCTAssert(navigationStackCoordinator.stackCoordinators.first is RoomScreenCoordinator) + } + // MARK: - Private private func process(route: AppRoute) async throws { diff --git a/UnitTests/Sources/RoomPollsHistoryScreenViewModelTests.swift b/UnitTests/Sources/RoomPollsHistoryScreenViewModelTests.swift index 318b51d47..2a29621e7 100644 --- a/UnitTests/Sources/RoomPollsHistoryScreenViewModelTests.swift +++ b/UnitTests/Sources/RoomPollsHistoryScreenViewModelTests.swift @@ -28,7 +28,6 @@ class RoomPollsHistoryScreenViewModelTests: XCTestCase { interactionHandler = PollInteractionHandlerMock() timelineController = MockRoomTimelineController() let roomProxyMockConfiguration = RoomProxyMockConfiguration(name: "Polls") - roomProxyMockConfiguration.timeline.timelineStartReached = false viewModel = RoomPollsHistoryScreenViewModel(pollInteractionHandler: interactionHandler, roomTimelineController: timelineController, userIndicatorController: UserIndicatorControllerMock()) diff --git a/UnitTests/Sources/RoomScreenViewModelTests.swift b/UnitTests/Sources/RoomScreenViewModelTests.swift index 3f90e3420..ef6681dc0 100644 --- a/UnitTests/Sources/RoomScreenViewModelTests.swift +++ b/UnitTests/Sources/RoomScreenViewModelTests.swift @@ -50,16 +50,7 @@ class RoomScreenViewModelTests: XCTestCase { // When showing them in a timeline. let timelineController = MockRoomTimelineController() timelineController.timelineItems = items - let viewModel = RoomScreenViewModel(roomProxy: RoomProxyMock(with: .init(name: "")), - timelineController: timelineController, - mediaProvider: MockMediaProvider(), - mediaPlayerProvider: MediaPlayerProviderMock(), - voiceMessageMediaManager: VoiceMessageMediaManagerMock(), - userIndicatorController: userIndicatorControllerMock, - appMediator: AppMediatorMock.default, - appSettings: ServiceLocator.shared.settings, - analyticsService: ServiceLocator.shared.analytics, - notificationCenter: NotificationCenterMock()) + let viewModel = makeViewModel(timelineController: timelineController) // Then the messages should be grouped together. XCTAssertEqual(viewModel.state.timelineViewState.itemViewStates[0].groupStyle, .first, "Nothing should prevent the first message from being grouped.") @@ -87,16 +78,7 @@ class RoomScreenViewModelTests: XCTestCase { // When showing them in a timeline. let timelineController = MockRoomTimelineController() timelineController.timelineItems = items - let viewModel = RoomScreenViewModel(roomProxy: RoomProxyMock(with: .init(name: "")), - timelineController: timelineController, - mediaProvider: MockMediaProvider(), - mediaPlayerProvider: MediaPlayerProviderMock(), - voiceMessageMediaManager: VoiceMessageMediaManagerMock(), - userIndicatorController: userIndicatorControllerMock, - appMediator: AppMediatorMock.default, - appSettings: ServiceLocator.shared.settings, - analyticsService: ServiceLocator.shared.analytics, - notificationCenter: NotificationCenterMock()) + let viewModel = makeViewModel(timelineController: timelineController) // Then the messages should be grouped by sender. XCTAssertEqual(viewModel.state.timelineViewState.itemViewStates[0].groupStyle, .single, "A message should not be grouped when the sender changes.") @@ -122,16 +104,7 @@ class RoomScreenViewModelTests: XCTestCase { // When showing them in a timeline. let timelineController = MockRoomTimelineController() timelineController.timelineItems = items - let viewModel = RoomScreenViewModel(roomProxy: RoomProxyMock(with: .init(name: "")), - timelineController: timelineController, - mediaProvider: MockMediaProvider(), - mediaPlayerProvider: MediaPlayerProviderMock(), - voiceMessageMediaManager: VoiceMessageMediaManagerMock(), - userIndicatorController: userIndicatorControllerMock, - appMediator: AppMediatorMock.default, - appSettings: ServiceLocator.shared.settings, - analyticsService: ServiceLocator.shared.analytics, - notificationCenter: NotificationCenterMock()) + let viewModel = makeViewModel(timelineController: timelineController) // Then the first message should not be grouped but the other two should. XCTAssertEqual(viewModel.state.timelineViewState.itemViewStates[0].groupStyle, .single, "When the first message has reactions it should not be grouped.") @@ -154,16 +127,7 @@ class RoomScreenViewModelTests: XCTestCase { // When showing them in a timeline. let timelineController = MockRoomTimelineController() timelineController.timelineItems = items - let viewModel = RoomScreenViewModel(roomProxy: RoomProxyMock(with: .init(name: "")), - timelineController: timelineController, - mediaProvider: MockMediaProvider(), - mediaPlayerProvider: MediaPlayerProviderMock(), - voiceMessageMediaManager: VoiceMessageMediaManagerMock(), - userIndicatorController: userIndicatorControllerMock, - appMediator: AppMediatorMock.default, - appSettings: ServiceLocator.shared.settings, - analyticsService: ServiceLocator.shared.analytics, - notificationCenter: NotificationCenterMock()) + let viewModel = makeViewModel(timelineController: timelineController) // Then the first and second messages should be grouped and the last one should not. XCTAssertEqual(viewModel.state.timelineViewState.itemViewStates[0].groupStyle, .first, "Nothing should prevent the first message from being grouped.") @@ -186,16 +150,7 @@ class RoomScreenViewModelTests: XCTestCase { // When showing them in a timeline. let timelineController = MockRoomTimelineController() timelineController.timelineItems = items - let viewModel = RoomScreenViewModel(roomProxy: RoomProxyMock(with: .init(name: "")), - timelineController: timelineController, - mediaProvider: MockMediaProvider(), - mediaPlayerProvider: MediaPlayerProviderMock(), - voiceMessageMediaManager: VoiceMessageMediaManagerMock(), - userIndicatorController: userIndicatorControllerMock, - appMediator: AppMediatorMock.default, - appSettings: ServiceLocator.shared.settings, - analyticsService: ServiceLocator.shared.analytics, - notificationCenter: NotificationCenterMock()) + let viewModel = makeViewModel(timelineController: timelineController) // Then the messages should be grouped together. XCTAssertEqual(viewModel.state.timelineViewState.itemViewStates[0].groupStyle, .first, "Nothing should prevent the first message from being grouped.") @@ -203,28 +158,98 @@ class RoomScreenViewModelTests: XCTestCase { XCTAssertEqual(viewModel.state.timelineViewState.itemViewStates[2].groupStyle, .last, "Reactions on the last message should not prevent it from being grouped.") } + // MARK: - Focussing + + func testFocusItem() async throws { + // Given a room with 3 items loaded in a live timeline. + let items = [TextRoomTimelineItem(eventID: "t1"), + TextRoomTimelineItem(eventID: "t2"), + TextRoomTimelineItem(eventID: "t3")] + let timelineController = MockRoomTimelineController() + timelineController.timelineItems = items + + let viewModel = makeViewModel(timelineController: timelineController) + XCTAssertEqual(timelineController.focusOnEventCallCount, 0) + XCTAssertTrue(viewModel.context.viewState.timelineViewState.isLive) + XCTAssertNil(viewModel.context.viewState.timelineViewState.focussedEventID) + + // When focussing on an item that isn't loaded. + let deferred = deferFulfillment(viewModel.context.$viewState) { !$0.timelineViewState.isLive } + await viewModel.focusOnEvent(eventID: "t4") + try await deferred.fulfill() + + // Then a new timeline should be loaded and the room focussed on that event. + XCTAssertEqual(timelineController.focusOnEventCallCount, 1) + XCTAssertFalse(viewModel.context.viewState.timelineViewState.isLive) + XCTAssertEqual(viewModel.context.viewState.timelineViewState.focussedEventID, "t4") + } + + func testFocusLoadedItem() async throws { + // Given a room with 3 items loaded in a live timeline. + let items = [TextRoomTimelineItem(eventID: "t1"), + TextRoomTimelineItem(eventID: "t2"), + TextRoomTimelineItem(eventID: "t3")] + let timelineController = MockRoomTimelineController() + timelineController.timelineItems = items + + let viewModel = makeViewModel(timelineController: timelineController) + XCTAssertEqual(timelineController.focusOnEventCallCount, 0) + XCTAssertTrue(viewModel.context.viewState.timelineViewState.isLive) + XCTAssertNil(viewModel.context.viewState.timelineViewState.focussedEventID) + + // When focussing on a loaded item. + let deferred = deferFailure(viewModel.context.$viewState, timeout: 1) { !$0.timelineViewState.isLive } + await viewModel.focusOnEvent(eventID: "t1") + try await deferred.fulfill() + + // Then the timeline should remain live and the item should be focussed. + XCTAssertEqual(timelineController.focusOnEventCallCount, 0) + XCTAssertTrue(viewModel.context.viewState.timelineViewState.isLive) + XCTAssertEqual(viewModel.context.viewState.timelineViewState.focussedEventID, "t1") + } + + func testFocusLive() async throws { + // Given a room with a non-live timeline focussed on a particular event. + let items = [TextRoomTimelineItem(eventID: "t1"), + TextRoomTimelineItem(eventID: "t2"), + TextRoomTimelineItem(eventID: "t3")] + let timelineController = MockRoomTimelineController() + timelineController.timelineItems = items + + let viewModel = makeViewModel(timelineController: timelineController) + + var deferred = deferFulfillment(viewModel.context.$viewState) { !$0.timelineViewState.isLive } + await viewModel.focusOnEvent(eventID: "t4") + try await deferred.fulfill() + + XCTAssertEqual(timelineController.focusLiveCallCount, 0) + XCTAssertFalse(viewModel.context.viewState.timelineViewState.isLive) + XCTAssertEqual(viewModel.context.viewState.timelineViewState.focussedEventID, "t4") + + // When switching back to a live timeline. + deferred = deferFulfillment(viewModel.context.$viewState) { $0.timelineViewState.isLive } + viewModel.context.send(viewAction: .focusLive) + try await deferred.fulfill() + + // Then the timeline should switch back to being live and the event focus should be removed. + XCTAssertEqual(timelineController.focusLiveCallCount, 1) + XCTAssertTrue(viewModel.context.viewState.timelineViewState.isLive) + XCTAssertNil(viewModel.context.viewState.timelineViewState.focussedEventID) + } + // MARK: - Sending func testRetrySend() async throws { let timelineController = MockRoomTimelineController() - let roomProxyMock = RoomProxyMock(with: .init(name: "")) + let roomProxy = RoomProxyMock(with: .init(name: "")) let timelineProxy = TimelineProxyMock() timelineProxy.underlyingActions = Empty(completeImmediately: false).eraseToAnyPublisher() - roomProxyMock.underlyingTimeline = timelineProxy - timelineController.roomProxy = roomProxyMock + roomProxy.underlyingTimeline = timelineProxy + timelineController.roomProxy = roomProxy - let viewModel = RoomScreenViewModel(roomProxy: roomProxyMock, - timelineController: timelineController, - mediaProvider: MockMediaProvider(), - mediaPlayerProvider: MediaPlayerProviderMock(), - voiceMessageMediaManager: VoiceMessageMediaManagerMock(), - userIndicatorController: userIndicatorControllerMock, - appMediator: AppMediatorMock.default, - appSettings: ServiceLocator.shared.settings, - analyticsService: ServiceLocator.shared.analytics, - notificationCenter: NotificationCenterMock()) + let viewModel = makeViewModel(roomProxy: roomProxy, timelineController: timelineController) viewModel.context.send(viewAction: .retrySend(itemID: .init(timelineID: UUID().uuidString, transactionID: "test retry send id"))) @@ -236,23 +261,14 @@ class RoomScreenViewModelTests: XCTestCase { func testRetrySendNoTransactionID() async { let timelineController = MockRoomTimelineController() - let roomProxyMock = RoomProxyMock(with: .init(name: "")) + let roomProxy = RoomProxyMock(with: .init(name: "")) let timelineProxy = TimelineProxyMock() timelineProxy.underlyingActions = Empty(completeImmediately: false).eraseToAnyPublisher() - roomProxyMock.underlyingTimeline = timelineProxy + roomProxy.underlyingTimeline = timelineProxy - let viewModel = RoomScreenViewModel(roomProxy: roomProxyMock, - timelineController: timelineController, - mediaProvider: MockMediaProvider(), - mediaPlayerProvider: MediaPlayerProviderMock(), - voiceMessageMediaManager: VoiceMessageMediaManagerMock(), - userIndicatorController: userIndicatorControllerMock, - appMediator: AppMediatorMock.default, - appSettings: ServiceLocator.shared.settings, - analyticsService: ServiceLocator.shared.analytics, - notificationCenter: NotificationCenterMock()) + let viewModel = makeViewModel(roomProxy: roomProxy, timelineController: timelineController) viewModel.context.send(viewAction: .retrySend(itemID: .random)) @@ -263,24 +279,15 @@ class RoomScreenViewModelTests: XCTestCase { func testCancelSend() async { let timelineController = MockRoomTimelineController() - let roomProxyMock = RoomProxyMock(with: .init(name: "")) + let roomProxy = RoomProxyMock(with: .init(name: "")) let timelineProxy = TimelineProxyMock() timelineProxy.underlyingActions = Empty(completeImmediately: false).eraseToAnyPublisher() - roomProxyMock.underlyingTimeline = timelineProxy - timelineController.roomProxy = roomProxyMock + roomProxy.underlyingTimeline = timelineProxy + timelineController.roomProxy = roomProxy - let viewModel = RoomScreenViewModel(roomProxy: roomProxyMock, - timelineController: timelineController, - mediaProvider: MockMediaProvider(), - mediaPlayerProvider: MediaPlayerProviderMock(), - voiceMessageMediaManager: VoiceMessageMediaManagerMock(), - userIndicatorController: userIndicatorControllerMock, - appMediator: AppMediatorMock.default, - appSettings: ServiceLocator.shared.settings, - analyticsService: ServiceLocator.shared.analytics, - notificationCenter: NotificationCenterMock()) + let viewModel = makeViewModel(roomProxy: roomProxy, timelineController: timelineController) viewModel.context.send(viewAction: .cancelSend(itemID: .init(timelineID: UUID().uuidString, transactionID: "test cancel send id"))) @@ -292,23 +299,14 @@ class RoomScreenViewModelTests: XCTestCase { func testCancelSendNoTransactionID() async { let timelineController = MockRoomTimelineController() - let roomProxyMock = RoomProxyMock(with: .init(name: "")) + let roomProxy = RoomProxyMock(with: .init(name: "")) let timelineProxy = TimelineProxyMock() timelineProxy.underlyingActions = Empty(completeImmediately: false).eraseToAnyPublisher() - roomProxyMock.underlyingTimeline = timelineProxy + roomProxy.underlyingTimeline = timelineProxy - let viewModel = RoomScreenViewModel(roomProxy: roomProxyMock, - timelineController: timelineController, - mediaProvider: MockMediaProvider(), - mediaPlayerProvider: MediaPlayerProviderMock(), - voiceMessageMediaManager: VoiceMessageMediaManagerMock(), - userIndicatorController: userIndicatorControllerMock, - appMediator: AppMediatorMock.default, - appSettings: ServiceLocator.shared.settings, - analyticsService: ServiceLocator.shared.analytics, - notificationCenter: NotificationCenterMock()) + let viewModel = makeViewModel(roomProxy: roomProxy, timelineController: timelineController) viewModel.context.send(viewAction: .cancelSend(itemID: .random)) @@ -463,6 +461,21 @@ class RoomScreenViewModelTests: XCTestCase { viewModel.context.send(viewAction: .showReadReceipts(itemID: id)) try await deferred.fulfill() } + + // MARK: - Helpers + + private func makeViewModel(roomProxy: RoomProxyProtocol? = nil, timelineController: RoomTimelineControllerProtocol) -> RoomScreenViewModel { + RoomScreenViewModel(roomProxy: roomProxy ?? RoomProxyMock(with: .init(name: "")), + timelineController: timelineController, + mediaProvider: MockMediaProvider(), + mediaPlayerProvider: MediaPlayerProviderMock(), + voiceMessageMediaManager: VoiceMessageMediaManagerMock(), + userIndicatorController: userIndicatorControllerMock, + appMediator: AppMediatorMock.default, + appSettings: ServiceLocator.shared.settings, + analyticsService: ServiceLocator.shared.analytics, + notificationCenter: NotificationCenterMock()) + } } private extension TextRoomTimelineItem { diff --git a/UnitTests/Sources/UserSessionFlowCoordinatorTests.swift b/UnitTests/Sources/UserSessionFlowCoordinatorTests.swift index defb5c220..90732db97 100644 --- a/UnitTests/Sources/UserSessionFlowCoordinatorTests.swift +++ b/UnitTests/Sources/UserSessionFlowCoordinatorTests.swift @@ -196,6 +196,44 @@ class UserSessionFlowCoordinatorTests: XCTestCase { XCTAssertTrue(sheetStackCoordinator.rootCoordinator is UserProfileScreenCoordinator) } + func testRoomClearsStack() async throws { + try await process(route: .room(roomID: "1"), expectedState: .roomList(selectedRoomID: "1")) + XCTAssertTrue(detailNavigationStack?.rootCoordinator is RoomScreenCoordinator) + XCTAssertEqual(detailNavigationStack?.stackCoordinators.count, 0) + XCTAssertNotNil(detailCoordinator) + + userSessionFlowCoordinator.handleAppRoute(.childRoom(roomID: "2"), animated: true) + try await Task.sleep(for: .milliseconds(100)) + XCTAssertTrue(detailNavigationStack?.rootCoordinator is RoomScreenCoordinator) + XCTAssertEqual(detailNavigationStack?.stackCoordinators.count, 1) + XCTAssertTrue(detailNavigationStack?.stackCoordinators.first is RoomScreenCoordinator) + XCTAssertNotNil(detailCoordinator) + + try await process(route: .room(roomID: "3"), expectedState: .roomList(selectedRoomID: "3")) + XCTAssertTrue(detailNavigationStack?.rootCoordinator is RoomScreenCoordinator) + XCTAssertEqual(detailNavigationStack?.stackCoordinators.count, 0) + XCTAssertNotNil(detailCoordinator) + } + + func testEventRoutes() async throws { + try await process(route: .event(roomID: "1", eventID: "1"), expectedState: .roomList(selectedRoomID: "1")) + XCTAssertTrue(detailNavigationStack?.rootCoordinator is RoomScreenCoordinator) + XCTAssertEqual(detailNavigationStack?.stackCoordinators.count, 0) + XCTAssertNotNil(detailCoordinator) + + userSessionFlowCoordinator.handleAppRoute(.childEvent(roomID: "2", eventID: "2"), animated: true) + try await Task.sleep(for: .milliseconds(100)) + XCTAssertTrue(detailNavigationStack?.rootCoordinator is RoomScreenCoordinator) + XCTAssertEqual(detailNavigationStack?.stackCoordinators.count, 1) + XCTAssertTrue(detailNavigationStack?.stackCoordinators.first is RoomScreenCoordinator) + XCTAssertNotNil(detailCoordinator) + + try await process(route: .event(roomID: "3", eventID: "3"), expectedState: .roomList(selectedRoomID: "3")) + XCTAssertTrue(detailNavigationStack?.rootCoordinator is RoomScreenCoordinator) + XCTAssertEqual(detailNavigationStack?.stackCoordinators.count, 0) + XCTAssertNotNil(detailCoordinator) + } + // MARK: - Private private func process(route: AppRoute, expectedState: UserSessionFlowCoordinatorStateMachine.State) async throws {