diff options
Diffstat (limited to 'src/state/models/feeds/posts-slice.ts')
-rw-r--r-- | src/state/models/feeds/posts-slice.ts | 34 |
1 files changed, 22 insertions, 12 deletions
diff --git a/src/state/models/feeds/posts-slice.ts b/src/state/models/feeds/posts-slice.ts index 239bc5b6a..16e4eef15 100644 --- a/src/state/models/feeds/posts-slice.ts +++ b/src/state/models/feeds/posts-slice.ts @@ -1,11 +1,8 @@ import {makeAutoObservable} from 'mobx' import {RootStoreModel} from '../root-store' import {FeedViewPostsSlice} from 'lib/api/feed-manip' -import {mergePostModerations} from 'lib/labeling/helpers' import {PostsFeedItemModel} from './post' -let _idCounter = 0 - export class PostsFeedSliceModel { // ui state _reactKey: string = '' @@ -13,15 +10,15 @@ export class PostsFeedSliceModel { // data items: PostsFeedItemModel[] = [] - constructor( - public rootStore: RootStoreModel, - reactKey: string, - slice: FeedViewPostsSlice, - ) { - this._reactKey = reactKey - for (const item of slice.items) { + constructor(public rootStore: RootStoreModel, slice: FeedViewPostsSlice) { + this._reactKey = slice._reactKey + for (let i = 0; i < slice.items.length; i++) { this.items.push( - new PostsFeedItemModel(rootStore, `slice-${_idCounter++}`, item), + new PostsFeedItemModel( + rootStore, + `${this._reactKey} - ${i}`, + slice.items[i], + ), ) } makeAutoObservable(this, {rootStore: false}) @@ -55,7 +52,20 @@ export class PostsFeedSliceModel { } get moderation() { - return mergePostModerations(this.items.map(item => item.moderation)) + // prefer the most stringent item + const topItem = this.items.find(item => item.moderation.content.filter) + if (topItem) { + return topItem.moderation + } + // otherwise just use the first one + return this.items[0].moderation + } + + shouldFilter(ignoreFilterForDid: string | undefined): boolean { + const mods = this.items + .filter(item => item.post.author.did !== ignoreFilterForDid) + .map(item => item.moderation) + return !!mods.find(mod => mod.content.filter) } containsUri(uri: string) { |