Add the empty state to SpaceScreen. (#4985)

* Rename PaginationState.timelineEndReached to PaginationState.endReached.

* Rename PaginationState to TimelinePaginationState.

Also renames PaginationStatus to PaginationState so that a TimelinePaginationState consists of the forward and backward pagination states.

* Add the empty state to SpaceScreen.

Only has 1 of the 2 buttons for now.
This commit is contained in:
Doug
2026-01-22 12:37:34 +00:00
committed by GitHub
parent b4b9f6affa
commit cea365ac97
30 changed files with 164 additions and 94 deletions
@@ -17622,17 +17622,17 @@ class TimelineControllerFactoryMock: TimelineControllerFactoryProtocol, @uncheck
}
}
class TimelineItemProviderMock: TimelineItemProviderProtocol, @unchecked Sendable {
var updatePublisher: AnyPublisher<([TimelineItemProxy], PaginationState), Never> {
var updatePublisher: AnyPublisher<([TimelineItemProxy], TimelinePaginationState), Never> {
get { return underlyingUpdatePublisher }
set(value) { underlyingUpdatePublisher = value }
}
var underlyingUpdatePublisher: AnyPublisher<([TimelineItemProxy], PaginationState), Never>!
var underlyingUpdatePublisher: AnyPublisher<([TimelineItemProxy], TimelinePaginationState), Never>!
var itemProxies: [TimelineItemProxy] = []
var paginationState: PaginationState {
var paginationState: TimelinePaginationState {
get { return underlyingPaginationState }
set(value) { underlyingPaginationState = value }
}
var underlyingPaginationState: PaginationState!
var underlyingPaginationState: TimelinePaginationState!
var kind: TimelineKind {
get { return underlyingKind }
set(value) { underlyingKind = value }
@@ -15,7 +15,7 @@ import MatrixRustSDKMocks
class AutoUpdatingTimelineItemProviderMock: TimelineItemProvider {
static var timelineListener: TimelineListener?
private let innerPaginationStatePublisher: PassthroughSubject<PaginationState, Never>
private let innerPaginationStatePublisher: PassthroughSubject<TimelinePaginationState, Never>
init() {
innerPaginationStatePublisher = .init()
@@ -30,7 +30,7 @@ extension TimelineProxyMock {
underlyingTimelineItemProvider = AutoUpdatingTimelineItemProviderMock()
} else {
let timelineItemProvider = TimelineItemProviderMock()
timelineItemProvider.paginationState = .init(backward: configuration.timelineStartReached ? .timelineEndReached : .idle, forward: .timelineEndReached)
timelineItemProvider.paginationState = .init(backward: configuration.timelineStartReached ? .endReached : .idle, forward: .endReached)
timelineItemProvider.underlyingMembershipChangePublisher = PassthroughSubject().eraseToAnyPublisher()
underlyingTimelineItemProvider = timelineItemProvider
}