mirror of https://git.lenooby09.tech/LeNooby09/social-app.git
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

at verify-intent 89 lines 2.2 kB view raw
1import React from 'react' 2import {ModerationUI} from '@atproto/api' 3 4import { 5 ModerationCauseDescription, 6 useModerationCauseDescription, 7} from '#/lib/moderation/useModerationCauseDescription' 8import { 9 ModerationDetailsDialog, 10 useModerationDetailsDialogControl, 11} from '#/components/moderation/ModerationDetailsDialog' 12 13type Context = { 14 isContentVisible: boolean 15 setIsContentVisible: (show: boolean) => void 16 info: ModerationCauseDescription 17 showInfoDialog: () => void 18 meta: { 19 isNoPwi: boolean 20 allowOverride: boolean 21 } 22} 23 24const Context = React.createContext<Context>({} as Context) 25 26export const useHider = () => React.useContext(Context) 27 28export function Outer({ 29 modui, 30 isContentVisibleInitialState, 31 allowOverride, 32 children, 33}: React.PropsWithChildren<{ 34 isContentVisibleInitialState?: boolean 35 allowOverride?: boolean 36 modui: ModerationUI | undefined 37}>) { 38 const control = useModerationDetailsDialogControl() 39 const blur = modui?.blurs[0] 40 const [isContentVisible, setIsContentVisible] = React.useState( 41 isContentVisibleInitialState || !blur, 42 ) 43 const info = useModerationCauseDescription(blur) 44 45 const meta = { 46 isNoPwi: Boolean( 47 modui?.blurs.find( 48 cause => 49 cause.type === 'label' && 50 cause.labelDef.identifier === '!no-unauthenticated', 51 ), 52 ), 53 allowOverride: allowOverride ?? !modui?.noOverride, 54 } 55 56 const showInfoDialog = () => { 57 control.open() 58 } 59 60 const onSetContentVisible = (show: boolean) => { 61 if (!meta.allowOverride) return 62 setIsContentVisible(show) 63 } 64 65 const ctx = { 66 isContentVisible, 67 setIsContentVisible: onSetContentVisible, 68 showInfoDialog, 69 info, 70 meta, 71 } 72 73 return ( 74 <Context.Provider value={ctx}> 75 {children} 76 <ModerationDetailsDialog control={control} modcause={blur} /> 77 </Context.Provider> 78 ) 79} 80 81export function Content({children}: {children: React.ReactNode}) { 82 const ctx = useHider() 83 return ctx.isContentVisible ? children : null 84} 85 86export function Mask({children}: {children: React.ReactNode}) { 87 const ctx = useHider() 88 return ctx.isContentVisible ? null : children 89}