DefiHackathon-2022/frontend/src/App.js
2022-03-26 16:36:38 -04:00

77 lines
2 KiB
JavaScript

import './App.css'
import { useEffect, useState } from 'react'
import {
useWallet,
useConnectedWallet,
WalletStatus,
} from '@terra-money/wallet-provider'
import * as execute from './contract/execute'
import * as query from './contract/query'
import { ConnectWallet } from './components/ConnectWallet'
function App() {
const [count, setCount] = useState(null)
const [updating, setUpdating] = useState(true)
const [resetValue, setResetValue] = useState(0)
const { status } = useWallet()
const connectedWallet = useConnectedWallet()
useEffect(() => {
const prefetch = async () => {
if (connectedWallet) {
setCount((await query.getCount(connectedWallet)).count)
}
setUpdating(false)
}
prefetch()
}, [connectedWallet])
const onClickIncrement = async () => {
setUpdating(true)
await execute.increment(connectedWallet)
setCount((await query.getCount(connectedWallet)).count)
setUpdating(false)
}
const onClickReset = async () => {
setUpdating(true)
console.log(resetValue)
await execute.reset(connectedWallet, resetValue)
setCount((await query.getCount(connectedWallet)).count)
setUpdating(false)
}
return (
<div className="App">
<header className="App-header">
<div style={{ display: 'inline' }}>
COUNT: {count} {updating ? '(updating . . .)' : ''}
<button onClick={onClickIncrement} type="button">
{' '}
+{' '}
</button>
</div>
{status === WalletStatus.WALLET_CONNECTED && (
<div style={{ display: 'inline' }}>
<input
type="number"
onChange={(e) => setResetValue(+e.target.value)}
value={resetValue}
/>
<button onClick={onClickReset} type="button">
{' '}
reset{' '}
</button>
</div>
)}
<ConnectWallet />
</header>
</div>
)
}
export default App