Improve history view performance

This commit is contained in:
Arkadiusz Fal 2023-05-23 18:49:14 +02:00
parent eed9330c0c
commit 1e23809359

View File

@ -8,6 +8,12 @@ struct HistoryView: View {
@ObservedObject private var player = PlayerModel.shared
@State private var visibleWatches = [Watch]()
init(limit: Int = 10) {
self.limit = limit
}
var body: some View {
LazyVStack {
if visibleWatches.isEmpty {
@ -30,14 +36,13 @@ struct HistoryView: View {
}
}
.animation(nil, value: visibleWatches)
.onAppear {
visibleWatches
.forEach(player.loadHistoryVideoDetails)
}
.onAppear(perform: reloadVisibleWatches)
.onChange(of: player.currentVideo) { _ in reloadVisibleWatches() }
}
private var visibleWatches: [Watch] {
Array(watches.filter { $0.videoID != player.currentVideo?.videoID }.prefix(limit))
func reloadVisibleWatches() {
visibleWatches = Array(watches.filter { $0.videoID != player.currentVideo?.videoID }.prefix(limit))
visibleWatches.forEach(player.loadHistoryVideoDetails)
}
}