An ATproto social media client -- with an independent Appview.

Add feed tuner to remove muted threads (#8773)

authored by

kindgracekind and committed by
GitHub
b3256826 9aa35e9f

+22 -2
+16
src/lib/api/feed-manip.ts
··· 41 41 isIncompleteThread: boolean 42 42 isFallbackMarker: boolean 43 43 isOrphan: boolean 44 + isThreadMuted: boolean 44 45 rootUri: string 45 46 feedPostUri: string 46 47 ··· 50 51 this.isIncompleteThread = false 51 52 this.isFallbackMarker = false 52 53 this.isOrphan = false 54 + this.isThreadMuted = post.viewer?.threadMuted ?? false 53 55 this.feedPostUri = post.uri 54 56 if (AppBskyFeedDefs.isPostView(reply?.root)) { 55 57 this.rootUri = reply.root.uri ··· 354 356 ) { 355 357 for (let i = 0; i < slices.length; i++) { 356 358 if (slices[i].isOrphan) { 359 + slices.splice(i, 1) 360 + i-- 361 + } 362 + } 363 + return slices 364 + } 365 + 366 + static removeMutedThreads( 367 + tuner: FeedTuner, 368 + slices: FeedViewPostsSlice[], 369 + _dryRun: boolean, 370 + ) { 371 + for (let i = 0; i < slices.length; i++) { 372 + if (slices[i].isThreadMuted) { 357 373 slices.splice(i, 1) 358 374 i-- 359 375 }
+6 -2
src/state/preferences/feed-tuners.tsx
··· 1 1 import {useMemo} from 'react' 2 2 3 3 import {FeedTuner} from '#/lib/api/feed-manip' 4 - import {FeedDescriptor} from '../queries/post-feed' 4 + import {type FeedDescriptor} from '../queries/post-feed' 5 5 import {usePreferencesQuery} from '../queries/preferences' 6 6 import {useSession} from '../session' 7 7 import {useLanguagePrefs} from './languages' ··· 19 19 } 20 20 } 21 21 if (feedDesc.startsWith('feedgen')) { 22 - return [FeedTuner.preferredLangOnly(langPrefs.contentLanguages)] 22 + return [ 23 + FeedTuner.preferredLangOnly(langPrefs.contentLanguages), 24 + FeedTuner.removeMutedThreads, 25 + ] 23 26 } 24 27 if (feedDesc === 'following' || feedDesc.startsWith('list')) { 25 28 const feedTuners = [FeedTuner.removeOrphans] ··· 40 43 feedTuners.push(FeedTuner.removeQuotePosts) 41 44 } 42 45 feedTuners.push(FeedTuner.dedupThreads) 46 + feedTuners.push(FeedTuner.removeMutedThreads) 43 47 44 48 return feedTuners 45 49 }