Always flush events when switching timelines
This commit is contained in:
@@ -79,6 +79,10 @@ class EventHolder: ObservableObject {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func flush() {
|
func flush() {
|
||||||
|
guard !incoming.isEmpty else {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
var changed = false
|
var changed = false
|
||||||
for event in incoming {
|
for event in incoming {
|
||||||
if insert_uniq_sorted_event_created(events: &events, new_ev: event) {
|
if insert_uniq_sorted_event_created(events: &events, new_ev: event) {
|
||||||
|
|||||||
@@ -56,14 +56,18 @@ struct TimelineView: View {
|
|||||||
.buttonStyle(BorderlessButtonStyle())
|
.buttonStyle(BorderlessButtonStyle())
|
||||||
.coordinateSpace(name: "scroll")
|
.coordinateSpace(name: "scroll")
|
||||||
.onReceive(NotificationCenter.default.publisher(for: .scroll_to_top)) { _ in
|
.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 {
|
guard let event = events.events.filter(self.filter).first else {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
self.events.should_queue = false
|
self.events.should_queue = false
|
||||||
events.flush()
|
scroll_to_event(scroller: scroller, id: event.id, delay: delay, animate: true, anchor: .top)
|
||||||
scroll_to_event(scroller: scroller, id: event.id, delay: 0.0, animate: true, anchor: .top)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.onAppear {
|
||||||
|
events.flush()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user