import { FC, useEffect, useState } from 'react' import * as RadixDialog from '@radix-ui/react-dialog' import { Box, Button, Flex, Text } from 'components/primitives' import { FontAwesomeIcon } from '@fortawesome/react-fontawesome' import { faXmark } from '@fortawesome/free-solid-svg-icons' import { useRouter } from 'next/router' import { useAttributes } from '@reservoir0x/reservoir-kit-ui' import { AttributeSelector } from './AttributeSelector' import { clearAllAttributes } from 'utils/router' import { FullscreenModal } from 'components/common/FullscreenModal' import { NAVBAR_HEIGHT_MOBILE } from 'components/navbar' type Props = { attributes: ReturnType['data'] | undefined scrollToTop: () => void } export const MobileAttributeFilters: FC = ({ attributes, scrollToTop, }) => { const router = useRouter() const [filtersLength, setFiltersLength] = useState(0) useEffect(() => { let filters = [] // Extract all queries of attribute type Object.keys({ ...router.query }).map((key) => { if ( key.startsWith('attributes[') && key.endsWith(']') && router.query[key] !== '' ) { if (Array.isArray(router.query[key])) { let values = router.query[key] as string[] values.forEach((value) => { filters.push({ key: key.slice(11, -1), value: value }) }) } else { filters.push({ key: key.slice(11, -1), value: router.query[key] }) } } }) setFiltersLength(filters.length) }, [router.query]) let filtersEnabled = filtersLength > 0 const trigger = ( ) if ( (attributes && attributes?.length === 0) || attributes === null || attributes === undefined ) { return null } return ( {' '} Filter {filtersEnabled && ( {filtersLength} )} {filtersEnabled && ( )} {attributes && attributes .filter((attribute) => attribute.kind != 'number') .map((attribute) => ( ))} ) }