Skip to content

Commit

Permalink
wip: upgrade to wagmi v2
Browse files Browse the repository at this point in the history
  • Loading branch information
gaboesquivel committed Feb 7, 2024
1 parent 12c1776 commit a69a60e
Show file tree
Hide file tree
Showing 16 changed files with 204 additions and 148 deletions.
37 changes: 19 additions & 18 deletions apps/faucet/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,33 +13,34 @@
"@radix-ui/react-avatar": "^1.0.4",
"@radix-ui/react-label": "^2.0.2",
"@radix-ui/react-slot": "^1.0.2",
"@rainbow-me/rainbowkit": "^1.3.1",
"autoprefixer": "^10.4.16",
"@tanstack/react-query": "^5.18.1",
"@wagmi/connectors": "^4.1.13",
"autoprefixer": "^10.4.17",
"class-variance-authority": "^0.7.0",
"clsx": "^2.0.0",
"lucide-react": "^0.298.0",
"postcss": "^8.4.31",
"clsx": "^2.1.0",
"lucide-react": "^0.323.0",
"postcss": "^8.4.35",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"tailwind-merge": "^2.0.0",
"tailwindcss": "^3.3.5",
"tailwindcss-animate": "^1.0.7",
"smartsale-contracts": "workspace:*",
"smartsale-chains": "workspace:*",
"viem": "^1.20.3",
"wagmi": "^1.4.12"
"smartsale-contracts": "workspace:*",
"tailwind-merge": "^2.2.1",
"tailwindcss": "^3.4.1",
"tailwindcss-animate": "^1.0.7",
"viem": "2.x",
"wagmi": "2.x"
},
"devDependencies": {
"@types/node": "^20.10.5",
"@types/react": "^18.2.43",
"@types/react-dom": "^18.2.17",
"@typescript-eslint/eslint-plugin": "^6.14.0",
"@typescript-eslint/parser": "^6.14.0",
"@types/node": "^20.11.16",
"@types/react": "^18.2.55",
"@types/react-dom": "^18.2.18",
"@typescript-eslint/eslint-plugin": "^6.21.0",
"@typescript-eslint/parser": "^6.21.0",
"@vitejs/plugin-react": "^4.2.1",
"eslint": "^8.55.0",
"eslint": "^8.56.0",
"eslint-plugin-react-hooks": "^4.6.0",
"eslint-plugin-react-refresh": "^0.4.5",
"typescript": "^5.3.3",
"vite": "^5.0.10"
"vite": "^5.0.12"
}
}
7 changes: 3 additions & 4 deletions apps/faucet/src/App.tsx
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@

import { ConnectButton } from '@rainbow-me/rainbowkit';
import { FaucetForm } from './components/faucet-form';
import { useUsdtBalance } from './hooks/use-usdt-balance';
import { TestnetUSDCred, TestnetMBOTSPL } from 'smartsale-contracts';
import { AddTokenToWallet } from './components/add-token-to-metamask';
import { Button } from './components/ui/button';

import { ConnectWalletButton } from './components/connect-button';

export default function Component() {
const balance = useUsdtBalance()
Expand All @@ -19,8 +18,8 @@ export default function Component() {
<div className='flex items-center justify-center h-10 pr-5 font-bold'>
USD Credits ${balance}
</div>

<ConnectButton/>
<ConnectWalletButton/>
</div>

</nav>
Expand Down
26 changes: 26 additions & 0 deletions apps/faucet/src/components/connect-button.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
'use client'
import { useConnect, useConnectors } from 'wagmi'
import { Button } from './ui/button'

export function ConnectWalletButton() {
const connectors = useConnectors()
const { connect} = useConnect()

const handleConnect = async () => {
// Find the WalletConnect connector
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const walletConnectConnector = connectors.find(connector => connector.id === 'walletConnect')
if (walletConnectConnector) {
await connect({ connector: walletConnectConnector })
}
}

return (
<div>
<Button onClick={handleConnect} disabled={false}>
Connect Wallet
</Button>
{/* {error && <p style={{ color: 'red' }}>{error.message}</p>} */}
</div>
)
}
48 changes: 24 additions & 24 deletions apps/faucet/src/components/providers.tsx
Original file line number Diff line number Diff line change
@@ -1,35 +1,35 @@
import { ReactNode } from 'react';
import {
getDefaultWallets,
RainbowKitProvider,
} from '@rainbow-me/rainbowkit';
import { configureChains, createConfig, WagmiConfig } from 'wagmi';
import { publicProvider } from 'wagmi/providers/public';
import {eosEvmTestnet} from 'smartsale-chains'

const { chains, publicClient } = configureChains(
[eosEvmTestnet], [publicProvider()]
);
import { createConfig, WagmiProvider } from 'wagmi';
import { eosEvmTestnet } from 'smartsale-chains'
import { walletConnect } from 'wagmi/connectors'
import { http } from 'viem';
import { QueryClient, QueryClientProvider } from '@tanstack/react-query'

const { connectors } = getDefaultWallets({
appName: 'Bitcash USDT Faucet',
projectId: 'YOUR_PROJECT_ID',
chains
});
const queryClient = new QueryClient()

const wagmiConfig = createConfig({
autoConnect: true,
connectors,
publicClient
chains: [eosEvmTestnet],
connectors: [
walletConnect({
projectId: "25a868c834c1003aa0f0b69aba0ae056",
// metadata: {
// name: 'SmartSale Faucet',
// description: 'SmartSale Faucet'
// }
}),
],
transports: {
[eosEvmTestnet.id]: http(),
},
})

export function Providers({children}:{children: ReactNode}) {

return (
<WagmiConfig config={wagmiConfig}>
<RainbowKitProvider chains={chains}>
{children}
</RainbowKitProvider>
</WagmiConfig>
<QueryClientProvider client={queryClient}>
<WagmiProvider config={wagmiConfig}>
{children}
</WagmiProvider>
</QueryClientProvider>
)
}
20 changes: 12 additions & 8 deletions apps/faucet/src/hooks/use-faucet.ts
Original file line number Diff line number Diff line change
@@ -1,20 +1,24 @@
import { useContractWrite, usePrepareContractWrite } from 'wagmi';
import { useWriteContract } from 'wagmi';
import { TestnetUSDCred } from 'smartsale-contracts';
import { parseUnits } from 'viem';

export function useFaucet({ recipient, amount }:UseFaucetParams) {
// Prepare the contract write operation
const { config } = usePrepareContractWrite({
...TestnetUSDCred,
functionName: 'faucet',
args: [recipient, parseUnits(amount, 6)]
});
const { writeContract } = useWriteContract()

// Execute the contract write operation
const { data, write, isLoading, isSuccess } = useContractWrite(config);
const callFaucet = () => {
const result = writeContract({
...TestnetUSDCred,
functionName: 'faucet',
args: [recipient, parseUnits(amount, 6)]
});
console.log('result', result)
}


// Return the hook results
return { data, isLoading, isSuccess, callFaucet: write! };
return { data: [], isLoading:false, isSuccess:false, callFaucet };
}

type UseFaucetParams = {
Expand Down
6 changes: 3 additions & 3 deletions apps/faucet/src/hooks/use-usdt-balance.ts
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
import { TestnetUSDCred } from "smartsale-contracts";
import { formatUnits } from "viem";
import { useAccount, useContractRead } from "wagmi";
import { useAccount, useReadContract } from "wagmi";

export function useUsdtBalance(){
const { address } = useAccount();

const { data } = useContractRead({
const { data } = useReadContract({
...TestnetUSDCred,
functionName: 'balanceOf',
args: [address],
watch: true
// watch: true
});

// Convert the balance from wei to ether (adjust decimal places if needed)
Expand Down
2 changes: 1 addition & 1 deletion apps/faucet/src/main.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import React from 'react'
import ReactDOM from 'react-dom/client'
import App from './App.tsx'
import './globals.css'
import '@rainbow-me/rainbowkit/styles.css';

import { Providers } from './components/providers.tsx';

ReactDOM.createRoot(document.getElementById('root')!).render(
Expand Down
76 changes: 38 additions & 38 deletions apps/indexer/src/indexer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ export async function startIndexer() {
// await writeToFile(stringify(TestnetEasyAuction.getEvents(), null, 2), './events.json')
// Get historical event logs
const blockNumber = await client.getBlockNumber()
const events = getEvents(TestnetEasyAuction)
const events = getEvents(TestnetEasyAuction.abi)
const logs = await client.getLogs({
events,
fromBlock: BigInt(TestnetEasyAuction.indexFromBlock),
Expand Down Expand Up @@ -87,44 +87,44 @@ function handleClaimedFromOrder(log: any) {
async function handleNewAuction(log: NewAuctionEvent) {
// console.log('handleNewAuction', log.args, typeof log.args)

const auctioningToken = await getTokenDetails({address: log.args._auctioningToken})
const biddingToken = await getTokenDetails({address: log.args._biddingToken})
const auctioningToken = await getTokenDetails({ address: log.args._auctioningToken })
const biddingToken = await getTokenDetails({ address: log.args._biddingToken })
const data = {
// id bigint generated by default as identity,
// created_at timestamp with time zone not null default now(),
exact_order_id: log.args.auctionId,
// chain_id text null,
symbol_auctioning_token: auctioningToken.symbol,
symbol_bidding_token: biddingToken.symbol,
address_auctioning_token: auctioningToken.address,
address_bidding_token: biddingToken.address,
decimals_auctioning_token: auctioningToken.decimals,
decimals_bidding_token: biddingToken.decimals,
end_time_timestamp: bigintToPostgresTimestamp(log.args.auctionEndDate),
order_cancellation_end_date: bigintToPostgresTimestamp(log.args.orderCancellationEndDate),
// starting_time_stamp timestamp without time zone null,
minimum_bidding_amount_per_order: log.args.minimumBiddingAmountPerOrder,
min_funding_threshold: log.args.minFundingThreshold,

// review this values.
allow_list_manager: log.args.allowListContract,
allow_list_signer: log.args.allowListData,

// current_volume integer null,
// current_clearing_order_sell_amount bigint null,
// current_clearing_order_buy_amount bigint null,
// current_clearing_price integer null,
// current_bidding_amount bigint null,
// is_atomic_closure_allowed boolean null,
// is_private_auction boolean null,
// interest_score integer null,
// usd_amount_traded integer null,

// TODO: add this to schema
// _auctionedSellAmount: 100000n,
// _minBuyAmount: 50000000n,
}
// id bigint generated by default as identity,
// created_at timestamp with time zone not null default now(),
exact_order_id: log.args.auctionId,
// chain_id text null,
symbol_auctioning_token: auctioningToken.symbol,
symbol_bidding_token: biddingToken.symbol,
address_auctioning_token: auctioningToken.address,
address_bidding_token: biddingToken.address,
decimals_auctioning_token: auctioningToken.decimals,
decimals_bidding_token: biddingToken.decimals,
end_time_timestamp: bigintToPostgresTimestamp(log.args.auctionEndDate),
order_cancellation_end_date: bigintToPostgresTimestamp(log.args.orderCancellationEndDate),
// starting_time_stamp timestamp without time zone null,
minimum_bidding_amount_per_order: log.args.minimumBiddingAmountPerOrder,
min_funding_threshold: log.args.minFundingThreshold,

// review this values.
allow_list_manager: log.args.allowListContract,
allow_list_signer: log.args.allowListData,

// current_volume integer null,
// current_clearing_order_sell_amount bigint null,
// current_clearing_order_buy_amount bigint null,
// current_clearing_price integer null,
// current_bidding_amount bigint null,
// is_atomic_closure_allowed boolean null,
// is_private_auction boolean null,
// interest_score integer null,
// usd_amount_traded integer null,

// TODO: add this to schema
// _auctionedSellAmount: 100000n,
// _minBuyAmount: 50000000n,
}

console.log('handleNewAuction:: data for postgres db', data)

// return prisma.auction_details.create({ data })
Expand Down
2 changes: 1 addition & 1 deletion apps/webapp/app/layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { GeistSans } from 'geist/font/sans'
import { GeistMono } from 'geist/font/mono'

import '@/app/globals.css'
import '@rainbow-me/rainbowkit/styles.css'

import { cn } from '@/lib/utils'
import { Providers } from '@/components/providers'
import { Header } from '@/components/header'
Expand Down
27 changes: 27 additions & 0 deletions apps/webapp/components/connect-button.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
'use client'
import { useConnect, useConnectors } from 'wagmi'
import { Button } from '@/components/ui/button'

export function ConnectWalletButton() {
const connectors = useConnectors()
const { connect } = useConnect()

const handleConnect = async () => {
// Find the WalletConnect connector
const walletConnectConnector = connectors.find(
connector => connector.id === 'walletConnect'
)
if (walletConnectConnector) {
await connect({ connector: walletConnectConnector })
}
}

return (
<div>
<Button onClick={handleConnect} disabled={false}>
Connect Wallet
</Button>
{/* {error && <p style={{ color: 'red' }}>{error.message}</p>} */}
</div>
)
}
4 changes: 2 additions & 2 deletions apps/webapp/components/header.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ import * as React from 'react'
import Link from 'next/link'

import { Button } from '@/components/ui/button'
import { ConnectButton } from '@rainbow-me/rainbowkit'
import { IconSeparator } from './ui/icons'
import { ConnectWalletButton } from './connect-button'
// import { ThemeToggle } from './theme-toggle'

export async function Header() {
Expand All @@ -20,7 +20,7 @@ export async function Header() {
<div className="flex items-center justify-end space-x-2">
<React.Suspense fallback={<div className="flex-1 overflow-auto" />}>
{/* <ThemeToggle/> */}
<ConnectButton />
<ConnectWalletButton />
</React.Suspense>
</div>
</div>
Expand Down
Loading

0 comments on commit a69a60e

Please sign in to comment.