* update deps * revert react dep updates * chore: update deps to beta.50 * fix: get dapp running again up to Client.connect() * save progress * feat(debug): sets up a debug peerClient as responder * refactor: remove more hardcoded example connect params * fix: gets `checkPersistedState` working again * fix: gets client.disconnect + effects working again * feat: integrates `session_update` handling with namespaces * fix: remove hardcoded `chains` * stash progress * Establish session * save progress - established session with example dapp * refactor: rewrite namespace helpers to handle `requiredNamespaces` (#23) * fix: re-enables restoring persisted session * refactor: remove debug peerClient code * fix: re-enables restoring persisted pairings * Save progress * fix: re-enables pairing modal, connecting from existing pairing * Update modals to handle new payloads * fix(types): fix Metadata typing * chore(deps): upgrade to beta.53 * refactor: adjusts event handler args for beta.53 `session_update` * stash * fix: adds missing keys for `DEFAULT_EIP155_EVENTS` enum * stash * chore: update comment for client.request typing FIXME * feat: integrate beta.54 * feat: integrate beta.55, removes FIXME comments for client.request types * chore: clean up unused import * fix: log session_ping event * fix: log incoming `session_event` * chore: upgrade client@2.0.0-beta.55 -> sign-client@2.0.0-beta.56 * chore: integrate beta.57 * New beta changes (#24) * smal lchange * fix types * Add package info * format empty methods / events * Update deps * adjust styles * attempt ios layout fix * Revert "attempt ios layout fix" This reverts commit f0176f2ef52f338980ee54e75a767b3d452733f2. * beta.54 * fix build * Update to beta 55 * Add todos * update wallet to beta 56 * Update mumbai rpc add logger * update to beta 57 * chore: adds note on beta.100 compatibility * plock * beta.58 * beta.100; Co-authored-by: Ilja <idaderko@gmail.com> Co-authored-by: Ben Kremer <ben@walletconnect.com> Co-authored-by: Ilja <IljaDaderko@users.noreply.github.com>
87 lines
2.5 KiB
TypeScript
87 lines
2.5 KiB
TypeScript
import ChainCard from '@/components/ChainCard'
|
|
import { COSMOS_MAINNET_CHAINS } from '@/data/COSMOSData'
|
|
import { EIP155_MAINNET_CHAINS, EIP155_TEST_CHAINS } from '@/data/EIP155Data'
|
|
import { SOLANA_MAINNET_CHAINS, SOLANA_TEST_CHAINS } from '@/data/SolanaData'
|
|
import { formatChainName } from '@/utils/HelperUtil'
|
|
import { Col, Row, Text } from '@nextui-org/react'
|
|
import { SessionTypes } from '@walletconnect/types'
|
|
import { Fragment } from 'react'
|
|
|
|
/**
|
|
* Utilities
|
|
*/
|
|
const CHAIN_METADATA = {
|
|
...COSMOS_MAINNET_CHAINS,
|
|
...SOLANA_MAINNET_CHAINS,
|
|
...EIP155_MAINNET_CHAINS,
|
|
...EIP155_TEST_CHAINS,
|
|
...SOLANA_TEST_CHAINS
|
|
}
|
|
|
|
/**
|
|
* Types
|
|
*/
|
|
interface IProps {
|
|
namespace: SessionTypes.Namespace
|
|
}
|
|
|
|
/**
|
|
* Component
|
|
*/
|
|
export default function SessionChainCard({ namespace }: IProps) {
|
|
const chains: string[] = []
|
|
|
|
// WIP
|
|
|
|
namespace.accounts.forEach(account => {
|
|
const [type, chain] = account.split(':')
|
|
const chainId = `${type}:${chain}`
|
|
chains.push(chainId)
|
|
})
|
|
|
|
return (
|
|
<Fragment>
|
|
{chains.map(chainId => {
|
|
const extensionMethods: SessionTypes.Namespace['methods'] = []
|
|
const extensionEvents: SessionTypes.Namespace['events'] = []
|
|
|
|
namespace.extension?.map(({ accounts, methods, events }) => {
|
|
accounts.forEach(account => {
|
|
const [type, chain] = account.split(':')
|
|
const chainId = `${type}:${chain}`
|
|
if (chains.includes(chainId)) {
|
|
extensionMethods.push(...methods)
|
|
extensionEvents.push(...events)
|
|
}
|
|
})
|
|
})
|
|
|
|
const allMethods = [...namespace.methods, ...extensionMethods]
|
|
const allEvents = [...namespace.events, ...extensionEvents]
|
|
// @ts-expect-error
|
|
const rgb = CHAIN_METADATA[chainId]?.rgb
|
|
|
|
return (
|
|
<ChainCard key={chainId} rgb={rgb ?? ''} flexDirection="col" alignItems="flex-start">
|
|
<Text h5 css={{ marginBottom: '$5' }}>
|
|
{formatChainName(chainId)}
|
|
</Text>
|
|
<Row>
|
|
<Col>
|
|
<Text h6>Methods</Text>
|
|
<Text color="$gray300">{allMethods.length ? allMethods.join(', ') : '-'}</Text>
|
|
</Col>
|
|
</Row>
|
|
<Row css={{ marginTop: '$5' }}>
|
|
<Col>
|
|
<Text h6>Events</Text>
|
|
<Text color="$gray300">{allEvents.length ? allEvents.join(', ') : '-'}</Text>
|
|
</Col>
|
|
</Row>
|
|
</ChainCard>
|
|
)
|
|
})}
|
|
</Fragment>
|
|
)
|
|
}
|