feat: add NSFW display policy setting
This commit is contained in:
parent
c2b0e6f666
commit
f6f974adc6
24 changed files with 185 additions and 53 deletions
|
|
@ -1,5 +1,5 @@
|
|||
import { useSecondaryPage } from '@/PageManager'
|
||||
import { ExtendedKind, SUPPORTED_KINDS } from '@/constants'
|
||||
import { ExtendedKind, NSFW_DISPLAY_POLICY, SUPPORTED_KINDS } from '@/constants'
|
||||
import { getParentStuff, isNsfwEvent } from '@/lib/event'
|
||||
import { toExternalContent, toNote } from '@/lib/link'
|
||||
import { useContentPolicy } from '@/providers/ContentPolicyProvider'
|
||||
|
|
@ -55,10 +55,14 @@ export default function Note({
|
|||
const { parentEventId, parentExternalContent } = useMemo(() => {
|
||||
return getParentStuff(event)
|
||||
}, [event])
|
||||
const { defaultShowNsfw } = useContentPolicy()
|
||||
const { nsfwDisplayPolicy } = useContentPolicy()
|
||||
const [showNsfw, setShowNsfw] = useState(false)
|
||||
const { mutePubkeySet } = useMuteList()
|
||||
const [showMuted, setShowMuted] = useState(false)
|
||||
const isNsfw = useMemo(
|
||||
() => (nsfwDisplayPolicy === NSFW_DISPLAY_POLICY.SHOW ? false : isNsfwEvent(event)),
|
||||
[event, nsfwDisplayPolicy]
|
||||
)
|
||||
|
||||
let content: React.ReactNode
|
||||
if (
|
||||
|
|
@ -72,7 +76,7 @@ export default function Note({
|
|||
content = <UnknownNote className="mt-2" event={event} />
|
||||
} else if (mutePubkeySet.has(event.pubkey) && !showMuted) {
|
||||
content = <MutedNote show={() => setShowMuted(true)} />
|
||||
} else if (!defaultShowNsfw && isNsfwEvent(event) && !showNsfw) {
|
||||
} else if (isNsfw && !showNsfw) {
|
||||
content = <NsfwNote show={() => setShowNsfw(true)} />
|
||||
} else if (event.kind === kinds.Highlights) {
|
||||
content = <Highlight className="mt-2" event={event} />
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
import { Skeleton } from '@/components/ui/skeleton'
|
||||
import { isMentioningMutedUsers } from '@/lib/event'
|
||||
import { NSFW_DISPLAY_POLICY } from '@/constants'
|
||||
import { isMentioningMutedUsers, isNsfwEvent } from '@/lib/event'
|
||||
import { cn } from '@/lib/utils'
|
||||
import { useContentPolicy } from '@/providers/ContentPolicyProvider'
|
||||
import { useMuteList } from '@/providers/MuteListProvider'
|
||||
|
|
@ -22,7 +23,7 @@ export default function NoteCard({
|
|||
reposters?: string[]
|
||||
}) {
|
||||
const { mutePubkeySet } = useMuteList()
|
||||
const { hideContentMentioningMutedUsers } = useContentPolicy()
|
||||
const { hideContentMentioningMutedUsers, nsfwDisplayPolicy } = useContentPolicy()
|
||||
const shouldHide = useMemo(() => {
|
||||
if (filterMutedNotes && mutePubkeySet.has(event.pubkey)) {
|
||||
return true
|
||||
|
|
@ -30,8 +31,11 @@ export default function NoteCard({
|
|||
if (hideContentMentioningMutedUsers && isMentioningMutedUsers(event, mutePubkeySet)) {
|
||||
return true
|
||||
}
|
||||
if (nsfwDisplayPolicy === NSFW_DISPLAY_POLICY.HIDE && isNsfwEvent(event)) {
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}, [event, filterMutedNotes, mutePubkeySet])
|
||||
}, [event, filterMutedNotes, mutePubkeySet, nsfwDisplayPolicy])
|
||||
if (shouldHide) return null
|
||||
|
||||
if (event.kind === kinds.Repost || event.kind === kinds.GenericRepost) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue