import ButtonGroup from '@components/forms/ButtonGroup' import Input from '@components/forms/Input' import Label from '@components/forms/Label' import Button from '@components/shared/Button' import SheenLoader from '@components/shared/SheenLoader' import { ChevronRightIcon, MagnifyingGlassIcon, NoSymbolIcon, UserIcon, } from '@heroicons/react/20/solid' import { PublicKey } from '@solana/web3.js' import { useHiddenMangoAccounts } from 'hooks/useHiddenMangoAccounts' import { useTranslation } from 'next-i18next' import { ChangeEvent, useState } from 'react' import { MANGO_DATA_API_URL } from 'utils/constants' import { abbreviateAddress } from 'utils/formatting' import { notify } from 'utils/notifications' const SEARCH_TYPES = [ 'mango-account', 'mango-account-name', 'profile-name', 'wallet-pk', 'open-orders-pk', ] const SearchPage = () => { const { t } = useTranslation('search') const [loading, setLoading] = useState(false) const [searchString, setSearchString] = useState('') const [searchResults, setSearchResults] = useState([]) const [searchType, setSearchType] = useState('mango-account') const [showNoResults, setShowNoResults] = useState(false) const [isAccountSearch, setIsAccountSearch] = useState(true) const { hiddenAccounts } = useHiddenMangoAccounts() const handleSearch = async () => { if ( searchType === 'mango-account' || searchType === 'mango-account-name' || searchType === 'open-orders-pk' ) { setIsAccountSearch(true) } else { setIsAccountSearch(false) } try { setLoading(true) const response = await fetch( `${MANGO_DATA_API_URL}/user-data/profile-search?search-string=${searchString}&search-method=${searchType}`, ) let data = await response.json() if (isAccountSearch && hiddenAccounts) { data = data.filter( (d: MangoAccountItem) => !hiddenAccounts.includes(d.mango_account_pk), ) } else if (hiddenAccounts) { data = data .map((d: WalletItem) => { const visibleMangoAccounts = d.mango_accounts.filter( (m) => !hiddenAccounts.includes(m.mango_account_pk), ) return { owner: d.owner, profile_name: d.profile_name, mango_accounts: visibleMangoAccounts, } }) .filter((d: WalletItem) => d.mango_accounts.length > 0) } setSearchResults(data) if (!data.length) { setShowNoResults(true) } } catch { notify({ title: t('search-failed'), type: 'error', }) } finally { setLoading(false) } } return (

{t('search-accounts')}