import { LOCAL_STORAGE_KEYS } from 'common' import { useParams } from 'common/hooks' import { AnimatePresence, motion } from 'framer-motion' import { Check, Loader2, Terminal } from 'lucide-react' import { useEffect, useState } from 'react' import { Badge, Button, cn } from 'ui' import { BannerCard } from '../BannerCard' import { useBannerStack } from '../BannerStackProvider' import { useFeaturePreviewModal } from '@/components/interfaces/App/FeaturePreview/FeaturePreviewContext' import { useLocalStorageQuery } from '@/hooks/misc/useLocalStorage' const text = 'select * from colors' export const BannerRlsTester = () => { const { ref } = useParams() const { selectFeaturePreview } = useFeaturePreviewModal() const [runQueryAnimate, setRunQueryAnimate] = useState(false) const [showSummary, setShowSummary] = useState(false) const { dismissBanner } = useBannerStack() const [, setIsDismissed] = useLocalStorageQuery( LOCAL_STORAGE_KEYS.RLS_TESTER_BANNER_DISMISSED(ref ?? ''), false ) useEffect(() => { setTimeout(() => setRunQueryAnimate(true), 2400) }, []) useEffect(() => { if (runQueryAnimate) { setTimeout(() => setShowSummary(true), 1700) } }, [runQueryAnimate]) return ( { setIsDismissed(true) dismissBanner('rls-tester-banner') }} >
Preview
{runQueryAnimate && !showSummary ? ( ) : ( )}

{text}

{showSummary && (

Can access public.colors

2 policies applied

)}

Row Level Security (RLS) Tester

Verify your RLS policies are correct by running queries as a specific user

) }