mirror of
https://github.com/Dimillian/IceCubesApp.git
synced 2024-11-25 17:51:01 +00:00
Completely remove stream for new statuses
This commit is contained in:
parent
be2939b13c
commit
6d289ebd09
1 changed files with 3 additions and 37 deletions
|
@ -149,11 +149,6 @@ extension TimelineViewModel: StatusesFetcher {
|
||||||
func pullToRefresh() async {
|
func pullToRefresh() async {
|
||||||
timelineTask?.cancel()
|
timelineTask?.cancel()
|
||||||
|
|
||||||
if !pendingStatusesObserver.pendingStatuses.isEmpty {
|
|
||||||
await dequeuePendingStatuses()
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
if !timeline.supportNewestPagination || UserPreferences.shared.fastRefreshEnabled {
|
if !timeline.supportNewestPagination || UserPreferences.shared.fastRefreshEnabled {
|
||||||
await reset()
|
await reset()
|
||||||
}
|
}
|
||||||
|
@ -303,23 +298,6 @@ extension TimelineViewModel: StatusesFetcher {
|
||||||
return newStatuses
|
return newStatuses
|
||||||
}
|
}
|
||||||
|
|
||||||
private func dequeuePendingStatuses() async {
|
|
||||||
canStreamEvents = false
|
|
||||||
pendingStatusesObserver.disableUpdate = true
|
|
||||||
let statuses = await datasource.getFiltered()
|
|
||||||
let newStatuses = pendingStatusesObserver.pendingStatuses.count + 1
|
|
||||||
statusesState = .display(statuses: statuses, nextPageState: .hasNextPage)
|
|
||||||
try? await Task.sleep(for: .milliseconds(0.005))
|
|
||||||
scrollToIndex = newStatuses
|
|
||||||
DispatchQueue.main.async { [weak self] in
|
|
||||||
self?.pendingStatusesObserver.disableUpdate = false
|
|
||||||
self?.canStreamEvents = true
|
|
||||||
}
|
|
||||||
if pendingStatusesObserver.pendingStatuses.count <= 2 {
|
|
||||||
pendingStatusesObserver.pendingStatuses = []
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private func updateTimelineWithNewStatuses(_ newStatuses: [Status]) async {
|
private func updateTimelineWithNewStatuses(_ newStatuses: [Status]) async {
|
||||||
let topStatus = await datasource.getFiltered().first
|
let topStatus = await datasource.getFiltered().first
|
||||||
await datasource.insert(contentOf: newStatuses, at: 0)
|
await datasource.insert(contentOf: newStatuses, at: 0)
|
||||||
|
@ -429,7 +407,8 @@ extension TimelineViewModel {
|
||||||
|
|
||||||
switch event {
|
switch event {
|
||||||
case let updateEvent as StreamEventUpdate:
|
case let updateEvent as StreamEventUpdate:
|
||||||
await handleUpdateEvent(updateEvent, client: client)
|
// Removed automatic stream for events.
|
||||||
|
break
|
||||||
case let deleteEvent as StreamEventDelete:
|
case let deleteEvent as StreamEventDelete:
|
||||||
await handleDeleteEvent(deleteEvent)
|
await handleDeleteEvent(deleteEvent)
|
||||||
case let statusUpdateEvent as StreamEventStatusUpdate:
|
case let statusUpdateEvent as StreamEventStatusUpdate:
|
||||||
|
@ -439,19 +418,6 @@ extension TimelineViewModel {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private func handleUpdateEvent(_ event: StreamEventUpdate, client: Client) async {
|
|
||||||
guard timeline == .home,
|
|
||||||
await !datasource.contains(statusId: event.status.id) else { return }
|
|
||||||
|
|
||||||
pendingStatusesObserver.pendingStatuses.insert(event.status.id, at: 0)
|
|
||||||
await datasource.insert(event.status, at: 0)
|
|
||||||
await cache()
|
|
||||||
StatusDataControllerProvider.shared.updateDataControllers(for: [event.status], client: client)
|
|
||||||
if scrollToTopVisible, pendingStatusesObserver.pendingStatuses.isEmpty {
|
|
||||||
await updateStatusesState()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private func handleDeleteEvent(_ event: StreamEventDelete) async {
|
private func handleDeleteEvent(_ event: StreamEventDelete) async {
|
||||||
await datasource.remove(event.status)
|
await datasource.remove(event.status)
|
||||||
await cache()
|
await cache()
|
||||||
|
|
Loading…
Reference in a new issue