mirror of
https://github.com/oceanprotocol/market.git
synced 2024-12-02 05:57:29 +01:00
* add BSC to default chains * searchbar visual tweaks * race condition fix * network name tweaks * beta → v3 * use publish form titles to inform about network * form actions refactor * simplify network name on asset details * visual indicator for selected chains on button * lint fix * more layout flow tinkering, collapsed search by default * search field layout tweaks * unknown network/gaia-x name fixes * put back search cancel button in webkit * space fixes * cross browser visual fixes
137 lines
4.2 KiB
TypeScript
137 lines
4.2 KiB
TypeScript
import React, { ReactElement, useEffect, useState } from 'react'
|
|
import { formatCurrency } from '@coingecko/cryptoformat'
|
|
import { useUserPreferences } from '../../../providers/UserPreferences'
|
|
import Button from '../../atoms/Button'
|
|
import AddToken from '../../atoms/AddToken'
|
|
import Conversion from '../../atoms/Price/Conversion'
|
|
import { useWeb3 } from '../../../providers/Web3'
|
|
|
|
import Web3Feedback from '../Web3Feedback'
|
|
import styles from './Details.module.css'
|
|
import { getOceanConfig } from '../../../utils/ocean'
|
|
|
|
export default function Details(): ReactElement {
|
|
const {
|
|
web3Provider,
|
|
web3ProviderInfo,
|
|
web3Modal,
|
|
connect,
|
|
logout,
|
|
networkData,
|
|
networkId,
|
|
balance
|
|
} = useWeb3()
|
|
const { locale } = useUserPreferences()
|
|
|
|
const [mainCurrency, setMainCurrency] = useState<string>()
|
|
const [oceanTokenMetadata, setOceanTokenMetadata] =
|
|
useState<{
|
|
address: string
|
|
symbol: string
|
|
}>()
|
|
// const [portisNetwork, setPortisNetwork] = useState<string>()
|
|
|
|
useEffect(() => {
|
|
if (!networkId) return
|
|
|
|
const symbol =
|
|
networkId === 2021000 ? 'GX' : networkData?.nativeCurrency.symbol
|
|
setMainCurrency(symbol)
|
|
|
|
const oceanConfig = getOceanConfig(networkId)
|
|
|
|
oceanConfig &&
|
|
setOceanTokenMetadata({
|
|
address: oceanConfig.oceanTokenAddress,
|
|
symbol: oceanConfig.oceanTokenSymbol
|
|
})
|
|
}, [networkData, networkId])
|
|
|
|
// Handle network change for Portis
|
|
// async function handlePortisNetworkChange(e: ChangeEvent<HTMLSelectElement>) {
|
|
// setPortisNetwork(e.target.value)
|
|
// const portisNetworkName = e.target.value.toLowerCase()
|
|
// await web3Provider._portis.changeNetwork(portisNetworkName)
|
|
// // TODO: using our connect initializes a new Portis instance,
|
|
// // which then defaults back to initial network (Mainnet).
|
|
// // await connect()
|
|
// }
|
|
|
|
return (
|
|
<div className={styles.details}>
|
|
<ul>
|
|
{Object.entries(balance).map(([key, value]) => (
|
|
<li className={styles.balance} key={key}>
|
|
<span className={styles.symbol}>
|
|
{key === 'eth' ? mainCurrency : oceanTokenMetadata?.symbol}
|
|
</span>{' '}
|
|
{formatCurrency(Number(value), '', locale, false, {
|
|
significantFigures: 4
|
|
})}
|
|
{key === 'ocean' && <Conversion price={value} />}
|
|
</li>
|
|
))}
|
|
|
|
<li className={styles.actions}>
|
|
<div title="Connected provider" className={styles.walletInfo}>
|
|
<span className={styles.walletLogoWrap}>
|
|
<img className={styles.walletLogo} src={web3ProviderInfo?.logo} />
|
|
{web3ProviderInfo?.name}
|
|
</span>
|
|
{/* {web3ProviderInfo?.name === 'Portis' && (
|
|
<InputElement
|
|
name="network"
|
|
type="select"
|
|
options={['Mainnet', 'Ropsten', 'Rinkeby']}
|
|
size="mini"
|
|
value={portisNetwork}
|
|
onChange={handlePortisNetworkChange}
|
|
/>
|
|
)} */}
|
|
{web3ProviderInfo?.name === 'MetaMask' && (
|
|
<AddToken
|
|
address={oceanTokenMetadata?.address}
|
|
symbol={oceanTokenMetadata?.symbol}
|
|
logo="https://raw.githubusercontent.com/oceanprotocol/art/main/logo/token.png"
|
|
className={styles.addToken}
|
|
/>
|
|
)}
|
|
</div>
|
|
<p>
|
|
{web3ProviderInfo?.name === 'Portis' && (
|
|
<Button
|
|
style="text"
|
|
size="small"
|
|
onClick={() => web3Provider._portis.showPortis()}
|
|
>
|
|
Show Portis
|
|
</Button>
|
|
)}
|
|
<Button
|
|
style="text"
|
|
size="small"
|
|
onClick={async () => {
|
|
await web3Modal?.clearCachedProvider()
|
|
connect()
|
|
}}
|
|
>
|
|
Switch Wallet
|
|
</Button>
|
|
<Button
|
|
style="text"
|
|
size="small"
|
|
onClick={() => {
|
|
logout()
|
|
location.reload()
|
|
}}
|
|
>
|
|
Disconnect
|
|
</Button>
|
|
</p>
|
|
</li>
|
|
</ul>
|
|
<Web3Feedback />
|
|
</div>
|
|
)
|
|
}
|