Cache streamed status

This commit is contained in:
Thomas Ricouard 2023-02-01 13:28:04 +01:00
parent 4e77669181
commit ed80895fcd

View file

@ -72,17 +72,26 @@ class TimelineViewModel: ObservableObject {
{ {
pendingStatusesObserver.pendingStatuses.insert(event.status.id, at: 0) pendingStatusesObserver.pendingStatuses.insert(event.status.id, at: 0)
statuses.insert(event.status, at: 0) statuses.insert(event.status, at: 0)
Task {
await cache(statuses: statuses)
}
withAnimation { withAnimation {
statusesState = .display(statuses: statuses, nextPageState: .hasNextPage) statusesState = .display(statuses: statuses, nextPageState: .hasNextPage)
} }
} else if let event = event as? StreamEventDelete { } else if let event = event as? StreamEventDelete {
withAnimation { withAnimation {
statuses.removeAll(where: { $0.id == event.status }) statuses.removeAll(where: { $0.id == event.status })
Task {
await cache(statuses: statuses)
}
statusesState = .display(statuses: statuses, nextPageState: .hasNextPage) statusesState = .display(statuses: statuses, nextPageState: .hasNextPage)
} }
} else if let event = event as? StreamEventStatusUpdate { } else if let event = event as? StreamEventStatusUpdate {
if let originalIndex = statuses.firstIndex(where: { $0.id == event.status.id }) { if let originalIndex = statuses.firstIndex(where: { $0.id == event.status.id }) {
statuses[originalIndex] = event.status statuses[originalIndex] = event.status
Task {
await cache(statuses: statuses)
}
statusesState = .display(statuses: statuses, nextPageState: .hasNextPage) statusesState = .display(statuses: statuses, nextPageState: .hasNextPage)
} }
} }