From ed94344edac9f8245ac310720a73f8a934be5cce Mon Sep 17 00:00:00 2001 From: Conny Duck Date: Fri, 9 May 2025 15:19:05 +0200 Subject: [PATCH] fix filtering boosts from the home timeline --- .../tusky/components/timeline/TimelineTypeMappers.kt | 4 +--- .../timeline/viewmodel/CachedTimelineViewModel.kt | 10 ++++------ .../timeline/viewmodel/NetworkTimelineViewModel.kt | 4 +--- .../components/timeline/viewmodel/TimelineViewModel.kt | 3 ++- 4 files changed, 8 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/com/keylesspalace/tusky/components/timeline/TimelineTypeMappers.kt b/app/src/main/java/com/keylesspalace/tusky/components/timeline/TimelineTypeMappers.kt index 701fe7901..bc25fc318 100644 --- a/app/src/main/java/com/keylesspalace/tusky/components/timeline/TimelineTypeMappers.kt +++ b/app/src/main/java/com/keylesspalace/tusky/components/timeline/TimelineTypeMappers.kt @@ -19,7 +19,6 @@ import com.keylesspalace.tusky.db.entity.HomeTimelineData import com.keylesspalace.tusky.db.entity.HomeTimelineEntity import com.keylesspalace.tusky.db.entity.TimelineAccountEntity import com.keylesspalace.tusky.db.entity.TimelineStatusEntity -import com.keylesspalace.tusky.entity.Filter import com.keylesspalace.tusky.entity.Status import com.keylesspalace.tusky.entity.TimelineAccount import com.keylesspalace.tusky.viewdata.StatusViewData @@ -147,7 +146,6 @@ fun TimelineStatusEntity.toStatus( fun HomeTimelineData.toViewData( isDetailed: Boolean = false, translation: TranslationViewData? = null, - filter: Filter? = null, ): StatusViewData { if (this.account == null || this.status == null) { return StatusViewData.LoadMore(this.id, loading) @@ -200,5 +198,5 @@ fun HomeTimelineData.toViewData( isDetailed = isDetailed, repliedToAccount = repliedToAccount?.toAccount(), translation = translation, - ).apply { this.filter = filter } + ) } diff --git a/app/src/main/java/com/keylesspalace/tusky/components/timeline/viewmodel/CachedTimelineViewModel.kt b/app/src/main/java/com/keylesspalace/tusky/components/timeline/viewmodel/CachedTimelineViewModel.kt index c1bd36d8d..72f663a4e 100644 --- a/app/src/main/java/com/keylesspalace/tusky/components/timeline/viewmodel/CachedTimelineViewModel.kt +++ b/app/src/main/java/com/keylesspalace/tusky/components/timeline/viewmodel/CachedTimelineViewModel.kt @@ -34,7 +34,6 @@ import com.keylesspalace.tusky.components.preference.PreferencesFragment.Reading import com.keylesspalace.tusky.components.preference.PreferencesFragment.ReadingOrder.OLDEST_FIRST import com.keylesspalace.tusky.components.timeline.LoadMorePlaceholder import com.keylesspalace.tusky.components.timeline.toEntity -import com.keylesspalace.tusky.components.timeline.toStatus import com.keylesspalace.tusky.components.timeline.toViewData import com.keylesspalace.tusky.components.timeline.util.ifExpected import com.keylesspalace.tusky.db.AccountManager @@ -101,13 +100,12 @@ class CachedTimelineViewModel @Inject constructor( .combine(translations) { pagingData, translations -> pagingData.map { timelineData -> val translation = translations[timelineData.status?.serverId] - val status = timelineData.account?.let { timelineData.status?.toStatus(it) } - val filter = status?.let { shouldFilterStatus(it) } - timelineData.toViewData( + val viewData = timelineData.toViewData( isDetailed = false, - translation = translation, - filter = filter, + translation = translation ) + viewData.filter = shouldFilterStatus(viewData) + viewData }.filter { statusViewData -> statusViewData.filter?.action != Filter.Action.HIDE } diff --git a/app/src/main/java/com/keylesspalace/tusky/components/timeline/viewmodel/NetworkTimelineViewModel.kt b/app/src/main/java/com/keylesspalace/tusky/components/timeline/viewmodel/NetworkTimelineViewModel.kt index 60bd6c76d..fedeaf53d 100644 --- a/app/src/main/java/com/keylesspalace/tusky/components/timeline/viewmodel/NetworkTimelineViewModel.kt +++ b/app/src/main/java/com/keylesspalace/tusky/components/timeline/viewmodel/NetworkTimelineViewModel.kt @@ -102,9 +102,7 @@ class NetworkTimelineViewModel @Inject constructor( ).flow .map { pagingData -> pagingData.filter(Dispatchers.Default.asExecutor()) { statusViewData -> - statusViewData.asStatusOrNull()?.actionable?.let { - shouldFilterStatus(it)?.action != Filter.Action.HIDE - } ?: true + shouldFilterStatus(statusViewData)?.action != Filter.Action.HIDE } } .flowOn(Dispatchers.Default) diff --git a/app/src/main/java/com/keylesspalace/tusky/components/timeline/viewmodel/TimelineViewModel.kt b/app/src/main/java/com/keylesspalace/tusky/components/timeline/viewmodel/TimelineViewModel.kt index d8ae99499..d9223f285 100644 --- a/app/src/main/java/com/keylesspalace/tusky/components/timeline/viewmodel/TimelineViewModel.kt +++ b/app/src/main/java/com/keylesspalace/tusky/components/timeline/viewmodel/TimelineViewModel.kt @@ -178,7 +178,8 @@ abstract class TimelineViewModel( /** Triggered when currently displayed data must be reloaded. */ protected abstract suspend fun invalidate() - protected fun shouldFilterStatus(status: Status): Filter? { + protected fun shouldFilterStatus(statusViewData: StatusViewData): Filter? { + val status = statusViewData.asStatusOrNull()?.status ?: return null return if ( (status.isReply && filterRemoveReplies) || (status.reblog != null && filterRemoveReblogs) ||