about summary refs log tree commit diff
path: root/src/state/cache
diff options
context:
space:
mode:
Diffstat (limited to 'src/state/cache')
-rw-r--r--src/state/cache/post-shadow.ts12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/state/cache/post-shadow.ts b/src/state/cache/post-shadow.ts
index 923e5c000..3f9644879 100644
--- a/src/state/cache/post-shadow.ts
+++ b/src/state/cache/post-shadow.ts
@@ -14,6 +14,7 @@ import {findAllPostsInQueryData as findAllPostsInFeedQueryData} from '#/state/qu
 import {findAllPostsInQueryData as findAllPostsInQuoteQueryData} from '#/state/queries/post-quotes'
 import {findAllPostsInQueryData as findAllPostsInThreadQueryData} from '#/state/queries/post-thread'
 import {findAllPostsInQueryData as findAllPostsInSearchQueryData} from '#/state/queries/search-posts'
+import {useProfileShadow} from './profile-shadow'
 import {castAsShadow, type Shadow} from './types'
 export type {Shadow} from './types'
 
@@ -43,6 +44,10 @@ export function usePostShadow(
     setShadow(shadows.get(post))
   }
 
+  const authorShadow = useProfileShadow(post.author)
+  const wasMuted = !!authorShadow.viewer?.muted
+  const wasBlocked = !!authorShadow.viewer?.blocking
+
   useEffect(() => {
     function onUpdate() {
       setShadow(shadows.get(post))
@@ -54,15 +59,18 @@ export function usePostShadow(
   }, [post, setShadow])
 
   return useMemo(() => {
+    if (wasMuted || wasBlocked) {
+      return POST_TOMBSTONE
+    }
     if (shadow) {
       return mergeShadow(post, shadow)
     } else {
       return castAsShadow(post)
     }
-  }, [post, shadow])
+  }, [post, shadow, wasMuted, wasBlocked])
 }
 
-function mergeShadow(
+export function mergeShadow(
   post: AppBskyFeedDefs.PostView,
   shadow: Partial<PostShadow>,
 ): Shadow<AppBskyFeedDefs.PostView> | typeof POST_TOMBSTONE {