import { Dispatch, FC, SetStateAction, useRef, useMemo } from 'react' import * as RadixDialog from '@radix-ui/react-dialog' import { Button, Flex, Switch, Text } from 'components/primitives' import Image from 'next/image' import { FullscreenModal } from 'components/common/FullscreenModal' import { FontAwesomeIcon } from '@fortawesome/react-fontawesome' import { faXmark } from '@fortawesome/free-solid-svg-icons' import { paths } from '@reservoir0x/reservoir-sdk' import { useUserCollections } from '@reservoir0x/reservoir-kit-ui' import { NAVBAR_HEIGHT_MOBILE } from 'components/navbar' import { OpenSeaVerified } from './OpenSeaVerified' import LoadMoreCollections from 'components/common/LoadMoreCollections' import optimizeImage from 'utils/optimizeImage' type Collections = | paths['/users/{user}/collections/v2']['get']['responses']['200']['schema']['collections'] | ReturnType['data'] type Props = { hideSpam: boolean setHideSpam: Dispatch> collections: Collections filterCollection: string | undefined setFilterCollection: Dispatch> loadMoreCollections: () => void } export const MobileTokenFilters: FC = ({ collections, filterCollection, setFilterCollection, loadMoreCollections, hideSpam, setHideSpam, }) => { const triggerRef = useRef(null) const trigger = ( ) if (collections?.length === 0 || collections == null) { return null } return ( {' '} Filter Collections Hide Spam setHideSpam(checked)} /> {collections?.map((collection) => { let selected = collection?.collection?.id == filterCollection return ( { if (selected) { setFilterCollection(undefined) } else { setFilterCollection(collection?.collection?.id) } triggerRef?.current?.click() }} > {collection?.collection?.image && ( src} src={optimizeImage( collection?.collection?.image as string, 250 )} alt={collection?.collection?.name as string} width={24} height={24} /> )} {collection?.collection?.name} {collection?.ownership?.tokenCount} ) })} ) }