Files
TokenizeRWATemplate/projects/TokenizeRWATemplate-frontend/src/App.tsx

69 lines
2.1 KiB
TypeScript

import { SupportedWallet, WalletId, WalletManager, WalletProvider } from '@txnlab/use-wallet-react'
import { SnackbarProvider } from 'notistack'
import { BrowserRouter, Route, Routes } from 'react-router-dom'
import Home from './Home'
import Layout from './Layout'
import TokenizePage from './TokenizePage'
import { getAlgodConfigFromViteEnvironment, getKmdConfigFromViteEnvironment } from './utils/network/getAlgoClientConfigs'
// Configure supported wallets based on network environment
let supportedWallets: SupportedWallet[]
if (import.meta.env.VITE_ALGOD_NETWORK === 'localnet') {
// LocalNet: KMD wallet for local development
const kmdConfig = getKmdConfigFromViteEnvironment()
supportedWallets = [
{
id: WalletId.KMD,
options: {
baseServer: kmdConfig.server,
token: String(kmdConfig.token),
port: String(kmdConfig.port),
},
},
{ id: WalletId.LUTE },
]
} else {
// TestNet/MainNet: Browser extension wallets (Pera, Defly, Exodus, Lute)
supportedWallets = [{ id: WalletId.DEFLY }, { id: WalletId.PERA }, { id: WalletId.EXODUS }, { id: WalletId.LUTE }]
}
/**
* Main App Component
* Sets up wallet provider and routing for the Tokenization dApp
*/
export default function App() {
const algodConfig = getAlgodConfigFromViteEnvironment()
const walletManager = new WalletManager({
wallets: supportedWallets,
defaultNetwork: algodConfig.network,
networks: {
[algodConfig.network]: {
algod: {
baseServer: algodConfig.server,
port: algodConfig.port,
token: String(algodConfig.token),
},
},
},
options: {
resetNetwork: true,
},
})
return (
<SnackbarProvider maxSnack={3}>
<WalletProvider manager={walletManager}>
<BrowserRouter>
<Routes>
<Route element={<Layout />}>
<Route path="/" element={<Home />} />
<Route path="/tokenize" element={<TokenizePage />} />
</Route>
</Routes>
</BrowserRouter>
</WalletProvider>
</SnackbarProvider>
)
}