From 1dd9dc8bb10896a60041f7f372d24c14c5ceeffc Mon Sep 17 00:00:00 2001 From: john Date: Tue, 10 May 2022 09:27:36 +0700 Subject: [PATCH] before deploy --- public/favicon.ico | Bin 3870 -> 16958 bytes public/favicon.ico.bak | Bin 0 -> 3870 bytes public/index.html | 42 +++++++++++++++++++-------------------- src/components/AppBar.js | 37 +++++++++++++++++++++++----------- src/config.js | 5 +++-- src/data.js | 32 ++++++++++++++--------------- src/pages/Farm.js | 28 +++++++++++++++++++++++++- src/pages/Home.js | 7 +++---- 8 files changed, 95 insertions(+), 56 deletions(-) create mode 100644 public/favicon.ico.bak diff --git a/public/favicon.ico b/public/favicon.ico index a11777cc471a4344702741ab1c8a588998b1311a..fa2f9e9974cb383b7f77b2c3e8026f2e41be052c 100644 GIT binary patch literal 16958 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 baj7?x%VD!5Cxk2YbYLNVeiXvvpMCWYo=by@ diff --git a/public/favicon.ico.bak b/public/favicon.ico.bak new file mode 100644 index 0000000000000000000000000000000000000000..a11777cc471a4344702741ab1c8a588998b1311a GIT binary patch literal 3870 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 baj7?x%VD!5Cxk2YbYLNVeiXvvpMCWYo=by@ literal 0 HcmV?d00001 diff --git a/public/index.html b/public/index.html index aa069f2..de5b0e9 100644 --- a/public/index.html +++ b/public/index.html @@ -1,21 +1,19 @@ - - - - - - - - - - - React App - - - -
- - - + + + \ No newline at end of file diff --git a/src/components/AppBar.js b/src/components/AppBar.js index 2ce94be..48af532 100644 --- a/src/components/AppBar.js +++ b/src/components/AppBar.js @@ -2,9 +2,11 @@ import React from 'react' import { Button, Flex, VStack, HStack, IconButton, useColorModeValue, useDisclosure, Icon, Text, + useToast, } from '@chakra-ui/react' import { FiMenu, FiCircle } from 'react-icons/fi' import { Logo } from './Logo' +import { config } from '../config' import { useApp } from '../AppContext' import { AlertWallet } from './alert/AlertWallet' import { connectWallet, addEventListeners, fetchAccount } from '../lib' @@ -14,18 +16,27 @@ import { useSearchParams } from 'react-router-dom' export const AppBar = ({ onOpenDrawer, ...rest }) => { const app = useApp() + const toast = useToast() const [searchParams, _] = useSearchParams() - const { isOpen, onOpen, onClose } = useDisclosure() + const { isOpen: isOpenConnectedWallet, onOpen: onOpenConnectedWallet, onClose: onCloseConnectedWallet } = useDisclosure() const bg = useColorModeValue('white', 'gray.900') const borderBottomColor = useColorModeValue('gray.200', 'gray.700') // const bgMenu = useColorModeValue('white', 'gray.900') // const colorMenuBorder = useColorModeValue('gray.200', 'gray.700') - const getAddress = async () => { + const getUserWalletAddress = async () => { const address = await fetchAccount() - app.setAddress(address) - + if (address) { + app.setAddress(address) + toast({ + title: 'Connected', + description: address, + status: 'info', + duration: 3000, + isClosable: false, + }) + } const referral = searchParams.get('referral') || '' get_register(address, referral).then(res => { // console.log(res.data) @@ -36,8 +47,8 @@ export const AppBar = ({ onOpenDrawer, ...rest }) => { const connect = async () => { if (await connectWallet()) { - await addEventListeners(getAddress) - await getAddress() + await addEventListeners(getUserWalletAddress) + await getUserWalletAddress() } } @@ -45,15 +56,17 @@ export const AppBar = ({ onOpenDrawer, ...rest }) => { if (!app.address) { await connect() } else { - onOpen() + onOpenConnectedWallet() } } // auto connect React.useEffect(() => { - setTimeout(async () => { - await connect() - }, 2000) + if (config.AUTO_CONN_WALLET) { + setTimeout(async () => { + await connect() + }, 2000) + } }, []) return ( @@ -92,8 +105,8 @@ export const AppBar = ({ onOpenDrawer, ...rest }) => { { const [coins, setCoins] = React.useState([]) const [depositeIndex, setDepositeIndex] = React.useState(-1) const app = useApp() + const toast = useToast() const { isOpen: isWithdrawalOpen, onOpen: onWithdrawalOpen, onClose: onWithdrawalClose } = useDisclosure() const { isOpen: isDepositeOpen, onOpen: onDepositeOpen, onClose: onDepositeClose } = useDisclosure() @@ -47,6 +49,13 @@ export const Farm = () => { transfer(ABI, coins[depositeIndex].address, app.appAddress, amount, app.address, (err, res) => { if (!err) { + toast({ + title: 'Succeed', + description: "You have successfully deposited " + amount + " " + coins[depositeIndex].name, + status: 'success', + duration: 9000, + isClosable: true, + }) // TODO 提交充值记录 get_upBalance(app.address).then(res => { @@ -54,6 +63,13 @@ export const Farm = () => { console.error('get_upBalance() error:' + err.message) }) } else { + toast({ + title: 'Failed', + description: "Your operation has not been completed.", + status: 'info', + duration: 9000, + isClosable: true, + }) console.error('transfer() error:' + err.message) } }) @@ -77,6 +93,16 @@ export const Farm = () => { setDepositeIndex(index) onDepositeOpen() } else { + if (!app.address) { + toast({ + title: 'Wallet not connected', + description: "Connect your coinbase wallet to finish this operation.", + status: 'warning', + duration: 9000, + isClosable: true, + }) + return + } // make button loading _coins[index].loading = true setCoins(_coins) diff --git a/src/pages/Home.js b/src/pages/Home.js index 0aae471..b35f636 100644 --- a/src/pages/Home.js +++ b/src/pages/Home.js @@ -1,7 +1,6 @@ import React from "react"; -import { Box, Stack, VStack, Image, Text, Flex, HStack, Spacer } from "@chakra-ui/react"; -import { Auditors, Partners, Carousel, MultiChainCard, NumCard, StateCard, MiningListCard } from "../components"; -import { Link } from "react-router-dom"; +import { Box, Stack, VStack, Image, Text, Flex, HStack } from "@chakra-ui/react"; +import { Auditors, Partners, Carousel, MultiChainCard, StateCard, MiningListCard } from "../components"; import { useApp } from '../AppContext' import { get_coins_platform } from '../api' import { ImPieChart, ImFire } from 'react-icons/im' @@ -91,7 +90,7 @@ export const Home = () => { - + {/* */}