thirdweb 5.86.7-nightly-f5f8a40320d5d768d5866813f53ee4880bdf7851-20250129000319 → 5.87.0
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/cjs/exports/react.js +4 -3
- package/dist/cjs/exports/react.js.map +1 -1
- package/dist/cjs/exports/react.native.js +27 -1
- package/dist/cjs/exports/react.native.js.map +1 -1
- package/dist/cjs/react/{web/ui/prebuilt/Account → core/account}/provider.js +5 -1
- package/dist/cjs/react/core/account/provider.js.map +1 -0
- package/dist/cjs/react/core/utils/account.js +105 -0
- package/dist/cjs/react/core/utils/account.js.map +1 -0
- package/dist/cjs/react/core/utils/walletIcon.js +23 -0
- package/dist/cjs/react/core/utils/walletIcon.js.map +1 -1
- package/dist/cjs/react/core/utils/walletname.js +43 -0
- package/dist/cjs/react/core/utils/walletname.js.map +1 -0
- package/dist/cjs/react/core/wallet/provider.js.map +1 -0
- package/dist/cjs/react/native/ui/prebuilt/Account/address.js +50 -0
- package/dist/cjs/react/native/ui/prebuilt/Account/address.js.map +1 -0
- package/dist/cjs/react/native/ui/prebuilt/Account/avatar.js +151 -0
- package/dist/cjs/react/native/ui/prebuilt/Account/avatar.js.map +1 -0
- package/dist/cjs/react/native/ui/prebuilt/Account/balance.js +130 -0
- package/dist/cjs/react/native/ui/prebuilt/Account/balance.js.map +1 -0
- package/dist/cjs/react/native/ui/prebuilt/Account/blobbie.js +58 -0
- package/dist/cjs/react/native/ui/prebuilt/Account/blobbie.js.map +1 -0
- package/dist/cjs/react/native/ui/prebuilt/Account/name.js +113 -0
- package/dist/cjs/react/native/ui/prebuilt/Account/name.js.map +1 -0
- package/dist/cjs/react/native/ui/prebuilt/Wallet/icon.js +85 -0
- package/dist/cjs/react/native/ui/prebuilt/Wallet/icon.js.map +1 -0
- package/dist/cjs/react/native/ui/prebuilt/Wallet/name.js +66 -0
- package/dist/cjs/react/native/ui/prebuilt/Wallet/name.js.map +1 -0
- package/dist/cjs/react/web/ui/ConnectWallet/Blobbie.js +2 -18
- package/dist/cjs/react/web/ui/ConnectWallet/Blobbie.js.map +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/ConnectButton.js +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/ConnectButton.js.map +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/Details.js +5 -4
- package/dist/cjs/react/web/ui/ConnectWallet/Details.js.map +1 -1
- package/dist/cjs/react/web/ui/prebuilt/Account/address.js +1 -1
- package/dist/cjs/react/web/ui/prebuilt/Account/address.js.map +1 -1
- package/dist/cjs/react/web/ui/prebuilt/Account/avatar.js +1 -1
- package/dist/cjs/react/web/ui/prebuilt/Account/avatar.js.map +1 -1
- package/dist/cjs/react/web/ui/prebuilt/Account/balance.js +8 -90
- package/dist/cjs/react/web/ui/prebuilt/Account/balance.js.map +1 -1
- package/dist/cjs/react/web/ui/prebuilt/Account/blobbie.js +1 -1
- package/dist/cjs/react/web/ui/prebuilt/Account/blobbie.js.map +1 -1
- package/dist/cjs/react/web/ui/prebuilt/Account/name.js +1 -1
- package/dist/cjs/react/web/ui/prebuilt/Account/name.js.map +1 -1
- package/dist/cjs/react/web/ui/prebuilt/Wallet/icon.js +1 -23
- package/dist/cjs/react/web/ui/prebuilt/Wallet/icon.js.map +1 -1
- package/dist/cjs/react/web/ui/prebuilt/Wallet/name.js +2 -42
- package/dist/cjs/react/web/ui/prebuilt/Wallet/name.js.map +1 -1
- package/dist/cjs/utils/shortenLargeNumber.js +3 -0
- package/dist/cjs/utils/shortenLargeNumber.js.map +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/cjs/version.js.map +1 -1
- package/dist/esm/exports/react.js +3 -3
- package/dist/esm/exports/react.js.map +1 -1
- package/dist/esm/exports/react.native.js +15 -0
- package/dist/esm/exports/react.native.js.map +1 -1
- package/dist/esm/react/{web/ui/prebuilt/Account → core/account}/provider.js +5 -1
- package/dist/esm/react/core/account/provider.js.map +1 -0
- package/dist/esm/react/core/utils/account.js +99 -0
- package/dist/esm/react/core/utils/account.js.map +1 -0
- package/dist/esm/react/core/utils/walletIcon.js +21 -0
- package/dist/esm/react/core/utils/walletIcon.js.map +1 -1
- package/dist/esm/react/core/utils/walletname.js +40 -0
- package/dist/esm/react/core/utils/walletname.js.map +1 -0
- package/dist/esm/react/core/wallet/provider.js.map +1 -0
- package/dist/esm/react/native/ui/prebuilt/Account/address.js +47 -0
- package/dist/esm/react/native/ui/prebuilt/Account/address.js.map +1 -0
- package/dist/esm/react/native/ui/prebuilt/Account/avatar.js +148 -0
- package/dist/esm/react/native/ui/prebuilt/Account/avatar.js.map +1 -0
- package/dist/esm/react/native/ui/prebuilt/Account/balance.js +127 -0
- package/dist/esm/react/native/ui/prebuilt/Account/balance.js.map +1 -0
- package/dist/esm/react/native/ui/prebuilt/Account/blobbie.js +54 -0
- package/dist/esm/react/native/ui/prebuilt/Account/blobbie.js.map +1 -0
- package/dist/esm/react/native/ui/prebuilt/Account/name.js +110 -0
- package/dist/esm/react/native/ui/prebuilt/Account/name.js.map +1 -0
- package/dist/esm/react/native/ui/prebuilt/Wallet/icon.js +81 -0
- package/dist/esm/react/native/ui/prebuilt/Wallet/icon.js.map +1 -0
- package/dist/esm/react/native/ui/prebuilt/Wallet/name.js +63 -0
- package/dist/esm/react/native/ui/prebuilt/Wallet/name.js.map +1 -0
- package/dist/esm/react/web/ui/ConnectWallet/Blobbie.js +1 -17
- package/dist/esm/react/web/ui/ConnectWallet/Blobbie.js.map +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/ConnectButton.js +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/ConnectButton.js.map +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/Details.js +3 -2
- package/dist/esm/react/web/ui/ConnectWallet/Details.js.map +1 -1
- package/dist/esm/react/web/ui/prebuilt/Account/address.js +1 -1
- package/dist/esm/react/web/ui/prebuilt/Account/address.js.map +1 -1
- package/dist/esm/react/web/ui/prebuilt/Account/avatar.js +1 -1
- package/dist/esm/react/web/ui/prebuilt/Account/avatar.js.map +1 -1
- package/dist/esm/react/web/ui/prebuilt/Account/balance.js +6 -85
- package/dist/esm/react/web/ui/prebuilt/Account/balance.js.map +1 -1
- package/dist/esm/react/web/ui/prebuilt/Account/blobbie.js +1 -1
- package/dist/esm/react/web/ui/prebuilt/Account/blobbie.js.map +1 -1
- package/dist/esm/react/web/ui/prebuilt/Account/name.js +1 -1
- package/dist/esm/react/web/ui/prebuilt/Account/name.js.map +1 -1
- package/dist/esm/react/web/ui/prebuilt/Wallet/icon.js +1 -22
- package/dist/esm/react/web/ui/prebuilt/Wallet/icon.js.map +1 -1
- package/dist/esm/react/web/ui/prebuilt/Wallet/name.js +1 -39
- package/dist/esm/react/web/ui/prebuilt/Wallet/name.js.map +1 -1
- package/dist/esm/utils/shortenLargeNumber.js +3 -0
- package/dist/esm/utils/shortenLargeNumber.js.map +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/esm/version.js.map +1 -1
- package/dist/types/exports/react.d.ts +5 -4
- package/dist/types/exports/react.d.ts.map +1 -1
- package/dist/types/exports/react.native.d.ts +15 -0
- package/dist/types/exports/react.native.d.ts.map +1 -1
- package/dist/types/react/{web/ui/prebuilt/Account → core/account}/provider.d.ts +3 -4
- package/dist/types/react/core/account/provider.d.ts.map +1 -0
- package/dist/types/react/core/utils/account.d.ts +46 -0
- package/dist/types/react/core/utils/account.d.ts.map +1 -0
- package/dist/types/react/core/utils/walletIcon.d.ts +14 -0
- package/dist/types/react/core/utils/walletIcon.d.ts.map +1 -1
- package/dist/types/react/core/utils/walletname.d.ts +9 -0
- package/dist/types/react/core/utils/walletname.d.ts.map +1 -0
- package/dist/types/react/{web/ui/prebuilt/Wallet → core/wallet}/provider.d.ts +1 -1
- package/dist/types/react/core/wallet/provider.d.ts.map +1 -0
- package/dist/types/react/native/ui/prebuilt/Account/address.d.ts +54 -0
- package/dist/types/react/native/ui/prebuilt/Account/address.d.ts.map +1 -0
- package/dist/types/react/native/ui/prebuilt/Account/avatar.d.ts +141 -0
- package/dist/types/react/native/ui/prebuilt/Account/avatar.d.ts.map +1 -0
- package/dist/types/react/native/ui/prebuilt/Account/balance.d.ts +144 -0
- package/dist/types/react/native/ui/prebuilt/Account/balance.d.ts.map +1 -0
- package/dist/types/react/native/ui/prebuilt/Account/blobbie.d.ts +34 -0
- package/dist/types/react/native/ui/prebuilt/Account/blobbie.d.ts.map +1 -0
- package/dist/types/react/native/ui/prebuilt/Account/name.d.ts +118 -0
- package/dist/types/react/native/ui/prebuilt/Account/name.d.ts.map +1 -0
- package/dist/types/react/native/ui/prebuilt/Wallet/icon.d.ts +100 -0
- package/dist/types/react/native/ui/prebuilt/Wallet/icon.d.ts.map +1 -0
- package/dist/types/react/native/ui/prebuilt/Wallet/name.d.ts +94 -0
- package/dist/types/react/native/ui/prebuilt/Wallet/name.d.ts.map +1 -0
- package/dist/types/react/web/ui/ConnectWallet/Blobbie.d.ts +1 -1
- package/dist/types/react/web/ui/ConnectWallet/Blobbie.d.ts.map +1 -1
- package/dist/types/react/web/ui/ConnectWallet/ConnectButton.d.ts.map +1 -1
- package/dist/types/react/web/ui/ConnectWallet/Details.d.ts +1 -1
- package/dist/types/react/web/ui/ConnectWallet/Details.d.ts.map +1 -1
- package/dist/types/react/web/ui/prebuilt/Account/avatar.d.ts.map +1 -1
- package/dist/types/react/web/ui/prebuilt/Account/balance.d.ts +1 -42
- package/dist/types/react/web/ui/prebuilt/Account/balance.d.ts.map +1 -1
- package/dist/types/react/web/ui/prebuilt/Account/blobbie.d.ts.map +1 -1
- package/dist/types/react/web/ui/prebuilt/Wallet/icon.d.ts +2 -10
- package/dist/types/react/web/ui/prebuilt/Wallet/icon.d.ts.map +1 -1
- package/dist/types/react/web/ui/prebuilt/Wallet/name.d.ts +1 -18
- package/dist/types/react/web/ui/prebuilt/Wallet/name.d.ts.map +1 -1
- package/dist/types/utils/shortenLargeNumber.d.ts.map +1 -1
- package/dist/types/version.d.ts +1 -1
- package/dist/types/version.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/exports/react.native.ts +47 -0
- package/src/exports/react.ts +5 -3
- package/src/react/{web/ui/prebuilt/Account → core/account}/provider.test.tsx +1 -1
- package/src/react/{web/ui/prebuilt/Account → core/account}/provider.tsx +7 -5
- package/src/react/core/utils/account.ts +146 -0
- package/src/react/core/utils/walletIcon.ts +28 -0
- package/src/react/core/utils/walletname.ts +53 -0
- package/src/react/{web/ui/prebuilt/Wallet → core/wallet}/provider.tsx +1 -1
- package/src/react/native/ui/prebuilt/Account/address.tsx +65 -0
- package/src/react/native/ui/prebuilt/Account/avatar.tsx +225 -0
- package/src/react/native/ui/prebuilt/Account/balance.tsx +221 -0
- package/src/react/native/ui/prebuilt/Account/blobbie.tsx +94 -0
- package/src/react/native/ui/prebuilt/Account/name.tsx +180 -0
- package/src/react/native/ui/prebuilt/Wallet/icon.tsx +124 -0
- package/src/react/native/ui/prebuilt/Wallet/name.tsx +112 -0
- package/src/react/web/ui/ConnectWallet/Blobbie.tsx +1 -18
- package/src/react/web/ui/ConnectWallet/ConnectButton.tsx +1 -1
- package/src/react/web/ui/ConnectWallet/Details.test.tsx +1 -1
- package/src/react/web/ui/ConnectWallet/Details.tsx +7 -7
- package/src/react/web/ui/prebuilt/Account/address.test.tsx +1 -1
- package/src/react/web/ui/prebuilt/Account/address.tsx +1 -1
- package/src/react/web/ui/prebuilt/Account/avatar.test.tsx +1 -1
- package/src/react/web/ui/prebuilt/Account/avatar.tsx +1 -2
- package/src/react/web/ui/prebuilt/Account/balance.test.tsx +7 -5
- package/src/react/web/ui/prebuilt/Account/balance.tsx +10 -130
- package/src/react/web/ui/prebuilt/Account/blobbie.tsx +1 -1
- package/src/react/web/ui/prebuilt/Account/name.test.tsx +1 -1
- package/src/react/web/ui/prebuilt/Account/name.tsx +1 -1
- package/src/react/web/ui/prebuilt/Wallet/icon.test.tsx +3 -2
- package/src/react/web/ui/prebuilt/Wallet/icon.tsx +6 -30
- package/src/react/web/ui/prebuilt/Wallet/name.test.tsx +6 -2
- package/src/react/web/ui/prebuilt/Wallet/name.tsx +2 -52
- package/src/utils/shortenLargeNumber.ts +3 -0
- package/src/version.ts +1 -1
- package/dist/cjs/react/web/ui/prebuilt/Account/provider.js.map +0 -1
- package/dist/cjs/react/web/ui/prebuilt/Wallet/provider.js.map +0 -1
- package/dist/esm/react/web/ui/prebuilt/Account/provider.js.map +0 -1
- package/dist/esm/react/web/ui/prebuilt/Wallet/provider.js.map +0 -1
- package/dist/types/react/web/ui/prebuilt/Account/provider.d.ts.map +0 -1
- package/dist/types/react/web/ui/prebuilt/Wallet/provider.d.ts.map +0 -1
- /package/dist/cjs/react/{web/ui/prebuilt/Wallet → core/wallet}/provider.js +0 -0
- /package/dist/esm/react/{web/ui/prebuilt/Wallet → core/wallet}/provider.js +0 -0
- /package/src/react/{web/ui/prebuilt/Wallet → core/wallet}/provider.test.tsx +0 -0
@@ -1,6 +1,7 @@
|
|
1
1
|
"use client";
|
2
2
|
import { jsx as _jsx } from "react/jsx-runtime";
|
3
3
|
import { createContext, useContext } from "react";
|
4
|
+
import { isAddress } from "../../../utils/address.js";
|
4
5
|
const AccountProviderContext = /* @__PURE__ */ createContext(undefined);
|
5
6
|
/**
|
6
7
|
* A React context provider component that supplies Account-related data to its child components.
|
@@ -12,7 +13,7 @@ const AccountProviderContext = /* @__PURE__ */ createContext(undefined);
|
|
12
13
|
* ```tsx
|
13
14
|
* import { AccountProvider, AccountAvatar, AccountName, AccountAddress } from "thirdweb/react";
|
14
15
|
*
|
15
|
-
* <AccountProvider>
|
16
|
+
* <AccountProvider address="0x..." client={client}>
|
16
17
|
* <AccountAvatar />
|
17
18
|
* <AccountName />
|
18
19
|
* <AccountAddress />
|
@@ -27,6 +28,9 @@ export function AccountProvider(props) {
|
|
27
28
|
if (!props.address) {
|
28
29
|
throw new Error("AccountProvider: No address passed. Ensure an address is always provided to the AccountProvider");
|
29
30
|
}
|
31
|
+
if (!isAddress(props.address)) {
|
32
|
+
throw new Error(`AccountProvider: Invalid address: ${props.address}`);
|
33
|
+
}
|
30
34
|
return (_jsx(AccountProviderContext.Provider, { value: props, children: props.children }));
|
31
35
|
}
|
32
36
|
/**
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../../../../src/react/core/account/provider.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAElD,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAiBtD,MAAM,sBAAsB,GAAG,eAAe,CAAC,aAAa,CAE1D,SAAS,CAAC,CAAC;AAEb;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,eAAe,CAC7B,KAAoD;IAEpD,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CACb,iGAAiG,CAClG,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,qCAAqC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACxE,CAAC;IACD,OAAO,CACL,KAAC,sBAAsB,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,YAC1C,KAAK,CAAC,QAAQ,GACiB,CACnC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAC/B,MAAM,GAAG,GAAG,UAAU,CAAC,sBAAsB,CAAC,CAAC;IAC/C,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CACb,oIAAoI,CACrI,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
|
@@ -0,0 +1,99 @@
|
|
1
|
+
import { NATIVE_TOKEN_ADDRESS } from "../../../constants/addresses.js";
|
2
|
+
import { convertCryptoToFiat } from "../../../pay/convert/cryptoToFiat.js";
|
3
|
+
import { isAddress } from "../../../utils/address.js";
|
4
|
+
import { formatNumber } from "../../../utils/formatNumber.js";
|
5
|
+
import { shortenLargeNumber } from "../../../utils/shortenLargeNumber.js";
|
6
|
+
import { getWalletBalance } from "../../../wallets/utils/getWalletBalance.js";
|
7
|
+
export const COLOR_OPTIONS = [
|
8
|
+
["#fca5a5", "#b91c1c"],
|
9
|
+
["#fdba74", "#c2410c"],
|
10
|
+
["#fcd34d", "#b45309"],
|
11
|
+
["#fde047", "#a16207"],
|
12
|
+
["#a3e635", "#4d7c0f"],
|
13
|
+
["#86efac", "#15803d"],
|
14
|
+
["#67e8f9", "#0e7490"],
|
15
|
+
["#7dd3fc", "#0369a1"],
|
16
|
+
["#93c5fd", "#1d4ed8"],
|
17
|
+
["#a5b4fc", "#4338ca"],
|
18
|
+
["#c4b5fd", "#6d28d9"],
|
19
|
+
["#d8b4fe", "#7e22ce"],
|
20
|
+
["#f0abfc", "#a21caf"],
|
21
|
+
["#f9a8d4", "#be185d"],
|
22
|
+
["#fda4af", "#be123c"],
|
23
|
+
];
|
24
|
+
/**
|
25
|
+
* @internal Exported for tests
|
26
|
+
*/
|
27
|
+
export async function loadAccountBalance(props) {
|
28
|
+
const { chain, client, address, tokenAddress, showBalanceInFiat } = props;
|
29
|
+
if (!chain) {
|
30
|
+
throw new Error("chain is required");
|
31
|
+
}
|
32
|
+
if (tokenAddress &&
|
33
|
+
tokenAddress?.toLowerCase() === NATIVE_TOKEN_ADDRESS.toLowerCase()) {
|
34
|
+
throw new Error(`Invalid tokenAddress - cannot be ${NATIVE_TOKEN_ADDRESS}`);
|
35
|
+
}
|
36
|
+
if (!isAddress(address)) {
|
37
|
+
throw new Error("Invalid wallet address. Expected an EVM address");
|
38
|
+
}
|
39
|
+
if (tokenAddress && !isAddress(tokenAddress)) {
|
40
|
+
throw new Error("Invalid tokenAddress. Expected an EVM contract address");
|
41
|
+
}
|
42
|
+
const tokenBalanceData = await getWalletBalance({
|
43
|
+
chain,
|
44
|
+
client,
|
45
|
+
address,
|
46
|
+
tokenAddress,
|
47
|
+
}).catch(() => undefined);
|
48
|
+
if (!tokenBalanceData) {
|
49
|
+
throw new Error(`Failed to retrieve ${tokenAddress ? `token: ${tokenAddress}` : "native token"} balance for address: ${address} on chainId:${chain.id}`);
|
50
|
+
}
|
51
|
+
if (showBalanceInFiat) {
|
52
|
+
const fiatData = await convertCryptoToFiat({
|
53
|
+
fromAmount: Number(tokenBalanceData.displayValue),
|
54
|
+
fromTokenAddress: tokenAddress || NATIVE_TOKEN_ADDRESS,
|
55
|
+
to: showBalanceInFiat,
|
56
|
+
chain,
|
57
|
+
client,
|
58
|
+
}).catch(() => undefined);
|
59
|
+
if (fiatData === undefined) {
|
60
|
+
throw new Error(`Failed to resolve fiat value for ${tokenAddress ? `token: ${tokenAddress}` : "native token"} on chainId: ${chain.id}`);
|
61
|
+
}
|
62
|
+
const result = {
|
63
|
+
balance: fiatData?.result,
|
64
|
+
symbol: getFiatSymbol(showBalanceInFiat),
|
65
|
+
};
|
66
|
+
return result;
|
67
|
+
}
|
68
|
+
return {
|
69
|
+
balance: Number(tokenBalanceData.displayValue),
|
70
|
+
symbol: tokenBalanceData.symbol,
|
71
|
+
};
|
72
|
+
}
|
73
|
+
function getFiatSymbol(showBalanceInFiat) {
|
74
|
+
switch (showBalanceInFiat) {
|
75
|
+
case "USD":
|
76
|
+
return "$";
|
77
|
+
}
|
78
|
+
}
|
79
|
+
/**
|
80
|
+
* Format the display balance for both crypto and fiat, in the Details button and Modal
|
81
|
+
* If both crypto balance and fiat balance exist, we have to keep the string very short to avoid UI issues.
|
82
|
+
* @internal
|
83
|
+
* Used internally for the Details button and the Details Modal
|
84
|
+
*/
|
85
|
+
export function formatAccountTokenBalance(props) {
|
86
|
+
const formattedTokenBalance = formatNumber(props.balance, props.decimals);
|
87
|
+
return `${formattedTokenBalance} ${props.symbol}`;
|
88
|
+
}
|
89
|
+
/**
|
90
|
+
* Used internally for the Details button and Details Modal
|
91
|
+
* @internal
|
92
|
+
*/
|
93
|
+
export function formatAccountFiatBalance(props) {
|
94
|
+
const num = formatNumber(props.balance, props.decimals);
|
95
|
+
// Need to keep them short to avoid UI overflow issues
|
96
|
+
const formattedFiatBalance = shortenLargeNumber(num);
|
97
|
+
return `${props.symbol}${formattedFiatBalance}`;
|
98
|
+
}
|
99
|
+
//# sourceMappingURL=account.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"account.js","sourceRoot":"","sources":["../../../../../src/react/core/utils/account.ts"],"names":[],"mappings":"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"}
|
@@ -1,3 +1,6 @@
|
|
1
|
+
import { useQuery } from "@tanstack/react-query";
|
2
|
+
import { getWalletInfo } from "../../../wallets/__generated__/getWalletInfo.js";
|
3
|
+
import { useWalletContext } from "../wallet/provider.js";
|
1
4
|
// TODO make the social icons usable in RN too
|
2
5
|
const googleIconUri = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI3MDUuNiIgaGVpZ2h0PSI3MjAiIHZpZXdCb3g9IjAgMCAxODYuNjkgMTkwLjUiIHhtbG5zOnY9Imh0dHBzOi8vdmVjdGEuaW8vbmFubyI+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTE4NC41ODMgNzY1LjE3MSkiPjxwYXRoIGNsaXAtcGF0aD0ibm9uZSIgbWFzaz0ibm9uZSIgZD0iTS0xMDg5LjMzMy02ODcuMjM5djM2Ljg4OGg1MS4yNjJjLTIuMjUxIDExLjg2My05LjAwNiAyMS45MDgtMTkuMTM3IDI4LjY2MmwzMC45MTMgMjMuOTg2YzE4LjAxMS0xNi42MjUgMjguNDAyLTQxLjA0NCAyOC40MDItNzAuMDUyIDAtNi43NTQtLjYwNi0xMy4yNDktMS43MzItMTkuNDgzeiIgZmlsbD0iIzQyODVmNCIvPjxwYXRoIGNsaXAtcGF0aD0ibm9uZSIgbWFzaz0ibm9uZSIgZD0iTS0xMTQyLjcxNC02NTEuNzkxbC02Ljk3MiA1LjMzNy0yNC42NzkgMTkuMjIzaDBjMTUuNjczIDMxLjA4NiA0Ny43OTYgNTIuNTYxIDg1LjAzIDUyLjU2MSAyNS43MTcgMCA0Ny4yNzgtOC40ODYgNjMuMDM4LTIzLjAzM2wtMzAuOTEzLTIzLjk4NmMtOC40ODYgNS43MTUtMTkuMzEgOS4xNzktMzIuMTI1IDkuMTc5LTI0Ljc2NSAwLTQ1LjgwNi0xNi43MTItNTMuMzQtMzkuMjI2eiIgZmlsbD0iIzM0YTg1MyIvPjxwYXRoIGNsaXAtcGF0aD0ibm9uZSIgbWFzaz0ibm9uZSIgZD0iTS0xMTc0LjM2NS03MTIuNjFjLTYuNDk0IDEyLjgxNS0xMC4yMTcgMjcuMjc2LTEwLjIxNyA0Mi42ODlzMy43MjMgMjkuODc0IDEwLjIxNyA0Mi42ODljMCAuMDg2IDMxLjY5My0yNC41OTIgMzEuNjkzLTI0LjU5Mi0xLjkwNS01LjcxNS0zLjAzMS0xMS43NzYtMy4wMzEtMTguMDk4czEuMTI2LTEyLjM4MyAzLjAzMS0xOC4wOTh6IiBmaWxsPSIjZmJiYzA1Ii8+PHBhdGggZD0iTS0xMDg5LjMzMy03MjcuMjQ0YzE0LjAyOCAwIDI2LjQ5NyA0Ljg0OSAzNi40NTUgMTQuMjAxbDI3LjI3Ni0yNy4yNzZjLTE2LjUzOS0xNS40MTMtMzguMDEzLTI0Ljg1Mi02My43MzEtMjQuODUyLTM3LjIzNCAwLTY5LjM1OSAyMS4zODgtODUuMDMyIDUyLjU2MWwzMS42OTIgMjQuNTkyYzcuNTMzLTIyLjUxNCAyOC41NzUtMzkuMjI2IDUzLjM0LTM5LjIyNnoiIGZpbGw9IiNlYTQzMzUiIGNsaXAtcGF0aD0ibm9uZSIgbWFzaz0ibm9uZSIvPjwvZz48L3N2Zz4=";
|
3
6
|
const facebookIconUri = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGRhdGEtbmFtZT0iRWJlbmUgMSIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgaWQ9ImZhY2Vib29rLWxvZ28tMjAxOSI+PHBhdGggZmlsbD0iIzE4NzdmMiIgZD0iTTEwMjQsNTEyQzEwMjQsMjI5LjIzMDE2LDc5NC43Njk3OCwwLDUxMiwwUzAsMjI5LjIzMDE2LDAsNTEyYzAsMjU1LjU1NCwxODcuMjMxLDQ2Ny4zNzAxMiw0MzIsNTA1Ljc3Nzc3VjY2MEgzMDJWNTEySDQzMlYzOTkuMkM0MzIsMjcwLjg3OTgyLDUwOC40Mzg1NCwyMDAsNjI1LjM4OTIyLDIwMCw2ODEuNDA3NjUsMjAwLDc0MCwyMTAsNzQwLDIxMFYzMzZINjc1LjQzNzEzQzYxMS44MzUwOCwzMzYsNTkyLDM3NS40NjY2Nyw1OTIsNDE1Ljk1NzI4VjUxMkg3MzRMNzExLjMsNjYwSDU5MnYzNTcuNzc3NzdDODM2Ljc2OSw5NzkuMzcwMTIsMTAyNCw3NjcuNTU0LDEwMjQsNTEyWiI+PC9wYXRoPjxwYXRoIGZpbGw9IiNmZmYiIGQ9Ik03MTEuMyw2NjAsNzM0LDUxMkg1OTJWNDE1Ljk1NzI4QzU5MiwzNzUuNDY2NjcsNjExLjgzNTA4LDMzNiw2NzUuNDM3MTMsMzM2SDc0MFYyMTBzLTU4LjU5MjM1LTEwLTExNC42MTA3OC0xMEM1MDguNDM4NTQsMjAwLDQzMiwyNzAuODc5ODIsNDMyLDM5OS4yVjUxMkgzMDJWNjYwSDQzMnYzNTcuNzc3NzdhNTE3LjM5NjE5LDUxNy4zOTYxOSwwLDAsMCwxNjAsMFY2NjBaIj48L3BhdGg+PC9zdmc+";
|
@@ -84,4 +87,22 @@ export function getSocialIcon(provider) {
|
|
84
87
|
return genericWalletIcon;
|
85
88
|
}
|
86
89
|
}
|
90
|
+
/**
|
91
|
+
* @internal
|
92
|
+
*/
|
93
|
+
export function useWalletIcon(props) {
|
94
|
+
const { id } = useWalletContext();
|
95
|
+
const imageQuery = useQuery({
|
96
|
+
queryKey: ["walletIcon", id],
|
97
|
+
queryFn: async () => fetchWalletImage({ id }),
|
98
|
+
...props.queryOptions,
|
99
|
+
});
|
100
|
+
return imageQuery;
|
101
|
+
}
|
102
|
+
/**
|
103
|
+
* @internal Exported for tests only
|
104
|
+
*/
|
105
|
+
export async function fetchWalletImage(props) {
|
106
|
+
return getWalletInfo(props.id, true);
|
107
|
+
}
|
87
108
|
//# sourceMappingURL=walletIcon.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"walletIcon.js","sourceRoot":"","sources":["../../../../../src/react/core/utils/walletIcon.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"walletIcon.js","sourceRoot":"","sources":["../../../../../src/react/core/utils/walletIcon.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,40 @@
|
|
1
|
+
import { useQuery } from "@tanstack/react-query";
|
2
|
+
import { getFunctionId } from "../../../utils/function-id.js";
|
3
|
+
import { getWalletInfo } from "../../../wallets/__generated__/getWalletInfo.js";
|
4
|
+
import { useWalletContext } from "../wallet/provider.js";
|
5
|
+
/**
|
6
|
+
* @internal
|
7
|
+
*/
|
8
|
+
export function useWalletName(props) {
|
9
|
+
const { id } = useWalletContext();
|
10
|
+
const nameQuery = useQuery({
|
11
|
+
queryKey: getQueryKeys({ id, formatFn: props.formatFn }),
|
12
|
+
queryFn: async () => fetchWalletName({ id, formatFn: props.formatFn }),
|
13
|
+
...props.queryOptions,
|
14
|
+
});
|
15
|
+
return nameQuery;
|
16
|
+
}
|
17
|
+
/**
|
18
|
+
* @internal Exported for tests only
|
19
|
+
*/
|
20
|
+
function getQueryKeys(props) {
|
21
|
+
if (typeof props.formatFn === "function") {
|
22
|
+
return [
|
23
|
+
"walletName",
|
24
|
+
props.id,
|
25
|
+
{ resolver: getFunctionId(props.formatFn) },
|
26
|
+
];
|
27
|
+
}
|
28
|
+
return ["walletName", props.id];
|
29
|
+
}
|
30
|
+
/**
|
31
|
+
* @internal Exported for tests only
|
32
|
+
*/
|
33
|
+
async function fetchWalletName(props) {
|
34
|
+
const info = await getWalletInfo(props.id);
|
35
|
+
if (typeof props.formatFn === "function") {
|
36
|
+
return props.formatFn(info.name);
|
37
|
+
}
|
38
|
+
return info.name;
|
39
|
+
}
|
40
|
+
//# sourceMappingURL=walletname.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"walletname.js","sourceRoot":"","sources":["../../../../../src/react/core/utils/walletname.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjD,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,iDAAiD,CAAC;AAEhF,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,KAG7B;IACC,MAAM,EAAE,EAAE,EAAE,GAAG,gBAAgB,EAAE,CAAC;IAClC,MAAM,SAAS,GAAG,QAAQ,CAAC;QACzB,QAAQ,EAAE,YAAY,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;QACxD,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;QACtE,GAAG,KAAK,CAAC,YAAY;KACtB,CAAC,CAAC;IACH,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CAAC,KAGrB;IACC,IAAI,OAAO,KAAK,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;QACzC,OAAO;YACL,YAAY;YACZ,KAAK,CAAC,EAAE;YACR,EAAE,QAAQ,EAAE,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;SACnC,CAAC;IACb,CAAC;IACD,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,EAAE,CAAU,CAAC;AAC3C,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,eAAe,CAAC,KAG9B;IACC,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC3C,IAAI,OAAO,KAAK,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;QACzC,OAAO,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CAAC;AACnB,CAAC"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../../../../src/react/core/wallet/provider.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAYlD;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,eAAe,CAAC,aAAa,CAEhE,SAAS,CAAC,CAAC;AAEb;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,cAAc,CAC5B,KAAmD;IAEnD,OAAO,CACL,KAAC,qBAAqB,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,YACzC,KAAK,CAAC,QAAQ,GACgB,CAClC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB;IAC9B,MAAM,GAAG,GAAG,UAAU,CAAC,qBAAqB,CAAC,CAAC;IAC9C,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CACb,6HAA6H,CAC9H,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
|
@@ -0,0 +1,47 @@
|
|
1
|
+
"use client";
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
3
|
+
import { Text } from "react-native";
|
4
|
+
import { useAccountContext } from "../../../../core/account/provider.js";
|
5
|
+
/**
|
6
|
+
*
|
7
|
+
* @returns a <span> containing the full wallet address of the account
|
8
|
+
*
|
9
|
+
* @example
|
10
|
+
* ### Basic usage
|
11
|
+
* ```tsx
|
12
|
+
* import { AccountProvider, AccountAddress } from "thirdweb/react";
|
13
|
+
*
|
14
|
+
* <AccountProvider address="0x12345674b599ce99958242b3D3741e7b01841DF3" client={TW_CLIENT}>
|
15
|
+
* <AccountAddress />
|
16
|
+
* </AccountProvider>
|
17
|
+
* ```
|
18
|
+
* Result:
|
19
|
+
* ```html
|
20
|
+
* <span>0x12345674b599ce99958242b3D3741e7b01841DF3</span>
|
21
|
+
* ```
|
22
|
+
*
|
23
|
+
*
|
24
|
+
* ### Shorten the address
|
25
|
+
* ```tsx
|
26
|
+
* import { AccountProvider, AccountAddress } from "thirdweb/react";
|
27
|
+
* import { shortenAddress } from "thirdweb/utils";
|
28
|
+
*
|
29
|
+
* <AccountProvider address="0x12345674b599ce99958242b3D3741e7b01841DF3" client={TW_CLIENT}>
|
30
|
+
* <AccountAddress formatFn={shortenAddress} />
|
31
|
+
* </AccountProvider>
|
32
|
+
* ```
|
33
|
+
* Result:
|
34
|
+
* ```html
|
35
|
+
* <span>0x1234...1DF3</span>
|
36
|
+
* ```
|
37
|
+
*
|
38
|
+
* @component
|
39
|
+
* @wallet
|
40
|
+
* @beta
|
41
|
+
*/
|
42
|
+
export function AccountAddress({ formatFn, ...restProps }) {
|
43
|
+
const { address } = useAccountContext();
|
44
|
+
const value = formatFn ? formatFn(address) : address;
|
45
|
+
return _jsx(Text, { ...restProps, children: value });
|
46
|
+
}
|
47
|
+
//# sourceMappingURL=address.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"address.js","sourceRoot":"","sources":["../../../../../../../src/react/native/ui/prebuilt/Account/address.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,IAAI,EAAkB,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAiBzE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,MAAM,UAAU,cAAc,CAAC,EAC7B,QAAQ,EACR,GAAG,SAAS,EACQ;IACpB,MAAM,EAAE,OAAO,EAAE,GAAG,iBAAiB,EAAE,CAAC;IACxC,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IACrD,OAAO,KAAC,IAAI,OAAK,SAAS,YAAG,KAAK,GAAQ,CAAC;AAC7C,CAAC"}
|
@@ -0,0 +1,148 @@
|
|
1
|
+
"use client";
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
3
|
+
import { useQuery } from "@tanstack/react-query";
|
4
|
+
import { Image } from "react-native";
|
5
|
+
import { resolveAvatar } from "../../../../../extensions/ens/resolve-avatar.js";
|
6
|
+
import { resolveName, } from "../../../../../extensions/ens/resolve-name.js";
|
7
|
+
import { getSocialProfiles } from "../../../../../social/profiles.js";
|
8
|
+
import { parseAvatarRecord } from "../../../../../utils/ens/avatar.js";
|
9
|
+
import { useAccountContext } from "../../../../core/account/provider.js";
|
10
|
+
/**
|
11
|
+
* The component for showing the avatar of the account.
|
12
|
+
* If fetches all the social profiles linked to your wallet, including: Farcaster, ENS, Lens (more to be added)
|
13
|
+
* You can choose which social profile you want to display. Defaults to the first item in the list.
|
14
|
+
*
|
15
|
+
* @example
|
16
|
+
* ### Basic usage
|
17
|
+
* ```tsx
|
18
|
+
* import { AccountProvider, AccountAvatar } from "thirdweb/react";
|
19
|
+
*
|
20
|
+
* <AccountProvider address="0x...">
|
21
|
+
* <AccountAvatar />
|
22
|
+
* </AccountProvider>
|
23
|
+
* ```
|
24
|
+
* Result: An <img /> component, if the avatar is resolved successfully
|
25
|
+
* ```html
|
26
|
+
* <img alt="" src="resolved-url-for-the-avatar" />
|
27
|
+
* ```
|
28
|
+
*
|
29
|
+
* ### Show a loading sign when the avatar is being resolved
|
30
|
+
* ```tsx
|
31
|
+
* import { AccountProvider, AccountAvatar } from "thirdweb/react";
|
32
|
+
*
|
33
|
+
* <AccountProvider address="0x...">
|
34
|
+
* <AccountAvatar
|
35
|
+
* loadingComponent={<YourLoadingComponent />}
|
36
|
+
* />
|
37
|
+
* </AccountProvider>
|
38
|
+
* ```
|
39
|
+
*
|
40
|
+
* ### Fallback to something when the avatar fails to resolve
|
41
|
+
* ```tsx
|
42
|
+
* import { AccountProvider, AccountAvatar } from "thirdweb/react";
|
43
|
+
*
|
44
|
+
* <AccountProvider address="0x...">
|
45
|
+
* <AccountAvatar
|
46
|
+
* fallbackComponent={<DummyImage />}
|
47
|
+
* />
|
48
|
+
* </AccountProvider>
|
49
|
+
* ```
|
50
|
+
*
|
51
|
+
* ### Select a social profile to display
|
52
|
+
* If you wallet associates with more than one social profiles (Lens, Farcaster, ENS, etc.)
|
53
|
+
* You can specify which service you want to prioritize using the `socialType` props
|
54
|
+
* ```tsx
|
55
|
+
* import { AccountProvider, AccountAvatar } from "thirdweb/react";
|
56
|
+
*
|
57
|
+
* <AccountProvider address="0x...">
|
58
|
+
* <AccountAvatar
|
59
|
+
* // Choose between: "farcaster" | "lens" | "ens"
|
60
|
+
* socialType={"ens"}
|
61
|
+
* />
|
62
|
+
* </AccountProvider>
|
63
|
+
* ```
|
64
|
+
*
|
65
|
+
* ### Custom ENS resolver chain
|
66
|
+
* This component shares the same props with the ENS extension `resolveAvatar`
|
67
|
+
* ```tsx
|
68
|
+
* import { AccountProvider, AccountAvatar } from "thirdweb/react";
|
69
|
+
* import { base } from "thirdweb/chains";
|
70
|
+
*
|
71
|
+
* <AccountProvider address="0x...">
|
72
|
+
* <AccountAvatar
|
73
|
+
* resolverAddress={"0x..."}
|
74
|
+
* resolverChain={base}
|
75
|
+
* />
|
76
|
+
* </AccountProvider>
|
77
|
+
* ```
|
78
|
+
*
|
79
|
+
* ### Custom query options for useQuery
|
80
|
+
* This component uses `@tanstack-query`'s useQuery internally.
|
81
|
+
* You can use the `queryOptions` prop for more fine-grained control
|
82
|
+
* ```tsx
|
83
|
+
* <AccountAvatar
|
84
|
+
* queryOptions={{
|
85
|
+
* enabled: isEnabled,
|
86
|
+
* retry: 3,
|
87
|
+
* }}
|
88
|
+
* />
|
89
|
+
* ```
|
90
|
+
* @returns An <img /> if the avatar is resolved successfully
|
91
|
+
* @component
|
92
|
+
* @wallet
|
93
|
+
* @beta
|
94
|
+
*/
|
95
|
+
export function AccountAvatar({ socialType, resolverAddress, resolverChain, loadingComponent, fallbackComponent, queryOptions, ...restProps }) {
|
96
|
+
const { address, client } = useAccountContext();
|
97
|
+
const avatarQuery = useQuery({
|
98
|
+
queryKey: [
|
99
|
+
"account-avatar",
|
100
|
+
address,
|
101
|
+
{ socialType },
|
102
|
+
{ resolverAddress, resolverChain },
|
103
|
+
],
|
104
|
+
queryFn: async () => {
|
105
|
+
const [socialData, ensName] = await Promise.all([
|
106
|
+
getSocialProfiles({ address, client }),
|
107
|
+
resolveName({
|
108
|
+
client,
|
109
|
+
address: address || "",
|
110
|
+
resolverAddress,
|
111
|
+
resolverChain,
|
112
|
+
}),
|
113
|
+
]);
|
114
|
+
const uri = socialData?.filter((p) => p.avatar && (socialType ? p.type === socialType : true))[0]?.avatar;
|
115
|
+
const [resolvedSocialAvatar, resolvedENSAvatar] = await Promise.all([
|
116
|
+
uri ? parseAvatarRecord({ client, uri }) : undefined,
|
117
|
+
ensName
|
118
|
+
? resolveAvatar({
|
119
|
+
client,
|
120
|
+
name: ensName,
|
121
|
+
})
|
122
|
+
: undefined,
|
123
|
+
]);
|
124
|
+
// If no social image + ens name found -> exit and show <Blobbie />
|
125
|
+
if (!resolvedSocialAvatar && !resolvedENSAvatar) {
|
126
|
+
throw new Error("Failed to resolve social + ens avatar");
|
127
|
+
}
|
128
|
+
// else, prioritize the social image first
|
129
|
+
if (resolvedSocialAvatar) {
|
130
|
+
return resolvedSocialAvatar;
|
131
|
+
}
|
132
|
+
if (resolvedENSAvatar) {
|
133
|
+
return resolvedENSAvatar;
|
134
|
+
}
|
135
|
+
throw new Error("Failed to resolve social + ens avatar");
|
136
|
+
},
|
137
|
+
retry: false,
|
138
|
+
...queryOptions,
|
139
|
+
});
|
140
|
+
if (avatarQuery.isLoading) {
|
141
|
+
return loadingComponent || null;
|
142
|
+
}
|
143
|
+
if (!avatarQuery.data) {
|
144
|
+
return fallbackComponent || null;
|
145
|
+
}
|
146
|
+
return _jsx(Image, { source: { uri: avatarQuery.data }, ...restProps });
|
147
|
+
}
|
148
|
+
//# sourceMappingURL=avatar.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"avatar.js","sourceRoot":"","sources":["../../../../../../../src/react/native/ui/prebuilt/Account/avatar.tsx"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,127 @@
|
|
1
|
+
"use client";
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
3
|
+
import { useQuery } from "@tanstack/react-query";
|
4
|
+
import { Text } from "react-native";
|
5
|
+
import { useActiveWalletChain } from "../../../../../react/core/hooks/wallets/useActiveWalletChain.js";
|
6
|
+
import { getAddress } from "../../../../../utils/address.js";
|
7
|
+
import { useAccountContext } from "../../../../core/account/provider.js";
|
8
|
+
import { formatAccountFiatBalance, loadAccountBalance, } from "../../../../core/utils/account.js";
|
9
|
+
import { formatAccountTokenBalance } from "../../../../core/utils/account.js";
|
10
|
+
/**
|
11
|
+
* This component fetches and shows the balance of the wallet address on a given chain.
|
12
|
+
* It inherits all the attributes of a HTML <span> component, hence you can style it just like how you would style a normal <span>
|
13
|
+
*
|
14
|
+
*
|
15
|
+
* @example
|
16
|
+
* ### Basic usage
|
17
|
+
* ```tsx
|
18
|
+
* import { AccountProvider, AccountBalance } from "thirdweb/react";
|
19
|
+
* import { ethereum } from "thirdweb/chains";
|
20
|
+
*
|
21
|
+
* <AccountProvider address="0x...">
|
22
|
+
* <AccountBalance chain={ethereum} />
|
23
|
+
* </AccountProvider>
|
24
|
+
* ```
|
25
|
+
* Result:
|
26
|
+
* ```html
|
27
|
+
* <span>1.091435 ETH</span>
|
28
|
+
* ```
|
29
|
+
*
|
30
|
+
*
|
31
|
+
* ### Format the balance (round up, shorten etc.)
|
32
|
+
* The AccountBalance component accepts a `formatFn` which takes in an object of type `AccountBalanceInfo` and outputs a string
|
33
|
+
* The function is used to modify the display value of the wallet balance (either in crypto or fiat)
|
34
|
+
*
|
35
|
+
* ```tsx
|
36
|
+
* import type { AccountBalanceInfo } from "thirdweb/react";
|
37
|
+
* import { formatNumber } from "thirdweb/utils";
|
38
|
+
*
|
39
|
+
* const format = (props: AccountInfoBalance):string => `${formatNumber(props.balance, 1)} ${props.symbol.toLowerCase()}`
|
40
|
+
*
|
41
|
+
* <AccountBalance formatFn={format} />
|
42
|
+
* ```
|
43
|
+
*
|
44
|
+
* Result:
|
45
|
+
* ```html
|
46
|
+
* <span>1.1 eth</span> // the balance is rounded up to 1 decimal and the symbol is lowercased
|
47
|
+
* ```
|
48
|
+
*
|
49
|
+
* ### Show a loading sign when the balance is being fetched
|
50
|
+
* ```tsx
|
51
|
+
* import { AccountProvider, AccountBalance } from "thirdweb/react";
|
52
|
+
*
|
53
|
+
* <AccountProvider address="0x...">
|
54
|
+
* <AccountBalance
|
55
|
+
* chain={ethereum}
|
56
|
+
* loadingComponent={<Spinner />}
|
57
|
+
* />
|
58
|
+
* </AccountProvider>
|
59
|
+
* ```
|
60
|
+
*
|
61
|
+
* ### Fallback to something when the balance fails to resolve
|
62
|
+
* ```tsx
|
63
|
+
* <AccountProvider address="0x...">
|
64
|
+
* <AccountBalance
|
65
|
+
* chain={nonExistentChain}
|
66
|
+
* fallbackComponent={"Failed to load"}
|
67
|
+
* />
|
68
|
+
* </AccountProvider>
|
69
|
+
* ```
|
70
|
+
*
|
71
|
+
* ### Custom query options for useQuery
|
72
|
+
* This component uses `@tanstack-query`'s useQuery internally.
|
73
|
+
* You can use the `queryOptions` prop for more fine-grained control
|
74
|
+
* ```tsx
|
75
|
+
* <AccountBalance
|
76
|
+
* queryOptions={{
|
77
|
+
* enabled: isEnabled,
|
78
|
+
* retry: 4,
|
79
|
+
* }}
|
80
|
+
* />
|
81
|
+
* ```
|
82
|
+
*
|
83
|
+
* @component
|
84
|
+
* @wallet
|
85
|
+
* @beta
|
86
|
+
*/
|
87
|
+
export function AccountBalance({ chain, tokenAddress, loadingComponent, fallbackComponent, queryOptions, formatFn, showBalanceInFiat, ...restProps }) {
|
88
|
+
const { address, client } = useAccountContext();
|
89
|
+
const walletChain = useActiveWalletChain();
|
90
|
+
const chainToLoad = chain || walletChain;
|
91
|
+
const balanceQuery = useQuery({
|
92
|
+
queryKey: [
|
93
|
+
"internal_account_balance",
|
94
|
+
chainToLoad?.id || -1,
|
95
|
+
address,
|
96
|
+
{ tokenAddress },
|
97
|
+
showBalanceInFiat,
|
98
|
+
],
|
99
|
+
queryFn: async () => loadAccountBalance({
|
100
|
+
chain: chainToLoad,
|
101
|
+
client,
|
102
|
+
address: getAddress(address),
|
103
|
+
tokenAddress: tokenAddress ? getAddress(tokenAddress) : undefined,
|
104
|
+
showBalanceInFiat,
|
105
|
+
}),
|
106
|
+
retry: false,
|
107
|
+
...queryOptions,
|
108
|
+
});
|
109
|
+
if (balanceQuery.isLoading) {
|
110
|
+
return loadingComponent || null;
|
111
|
+
}
|
112
|
+
if (balanceQuery.data === undefined) {
|
113
|
+
return fallbackComponent || null;
|
114
|
+
}
|
115
|
+
// Prioritize using the formatFn from users
|
116
|
+
if (formatFn) {
|
117
|
+
return _jsx(Text, { ...restProps, children: formatFn(balanceQuery.data) });
|
118
|
+
}
|
119
|
+
if (showBalanceInFiat) {
|
120
|
+
return (_jsx(Text, { ...restProps, children: formatAccountFiatBalance({ ...balanceQuery.data, decimals: 2 }) }));
|
121
|
+
}
|
122
|
+
return (_jsx(Text, { ...restProps, children: formatAccountTokenBalance({
|
123
|
+
...balanceQuery.data,
|
124
|
+
decimals: balanceQuery.data.balance < 1 ? 3 : 2,
|
125
|
+
}) }));
|
126
|
+
}
|
127
|
+
//# sourceMappingURL=balance.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"balance.js","sourceRoot":"","sources":["../../../../../../../src/react/native/ui/prebuilt/Account/balance.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAwB,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,IAAI,EAAkB,MAAM,cAAc,CAAC;AAGpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iEAAiE,CAAC;AACvG,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,EAEL,wBAAwB,EACxB,kBAAkB,GACnB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAmE9E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4EG;AACH,MAAM,UAAU,cAAc,CAAC,EAC7B,KAAK,EACL,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,QAAQ,EACR,iBAAiB,EACjB,GAAG,SAAS,EACQ;IACpB,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,iBAAiB,EAAE,CAAC;IAChD,MAAM,WAAW,GAAG,oBAAoB,EAAE,CAAC;IAC3C,MAAM,WAAW,GAAG,KAAK,IAAI,WAAW,CAAC;IACzC,MAAM,YAAY,GAAG,QAAQ,CAAC;QAC5B,QAAQ,EAAE;YACR,0BAA0B;YAC1B,WAAW,EAAE,EAAE,IAAI,CAAC,CAAC;YACrB,OAAO;YACP,EAAE,YAAY,EAAE;YAChB,iBAAiB;SACT;QACV,OAAO,EAAE,KAAK,IAAiC,EAAE,CAC/C,kBAAkB,CAAC;YACjB,KAAK,EAAE,WAAW;YAClB,MAAM;YACN,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC;YAC5B,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS;YACjE,iBAAiB;SAClB,CAAC;QACJ,KAAK,EAAE,KAAK;QACZ,GAAG,YAAY;KAChB,CAAC,CAAC;IAEH,IAAI,YAAY,CAAC,SAAS,EAAE,CAAC;QAC3B,OAAO,gBAAgB,IAAI,IAAI,CAAC;IAClC,CAAC;IAED,IAAI,YAAY,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACpC,OAAO,iBAAiB,IAAI,IAAI,CAAC;IACnC,CAAC;IAED,2CAA2C;IAC3C,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,KAAC,IAAI,OAAK,SAAS,YAAG,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,GAAQ,CAAC;IACnE,CAAC;IAED,IAAI,iBAAiB,EAAE,CAAC;QACtB,OAAO,CACL,KAAC,IAAI,OAAK,SAAS,YAChB,wBAAwB,CAAC,EAAE,GAAG,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,GAC3D,CACR,CAAC;IACJ,CAAC;IAED,OAAO,CACL,KAAC,IAAI,OAAK,SAAS,YAChB,yBAAyB,CAAC;YACzB,GAAG,YAAY,CAAC,IAAI;YACpB,QAAQ,EAAE,YAAY,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAChD,CAAC,GACG,CACR,CAAC;AACJ,CAAC"}
|
@@ -0,0 +1,54 @@
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
2
|
+
import { hexToNumber } from "@noble/curves/abstract/utils";
|
3
|
+
import { useMemo } from "react";
|
4
|
+
import { StyleSheet, View } from "react-native";
|
5
|
+
import { Defs, LinearGradient, Rect, Stop, Svg } from "react-native-svg";
|
6
|
+
import { useAccountContext } from "../../../../core/account/provider.js";
|
7
|
+
import { COLOR_OPTIONS } from "../../../../core/utils/account.js";
|
8
|
+
/**
|
9
|
+
* A wrapper for the Blobbie component
|
10
|
+
* @param props BlobbieProps
|
11
|
+
* @beta
|
12
|
+
* @wallet
|
13
|
+
*/
|
14
|
+
export function AccountBlobbie(props) {
|
15
|
+
const { address } = useAccountContext();
|
16
|
+
return _jsx(Blobbie, { ...props, address: address });
|
17
|
+
}
|
18
|
+
/**
|
19
|
+
* A unique gradient avatar based on the provided address.
|
20
|
+
* @param props The component props.
|
21
|
+
* @param props.address The address to generate the gradient with.
|
22
|
+
* @param props.style The style for the component
|
23
|
+
* @param props.size The size of each side of the square avatar (in pixels)
|
24
|
+
* @component
|
25
|
+
* @wallet
|
26
|
+
* @example
|
27
|
+
* ```tsx
|
28
|
+
* import { Blobbie } from "thirdweb/react";
|
29
|
+
*
|
30
|
+
* <Blobbie address="0x...." style={{ width: 40, height: 40 }} />
|
31
|
+
* ```
|
32
|
+
*/
|
33
|
+
export function Blobbie(props) {
|
34
|
+
const colors = useMemo(() => COLOR_OPTIONS[Number(hexToNumber(props.address.slice(2, 4))) % COLOR_OPTIONS.length], [props.address]);
|
35
|
+
const containerStyle = useMemo(() => {
|
36
|
+
const baseStyle = props.style || {};
|
37
|
+
if (props.size) {
|
38
|
+
return {
|
39
|
+
...baseStyle,
|
40
|
+
width: props.size,
|
41
|
+
height: props.size,
|
42
|
+
};
|
43
|
+
}
|
44
|
+
return baseStyle;
|
45
|
+
}, [props.style, props.size]);
|
46
|
+
const gradientUniqueId = `grad${colors[0]}+${colors[1]}`.replace(/[^a-zA-Z0-9 ]/g, "");
|
47
|
+
return (_jsx(View, { style: [styles.container, containerStyle], children: _jsxs(Svg, { height: "100%", width: "100%", style: StyleSheet.absoluteFillObject, children: [_jsx(Defs, { children: _jsxs(LinearGradient, { id: gradientUniqueId, x1: "0%", y1: "100%", x2: "100%", y2: "0%", children: [_jsx(Stop, { offset: "0", stopColor: colors[0] }), _jsx(Stop, { offset: "1", stopColor: colors[1] })] }) }), _jsx(Rect, { width: "100%", height: "100%", fill: `url(#${gradientUniqueId})` })] }) }));
|
48
|
+
}
|
49
|
+
const styles = StyleSheet.create({
|
50
|
+
container: {
|
51
|
+
overflow: "hidden",
|
52
|
+
},
|
53
|
+
});
|
54
|
+
//# sourceMappingURL=blobbie.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"blobbie.js","sourceRoot":"","sources":["../../../../../../../src/react/native/ui/prebuilt/Account/blobbie.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAkB,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAWlE;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,KAAoC;IACjE,MAAM,EAAE,OAAO,EAAE,GAAG,iBAAiB,EAAE,CAAC;IACxC,OAAO,KAAC,OAAO,OAAK,KAAK,EAAE,OAAO,EAAE,OAAO,GAAI,CAAC;AAClD,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,OAAO,CAAC,KAAmB;IACzC,MAAM,MAAM,GAAG,OAAO,CACpB,GAAG,EAAE,CACH,aAAa,CACX,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,MAAM,CAClD,EACvB,CAAC,KAAK,CAAC,OAAO,CAAC,CAChB,CAAC;IAEF,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,EAAE;QAClC,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;QACpC,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YACf,OAAO;gBACL,GAAG,SAAS;gBACZ,KAAK,EAAE,KAAK,CAAC,IAAI;gBACjB,MAAM,EAAE,KAAK,CAAC,IAAI;aACnB,CAAC;QACJ,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAE9B,MAAM,gBAAgB,GAAG,OAAO,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAC9D,gBAAgB,EAChB,EAAE,CACH,CAAC;IAEF,OAAO,CACL,KAAC,IAAI,IAAC,KAAK,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,cAAc,CAAC,YAC7C,MAAC,GAAG,IAAC,MAAM,EAAC,MAAM,EAAC,KAAK,EAAC,MAAM,EAAC,KAAK,EAAE,UAAU,CAAC,kBAAkB,aAClE,KAAC,IAAI,cACH,MAAC,cAAc,IACb,EAAE,EAAE,gBAAgB,EACpB,EAAE,EAAC,IAAI,EACP,EAAE,EAAC,MAAM,EACT,EAAE,EAAC,MAAM,EACT,EAAE,EAAC,IAAI,aAEP,KAAC,IAAI,IAAC,MAAM,EAAC,GAAG,EAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,GAAI,EACzC,KAAC,IAAI,IAAC,MAAM,EAAC,GAAG,EAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,GAAI,IAC1B,GACZ,EACP,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,IAAI,EAAE,QAAQ,gBAAgB,GAAG,GAAI,IAClE,GACD,CACR,CAAC;AACJ,CAAC;AAED,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IAC/B,SAAS,EAAE;QACT,QAAQ,EAAE,QAAQ;KACnB;CACF,CAAC,CAAC"}
|