From 41fdb3addefd097b0c6d282367de191e728b6a4c Mon Sep 17 00:00:00 2001 From: Thomas Ricouard Date: Thu, 16 Feb 2023 08:52:11 +0100 Subject: [PATCH] Various timeline fixes for smoother scrolling --- .../Sources/Status/Row/StatusRowView.swift | 3 --- .../Sources/Status/Row/StatusRowViewModel.swift | 17 +++++++++++++---- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/Packages/Status/Sources/Status/Row/StatusRowView.swift b/Packages/Status/Sources/Status/Row/StatusRowView.swift index 27d96211..a9d528a6 100644 --- a/Packages/Status/Sources/Status/Row/StatusRowView.swift +++ b/Packages/Status/Sources/Status/Row/StatusRowView.swift @@ -73,9 +73,6 @@ public struct StatusRowView: View { await viewModel.loadEmbeddedStatus() } } - if preferences.autoExpandSpoilers == true && viewModel.displaySpoiler { - viewModel.displaySpoiler = false - } } } .contextMenu { diff --git a/Packages/Status/Sources/Status/Row/StatusRowViewModel.swift b/Packages/Status/Sources/Status/Row/StatusRowViewModel.swift index 77b25363..b940ecef 100644 --- a/Packages/Status/Sources/Status/Row/StatusRowViewModel.swift +++ b/Packages/Status/Sources/Status/Row/StatusRowViewModel.swift @@ -39,7 +39,7 @@ public class StatusRowViewModel: ObservableObject { private let theme = Theme.shared - var seen = false + private var seen = false var filter: Filtered? { status.reblog?.filtered?.first ?? status.filtered?.first @@ -87,7 +87,11 @@ public class StatusRowViewModel: ObservableObject { favoritesCount = status.reblog?.favouritesCount ?? status.favouritesCount reblogsCount = status.reblog?.reblogsCount ?? status.reblogsCount repliesCount = status.reblog?.repliesCount ?? status.repliesCount - displaySpoiler = !(status.reblog?.spoilerText.asRawText ?? status.spoilerText.asRawText).isEmpty + if UserPreferences.shared.autoExpandSpoilers { + displaySpoiler = false + } else { + displaySpoiler = !(status.reblog?.spoilerText.asRawText ?? status.spoilerText.asRawText).isEmpty + } isFiltered = filter != nil } @@ -95,8 +99,13 @@ public class StatusRowViewModel: ObservableObject { func markSeen() { // called in on appear so we can cache that the status has been seen. if UserPreferences.shared.suppressDupeReblogs && !seen { - ReblogCache.shared.cache(status, seen: true) - seen = true + DispatchQueue.global().async { [weak self] in + guard let self else { return } + ReblogCache.shared.cache(self.status, seen: true) + Task { @MainActor in + self.seen = true + } + } } }