diff options
author | Paul Frazee <pfrazee@gmail.com> | 2023-04-28 20:03:13 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-04-28 20:03:13 -0500 |
commit | a95c03e280ca153ba4a98d6b81ff9d743d4adcaa (patch) | |
tree | d3a63bcc87d24ad4c8e6e3893be0b54aca12b553 /src/state/models/feeds/posts.ts | |
parent | e68aa75429c2a0a495105f641361ee8fe22370f1 (diff) | |
download | voidsky-a95c03e280ca153ba4a98d6b81ff9d743d4adcaa.tar.zst |
Implement blocks (#554)
* Quick fix to prompt * Add blocked accounts screen * Add blocking tools to profile * Blur avis/banners of blocked users * Factor blocking state into moderation dsl * Filter post slices from the feed if any are hidden * Handle various block UIs * Filter in the client on blockedBy * Implement block list * Fix some copy * Bump deps * Fix lint
Diffstat (limited to 'src/state/models/feeds/posts.ts')
-rw-r--r-- | src/state/models/feeds/posts.ts | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/src/state/models/feeds/posts.ts b/src/state/models/feeds/posts.ts index 62c6da3de..62047acba 100644 --- a/src/state/models/feeds/posts.ts +++ b/src/state/models/feeds/posts.ts @@ -23,7 +23,11 @@ import {updateDataOptimistically} from 'lib/async/revertible' import {PostLabelInfo, PostModeration} from 'lib/labeling/types' import { getEmbedLabels, + getEmbedMuted, + getEmbedBlocking, + getEmbedBlockedBy, getPostModeration, + mergePostModerations, filterAccountLabels, filterProfileLabels, } from 'lib/labeling/helpers' @@ -97,7 +101,18 @@ export class PostsFeedItemModel { ), accountLabels: filterAccountLabels(this.post.author.labels), profileLabels: filterProfileLabels(this.post.author.labels), - isMuted: this.post.author.viewer?.muted || false, + isMuted: + this.post.author.viewer?.muted || + getEmbedMuted(this.post.embed) || + false, + isBlocking: + !!this.post.author.viewer?.blocking || + getEmbedBlocking(this.post.embed) || + false, + isBlockedBy: + !!this.post.author.viewer?.blockedBy || + getEmbedBlockedBy(this.post.embed) || + false, } } @@ -240,6 +255,10 @@ export class PostsFeedSliceModel { return this.items[0] } + get moderation() { + return mergePostModerations(this.items.map(item => item.moderation)) + } + containsUri(uri: string) { return !!this.items.find(item => item.post.uri === uri) } @@ -265,6 +284,8 @@ export class PostsFeedModel { isRefreshing = false hasNewLatest = false hasLoaded = false + isBlocking = false + isBlockedBy = false error = '' loadMoreError = '' params: GetTimeline.QueryParams | GetAuthorFeed.QueryParams @@ -553,6 +574,8 @@ export class PostsFeedModel { this.isLoading = false this.isRefreshing = false this.hasLoaded = true + this.isBlocking = error instanceof GetAuthorFeed.BlockedActorError + this.isBlockedBy = error instanceof GetAuthorFeed.BlockedByActorError this.error = cleanError(error) this.loadMoreError = cleanError(loadMoreError) if (error) { |