about summary refs log tree commit diff
path: root/src/state/threadgate-hidden-replies.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'src/state/threadgate-hidden-replies.tsx')
-rw-r--r--src/state/threadgate-hidden-replies.tsx16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/state/threadgate-hidden-replies.tsx b/src/state/threadgate-hidden-replies.tsx
index 06fc22366..60806f570 100644
--- a/src/state/threadgate-hidden-replies.tsx
+++ b/src/state/threadgate-hidden-replies.tsx
@@ -1,4 +1,5 @@
 import React from 'react'
+import {AppBskyFeedThreadgate} from '@atproto/api'
 
 type StateContext = {
   uris: Set<string>
@@ -67,3 +68,18 @@ export function useThreadgateHiddenReplyUris() {
 export function useThreadgateHiddenReplyUrisAPI() {
   return React.useContext(ApiContext)
 }
+
+export function useMergedThreadgateHiddenReplies({
+  threadgateRecord,
+}: {
+  threadgateRecord?: AppBskyFeedThreadgate.Record
+}) {
+  const {uris, recentlyUnhiddenUris} = useThreadgateHiddenReplyUris()
+  return React.useMemo(() => {
+    const set = new Set([...(threadgateRecord?.hiddenReplies || []), ...uris])
+    for (const uri of recentlyUnhiddenUris) {
+      set.delete(uri)
+    }
+    return set
+  }, [uris, recentlyUnhiddenUris, threadgateRecord])
+}