Always flush events when switching timelines

This commit is contained in:
William Casarin
2023-02-20 14:21:21 -08:00
parent 587819c8eb
commit 54dd2035a1
2 changed files with 10 additions and 2 deletions

View File

@@ -79,6 +79,10 @@ class EventHolder: ObservableObject {
}
func flush() {
guard !incoming.isEmpty else {
return
}
var changed = false
for event in incoming {
if insert_uniq_sorted_event_created(events: &events, new_ev: event) {

View File

@@ -56,14 +56,18 @@ struct TimelineView: View {
.buttonStyle(BorderlessButtonStyle())
.coordinateSpace(name: "scroll")
.onReceive(NotificationCenter.default.publisher(for: .scroll_to_top)) { _ in
let delay = events.has_incoming ? 0.1 : 0.0
events.flush()
guard let event = events.events.filter(self.filter).first else {
return
}
self.events.should_queue = false
events.flush()
scroll_to_event(scroller: scroller, id: event.id, delay: 0.0, animate: true, anchor: .top)
scroll_to_event(scroller: scroller, id: event.id, delay: delay, animate: true, anchor: .top)
}
}
.onAppear {
events.flush()
}
}
}