diff options
Diffstat (limited to 'src/state/threadgate-hidden-replies.tsx')
-rw-r--r-- | src/state/threadgate-hidden-replies.tsx | 16 |
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]) +} |