@sudobility/heavymath_ui 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/dealer/DealerNFTList.d.ts +6 -0
- package/dist/components/dealer/DealerNFTList.d.ts.map +1 -0
- package/dist/components/dealer/DealerNFTList.js +46 -0
- package/dist/components/dealer/DealerNFTList.js.map +1 -0
- package/dist/components/dealer/DealerNFTSelector.d.ts +8 -0
- package/dist/components/dealer/DealerNFTSelector.d.ts.map +1 -0
- package/dist/components/dealer/DealerNFTSelector.js +10 -0
- package/dist/components/dealer/DealerNFTSelector.js.map +1 -0
- package/dist/components/dealer/UpcomingGamesWidget.d.ts +8 -0
- package/dist/components/dealer/UpcomingGamesWidget.d.ts.map +1 -0
- package/dist/components/dealer/UpcomingGamesWidget.js +68 -0
- package/dist/components/dealer/UpcomingGamesWidget.js.map +1 -0
- package/dist/components/icons/index.d.ts +2 -0
- package/dist/components/icons/index.d.ts.map +1 -0
- package/dist/components/icons/index.js +2 -0
- package/dist/components/icons/index.js.map +1 -0
- package/dist/components/market/GameMarketsSection.d.ts +16 -0
- package/dist/components/market/GameMarketsSection.d.ts.map +1 -0
- package/dist/components/market/GameMarketsSection.js +18 -0
- package/dist/components/market/GameMarketsSection.js.map +1 -0
- package/dist/components/market/InlineCreateMarketForm.d.ts +17 -0
- package/dist/components/market/InlineCreateMarketForm.d.ts.map +1 -0
- package/dist/components/market/InlineCreateMarketForm.js +274 -0
- package/dist/components/market/InlineCreateMarketForm.js.map +1 -0
- package/dist/components/market/LeagueMarketsSection.d.ts +16 -0
- package/dist/components/market/LeagueMarketsSection.d.ts.map +1 -0
- package/dist/components/market/LeagueMarketsSection.js +15 -0
- package/dist/components/market/LeagueMarketsSection.js.map +1 -0
- package/dist/components/market/MarketCard.d.ts +8 -0
- package/dist/components/market/MarketCard.d.ts.map +1 -0
- package/dist/components/market/MarketCard.js +30 -0
- package/dist/components/market/MarketCard.js.map +1 -0
- package/dist/components/market/MarketList.d.ts +9 -0
- package/dist/components/market/MarketList.d.ts.map +1 -0
- package/dist/components/market/MarketList.js +17 -0
- package/dist/components/market/MarketList.js.map +1 -0
- package/dist/components/market/MarketStatusBadge.d.ts +8 -0
- package/dist/components/market/MarketStatusBadge.d.ts.map +1 -0
- package/dist/components/market/MarketStatusBadge.js +31 -0
- package/dist/components/market/MarketStatusBadge.js.map +1 -0
- package/dist/components/market/PredictionSlider.d.ts +11 -0
- package/dist/components/market/PredictionSlider.d.ts.map +1 -0
- package/dist/components/market/PredictionSlider.js +55 -0
- package/dist/components/market/PredictionSlider.js.map +1 -0
- package/dist/components/market/SportPredictionCard.d.ts +15 -0
- package/dist/components/market/SportPredictionCard.d.ts.map +1 -0
- package/dist/components/market/SportPredictionCard.js +92 -0
- package/dist/components/market/SportPredictionCard.js.map +1 -0
- package/dist/components/market/TeamMarketsSection.d.ts +17 -0
- package/dist/components/market/TeamMarketsSection.d.ts.map +1 -0
- package/dist/components/market/TeamMarketsSection.js +8 -0
- package/dist/components/market/TeamMarketsSection.js.map +1 -0
- package/dist/components/market/TeamTournamentMarketForm.d.ts +19 -0
- package/dist/components/market/TeamTournamentMarketForm.d.ts.map +1 -0
- package/dist/components/market/TeamTournamentMarketForm.js +92 -0
- package/dist/components/market/TeamTournamentMarketForm.js.map +1 -0
- package/dist/components/market/TournamentMarketForm.d.ts +19 -0
- package/dist/components/market/TournamentMarketForm.d.ts.map +1 -0
- package/dist/components/market/TournamentMarketForm.js +86 -0
- package/dist/components/market/TournamentMarketForm.js.map +1 -0
- package/dist/components/market/index.d.ts +12 -0
- package/dist/components/market/index.d.ts.map +1 -0
- package/dist/components/market/index.js +12 -0
- package/dist/components/market/index.js.map +1 -0
- package/dist/components/sports/SeasonSelector.d.ts +10 -0
- package/dist/components/sports/SeasonSelector.d.ts.map +1 -0
- package/dist/components/sports/SeasonSelector.js +13 -0
- package/dist/components/sports/SeasonSelector.js.map +1 -0
- package/dist/components/ui/AnimatedCollapse.d.ts +9 -0
- package/dist/components/ui/AnimatedCollapse.d.ts.map +1 -0
- package/dist/components/ui/AnimatedCollapse.js +8 -0
- package/dist/components/ui/AnimatedCollapse.js.map +1 -0
- package/dist/components/ui/FavoriteStar.d.ts +13 -0
- package/dist/components/ui/FavoriteStar.d.ts.map +1 -0
- package/dist/components/ui/FavoriteStar.js +47 -0
- package/dist/components/ui/FavoriteStar.js.map +1 -0
- package/dist/components/wallet/ConnectedWalletMenu.d.ts +16 -0
- package/dist/components/wallet/ConnectedWalletMenu.d.ts.map +1 -0
- package/dist/components/wallet/ConnectedWalletMenu.js +131 -0
- package/dist/components/wallet/ConnectedWalletMenu.js.map +1 -0
- package/dist/components/wallet/DealerRoute.d.ts +6 -0
- package/dist/components/wallet/DealerRoute.d.ts.map +1 -0
- package/dist/components/wallet/DealerRoute.js +20 -0
- package/dist/components/wallet/DealerRoute.js.map +1 -0
- package/dist/components/wallet/ProtectedRoute.d.ts +8 -0
- package/dist/components/wallet/ProtectedRoute.d.ts.map +1 -0
- package/dist/components/wallet/ProtectedRoute.js +17 -0
- package/dist/components/wallet/ProtectedRoute.js.map +1 -0
- package/dist/components/wallet/WalletConnectionModal.d.ts +7 -0
- package/dist/components/wallet/WalletConnectionModal.d.ts.map +1 -0
- package/dist/components/wallet/WalletConnectionModal.js +334 -0
- package/dist/components/wallet/WalletConnectionModal.js.map +1 -0
- package/dist/config/app.d.ts +24 -0
- package/dist/config/app.d.ts.map +1 -0
- package/dist/config/app.js +18 -0
- package/dist/config/app.js.map +1 -0
- package/dist/config/chains.d.ts +1070 -0
- package/dist/config/chains.d.ts.map +1 -0
- package/dist/config/chains.js +28 -0
- package/dist/config/chains.js.map +1 -0
- package/dist/config/contracts.d.ts +15 -0
- package/dist/config/contracts.d.ts.map +1 -0
- package/dist/config/contracts.js +62 -0
- package/dist/config/contracts.js.map +1 -0
- package/dist/config/sportCodes.d.ts +58 -0
- package/dist/config/sportCodes.d.ts.map +1 -0
- package/dist/config/sportCodes.js +78 -0
- package/dist/config/sportCodes.js.map +1 -0
- package/dist/context/IndexerContext.d.ts +34 -0
- package/dist/context/IndexerContext.d.ts.map +1 -0
- package/dist/context/IndexerContext.js +40 -0
- package/dist/context/IndexerContext.js.map +1 -0
- package/dist/context/WalletAuthContext.d.ts +26 -0
- package/dist/context/WalletAuthContext.d.ts.map +1 -0
- package/dist/context/WalletAuthContext.js +148 -0
- package/dist/context/WalletAuthContext.js.map +1 -0
- package/dist/hooks/index.d.ts +13 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +13 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/useContractWithToast.d.ts +1348 -0
- package/dist/hooks/useContractWithToast.d.ts.map +1 -0
- package/dist/hooks/useContractWithToast.js +395 -0
- package/dist/hooks/useContractWithToast.js.map +1 -0
- package/dist/hooks/useDealerNFT.d.ts +71 -0
- package/dist/hooks/useDealerNFT.d.ts.map +1 -0
- package/dist/hooks/useDealerNFT.js +127 -0
- package/dist/hooks/useDealerNFT.js.map +1 -0
- package/dist/hooks/useDealerPermission.d.ts +11 -0
- package/dist/hooks/useDealerPermission.d.ts.map +1 -0
- package/dist/hooks/useDealerPermission.js +48 -0
- package/dist/hooks/useDealerPermission.js.map +1 -0
- package/dist/hooks/useFilteredSportsData.d.ts +20 -0
- package/dist/hooks/useFilteredSportsData.d.ts.map +1 -0
- package/dist/hooks/useFilteredSportsData.js +52 -0
- package/dist/hooks/useFilteredSportsData.js.map +1 -0
- package/dist/hooks/useGameMarkets.d.ts +23 -0
- package/dist/hooks/useGameMarkets.d.ts.map +1 -0
- package/dist/hooks/useGameMarkets.js +50 -0
- package/dist/hooks/useGameMarkets.js.map +1 -0
- package/dist/hooks/useLeagueMarkets.d.ts +11 -0
- package/dist/hooks/useLeagueMarkets.d.ts.map +1 -0
- package/dist/hooks/useLeagueMarkets.js +38 -0
- package/dist/hooks/useLeagueMarkets.js.map +1 -0
- package/dist/hooks/useMarketContract.d.ts +219 -0
- package/dist/hooks/useMarketContract.d.ts.map +1 -0
- package/dist/hooks/useMarketContract.js +790 -0
- package/dist/hooks/useMarketContract.js.map +1 -0
- package/dist/hooks/useToastActions.d.ts +13 -0
- package/dist/hooks/useToastActions.d.ts.map +1 -0
- package/dist/hooks/useToastActions.js +40 -0
- package/dist/hooks/useToastActions.js.map +1 -0
- package/dist/index.d.ts +43 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +47 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/evmClient.d.ts +299 -0
- package/dist/lib/evmClient.d.ts.map +1 -0
- package/dist/lib/evmClient.js +691 -0
- package/dist/lib/evmClient.js.map +1 -0
- package/dist/types/auth.d.ts +44 -0
- package/dist/types/auth.d.ts.map +1 -0
- package/dist/types/auth.js +17 -0
- package/dist/types/auth.js.map +1 -0
- package/dist/types/dealer.d.ts +59 -0
- package/dist/types/dealer.d.ts.map +1 -0
- package/dist/types/dealer.js +31 -0
- package/dist/types/dealer.js.map +1 -0
- package/dist/types/market.d.ts +79 -0
- package/dist/types/market.d.ts.map +1 -0
- package/dist/types/market.js +47 -0
- package/dist/types/market.js.map +1 -0
- package/dist/utils/conditionData.d.ts +8 -0
- package/dist/utils/conditionData.d.ts.map +1 -0
- package/dist/utils/conditionData.js +7 -0
- package/dist/utils/conditionData.js.map +1 -0
- package/dist/utils/datetime.d.ts +3 -0
- package/dist/utils/datetime.d.ts.map +1 -0
- package/dist/utils/datetime.js +13 -0
- package/dist/utils/datetime.js.map +1 -0
- package/dist/utils/format.d.ts +79 -0
- package/dist/utils/format.d.ts.map +1 -0
- package/dist/utils/format.js +144 -0
- package/dist/utils/format.js.map +1 -0
- package/dist/utils/marketDisplay.d.ts +28 -0
- package/dist/utils/marketDisplay.d.ts.map +1 -0
- package/dist/utils/marketDisplay.js +45 -0
- package/dist/utils/marketDisplay.js.map +1 -0
- package/dist/utils/marketId.d.ts +8 -0
- package/dist/utils/marketId.d.ts.map +1 -0
- package/dist/utils/marketId.js +12 -0
- package/dist/utils/marketId.js.map +1 -0
- package/dist/utils/oracleId.d.ts +33 -0
- package/dist/utils/oracleId.d.ts.map +1 -0
- package/dist/utils/oracleId.js +62 -0
- package/dist/utils/oracleId.js.map +1 -0
- package/dist/utils/sportsSeason.d.ts +10 -0
- package/dist/utils/sportsSeason.d.ts.map +1 -0
- package/dist/utils/sportsSeason.js +39 -0
- package/dist/utils/sportsSeason.js.map +1 -0
- package/package.json +85 -0
|
@@ -0,0 +1,334 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState, useEffect, useCallback, useMemo, useRef } from 'react';
|
|
3
|
+
import { useNavigate, useParams } from 'react-router-dom';
|
|
4
|
+
import { useTranslation } from 'react-i18next';
|
|
5
|
+
import { useAccount, useConnect, useDisconnect } from 'wagmi';
|
|
6
|
+
import { ChainType } from '@sudobility/types';
|
|
7
|
+
import { Modal, Logo } from '@sudobility/components';
|
|
8
|
+
import { WalletIcon, WalletConnectScreen, WalletVerifyScreen, } from '@sudobility/web3-components';
|
|
9
|
+
import { useAuth } from '../../context/WalletAuthContext';
|
|
10
|
+
import { AuthStatus } from '../../types/auth';
|
|
11
|
+
import { getAppConfig } from '../../config/app';
|
|
12
|
+
// Detect if browser supports extensions (Safari doesn't, Chrome/Firefox/Edge do)
|
|
13
|
+
const supportsExtensions = () => {
|
|
14
|
+
if (typeof navigator === 'undefined')
|
|
15
|
+
return true; // Assume support on server
|
|
16
|
+
const userAgent = navigator.userAgent.toLowerCase();
|
|
17
|
+
const isMobile = /android|iphone|ipad|mobile|tablet/i.test(userAgent);
|
|
18
|
+
// Mobile browsers don't support extensions (except Kiwi/Firefox mobile, but we'll simplify)
|
|
19
|
+
if (isMobile)
|
|
20
|
+
return false;
|
|
21
|
+
// Safari doesn't support standard Web Extensions API that crypto wallets use
|
|
22
|
+
const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
|
|
23
|
+
return !isSafari;
|
|
24
|
+
};
|
|
25
|
+
// Detect if desktop browser has a built-in wallet (Brave, Opera)
|
|
26
|
+
const hasDesktopBrowserWallet = () => {
|
|
27
|
+
if (typeof navigator === 'undefined' || typeof window === 'undefined')
|
|
28
|
+
return false;
|
|
29
|
+
const userAgent = navigator.userAgent.toLowerCase();
|
|
30
|
+
const isMobile = /android|iphone|ipad|mobile|tablet/i.test(userAgent);
|
|
31
|
+
// Only check on desktop
|
|
32
|
+
if (isMobile)
|
|
33
|
+
return false;
|
|
34
|
+
const windowObj = window;
|
|
35
|
+
// Check for Brave Wallet
|
|
36
|
+
const hasBraveWallet = !!(windowObj.ethereum?.isBraveWallet ||
|
|
37
|
+
navigator.brave?.isBrave);
|
|
38
|
+
// Check for Opera Wallet
|
|
39
|
+
const hasOperaWallet = !!(windowObj.ethereum?.isOpera ||
|
|
40
|
+
userAgent.includes('opr/') ||
|
|
41
|
+
userAgent.includes('opera'));
|
|
42
|
+
return hasBraveWallet || hasOperaWallet;
|
|
43
|
+
};
|
|
44
|
+
// Helper to get connector display name
|
|
45
|
+
const getConnectorName = (connector) => {
|
|
46
|
+
if (connector.id === 'metaMask' || connector.id === 'io.metamask') {
|
|
47
|
+
return 'MetaMask';
|
|
48
|
+
}
|
|
49
|
+
if (connector.id === 'coinbaseWalletSDK' ||
|
|
50
|
+
connector.id === 'coinbaseWallet') {
|
|
51
|
+
return 'Coinbase Wallet';
|
|
52
|
+
}
|
|
53
|
+
if (connector.id === 'walletConnect') {
|
|
54
|
+
return 'WalletConnect';
|
|
55
|
+
}
|
|
56
|
+
if (connector.id === 'injected') {
|
|
57
|
+
return 'Browser Wallet';
|
|
58
|
+
}
|
|
59
|
+
if (connector.name === 'MetaMask')
|
|
60
|
+
return 'MetaMask';
|
|
61
|
+
if (connector.name === 'WalletConnect')
|
|
62
|
+
return 'WalletConnect';
|
|
63
|
+
if (connector.name === 'Coinbase Wallet')
|
|
64
|
+
return 'Coinbase Wallet';
|
|
65
|
+
if (connector.name === 'Injected' || connector.name === 'Browser Wallet') {
|
|
66
|
+
return 'Browser Wallet';
|
|
67
|
+
}
|
|
68
|
+
return connector.name || 'Unknown Wallet';
|
|
69
|
+
};
|
|
70
|
+
export function WalletConnectionModal({ isOpen, onClose, }) {
|
|
71
|
+
const { lang } = useParams();
|
|
72
|
+
const navigate = useNavigate();
|
|
73
|
+
const { t } = useTranslation('connectWalletPage');
|
|
74
|
+
const { address, status, signVerificationMessage } = useAuth();
|
|
75
|
+
const { connectors, connect } = useConnect();
|
|
76
|
+
const { connector: activeConnector } = useAccount();
|
|
77
|
+
const { disconnect: wagmiDisconnect } = useDisconnect();
|
|
78
|
+
const [step, setStep] = useState('connect');
|
|
79
|
+
const [error, setError] = useState(null);
|
|
80
|
+
const [isSigning, setIsSigning] = useState(false);
|
|
81
|
+
const [connectingWallet, setConnectingWallet] = useState(null);
|
|
82
|
+
const [connectedWalletProvider, setConnectedWalletProvider] = useState(null);
|
|
83
|
+
const [activeTab, setActiveTab] = useState('ethereum');
|
|
84
|
+
const [browserSupportsExtensions] = useState(supportsExtensions);
|
|
85
|
+
const [hasDesktopWallet] = useState(hasDesktopBrowserWallet);
|
|
86
|
+
// Reset state when modal closes
|
|
87
|
+
useEffect(() => {
|
|
88
|
+
if (!isOpen) {
|
|
89
|
+
setStep('connect');
|
|
90
|
+
setError(null);
|
|
91
|
+
setIsSigning(false);
|
|
92
|
+
setConnectingWallet(null);
|
|
93
|
+
setConnectedWalletProvider(null);
|
|
94
|
+
setActiveTab('ethereum');
|
|
95
|
+
}
|
|
96
|
+
}, [isOpen]);
|
|
97
|
+
// Handle navigation based on status
|
|
98
|
+
useEffect(() => {
|
|
99
|
+
if (!isOpen)
|
|
100
|
+
return;
|
|
101
|
+
if (status === AuthStatus.Verified) {
|
|
102
|
+
onClose();
|
|
103
|
+
navigate(`/${lang}/wallet`);
|
|
104
|
+
}
|
|
105
|
+
else if (status === AuthStatus.Connected && step !== 'sign') {
|
|
106
|
+
setStep('sign');
|
|
107
|
+
if (activeConnector) {
|
|
108
|
+
setConnectedWalletProvider(getConnectorName(activeConnector));
|
|
109
|
+
}
|
|
110
|
+
setConnectingWallet(null);
|
|
111
|
+
}
|
|
112
|
+
else if (status === AuthStatus.Disconnected && step !== 'connect') {
|
|
113
|
+
setStep('connect');
|
|
114
|
+
setConnectingWallet(null);
|
|
115
|
+
setConnectedWalletProvider(null);
|
|
116
|
+
}
|
|
117
|
+
}, [status, navigate, step, lang, activeConnector, isOpen, onClose]);
|
|
118
|
+
// Reset connection
|
|
119
|
+
const resetConnection = useCallback(async () => {
|
|
120
|
+
try {
|
|
121
|
+
await wagmiDisconnect();
|
|
122
|
+
setStep('connect');
|
|
123
|
+
setError(null);
|
|
124
|
+
setIsSigning(false);
|
|
125
|
+
setConnectingWallet(null);
|
|
126
|
+
setConnectedWalletProvider(null);
|
|
127
|
+
}
|
|
128
|
+
catch (err) {
|
|
129
|
+
console.error('Error resetting connection:', err);
|
|
130
|
+
setStep('connect');
|
|
131
|
+
setError(null);
|
|
132
|
+
setConnectingWallet(null);
|
|
133
|
+
setConnectedWalletProvider(null);
|
|
134
|
+
}
|
|
135
|
+
}, [wagmiDisconnect]);
|
|
136
|
+
// Store connectors in a ref to avoid dependency issues
|
|
137
|
+
const connectorsRef = useRef(connectors);
|
|
138
|
+
useEffect(() => {
|
|
139
|
+
connectorsRef.current = connectors;
|
|
140
|
+
});
|
|
141
|
+
// Handle wallet selection - stable reference
|
|
142
|
+
const handleWalletSelect = useCallback(async (walletName, connectorIndex) => {
|
|
143
|
+
setError(null);
|
|
144
|
+
setConnectingWallet(walletName);
|
|
145
|
+
try {
|
|
146
|
+
const connector = connectorsRef.current[connectorIndex];
|
|
147
|
+
await connect({ connector });
|
|
148
|
+
}
|
|
149
|
+
catch (err) {
|
|
150
|
+
const errorMessage = err instanceof Error ? err.message.toLowerCase() : '';
|
|
151
|
+
const isCancellation = errorMessage.includes('user rejected') ||
|
|
152
|
+
errorMessage.includes('user denied') ||
|
|
153
|
+
errorMessage.includes('cancelled') ||
|
|
154
|
+
errorMessage.includes('canceled');
|
|
155
|
+
if (isCancellation) {
|
|
156
|
+
setConnectingWallet(null);
|
|
157
|
+
setError(null);
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
console.error('Failed to connect wallet:', err);
|
|
161
|
+
setConnectingWallet(null);
|
|
162
|
+
setError(t('errors.failedToConnect', 'Failed to connect wallet. Please try again.'));
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}, [connect, t]);
|
|
166
|
+
// Build stable wallet options - only rebuild when connectors array identity changes
|
|
167
|
+
const walletOptionsBase = useMemo(() => {
|
|
168
|
+
const seenWallets = new Set();
|
|
169
|
+
const uniqueConnectors = connectors.filter(connector => {
|
|
170
|
+
const walletName = getConnectorName(connector);
|
|
171
|
+
// Only show Browser Wallet on desktop when browser has built-in wallet
|
|
172
|
+
if (walletName === 'Browser Wallet') {
|
|
173
|
+
if (!hasDesktopWallet) {
|
|
174
|
+
return false;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
// If browser doesn't support extensions, only show WalletConnect
|
|
178
|
+
if (!browserSupportsExtensions && walletName !== 'WalletConnect') {
|
|
179
|
+
return false;
|
|
180
|
+
}
|
|
181
|
+
// Skip duplicates
|
|
182
|
+
if (seenWallets.has(walletName))
|
|
183
|
+
return false;
|
|
184
|
+
seenWallets.add(walletName);
|
|
185
|
+
return true;
|
|
186
|
+
});
|
|
187
|
+
// Sort: Browser Wallet first (if desktop), MetaMask second, Coinbase third, WalletConnect last
|
|
188
|
+
const sortedConnectors = [...uniqueConnectors].sort((a, b) => {
|
|
189
|
+
const nameA = getConnectorName(a);
|
|
190
|
+
const nameB = getConnectorName(b);
|
|
191
|
+
// Browser Wallet always first (only on desktop when detected)
|
|
192
|
+
if (hasDesktopWallet) {
|
|
193
|
+
if (nameA === 'Browser Wallet')
|
|
194
|
+
return -1;
|
|
195
|
+
if (nameB === 'Browser Wallet')
|
|
196
|
+
return 1;
|
|
197
|
+
}
|
|
198
|
+
// MetaMask second
|
|
199
|
+
if (nameA === 'MetaMask')
|
|
200
|
+
return -1;
|
|
201
|
+
if (nameB === 'MetaMask')
|
|
202
|
+
return 1;
|
|
203
|
+
// Coinbase Wallet third
|
|
204
|
+
if (nameA === 'Coinbase Wallet')
|
|
205
|
+
return -1;
|
|
206
|
+
if (nameB === 'Coinbase Wallet')
|
|
207
|
+
return 1;
|
|
208
|
+
// WalletConnect always last
|
|
209
|
+
if (nameA === 'WalletConnect')
|
|
210
|
+
return 1;
|
|
211
|
+
if (nameB === 'WalletConnect')
|
|
212
|
+
return -1;
|
|
213
|
+
return 0;
|
|
214
|
+
});
|
|
215
|
+
return sortedConnectors.map(connector => {
|
|
216
|
+
const walletName = getConnectorName(connector);
|
|
217
|
+
const originalIndex = connectors.indexOf(connector);
|
|
218
|
+
return {
|
|
219
|
+
id: connector.id,
|
|
220
|
+
name: walletName,
|
|
221
|
+
available: true,
|
|
222
|
+
chainType: 'evm',
|
|
223
|
+
connector,
|
|
224
|
+
originalIndex,
|
|
225
|
+
};
|
|
226
|
+
});
|
|
227
|
+
}, [connectors, hasDesktopWallet, browserSupportsExtensions]);
|
|
228
|
+
// Build final wallet options with connecting state and click handlers
|
|
229
|
+
const evmWallets = useMemo(() => {
|
|
230
|
+
return walletOptionsBase.map(wallet => ({
|
|
231
|
+
id: wallet.id,
|
|
232
|
+
name: wallet.name,
|
|
233
|
+
available: wallet.available,
|
|
234
|
+
connecting: connectingWallet === wallet.name,
|
|
235
|
+
chainType: wallet.chainType,
|
|
236
|
+
connector: wallet.connector,
|
|
237
|
+
onClick: () => handleWalletSelect(wallet.name, wallet.originalIndex),
|
|
238
|
+
}));
|
|
239
|
+
}, [walletOptionsBase, connectingWallet, handleWalletSelect]);
|
|
240
|
+
// Build Solana wallet options
|
|
241
|
+
const solanaWallets = useMemo(() => [
|
|
242
|
+
{
|
|
243
|
+
id: 'phantom',
|
|
244
|
+
name: t('walletNames.phantom', 'Phantom'),
|
|
245
|
+
available: true,
|
|
246
|
+
connecting: connectingWallet === 'Phantom',
|
|
247
|
+
chainType: 'solana',
|
|
248
|
+
onClick: () => {
|
|
249
|
+
// Solana wallet connection not implemented yet
|
|
250
|
+
setError(t('errors.solanaNotSupported', 'Solana wallet connection coming soon'));
|
|
251
|
+
},
|
|
252
|
+
},
|
|
253
|
+
{
|
|
254
|
+
id: 'solflare',
|
|
255
|
+
name: t('walletNames.solflare', 'Solflare'),
|
|
256
|
+
available: true,
|
|
257
|
+
connecting: connectingWallet === 'Solflare',
|
|
258
|
+
chainType: 'solana',
|
|
259
|
+
onClick: () => {
|
|
260
|
+
// Solana wallet connection not implemented yet
|
|
261
|
+
setError(t('errors.solanaNotSupported', 'Solana wallet connection coming soon'));
|
|
262
|
+
},
|
|
263
|
+
},
|
|
264
|
+
], [t, connectingWallet]);
|
|
265
|
+
// Handle sign message
|
|
266
|
+
const handleSignMessage = async () => {
|
|
267
|
+
setIsSigning(true);
|
|
268
|
+
setError(null);
|
|
269
|
+
try {
|
|
270
|
+
const signed = await signVerificationMessage();
|
|
271
|
+
if (signed) {
|
|
272
|
+
onClose();
|
|
273
|
+
navigate(`/${lang}/wallet`);
|
|
274
|
+
}
|
|
275
|
+
else {
|
|
276
|
+
setError(t('errors.defaultSigningError', 'Failed to sign message. Please try again.'));
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
catch (err) {
|
|
280
|
+
console.error('Signing error:', err);
|
|
281
|
+
const errorString = err instanceof Error ? err.message.toLowerCase() : '';
|
|
282
|
+
if (errorString.includes('rejected') ||
|
|
283
|
+
errorString.includes('cancelled') ||
|
|
284
|
+
errorString.includes('canceled') ||
|
|
285
|
+
errorString.includes('denied')) {
|
|
286
|
+
setError(t('errors.signingCanceled', 'Signing was canceled. Please try again.'));
|
|
287
|
+
}
|
|
288
|
+
else {
|
|
289
|
+
setError(t('errors.defaultSigningError', 'Failed to sign message. Please try again.'));
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
finally {
|
|
293
|
+
setIsSigning(false);
|
|
294
|
+
}
|
|
295
|
+
};
|
|
296
|
+
const handleClose = () => {
|
|
297
|
+
// If connected but not verified, disconnect before closing
|
|
298
|
+
if (status === AuthStatus.Connected) {
|
|
299
|
+
wagmiDisconnect();
|
|
300
|
+
}
|
|
301
|
+
onClose();
|
|
302
|
+
};
|
|
303
|
+
return (_jsx(Modal, { isOpen: isOpen, onClose: handleClose, size: 'medium', variant: 'web3wallet', showCloseButton: true, closeOnOverlayClick: true, closeOnEscape: true, children: _jsxs("div", { className: 'p-6', children: [_jsxs("div", { className: 'text-center mb-8', children: [_jsx("div", { className: 'flex justify-center mb-6', children: _jsx(Logo, { size: 'lg', logoText: getAppConfig().name }) }), _jsxs("h1", { className: 'text-2xl font-bold text-gray-900 dark:text-white mb-2 flex items-center justify-center gap-3', children: [step === 'sign' && connectedWalletProvider && activeConnector && (_jsx(WalletIcon, { wallet: connectedWalletProvider, connector: activeConnector, className: 'w-8 h-8' })), step === 'connect'
|
|
304
|
+
? t('pageTitle.connect', 'Connect Your Wallet')
|
|
305
|
+
: t('pageTitle.verify', 'Verify Your Wallet')] }), _jsx("p", { className: 'text-gray-600 dark:text-gray-400', children: step === 'connect'
|
|
306
|
+
? t('pageDescription.connect', 'Choose your preferred wallet to connect')
|
|
307
|
+
: t('pageDescription.verify', 'Sign the message to authenticate your identity') })] }), step === 'connect' ? (_jsx(WalletConnectScreen, { evmWallets: evmWallets, solanaWallets: solanaWallets, activeTab: activeTab, onTabChange: setActiveTab, connectingWallet: connectingWallet, isAutoConnecting: false, error: error, browserSupportsExtensions: browserSupportsExtensions, labels: {
|
|
308
|
+
ethereum: t('tabLabels.ethereum', 'Ethereum'),
|
|
309
|
+
solana: t('tabLabels.solana', 'Solana'),
|
|
310
|
+
available: t('walletStatus.available', 'Available'),
|
|
311
|
+
notAvailable: t('walletStatus.notAvailable', 'Not Available'),
|
|
312
|
+
noWalletText: t('noWalletLinks.noWallet', "Don't have a wallet?"),
|
|
313
|
+
installMetaMask: t('noWalletLinks.installMetaMask', 'Install MetaMask'),
|
|
314
|
+
installPhantom: t('noWalletLinks.installPhantom', 'Install Phantom'),
|
|
315
|
+
autoConnectTitle: t('walletBrowserAutoConnect.title', 'Connecting to your wallet...'),
|
|
316
|
+
autoConnectDescription: t('walletBrowserAutoConnect.description', 'We detected you are using a wallet browser. Automatically connecting...'),
|
|
317
|
+
extensionsNotSupported: t('browserCompatibility.extensionsNotSupported', 'Solana wallets require browser extension support'),
|
|
318
|
+
useChromeForSolana: t('browserCompatibility.useChromeForSolana', 'Please use Chrome, Firefox, or Edge to connect Solana wallets'),
|
|
319
|
+
} })) : (_jsx(WalletVerifyScreen, { walletAddress: address || '', chainType: ChainType.EVM, walletProvider: connectedWalletProvider || undefined, walletConnector: activeConnector, isSigning: isSigning, error: error, onSign: handleSignMessage, onUseDifferentWallet: resetConnection, labels: {
|
|
320
|
+
pageTitle: t('pageTitle.verify', 'Verify Your Wallet'),
|
|
321
|
+
pageDescription: t('pageDescription.verify', 'Sign the message to authenticate your identity'),
|
|
322
|
+
connectedWalletLabel: t('verificationSection.connectedWalletLabel', 'Connected wallet:'),
|
|
323
|
+
ethereumChainLabel: t('verificationSection.ethereumChainLabel', 'Ethereum'),
|
|
324
|
+
solanaChainLabel: t('verificationSection.solanaChainLabel', 'Solana'),
|
|
325
|
+
signInEthereumTitle: t('verificationSection.signInEthereumTitle', 'Sign-In with Ethereum'),
|
|
326
|
+
signInEthereumDescription: t('verificationSection.signInEthereumDescription', "You'll be asked to sign a message to prove ownership of your wallet. This is gasless and secure."),
|
|
327
|
+
signInSolanaTitle: t('verificationSection.signInSolanaTitle', 'Sign-In with Solana'),
|
|
328
|
+
signInSolanaDescription: t('verificationSection.signInSolanaDescription', "You'll be asked to sign a message to prove ownership of your wallet. This is gasless and secure."),
|
|
329
|
+
signMessageButton: t('verificationSection.signMessageButton', 'Sign Message'),
|
|
330
|
+
signingButton: t('verificationSection.signingButton', 'Signing...'),
|
|
331
|
+
useDifferentWallet: t('verificationSection.useDifferentWallet', 'Use a different wallet'),
|
|
332
|
+
} }))] }) }));
|
|
333
|
+
}
|
|
334
|
+
//# sourceMappingURL=WalletConnectionModal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WalletConnectionModal.js","sourceRoot":"","sources":["../../../src/components/wallet/WalletConnectionModal.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* App configuration interface that consuming apps must provide.
|
|
3
|
+
* This decouples the UI library from specific app configs.
|
|
4
|
+
*/
|
|
5
|
+
export interface HeavymathAppConfig {
|
|
6
|
+
name: string;
|
|
7
|
+
indexerUrl: string;
|
|
8
|
+
websocketUrl?: string;
|
|
9
|
+
defaultChainId: number;
|
|
10
|
+
alchemyApiKey?: string;
|
|
11
|
+
walletConnectProjectId?: string;
|
|
12
|
+
devMode?: boolean;
|
|
13
|
+
testMode?: boolean;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Initialize the app config. Must be called before using any components
|
|
17
|
+
* that depend on config (contexts, hooks, etc.).
|
|
18
|
+
*/
|
|
19
|
+
export declare function initHeavymathUI(config: HeavymathAppConfig): void;
|
|
20
|
+
/**
|
|
21
|
+
* Get the current app config. Throws if not initialized.
|
|
22
|
+
*/
|
|
23
|
+
export declare function getAppConfig(): HeavymathAppConfig;
|
|
24
|
+
//# sourceMappingURL=app.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../src/config/app.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAID;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI,CAEhE;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,kBAAkB,CAOjD"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
let _appConfig = null;
|
|
2
|
+
/**
|
|
3
|
+
* Initialize the app config. Must be called before using any components
|
|
4
|
+
* that depend on config (contexts, hooks, etc.).
|
|
5
|
+
*/
|
|
6
|
+
export function initHeavymathUI(config) {
|
|
7
|
+
_appConfig = config;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Get the current app config. Throws if not initialized.
|
|
11
|
+
*/
|
|
12
|
+
export function getAppConfig() {
|
|
13
|
+
if (!_appConfig) {
|
|
14
|
+
throw new Error('heavymath_ui not initialized. Call initHeavymathUI() first.');
|
|
15
|
+
}
|
|
16
|
+
return _appConfig;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=app.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/config/app.ts"],"names":[],"mappings":"AAeA,IAAI,UAAU,GAA8B,IAAI,CAAC;AAEjD;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,MAA0B;IACxD,UAAU,GAAG,MAAM,CAAC;AACtB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY;IAC1B,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CACb,6DAA6D,CAC9D,CAAC;IACJ,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC"}
|