mirror of
https://github.com/oceanprotocol/market.git
synced 2024-12-02 05:57:29 +01:00
* wagmi + ethers + web3modal setup * refactor wallet components * fallback providers, more config * kick out useWeb3 * remove all useWeb3 imports * more web3.js usage removal * isAddress utils replacement * restore add token / add network * less accountId changes * web3 legacy tinkering, utils/web3 → utils/wallet * legacy web3 object for ocean.js * graph sync fix, remove custom network switching code * package updates, merge fixes * downgrade to ethers v5 * fix project id * switch to ConnectKit * connectkit theming * add existing chains to wagmi * rewrite getPaymentCollector() * kick out getPaymentCollector completely, use wagmi hooks instead * Revert "kick out getPaymentCollector completely, use wagmi hooks instead" This reverts commit 54c7d1ef1a2dec0b1575a685125ba78336b30f59. * switch getPaymentCollector * calcBaseInGivenDatatokensOut reorg * wip integrate ocean lib 3.0.0 * update orbis components to use wagmi instead of web hooks * more oceanjs integration updates * more refactors * fix build * update ocean lib * fix publish * fix order fixed rate * remove logs * debug and stop infinite cycle orbis connect * fix orbis dm connection * mock use network and fix some more tests * mock wagmi switch network * mock wagmi useProvider createClient and connectKit getDefaultClient * fix jest tests * try storybook fix * cleanups and bump ocean lib * fix order * bump lib to next.5 and add more modal style * bump ocean.js lib to 3.0.0 --------- Co-authored-by: Matthias Kretschmann <m@kretschmann.io>
66 lines
2.1 KiB
TypeScript
66 lines
2.1 KiB
TypeScript
import React, { ReactElement, useEffect, useState } from 'react'
|
|
import Status from '@shared/atoms/Status'
|
|
import styles from './index.module.css'
|
|
import WalletNetworkSwitcher from '../WalletNetworkSwitcher'
|
|
import { useGraphSyncStatus } from '@hooks/useGraphSyncStatus'
|
|
|
|
export declare type Web3Error = {
|
|
status: 'error' | 'warning' | 'success'
|
|
title: string
|
|
message?: string
|
|
}
|
|
|
|
export default function Web3Feedback({
|
|
networkId,
|
|
accountId,
|
|
isAssetNetwork
|
|
}: {
|
|
networkId: number
|
|
accountId: string
|
|
isAssetNetwork?: boolean
|
|
}): ReactElement {
|
|
const { isGraphSynced, blockGraph, blockHead } = useGraphSyncStatus(networkId)
|
|
const [state, setState] = useState<string>()
|
|
const [title, setTitle] = useState<string>()
|
|
const [message, setMessage] = useState<string>()
|
|
const [showFeedback, setShowFeedback] = useState<boolean>(false)
|
|
|
|
useEffect(() => {
|
|
setShowFeedback(
|
|
!accountId || isAssetNetwork === false || isGraphSynced === false
|
|
)
|
|
if (accountId && isAssetNetwork && isGraphSynced) return
|
|
if (!accountId) {
|
|
setState('error')
|
|
setTitle('No account connected')
|
|
setMessage('Please connect your wallet.')
|
|
} else if (isAssetNetwork === false) {
|
|
setState('error')
|
|
setTitle('Not connected to asset network')
|
|
setMessage('Please connect your wallet.')
|
|
} else if (isGraphSynced === false) {
|
|
setState('warning')
|
|
setTitle('Data out of sync')
|
|
setMessage(
|
|
`The data for this network has only synced to Ethereum block ${blockGraph} (out of ${blockHead}). Transactions may fail! Please check back soon.`
|
|
)
|
|
} else {
|
|
setState('warning')
|
|
setTitle('Something went wrong.')
|
|
setMessage('Something went wrong.')
|
|
}
|
|
}, [accountId, isGraphSynced, isAssetNetwork])
|
|
|
|
return showFeedback ? (
|
|
<section className={styles.feedback}>
|
|
<Status state={state} aria-hidden />
|
|
<h3 className={styles.title}>{title}</h3>
|
|
{isAssetNetwork === false ? (
|
|
<WalletNetworkSwitcher />
|
|
) : (
|
|
message && <p className={styles.error}>{message}</p>
|
|
)}
|
|
</section>
|
|
) : null
|
|
}
|