@vechain/vechain-kit 1.5.12 → 1.6.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/{Constants-aAc8EZtG.d.cts → Constants-LR_GjzdJ.d.cts} +15 -2
- package/dist/{Constants-aAc8EZtG.d.ts → Constants-LR_GjzdJ.d.ts} +15 -2
- package/dist/assets/index.cjs +31 -23
- package/dist/assets/index.d.cts +38 -32
- package/dist/assets/index.d.ts +38 -32
- package/dist/assets/index.js +1 -1
- package/dist/{chunk-A4NZ5AVL.cjs → chunk-EESC6JDT.cjs} +23 -3
- package/dist/chunk-EESC6JDT.cjs.map +1 -0
- package/dist/{chunk-DBQR2OKX.cjs → chunk-IHFWUAH2.cjs} +29 -6
- package/dist/chunk-IHFWUAH2.cjs.map +1 -0
- package/dist/{chunk-RSEKQ6PP.js → chunk-WJ5LYJZQ.js} +22 -4
- package/dist/chunk-WJ5LYJZQ.js.map +1 -0
- package/dist/{chunk-3CI2FPCB.js → chunk-Z4FE6MMP.js} +22 -4
- package/dist/chunk-Z4FE6MMP.js.map +1 -0
- package/dist/index.cjs +2362 -710
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +93 -26
- package/dist/index.d.ts +93 -26
- package/dist/index.js +2157 -511
- package/dist/index.js.map +1 -1
- package/dist/metafile-cjs.json +1 -1
- package/dist/metafile-esm.json +1 -1
- package/dist/utils/index.cjs +52 -32
- package/dist/utils/index.d.cts +2 -2
- package/dist/utils/index.d.ts +2 -2
- package/dist/utils/index.js +2 -2
- package/package.json +6 -3
- package/dist/chunk-3CI2FPCB.js.map +0 -1
- package/dist/chunk-A4NZ5AVL.cjs.map +0 -1
- package/dist/chunk-DBQR2OKX.cjs.map +0 -1
- package/dist/chunk-RSEKQ6PP.js.map +0 -1
package/dist/index.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { IVechainEnergyOracleV1__factory, IB3TR__factory, IVOT3__factory, GalaxyMember__factory, NodeManagement__factory, X2EarnApps__factory, XAllocationVoting__factory, XAllocationVotingGovernor__factory, XAllocationPool__factory, VoterRewards__factory, VeBetterPassport__factory, IERC20__factory, MockENS__factory, SubdomainClaimer__factory, IReverseRegistrar__factory, ERC20__factory, SimpleAccountFactory__factory, SimpleAccount__factory, Emissions__factory, X2EarnRewardsPool__factory } from './chunk-FOSPSOWT.js';
|
|
2
|
-
import { getConfig, humanNumber, NodeStrengthLevelToImage, allNodeStrengthLevelToName, notFoundImage, convertUriToUrl, resolveMediaTypeFromMimeType, gmNfts, DEFAULT_PRIVY_ECOSYSTEM_APPS, humanAddress, getPicassoImage, VECHAIN_PRIVY_APP_ID, compareAddresses, isValidAddress, TOKEN_LOGO_COMPONENTS, TOKEN_LOGOS, humanDomain, uploadBlobToIPFS, randomTransactionUser } from './chunk-
|
|
3
|
-
export { getConfig } from './chunk-
|
|
4
|
-
import { SimpleAccountFactoryABI, VechainLogo, VechainLogoLight, VechainLogoDark, VechainEnergy, PrivyLogo, SimpleAccountABI } from './chunk-
|
|
2
|
+
import { VECHAIN_KIT_MIXPANEL_PROJECT_TOKEN, ENV, getConfig, humanNumber, NodeStrengthLevelToImage, allNodeStrengthLevelToName, notFoundImage, convertUriToUrl, resolveMediaTypeFromMimeType, gmNfts, DEFAULT_PRIVY_ECOSYSTEM_APPS, humanAddress, getPicassoImage, VECHAIN_PRIVY_APP_ID, compareAddresses, isValidAddress, TOKEN_LOGO_COMPONENTS, TOKEN_LOGOS, humanDomain, VECHAIN_KIT_STORAGE_KEYS, uploadBlobToIPFS, randomTransactionUser } from './chunk-WJ5LYJZQ.js';
|
|
3
|
+
export { getConfig } from './chunk-WJ5LYJZQ.js';
|
|
4
|
+
import { SimpleAccountFactoryABI, VechainLogo, VechainLogoLight, VechainLogoDark, VeWorldLogoLight, VeWorldLogoDark, VechainEnergy, PrivyLogo, SimpleAccountABI } from './chunk-Z4FE6MMP.js';
|
|
5
5
|
import './chunk-PZ5AY32C.js';
|
|
6
6
|
import React10, { createContext, useState, useEffect, useMemo, useCallback, useRef, useContext } from 'react';
|
|
7
7
|
import { useLoginWithOAuth, usePrivy, useLoginWithEmail, useMfaEnrollment, useSetWalletRecovery, useLoginWithPasskey as useLoginWithPasskey$1, PrivyProvider } from '@privy-io/react-auth';
|
|
8
8
|
export { useMfaEnrollment, usePrivy, useSetWalletRecovery } from '@privy-io/react-auth';
|
|
9
|
-
import { useConnex, useWallet as useWallet$1, useWalletModal,
|
|
9
|
+
import { useConnex, useWallet as useWallet$1, useWalletModal, DAppKitProvider } from '@vechain/dapp-kit-react';
|
|
10
10
|
export { WalletButton as DAppKitWalletButton, useConnex, useWallet as useDAppKitWallet, useWalletModal as useDAppKitWalletModal } from '@vechain/dapp-kit-react';
|
|
11
11
|
import { defineChain, formatEther, parseEther, zeroAddress, keccak256, toBytes, concat, encodeFunctionData } from 'viem';
|
|
12
12
|
import { ABIContract, Address, Clause } from '@vechain/sdk-core';
|
|
@@ -17,14 +17,15 @@ import { initReactI18next, useTranslation } from 'react-i18next';
|
|
|
17
17
|
import { abi, Transaction } from 'thor-devkit';
|
|
18
18
|
import imageCompression from 'browser-image-compression';
|
|
19
19
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
20
|
-
import { Interface, formatEther as formatEther$1, isAddress, namehash, toUtf8String, zeroPadValue, toBeHex,
|
|
20
|
+
import { Interface, formatEther as formatEther$1, isAddress, ethers, namehash, toUtf8String, zeroPadValue, toBeHex, parseEther as parseEther$1 } from 'ethers';
|
|
21
|
+
import VeChainKitMixpanel from 'mixpanel-browser';
|
|
21
22
|
import { z } from 'zod';
|
|
22
23
|
import { useAccount, createConfig, http, WagmiProvider, useConnect, useSignTypedData, useSignMessage, useDisconnect } from 'wagmi';
|
|
23
24
|
import { toPrivyWalletConnector } from '@privy-io/cross-app-connect/rainbow-kit';
|
|
24
25
|
import { isMobile } from 'react-device-detect';
|
|
25
|
-
import { createMultiStyleConfigHelpers, defineStyle, defineStyleConfig, extendTheme, createStandaloneToast, IconButton, VStack, Text, InputGroup, InputLeftElement, Icon, Input, InputRightElement, HStack, Link, Box, useMediaQuery, Modal, ModalOverlay, ModalContent, Button, Image, Skeleton,
|
|
26
|
+
import { createMultiStyleConfigHelpers, defineStyle, defineStyleConfig, extendTheme, createStandaloneToast, IconButton, VStack, Text, InputGroup, InputLeftElement, Icon, Input, InputRightElement, HStack, Link, Box, useMediaQuery, Modal, ModalOverlay, ModalContent, Button, Image, Skeleton, useDisclosure, GridItem, ModalHeader, ModalCloseButton, ModalBody, ModalFooter, Tag, Heading, useColorModeValue, Tabs, TabList, Tab, TabPanels, TabPanel, Grid, Card, CardBody, Alert, AlertIcon, CardHeader, Center, CardFooter, Divider, Container, FormControl, Select, FormLabel, Textarea, Circle, AlertTitle, AlertDescription, Popover, PopoverTrigger, PopoverContent, PopoverBody, PopoverFooter, Spinner, PinInput, PinInputField, Stack, Accordion, AccordionItem, AccordionButton, AccordionPanel, List, ChakraProvider, ColorModeScript, ListItem, Flex } from '@chakra-ui/react';
|
|
26
27
|
import { motion } from 'framer-motion';
|
|
27
|
-
import { IoChevronBack, IoCheckmarkOutline, IoCopyOutline, IoWalletOutline, IoCloseCircle, IoCogSharp, IoShieldOutline, IoOpenOutline, IoTrashBin, IoChevronUp, IoChevronDown, IoCloseOutline } from 'react-icons/io5';
|
|
28
|
+
import { IoChevronBack, IoCheckmarkOutline, IoCopyOutline, IoWalletOutline, IoCloseCircle, IoCogSharp, IoShieldOutline, IoOpenOutline, IoTrashBin, IoChevronUp, IoChevronDown, IoCloseOutline, IoTrashOutline } from 'react-icons/io5';
|
|
28
29
|
import { FaRegAddressCard, FaExternalLinkAlt, FaGlobe, FaEnvelope, FaArrowRight, FaTelegramPlane, FaChevronDown, FaEdit, FaGoogle, FaTwitter, FaPhone, FaSpotify, FaApple, FaInstagram, FaTiktok, FaGithub, FaLinkedin, FaTelegram, FaDiscord as FaDiscord$1, FaWallet, FaPlus } from 'react-icons/fa';
|
|
29
30
|
import { HiOutlineWallet, HiOutlineShieldCheck } from 'react-icons/hi2';
|
|
30
31
|
import { BsQuestionCircle, BsBookmarkFill, BsBookmark } from 'react-icons/bs';
|
|
@@ -32,7 +33,6 @@ import { LuMail, LuArrowDownToLine } from 'react-icons/lu';
|
|
|
32
33
|
import { MdOutlineNavigateNext, MdOutlineSettingsBackupRestore, MdPhotoCamera, MdOutlineRefresh, MdOutlineErrorOutline, MdEmail, MdSwapHoriz } from 'react-icons/md';
|
|
33
34
|
import { FcGoogle, FcCheckmark } from 'react-icons/fc';
|
|
34
35
|
import { IoIosFingerPrint, IoIosArrowForward, IoMdApps, IoMdSettings, IoIosCheckmarkCircleOutline } from 'react-icons/io';
|
|
35
|
-
import { AiOutlineUser } from 'react-icons/ai';
|
|
36
36
|
import { CiCircleMore, CiSearch } from 'react-icons/ci';
|
|
37
37
|
import { VscRefresh, VscDebugDisconnect } from 'react-icons/vsc';
|
|
38
38
|
import { RiLogoutBoxLine, RiEdit2Line, RiTwitterXFill, RiSwap3Line } from 'react-icons/ri';
|
|
@@ -40,6 +40,7 @@ import { FiSlash, FiArrowDown, FiSend } from 'react-icons/fi';
|
|
|
40
40
|
import { GrUserAdmin } from 'react-icons/gr';
|
|
41
41
|
import { GiHouseKeys } from 'react-icons/gi';
|
|
42
42
|
import { BiBell, BiArchive } from 'react-icons/bi';
|
|
43
|
+
import { CgProfile } from 'react-icons/cg';
|
|
43
44
|
import { PiLineVertical } from 'react-icons/pi';
|
|
44
45
|
import { useForm } from 'react-hook-form';
|
|
45
46
|
import { QRCode } from 'react-qrcode-logo';
|
|
@@ -2808,25 +2809,27 @@ var fetchVechainDomain = async (thor, networkType, addressOrDomain) => {
|
|
|
2808
2809
|
return {
|
|
2809
2810
|
address: void 0,
|
|
2810
2811
|
domain: void 0,
|
|
2811
|
-
isValidAddressOrDomain: false
|
|
2812
|
+
isValidAddressOrDomain: false,
|
|
2813
|
+
isPrimaryDomain: false
|
|
2812
2814
|
};
|
|
2813
2815
|
}
|
|
2814
|
-
|
|
2815
|
-
if (isValidAddress2) {
|
|
2816
|
+
if (isAddress(addressOrDomain)) {
|
|
2816
2817
|
try {
|
|
2817
2818
|
const res = await thor.account(getConfig(networkType).vnsResolverAddress).method(getNamesABI).call([addressOrDomain]);
|
|
2818
2819
|
const domainName = res.decoded.names?.[0];
|
|
2819
2820
|
return {
|
|
2820
2821
|
address: addressOrDomain,
|
|
2821
2822
|
domain: domainName || void 0,
|
|
2822
|
-
isValidAddressOrDomain: true
|
|
2823
|
+
isValidAddressOrDomain: true,
|
|
2824
|
+
isPrimaryDomain: true
|
|
2823
2825
|
};
|
|
2824
2826
|
} catch (err) {
|
|
2825
2827
|
console.error("Error getting domain: ", err);
|
|
2826
2828
|
return {
|
|
2827
2829
|
address: addressOrDomain,
|
|
2828
2830
|
domain: void 0,
|
|
2829
|
-
isValidAddressOrDomain: true
|
|
2831
|
+
isValidAddressOrDomain: true,
|
|
2832
|
+
isPrimaryDomain: false
|
|
2830
2833
|
};
|
|
2831
2834
|
}
|
|
2832
2835
|
}
|
|
@@ -2837,20 +2840,25 @@ var fetchVechainDomain = async (thor, networkType, addressOrDomain) => {
|
|
|
2837
2840
|
return {
|
|
2838
2841
|
address: void 0,
|
|
2839
2842
|
domain: void 0,
|
|
2840
|
-
isValidAddressOrDomain: false
|
|
2843
|
+
isValidAddressOrDomain: false,
|
|
2844
|
+
isPrimaryDomain: false
|
|
2841
2845
|
};
|
|
2842
2846
|
}
|
|
2847
|
+
const primaryDomainRes = await thor.account(getConfig(networkType).vnsResolverAddress).method(getNamesABI).call([domainAddress]);
|
|
2848
|
+
const primaryDomain = primaryDomainRes.decoded.names?.[0];
|
|
2843
2849
|
return {
|
|
2844
2850
|
address: domainAddress,
|
|
2845
2851
|
domain: addressOrDomain,
|
|
2846
|
-
isValidAddressOrDomain: true
|
|
2852
|
+
isValidAddressOrDomain: true,
|
|
2853
|
+
isPrimaryDomain: primaryDomain === addressOrDomain
|
|
2847
2854
|
};
|
|
2848
2855
|
} catch (err) {
|
|
2849
2856
|
console.error("Error getting address: ", err);
|
|
2850
2857
|
return {
|
|
2851
2858
|
address: void 0,
|
|
2852
2859
|
domain: void 0,
|
|
2853
|
-
isValidAddressOrDomain: false
|
|
2860
|
+
isValidAddressOrDomain: false,
|
|
2861
|
+
isPrimaryDomain: false
|
|
2854
2862
|
};
|
|
2855
2863
|
}
|
|
2856
2864
|
};
|
|
@@ -2864,11 +2872,7 @@ var useVechainDomain = (addressOrDomain) => {
|
|
|
2864
2872
|
return useQuery({
|
|
2865
2873
|
queryKey: getVechainDomainQueryKey(addressOrDomain),
|
|
2866
2874
|
queryFn: () => fetchVechainDomain(thor, network.type, addressOrDomain),
|
|
2867
|
-
enabled: !!thor && !!addressOrDomain
|
|
2868
|
-
staleTime: 24 * 60 * 60 * 1e3,
|
|
2869
|
-
// 24 hours
|
|
2870
|
-
gcTime: 24 * 60 * 60 * 1e3
|
|
2871
|
-
// 24 hours
|
|
2875
|
+
enabled: !!thor && !!addressOrDomain
|
|
2872
2876
|
});
|
|
2873
2877
|
};
|
|
2874
2878
|
var MockENSInterface = MockENS__factory.createInterface();
|
|
@@ -2894,6 +2898,522 @@ var useEnsRecordExists = (name) => {
|
|
|
2894
2898
|
enabled: !!name
|
|
2895
2899
|
});
|
|
2896
2900
|
};
|
|
2901
|
+
var APP_SOURCE = document.title || "";
|
|
2902
|
+
var PAGE_SOURCE = window?.location?.origin || "";
|
|
2903
|
+
if (typeof window !== "undefined" && VECHAIN_KIT_MIXPANEL_PROJECT_TOKEN) {
|
|
2904
|
+
VeChainKitMixpanel.init(VECHAIN_KIT_MIXPANEL_PROJECT_TOKEN, {
|
|
2905
|
+
debug: !ENV.isProduction
|
|
2906
|
+
});
|
|
2907
|
+
if (ENV.isDevelopment) {
|
|
2908
|
+
console.info("Analytics initialized in DEVELOPMENT mode");
|
|
2909
|
+
}
|
|
2910
|
+
}
|
|
2911
|
+
var isFirstLogin = (userId) => {
|
|
2912
|
+
try {
|
|
2913
|
+
const userDataKey = `user_data_${userId}`;
|
|
2914
|
+
const userData = localStorage.getItem(userDataKey);
|
|
2915
|
+
if (userData) {
|
|
2916
|
+
const parsedData = JSON.parse(userData);
|
|
2917
|
+
return !parsedData.first_login_date;
|
|
2918
|
+
}
|
|
2919
|
+
return true;
|
|
2920
|
+
} catch (e) {
|
|
2921
|
+
console.warn("Error checking first login status", e);
|
|
2922
|
+
return true;
|
|
2923
|
+
}
|
|
2924
|
+
};
|
|
2925
|
+
var storeUserData = (userId, properties) => {
|
|
2926
|
+
try {
|
|
2927
|
+
const userDataKey = `user_data_${userId}`;
|
|
2928
|
+
const existingData = localStorage.getItem(userDataKey);
|
|
2929
|
+
let userData = properties;
|
|
2930
|
+
if (existingData) {
|
|
2931
|
+
userData = { ...JSON.parse(existingData), ...properties };
|
|
2932
|
+
}
|
|
2933
|
+
localStorage.setItem(userDataKey, JSON.stringify(userData));
|
|
2934
|
+
} catch (e) {
|
|
2935
|
+
console.warn("Error storing user data", e);
|
|
2936
|
+
}
|
|
2937
|
+
};
|
|
2938
|
+
var trackEvent = (event, properties = {}) => {
|
|
2939
|
+
try {
|
|
2940
|
+
if (!VECHAIN_KIT_MIXPANEL_PROJECT_TOKEN) {
|
|
2941
|
+
console.warn("No project token found");
|
|
2942
|
+
return;
|
|
2943
|
+
}
|
|
2944
|
+
if (typeof navigator !== "undefined" && !navigator.onLine) {
|
|
2945
|
+
return;
|
|
2946
|
+
}
|
|
2947
|
+
VeChainKitMixpanel.track(event, {
|
|
2948
|
+
...properties,
|
|
2949
|
+
source: APP_SOURCE,
|
|
2950
|
+
page: PAGE_SOURCE
|
|
2951
|
+
});
|
|
2952
|
+
} catch (error) {
|
|
2953
|
+
console.error(`Analytics error when tracking "${event}":`, error);
|
|
2954
|
+
}
|
|
2955
|
+
};
|
|
2956
|
+
var setUserProperties = (properties, userId) => {
|
|
2957
|
+
try {
|
|
2958
|
+
VeChainKitMixpanel.people.set({
|
|
2959
|
+
...properties,
|
|
2960
|
+
source: APP_SOURCE,
|
|
2961
|
+
page: PAGE_SOURCE
|
|
2962
|
+
});
|
|
2963
|
+
if (userId) {
|
|
2964
|
+
storeUserData(userId, properties);
|
|
2965
|
+
}
|
|
2966
|
+
} catch (error) {
|
|
2967
|
+
console.error("Error setting user properties:", error);
|
|
2968
|
+
}
|
|
2969
|
+
};
|
|
2970
|
+
var identifyUser = (userId) => {
|
|
2971
|
+
try {
|
|
2972
|
+
if (!userId) {
|
|
2973
|
+
return;
|
|
2974
|
+
}
|
|
2975
|
+
VeChainKitMixpanel.identify(userId);
|
|
2976
|
+
} catch (error) {
|
|
2977
|
+
console.error("Error identifying user:", error);
|
|
2978
|
+
}
|
|
2979
|
+
};
|
|
2980
|
+
var incrementUserProperty = (property, value = 1) => {
|
|
2981
|
+
try {
|
|
2982
|
+
VeChainKitMixpanel.people.increment(property, value);
|
|
2983
|
+
} catch (error) {
|
|
2984
|
+
console.error(`Error incrementing property ${property}:`, error);
|
|
2985
|
+
}
|
|
2986
|
+
};
|
|
2987
|
+
var Analytics = {
|
|
2988
|
+
auth: {
|
|
2989
|
+
trackAuth: (action, properties) => {
|
|
2990
|
+
trackEvent("Auth Flow", {
|
|
2991
|
+
action,
|
|
2992
|
+
...properties,
|
|
2993
|
+
isError: !!properties?.error
|
|
2994
|
+
});
|
|
2995
|
+
},
|
|
2996
|
+
flowStarted: (loginMethod) => {
|
|
2997
|
+
Analytics.auth.trackAuth("start", {
|
|
2998
|
+
loginMethod
|
|
2999
|
+
});
|
|
3000
|
+
},
|
|
3001
|
+
tryAgain: (method35, platform) => {
|
|
3002
|
+
Analytics.auth.trackAuth("try_again", {
|
|
3003
|
+
loginMethod: method35,
|
|
3004
|
+
platform
|
|
3005
|
+
});
|
|
3006
|
+
},
|
|
3007
|
+
methodSelected: (method35) => {
|
|
3008
|
+
Analytics.auth.trackAuth("method_selected", {
|
|
3009
|
+
loginMethod: method35
|
|
3010
|
+
});
|
|
3011
|
+
},
|
|
3012
|
+
completed: ({
|
|
3013
|
+
userId,
|
|
3014
|
+
loginMethod,
|
|
3015
|
+
platform
|
|
3016
|
+
}) => {
|
|
3017
|
+
if (userId) {
|
|
3018
|
+
identifyUser(userId);
|
|
3019
|
+
setUserProperties(
|
|
3020
|
+
{
|
|
3021
|
+
last_login_date: (/* @__PURE__ */ new Date()).toISOString(),
|
|
3022
|
+
preferred_login_method: loginMethod
|
|
3023
|
+
},
|
|
3024
|
+
userId
|
|
3025
|
+
);
|
|
3026
|
+
if (isFirstLogin(userId)) {
|
|
3027
|
+
Analytics.user.profile.markFirstLogin(userId);
|
|
3028
|
+
}
|
|
3029
|
+
}
|
|
3030
|
+
incrementUserProperty("total_logins");
|
|
3031
|
+
Analytics.auth.trackAuth("connect_success", {
|
|
3032
|
+
loginMethod,
|
|
3033
|
+
platform
|
|
3034
|
+
});
|
|
3035
|
+
},
|
|
3036
|
+
failed: (loginMethod, reason) => {
|
|
3037
|
+
Analytics.auth.trackAuth("connect_failed", {
|
|
3038
|
+
loginMethod,
|
|
3039
|
+
error: reason
|
|
3040
|
+
});
|
|
3041
|
+
},
|
|
3042
|
+
dropOff: (stage, properties) => {
|
|
3043
|
+
Analytics.auth.trackAuth("drop_off", {
|
|
3044
|
+
dropOffStage: stage,
|
|
3045
|
+
...properties
|
|
3046
|
+
});
|
|
3047
|
+
},
|
|
3048
|
+
connectionListViewed: (totalConnections) => {
|
|
3049
|
+
Analytics.auth.trackAuth("start", { totalConnections });
|
|
3050
|
+
},
|
|
3051
|
+
walletConnectInitiated: (walletType) => {
|
|
3052
|
+
Analytics.auth.trackAuth("connect_initiated", {
|
|
3053
|
+
loginMethod: walletType
|
|
3054
|
+
});
|
|
3055
|
+
},
|
|
3056
|
+
walletDisconnectInitiated: () => {
|
|
3057
|
+
Analytics.auth.trackAuth("disconnect_initiated");
|
|
3058
|
+
},
|
|
3059
|
+
logoutCompleted: () => {
|
|
3060
|
+
Analytics.auth.trackAuth("logout");
|
|
3061
|
+
}
|
|
3062
|
+
},
|
|
3063
|
+
user: {
|
|
3064
|
+
profile: {
|
|
3065
|
+
trackAccount: (action, properties) => {
|
|
3066
|
+
trackEvent("Account Flow", {
|
|
3067
|
+
action,
|
|
3068
|
+
...properties,
|
|
3069
|
+
isError: !!properties?.error
|
|
3070
|
+
});
|
|
3071
|
+
},
|
|
3072
|
+
markFirstLogin: (userId) => {
|
|
3073
|
+
const firstLoginDate = (/* @__PURE__ */ new Date()).toISOString();
|
|
3074
|
+
setUserProperties({ first_login_date: firstLoginDate }, userId);
|
|
3075
|
+
trackEvent("First Login", { date: firstLoginDate });
|
|
3076
|
+
},
|
|
3077
|
+
markActive: (userId) => {
|
|
3078
|
+
const activeDate = (/* @__PURE__ */ new Date()).toISOString();
|
|
3079
|
+
setUserProperties({ last_active: activeDate }, userId);
|
|
3080
|
+
},
|
|
3081
|
+
viewed: () => Analytics.user.profile.trackAccount("view"),
|
|
3082
|
+
addressCopied: (fromScreen) => Analytics.user.profile.trackAccount("address_copied", {
|
|
3083
|
+
fromScreen
|
|
3084
|
+
}),
|
|
3085
|
+
customiseOpened: () => Analytics.user.profile.trackAccount("customise_opened")
|
|
3086
|
+
}
|
|
3087
|
+
},
|
|
3088
|
+
customization: {
|
|
3089
|
+
trackCustomization: (action, properties) => {
|
|
3090
|
+
trackEvent("Customization Flow", {
|
|
3091
|
+
action,
|
|
3092
|
+
...properties,
|
|
3093
|
+
isError: !!properties?.error
|
|
3094
|
+
});
|
|
3095
|
+
},
|
|
3096
|
+
started: () => {
|
|
3097
|
+
Analytics.customization.trackCustomization("started");
|
|
3098
|
+
},
|
|
3099
|
+
completed: (changes) => {
|
|
3100
|
+
Analytics.customization.trackCustomization("completed", changes);
|
|
3101
|
+
},
|
|
3102
|
+
dropOff: ({
|
|
3103
|
+
stage,
|
|
3104
|
+
reason,
|
|
3105
|
+
error
|
|
3106
|
+
}) => {
|
|
3107
|
+
Analytics.customization.trackCustomization("drop_off", {
|
|
3108
|
+
stage,
|
|
3109
|
+
reason,
|
|
3110
|
+
error
|
|
3111
|
+
});
|
|
3112
|
+
},
|
|
3113
|
+
imageUploaded: (success, error) => {
|
|
3114
|
+
Analytics.customization.trackCustomization("image_upload", {
|
|
3115
|
+
success,
|
|
3116
|
+
error
|
|
3117
|
+
});
|
|
3118
|
+
},
|
|
3119
|
+
failed: (stage, error) => {
|
|
3120
|
+
Analytics.customization.trackCustomization("customization_failed", {
|
|
3121
|
+
stage,
|
|
3122
|
+
error
|
|
3123
|
+
});
|
|
3124
|
+
}
|
|
3125
|
+
},
|
|
3126
|
+
swap: {
|
|
3127
|
+
trackSwap: (action, properties) => {
|
|
3128
|
+
trackEvent("Swap Flow", {
|
|
3129
|
+
action,
|
|
3130
|
+
...properties,
|
|
3131
|
+
isError: !!properties?.error
|
|
3132
|
+
});
|
|
3133
|
+
},
|
|
3134
|
+
opened: () => Analytics.swap.trackSwap("view"),
|
|
3135
|
+
buttonClicked: () => Analytics.swap.trackSwap("button_click"),
|
|
3136
|
+
launchBetterSwap: () => Analytics.swap.trackSwap("launch_better_swap")
|
|
3137
|
+
},
|
|
3138
|
+
wallet: {
|
|
3139
|
+
trackWallet: (action, properties) => {
|
|
3140
|
+
trackEvent("Wallet Flow", {
|
|
3141
|
+
action,
|
|
3142
|
+
...properties,
|
|
3143
|
+
isError: !!properties?.error
|
|
3144
|
+
});
|
|
3145
|
+
},
|
|
3146
|
+
opened: (connected) => Analytics.wallet.trackWallet("view", { connected }),
|
|
3147
|
+
closed: (connected) => Analytics.wallet.trackWallet("close", { connected }),
|
|
3148
|
+
balanceRefreshed: () => Analytics.wallet.trackWallet("balance_refresh"),
|
|
3149
|
+
assetsViewed: () => Analytics.wallet.trackWallet("assets_view"),
|
|
3150
|
+
maxTokenSelected: (tokenSymbol) => Analytics.wallet.trackWallet("max_token_selected", { tokenSymbol }),
|
|
3151
|
+
receiveQRGenerated: () => Analytics.wallet.trackWallet("receive_qr_generated"),
|
|
3152
|
+
addressCopied: (context) => Analytics.wallet.trackWallet("address_copied", { context })
|
|
3153
|
+
},
|
|
3154
|
+
send: {
|
|
3155
|
+
trackSend: (action, properties) => {
|
|
3156
|
+
trackEvent("Send Flow", {
|
|
3157
|
+
action,
|
|
3158
|
+
...properties,
|
|
3159
|
+
isError: !!properties?.error
|
|
3160
|
+
});
|
|
3161
|
+
},
|
|
3162
|
+
initiated: (tokenSymbol, recipientType) => Analytics.send.trackSend("initiated", {
|
|
3163
|
+
tokenSymbol,
|
|
3164
|
+
recipientType
|
|
3165
|
+
}),
|
|
3166
|
+
completed: (tokenSymbol, amount, txHash, transactionType) => Analytics.send.trackSend("completed", {
|
|
3167
|
+
tokenSymbol,
|
|
3168
|
+
amount,
|
|
3169
|
+
txHash,
|
|
3170
|
+
transactionType
|
|
3171
|
+
}),
|
|
3172
|
+
flow: (action, properties) => {
|
|
3173
|
+
Analytics.send.trackSend(action, properties);
|
|
3174
|
+
},
|
|
3175
|
+
tokenSearchPerformed: (query) => Analytics.send.trackSend("token_search", {
|
|
3176
|
+
query
|
|
3177
|
+
}),
|
|
3178
|
+
tokenPageViewed: (tokenSymbol) => Analytics.send.trackSend("token_page_view", {
|
|
3179
|
+
tokenSymbol
|
|
3180
|
+
}),
|
|
3181
|
+
tokenSelected: (tokenSymbol) => Analytics.send.trackSend("token_selected", {
|
|
3182
|
+
tokenSymbol
|
|
3183
|
+
})
|
|
3184
|
+
},
|
|
3185
|
+
bridge: {
|
|
3186
|
+
trackBridge: (action, properties) => {
|
|
3187
|
+
trackEvent("Bridge Flow", {
|
|
3188
|
+
action,
|
|
3189
|
+
...properties,
|
|
3190
|
+
isError: !!properties?.error
|
|
3191
|
+
});
|
|
3192
|
+
},
|
|
3193
|
+
opened: () => Analytics.bridge.trackBridge("view"),
|
|
3194
|
+
buttonClicked: () => Analytics.bridge.trackBridge("button_click"),
|
|
3195
|
+
launchVeChainEnergy: () => Analytics.bridge.trackBridge("launch_vechain_energy")
|
|
3196
|
+
},
|
|
3197
|
+
ecosystem: {
|
|
3198
|
+
trackEcosystem: (action, properties) => {
|
|
3199
|
+
trackEvent("Ecosystem Flow", {
|
|
3200
|
+
action,
|
|
3201
|
+
...properties,
|
|
3202
|
+
isError: !!properties?.error
|
|
3203
|
+
});
|
|
3204
|
+
},
|
|
3205
|
+
opened: () => Analytics.ecosystem.trackEcosystem("view"),
|
|
3206
|
+
buttonClicked: () => Analytics.ecosystem.trackEcosystem("button_click"),
|
|
3207
|
+
searchPerformed: (query, resultsCount) => Analytics.ecosystem.trackEcosystem("search", {
|
|
3208
|
+
query,
|
|
3209
|
+
resultsCount
|
|
3210
|
+
}),
|
|
3211
|
+
appSelected: (appName) => Analytics.ecosystem.trackEcosystem("app_select", { appName }),
|
|
3212
|
+
launchApp: (appName) => Analytics.ecosystem.trackEcosystem("app_launch", { appName }),
|
|
3213
|
+
addAppToShortcuts: (appName) => Analytics.ecosystem.trackEcosystem("add_shortcut", { appName })
|
|
3214
|
+
},
|
|
3215
|
+
settings: {
|
|
3216
|
+
trackSettings: (action, properties) => {
|
|
3217
|
+
trackEvent("Settings Flow", {
|
|
3218
|
+
action,
|
|
3219
|
+
...properties,
|
|
3220
|
+
isError: !!properties?.error
|
|
3221
|
+
});
|
|
3222
|
+
},
|
|
3223
|
+
opened: (section) => Analytics.settings.trackSettings("view", { section }),
|
|
3224
|
+
accessAndSecurityViewed: () => Analytics.settings.trackSettings("security_view"),
|
|
3225
|
+
embeddedWalletViewed: () => Analytics.settings.trackSettings("embedded_wallet_view"),
|
|
3226
|
+
connectionDetailsViewed: () => Analytics.settings.trackSettings("connection_view"),
|
|
3227
|
+
manageSecuritySettings: () => Analytics.settings.trackSettings("manage_security_settings"),
|
|
3228
|
+
language: {
|
|
3229
|
+
changed: (language, previousLanguage) => Analytics.settings.trackSettings("language_changed", {
|
|
3230
|
+
language,
|
|
3231
|
+
previousLanguage
|
|
3232
|
+
})
|
|
3233
|
+
}
|
|
3234
|
+
},
|
|
3235
|
+
nameSelection: {
|
|
3236
|
+
trackNameSelection: (action, properties) => {
|
|
3237
|
+
trackEvent("Name Selection Flow", {
|
|
3238
|
+
action,
|
|
3239
|
+
...properties,
|
|
3240
|
+
isError: !!properties?.error
|
|
3241
|
+
});
|
|
3242
|
+
},
|
|
3243
|
+
started: (source) => {
|
|
3244
|
+
Analytics.nameSelection.trackNameSelection(
|
|
3245
|
+
"name_selection_started",
|
|
3246
|
+
{
|
|
3247
|
+
source
|
|
3248
|
+
}
|
|
3249
|
+
);
|
|
3250
|
+
},
|
|
3251
|
+
completed: (name, isOwnDomain) => {
|
|
3252
|
+
Analytics.nameSelection.trackNameSelection(
|
|
3253
|
+
"name_selection_completed",
|
|
3254
|
+
{
|
|
3255
|
+
newName: name,
|
|
3256
|
+
isOwnDomain
|
|
3257
|
+
}
|
|
3258
|
+
);
|
|
3259
|
+
},
|
|
3260
|
+
dropOff: (stage, properties) => {
|
|
3261
|
+
Analytics.nameSelection.trackNameSelection(
|
|
3262
|
+
"name_selection_drop_off",
|
|
3263
|
+
{
|
|
3264
|
+
stage,
|
|
3265
|
+
...properties
|
|
3266
|
+
}
|
|
3267
|
+
);
|
|
3268
|
+
},
|
|
3269
|
+
failed: (stage, properties) => {
|
|
3270
|
+
Analytics.nameSelection.trackNameSelection(
|
|
3271
|
+
"name_selection_failed",
|
|
3272
|
+
{
|
|
3273
|
+
stage,
|
|
3274
|
+
...properties
|
|
3275
|
+
}
|
|
3276
|
+
);
|
|
3277
|
+
},
|
|
3278
|
+
retry: (stage) => {
|
|
3279
|
+
Analytics.nameSelection.trackNameSelection("name_selection_retry", {
|
|
3280
|
+
stage
|
|
3281
|
+
});
|
|
3282
|
+
},
|
|
3283
|
+
searched: (name, isAvailable) => {
|
|
3284
|
+
Analytics.nameSelection.trackNameSelection(
|
|
3285
|
+
"name_selection_searched",
|
|
3286
|
+
{
|
|
3287
|
+
newName: name,
|
|
3288
|
+
isAvailable
|
|
3289
|
+
}
|
|
3290
|
+
);
|
|
3291
|
+
}
|
|
3292
|
+
},
|
|
3293
|
+
notifications: {
|
|
3294
|
+
trackNotification: (action, properties) => {
|
|
3295
|
+
trackEvent("Notification Flow", {
|
|
3296
|
+
action,
|
|
3297
|
+
...properties
|
|
3298
|
+
});
|
|
3299
|
+
},
|
|
3300
|
+
viewed: () => {
|
|
3301
|
+
Analytics.notifications.trackNotification("view");
|
|
3302
|
+
},
|
|
3303
|
+
cleared: (notificationType, count) => {
|
|
3304
|
+
Analytics.notifications.trackNotification("clear", {
|
|
3305
|
+
notificationType,
|
|
3306
|
+
totalCount: count
|
|
3307
|
+
});
|
|
3308
|
+
},
|
|
3309
|
+
archived: (notificationType) => {
|
|
3310
|
+
Analytics.notifications.trackNotification("archive", {
|
|
3311
|
+
notificationType
|
|
3312
|
+
});
|
|
3313
|
+
},
|
|
3314
|
+
toggleView: (viewType) => {
|
|
3315
|
+
Analytics.notifications.trackNotification("toggle_view", {
|
|
3316
|
+
viewType
|
|
3317
|
+
});
|
|
3318
|
+
},
|
|
3319
|
+
dismissed: (notificationType) => {
|
|
3320
|
+
Analytics.notifications.trackNotification("dismiss", {
|
|
3321
|
+
notificationType
|
|
3322
|
+
});
|
|
3323
|
+
}
|
|
3324
|
+
},
|
|
3325
|
+
help: {
|
|
3326
|
+
trackFAQ: (action, properties) => {
|
|
3327
|
+
trackEvent("FAQ Flow", {
|
|
3328
|
+
action,
|
|
3329
|
+
...properties,
|
|
3330
|
+
isError: !!properties?.error
|
|
3331
|
+
});
|
|
3332
|
+
},
|
|
3333
|
+
pageViewed: () => Analytics.help.trackFAQ("view"),
|
|
3334
|
+
faqViewed: (faqId, faqTitle) => Analytics.help.trackFAQ("faq_opened", { faqId, faqTitle }),
|
|
3335
|
+
categorySelected: (category) => Analytics.help.trackFAQ("category_selected", { category }),
|
|
3336
|
+
questionExpanded: (faqId, faqTitle) => Analytics.help.trackFAQ("question_expanded", { faqId, faqTitle }),
|
|
3337
|
+
searchPerformed: (searchQuery, resultsCount) => Analytics.help.trackFAQ("search", { searchQuery, resultsCount })
|
|
3338
|
+
}
|
|
3339
|
+
};
|
|
3340
|
+
var useRefreshMetadata = (domain, address) => {
|
|
3341
|
+
const queryClient = useQueryClient();
|
|
3342
|
+
const { network } = useVeChainKitConfig();
|
|
3343
|
+
const refresh = async () => {
|
|
3344
|
+
await queryClient.invalidateQueries({
|
|
3345
|
+
queryKey: getAvatarQueryKey(domain ?? "", network.type)
|
|
3346
|
+
});
|
|
3347
|
+
await queryClient.refetchQueries({
|
|
3348
|
+
queryKey: getAvatarQueryKey(domain ?? "", network.type)
|
|
3349
|
+
});
|
|
3350
|
+
await queryClient.invalidateQueries({
|
|
3351
|
+
queryKey: getTextRecordsQueryKey(domain, network.type)
|
|
3352
|
+
});
|
|
3353
|
+
await queryClient.refetchQueries({
|
|
3354
|
+
queryKey: getTextRecordsQueryKey(domain, network.type)
|
|
3355
|
+
});
|
|
3356
|
+
await queryClient.invalidateQueries({
|
|
3357
|
+
queryKey: getAvatarOfAddressQueryKey(address)
|
|
3358
|
+
});
|
|
3359
|
+
await queryClient.refetchQueries({
|
|
3360
|
+
queryKey: getAvatarOfAddressQueryKey(address)
|
|
3361
|
+
});
|
|
3362
|
+
};
|
|
3363
|
+
return { refresh };
|
|
3364
|
+
};
|
|
3365
|
+
|
|
3366
|
+
// src/hooks/api/vetDomains/utils/domainQueryUtils.ts
|
|
3367
|
+
var invalidateAndRefetchDomainQueries = async (queryClient, address, fullDomain, subdomain, domain, networkType) => {
|
|
3368
|
+
await Promise.all([
|
|
3369
|
+
queryClient.invalidateQueries({
|
|
3370
|
+
queryKey: getVechainDomainQueryKey(address)
|
|
3371
|
+
}),
|
|
3372
|
+
queryClient.invalidateQueries({
|
|
3373
|
+
queryKey: getVechainDomainQueryKey(fullDomain)
|
|
3374
|
+
}),
|
|
3375
|
+
queryClient.invalidateQueries({
|
|
3376
|
+
queryKey: getEnsRecordExistsQueryKey(subdomain)
|
|
3377
|
+
}),
|
|
3378
|
+
queryClient.invalidateQueries({
|
|
3379
|
+
queryKey: getDomainsOfAddressQueryKey(address, ".vet")
|
|
3380
|
+
}),
|
|
3381
|
+
queryClient.invalidateQueries({
|
|
3382
|
+
queryKey: getDomainsOfAddressQueryKey(address, ".veworld.vet")
|
|
3383
|
+
}),
|
|
3384
|
+
queryClient.invalidateQueries({
|
|
3385
|
+
queryKey: getTextRecordsQueryKey(fullDomain)
|
|
3386
|
+
})
|
|
3387
|
+
]);
|
|
3388
|
+
await Promise.all([
|
|
3389
|
+
queryClient.refetchQueries({
|
|
3390
|
+
queryKey: getVechainDomainQueryKey(address)
|
|
3391
|
+
}),
|
|
3392
|
+
queryClient.refetchQueries({
|
|
3393
|
+
queryKey: getVechainDomainQueryKey(fullDomain)
|
|
3394
|
+
}),
|
|
3395
|
+
queryClient.refetchQueries({
|
|
3396
|
+
queryKey: getDomainsOfAddressQueryKey(address, ".vet")
|
|
3397
|
+
}),
|
|
3398
|
+
queryClient.refetchQueries({
|
|
3399
|
+
queryKey: getDomainsOfAddressQueryKey(address, ".veworld.vet")
|
|
3400
|
+
}),
|
|
3401
|
+
queryClient.refetchQueries({
|
|
3402
|
+
queryKey: getAvatarQueryKey(subdomain + "." + domain, networkType)
|
|
3403
|
+
}),
|
|
3404
|
+
queryClient.refetchQueries({
|
|
3405
|
+
queryKey: getTextRecordsQueryKey(fullDomain)
|
|
3406
|
+
}),
|
|
3407
|
+
queryClient.refetchQueries({
|
|
3408
|
+
queryKey: getEnsRecordExistsQueryKey(subdomain)
|
|
3409
|
+
}),
|
|
3410
|
+
queryClient.refetchQueries({
|
|
3411
|
+
queryKey: getAvatarOfAddressQueryKey(address)
|
|
3412
|
+
})
|
|
3413
|
+
]);
|
|
3414
|
+
};
|
|
3415
|
+
|
|
3416
|
+
// src/hooks/api/vetDomains/useClaimVeWorldSubdomain.ts
|
|
2897
3417
|
var SubdomainClaimerInterface = SubdomainClaimer__factory.createInterface();
|
|
2898
3418
|
var ReverseRegistrarInterface = IReverseRegistrar__factory.createInterface();
|
|
2899
3419
|
var useClaimVeWorldSubdomain = ({
|
|
@@ -2906,9 +3426,14 @@ var useClaimVeWorldSubdomain = ({
|
|
|
2906
3426
|
const queryClient = useQueryClient();
|
|
2907
3427
|
const { account } = useWallet();
|
|
2908
3428
|
const { network } = useVeChainKitConfig();
|
|
3429
|
+
const { refresh: refreshMetadata } = useRefreshMetadata(
|
|
3430
|
+
subdomain + "." + domain,
|
|
3431
|
+
account?.address ?? ""
|
|
3432
|
+
);
|
|
2909
3433
|
const buildClauses = useCallback(async () => {
|
|
2910
|
-
if (!subdomain) throw new Error("Invalid subdomain");
|
|
2911
3434
|
const clausesArray = [];
|
|
3435
|
+
if (!subdomain) throw new Error("Invalid subdomain");
|
|
3436
|
+
const fullDomain = `${subdomain}.${domain}`;
|
|
2912
3437
|
clausesArray.push({
|
|
2913
3438
|
to: getConfig(network.type).vetDomainsReverseRegistrarAddress,
|
|
2914
3439
|
value: "0x0",
|
|
@@ -2920,88 +3445,193 @@ var useClaimVeWorldSubdomain = ({
|
|
|
2920
3445
|
)}`,
|
|
2921
3446
|
abi: ReverseRegistrarInterface.getFunction("setName")
|
|
2922
3447
|
});
|
|
2923
|
-
if (
|
|
3448
|
+
if (alreadyOwned) {
|
|
2924
3449
|
clausesArray.push({
|
|
2925
|
-
to: getConfig(network.type).
|
|
3450
|
+
to: getConfig(network.type).vetDomainsReverseRegistrarAddress,
|
|
2926
3451
|
value: "0x0",
|
|
2927
|
-
data:
|
|
2928
|
-
|
|
2929
|
-
getConfig(network.type).vetDomainsPublicResolverAddress
|
|
3452
|
+
data: ReverseRegistrarInterface.encodeFunctionData("setName", [
|
|
3453
|
+
fullDomain
|
|
2930
3454
|
]),
|
|
2931
|
-
comment: `
|
|
2932
|
-
abi:
|
|
3455
|
+
comment: `Setting your VeChain nickname to ${fullDomain}`,
|
|
3456
|
+
abi: ReverseRegistrarInterface.getFunction("setName")
|
|
2933
3457
|
});
|
|
3458
|
+
const PublicResolverInterface = new ethers.Interface([
|
|
3459
|
+
"function setAddr(bytes32 node, address addr)"
|
|
3460
|
+
]);
|
|
3461
|
+
const domainNode = ethers.namehash(fullDomain);
|
|
3462
|
+
clausesArray.push({
|
|
3463
|
+
to: getConfig(network.type).vetDomainsPublicResolverAddress,
|
|
3464
|
+
value: "0x0",
|
|
3465
|
+
data: PublicResolverInterface.encodeFunctionData("setAddr", [
|
|
3466
|
+
domainNode,
|
|
3467
|
+
account?.address || ""
|
|
3468
|
+
]),
|
|
3469
|
+
comment: `Setting the address for ${fullDomain} to ${humanAddress(
|
|
3470
|
+
account?.address ?? "",
|
|
3471
|
+
4,
|
|
3472
|
+
4
|
|
3473
|
+
)}`,
|
|
3474
|
+
abi: PublicResolverInterface.getFunction("setAddr")
|
|
3475
|
+
});
|
|
3476
|
+
} else {
|
|
3477
|
+
if (isVeWorldDomain(domain)) {
|
|
3478
|
+
clausesArray.push({
|
|
3479
|
+
to: getConfig(network.type).veWorldSubdomainClaimerContractAddress,
|
|
3480
|
+
value: "0x0",
|
|
3481
|
+
data: SubdomainClaimerInterface.encodeFunctionData(
|
|
3482
|
+
"claim",
|
|
3483
|
+
[
|
|
3484
|
+
subdomain,
|
|
3485
|
+
getConfig(network.type).vetDomainsPublicResolverAddress
|
|
3486
|
+
]
|
|
3487
|
+
),
|
|
3488
|
+
comment: `Claim VeChain subdomain: ${subdomain}.${domain}`,
|
|
3489
|
+
abi: SubdomainClaimerInterface.getFunction("claim")
|
|
3490
|
+
});
|
|
3491
|
+
clausesArray.push({
|
|
3492
|
+
to: getConfig(network.type).vetDomainsReverseRegistrarAddress,
|
|
3493
|
+
value: "0x0",
|
|
3494
|
+
data: ReverseRegistrarInterface.encodeFunctionData(
|
|
3495
|
+
"setName",
|
|
3496
|
+
[subdomain + "." + domain]
|
|
3497
|
+
),
|
|
3498
|
+
comment: `Set ${subdomain}.${domain} as the VeChain nickname of the account ${humanAddress(
|
|
3499
|
+
account?.address ?? "",
|
|
3500
|
+
4,
|
|
3501
|
+
4
|
|
3502
|
+
)}`,
|
|
3503
|
+
abi: ReverseRegistrarInterface.getFunction("setName")
|
|
3504
|
+
});
|
|
3505
|
+
} else {
|
|
3506
|
+
throw new Error(
|
|
3507
|
+
"This hook only supports .veworld.vet subdomains"
|
|
3508
|
+
);
|
|
3509
|
+
}
|
|
2934
3510
|
}
|
|
2935
|
-
clausesArray.push({
|
|
2936
|
-
to: getConfig(network.type).vetDomainsReverseRegistrarAddress,
|
|
2937
|
-
value: "0x0",
|
|
2938
|
-
data: ReverseRegistrarInterface.encodeFunctionData("setName", [
|
|
2939
|
-
subdomain + "." + domain
|
|
2940
|
-
]),
|
|
2941
|
-
comment: `Set ${subdomain}.${domain} as the VeChain nickname of the account ${humanAddress(
|
|
2942
|
-
account?.address ?? "",
|
|
2943
|
-
4,
|
|
2944
|
-
4
|
|
2945
|
-
)}`,
|
|
2946
|
-
abi: ReverseRegistrarInterface.getFunction("setName")
|
|
2947
|
-
});
|
|
2948
3511
|
return clausesArray;
|
|
2949
|
-
}, [subdomain, domain, account?.address,
|
|
3512
|
+
}, [subdomain, domain, alreadyOwned, account?.address, network.type]);
|
|
2950
3513
|
const handleOnSuccess = useCallback(async () => {
|
|
2951
|
-
|
|
2952
|
-
|
|
2953
|
-
|
|
2954
|
-
|
|
2955
|
-
|
|
2956
|
-
|
|
2957
|
-
|
|
2958
|
-
|
|
2959
|
-
|
|
2960
|
-
|
|
2961
|
-
|
|
2962
|
-
|
|
2963
|
-
|
|
2964
|
-
|
|
2965
|
-
|
|
2966
|
-
|
|
2967
|
-
|
|
2968
|
-
|
|
2969
|
-
|
|
2970
|
-
|
|
2971
|
-
|
|
2972
|
-
|
|
2973
|
-
|
|
2974
|
-
|
|
2975
|
-
|
|
2976
|
-
|
|
2977
|
-
|
|
2978
|
-
|
|
2979
|
-
|
|
2980
|
-
|
|
2981
|
-
|
|
2982
|
-
|
|
2983
|
-
|
|
2984
|
-
|
|
2985
|
-
|
|
2986
|
-
|
|
2987
|
-
|
|
2988
|
-
|
|
2989
|
-
|
|
3514
|
+
const fullDomain = `${subdomain}.${domain}`;
|
|
3515
|
+
const address = account?.address ?? "";
|
|
3516
|
+
await invalidateAndRefetchDomainQueries(
|
|
3517
|
+
queryClient,
|
|
3518
|
+
address,
|
|
3519
|
+
fullDomain,
|
|
3520
|
+
subdomain,
|
|
3521
|
+
domain,
|
|
3522
|
+
network.type
|
|
3523
|
+
);
|
|
3524
|
+
refreshMetadata();
|
|
3525
|
+
Analytics.nameSelection.completed(subdomain, alreadyOwned);
|
|
3526
|
+
onSuccess?.();
|
|
3527
|
+
}, [
|
|
3528
|
+
onSuccess,
|
|
3529
|
+
subdomain,
|
|
3530
|
+
domain,
|
|
3531
|
+
queryClient,
|
|
3532
|
+
account,
|
|
3533
|
+
network.type,
|
|
3534
|
+
refreshMetadata
|
|
3535
|
+
]);
|
|
3536
|
+
const result = useSendTransaction({
|
|
3537
|
+
signerAccountAddress: account?.address ?? "",
|
|
3538
|
+
privyUIOptions: {
|
|
3539
|
+
title: "Sign to claim your VeChain nickname",
|
|
3540
|
+
description: `Claim ${subdomain}.${domain} as your VeChain nickname`,
|
|
3541
|
+
buttonText: "Sign to continue"
|
|
3542
|
+
},
|
|
3543
|
+
onTxConfirmed: handleOnSuccess,
|
|
3544
|
+
onTxFailedOrCancelled: () => {
|
|
3545
|
+
onError?.();
|
|
3546
|
+
}
|
|
3547
|
+
});
|
|
3548
|
+
return {
|
|
3549
|
+
...result,
|
|
3550
|
+
sendTransaction: async () => {
|
|
3551
|
+
return result.sendTransaction(await buildClauses());
|
|
3552
|
+
}
|
|
3553
|
+
};
|
|
3554
|
+
};
|
|
3555
|
+
var isVeWorldDomain = (domain) => {
|
|
3556
|
+
return domain.endsWith("veworld.vet");
|
|
3557
|
+
};
|
|
3558
|
+
var ReverseRegistrarInterface2 = IReverseRegistrar__factory.createInterface();
|
|
3559
|
+
var useClaimVetDomain = ({
|
|
3560
|
+
domain,
|
|
3561
|
+
onSuccess,
|
|
3562
|
+
onError,
|
|
3563
|
+
alreadyOwned = false
|
|
3564
|
+
}) => {
|
|
3565
|
+
const queryClient = useQueryClient();
|
|
3566
|
+
const { account } = useWallet();
|
|
3567
|
+
const { network } = useVeChainKitConfig();
|
|
3568
|
+
const { refresh: refreshMetadata } = useRefreshMetadata(
|
|
3569
|
+
domain,
|
|
3570
|
+
account?.address ?? ""
|
|
3571
|
+
);
|
|
3572
|
+
const buildClauses = useCallback(async () => {
|
|
3573
|
+
const clausesArray = [];
|
|
3574
|
+
if (!domain) throw new Error("Invalid domain");
|
|
3575
|
+
const fullDomain = `${domain}.vet`;
|
|
3576
|
+
if (alreadyOwned) {
|
|
3577
|
+
clausesArray.push({
|
|
3578
|
+
to: getConfig(network.type).vetDomainsReverseRegistrarAddress,
|
|
3579
|
+
value: "0x0",
|
|
3580
|
+
data: ReverseRegistrarInterface2.encodeFunctionData("setName", [
|
|
3581
|
+
fullDomain
|
|
3582
|
+
]),
|
|
3583
|
+
comment: `Setting your VeChain nickname to ${fullDomain}`,
|
|
3584
|
+
abi: ReverseRegistrarInterface2.getFunction("setName")
|
|
2990
3585
|
});
|
|
2991
|
-
|
|
2992
|
-
|
|
3586
|
+
const PublicResolverInterface = new ethers.Interface([
|
|
3587
|
+
"function setAddr(bytes32 node, address addr)"
|
|
3588
|
+
]);
|
|
3589
|
+
const domainNode = ethers.namehash(fullDomain);
|
|
3590
|
+
clausesArray.push({
|
|
3591
|
+
to: getConfig(network.type).vetDomainsPublicResolverAddress,
|
|
3592
|
+
value: "0x0",
|
|
3593
|
+
data: PublicResolverInterface.encodeFunctionData("setAddr", [
|
|
3594
|
+
domainNode,
|
|
3595
|
+
account?.address || ""
|
|
3596
|
+
]),
|
|
3597
|
+
comment: `Setting the address for ${fullDomain} to ${humanAddress(
|
|
2993
3598
|
account?.address ?? "",
|
|
2994
|
-
|
|
2995
|
-
|
|
3599
|
+
4,
|
|
3600
|
+
4
|
|
3601
|
+
)}`,
|
|
3602
|
+
abi: PublicResolverInterface.getFunction("setAddr")
|
|
2996
3603
|
});
|
|
2997
|
-
}
|
|
3604
|
+
} else {
|
|
3605
|
+
throw new Error("Primary .vet domains are not supported yet");
|
|
3606
|
+
}
|
|
3607
|
+
return clausesArray;
|
|
3608
|
+
}, [domain, alreadyOwned, account?.address, network.type]);
|
|
3609
|
+
const handleOnSuccess = useCallback(async () => {
|
|
3610
|
+
const address = account?.address ?? "";
|
|
3611
|
+
await invalidateAndRefetchDomainQueries(
|
|
3612
|
+
queryClient,
|
|
3613
|
+
address,
|
|
3614
|
+
domain,
|
|
3615
|
+
"",
|
|
3616
|
+
// No subdomain for primary domains
|
|
3617
|
+
domain.endsWith(".vet") ? domain : `${domain}.vet`,
|
|
3618
|
+
network.type
|
|
3619
|
+
);
|
|
3620
|
+
refreshMetadata();
|
|
2998
3621
|
onSuccess?.();
|
|
2999
|
-
}, [
|
|
3622
|
+
}, [
|
|
3623
|
+
onSuccess,
|
|
3624
|
+
domain,
|
|
3625
|
+
queryClient,
|
|
3626
|
+
account,
|
|
3627
|
+
network.type,
|
|
3628
|
+
refreshMetadata
|
|
3629
|
+
]);
|
|
3000
3630
|
const result = useSendTransaction({
|
|
3001
3631
|
signerAccountAddress: account?.address ?? "",
|
|
3002
3632
|
privyUIOptions: {
|
|
3003
3633
|
title: "Sign to claim your VeChain nickname",
|
|
3004
|
-
description: `Claim ${
|
|
3634
|
+
description: `Claim ${domain} as your VeChain nickname`,
|
|
3005
3635
|
buttonText: "Sign to continue"
|
|
3006
3636
|
},
|
|
3007
3637
|
onTxConfirmed: handleOnSuccess,
|
|
@@ -3084,7 +3714,7 @@ var erc721Interface = new Interface([
|
|
|
3084
3714
|
"function tokenURI(uint256 tokenId) view returns (string)",
|
|
3085
3715
|
"function uri(uint256 id) view returns (string)"
|
|
3086
3716
|
]);
|
|
3087
|
-
var
|
|
3717
|
+
var getAvatarLegacy = async (networkType, nodeUrl, name) => {
|
|
3088
3718
|
if (!name) throw new Error("Name is required");
|
|
3089
3719
|
const node = namehash(name);
|
|
3090
3720
|
try {
|
|
@@ -3138,22 +3768,19 @@ var getAvatar = async (networkType, nodeUrl, name) => {
|
|
|
3138
3768
|
"text",
|
|
3139
3769
|
lookupData
|
|
3140
3770
|
);
|
|
3141
|
-
|
|
3771
|
+
const avatarRecord = avatar === "" ? null : avatar;
|
|
3772
|
+
if (!avatarRecord) return null;
|
|
3773
|
+
return parseAvatarRecord(avatarRecord, networkType, nodeUrl);
|
|
3142
3774
|
} catch (decodeError) {
|
|
3143
3775
|
console.error("Failed to decode avatar data:", decodeError);
|
|
3144
3776
|
return null;
|
|
3145
3777
|
}
|
|
3146
3778
|
} catch (error) {
|
|
3147
|
-
console.error("Error fetching avatar:", error);
|
|
3779
|
+
console.error("Error fetching avatar using legacy API:", error);
|
|
3148
3780
|
throw error;
|
|
3149
3781
|
}
|
|
3150
3782
|
};
|
|
3151
|
-
var
|
|
3152
|
-
"VECHAIN_KIT",
|
|
3153
|
-
"VET_DOMAINS",
|
|
3154
|
-
"AVATAR",
|
|
3155
|
-
name
|
|
3156
|
-
];
|
|
3783
|
+
var getAvatarLegacyQueryKey = (name, networkType) => ["VECHAIN_KIT", "VET_DOMAINS", "AVATAR", "LEGACY", name, networkType];
|
|
3157
3784
|
async function parseAvatarRecord(record, networkType, nodeUrl) {
|
|
3158
3785
|
try {
|
|
3159
3786
|
if (record.startsWith("http") || record.startsWith("ipfs://") || record.startsWith("ar://")) {
|
|
@@ -3224,21 +3851,72 @@ async function parseAvatarRecord(record, networkType, nodeUrl) {
|
|
|
3224
3851
|
return null;
|
|
3225
3852
|
}
|
|
3226
3853
|
}
|
|
3227
|
-
var
|
|
3854
|
+
var useGetAvatarLegacy = (name) => {
|
|
3228
3855
|
const { network } = useVeChainKitConfig();
|
|
3229
3856
|
const nodeUrl = network.nodeUrl ?? getConfig(network.type).nodeUrl;
|
|
3230
3857
|
const avatarQuery = useQuery({
|
|
3231
|
-
queryKey:
|
|
3858
|
+
queryKey: getAvatarLegacyQueryKey(name ?? "", network.type),
|
|
3232
3859
|
queryFn: async () => {
|
|
3233
3860
|
if (!name) return null;
|
|
3234
|
-
|
|
3235
|
-
|
|
3236
|
-
|
|
3861
|
+
return getAvatarLegacy(network.type, nodeUrl, name);
|
|
3862
|
+
},
|
|
3863
|
+
enabled: !!name && !!nodeUrl && !!network.type
|
|
3864
|
+
});
|
|
3865
|
+
return avatarQuery;
|
|
3866
|
+
};
|
|
3867
|
+
|
|
3868
|
+
// src/hooks/api/vetDomains/useGetAvatar.ts
|
|
3869
|
+
var getAvatar = async (name, network) => {
|
|
3870
|
+
if (!name) throw new Error("Name is required");
|
|
3871
|
+
const result = await fetchAvatar(name, network) || await fetchAvatarDirectly(name, network);
|
|
3872
|
+
if (!result) return null;
|
|
3873
|
+
if (result instanceof Blob) {
|
|
3874
|
+
return new Promise((resolve) => {
|
|
3875
|
+
const reader = new FileReader();
|
|
3876
|
+
reader.readAsDataURL(result);
|
|
3877
|
+
reader.onloadend = () => {
|
|
3878
|
+
resolve(reader.result);
|
|
3879
|
+
};
|
|
3880
|
+
});
|
|
3881
|
+
}
|
|
3882
|
+
return result;
|
|
3883
|
+
};
|
|
3884
|
+
var fetchAvatar = async (name, network) => {
|
|
3885
|
+
try {
|
|
3886
|
+
const response = await fetch(
|
|
3887
|
+
`${getConfig(network.type).vetDomainAvatarUrl}/${name}`
|
|
3888
|
+
);
|
|
3889
|
+
if (response.ok) {
|
|
3890
|
+
return response.blob();
|
|
3891
|
+
}
|
|
3892
|
+
} catch (error) {
|
|
3893
|
+
console.error("Error fetching avatar:", error);
|
|
3894
|
+
}
|
|
3895
|
+
return null;
|
|
3896
|
+
};
|
|
3897
|
+
var fetchAvatarDirectly = async (name, network) => {
|
|
3898
|
+
const nodeUrl = network.nodeUrl ?? getConfig(network.type).nodeUrl;
|
|
3899
|
+
if (!nodeUrl) return null;
|
|
3900
|
+
const avatar = await getAvatarLegacy(network.type, nodeUrl, name);
|
|
3901
|
+
if (!avatar) return null;
|
|
3902
|
+
return avatar;
|
|
3903
|
+
};
|
|
3904
|
+
var getAvatarQueryKey = (name, networkType) => [
|
|
3905
|
+
"VECHAIN_KIT",
|
|
3906
|
+
"VET_DOMAINS",
|
|
3907
|
+
"AVATAR",
|
|
3908
|
+
name,
|
|
3909
|
+
networkType
|
|
3910
|
+
];
|
|
3911
|
+
var useGetAvatar = (name) => {
|
|
3912
|
+
const { network } = useVeChainKitConfig();
|
|
3913
|
+
const avatarQuery = useQuery({
|
|
3914
|
+
queryKey: getAvatarQueryKey(name ?? "", network.type),
|
|
3915
|
+
queryFn: async () => {
|
|
3916
|
+
if (!name) return null;
|
|
3917
|
+
return getAvatar(name, network);
|
|
3237
3918
|
},
|
|
3238
|
-
enabled: !!name && !!
|
|
3239
|
-
// Use the same caching strategy as the avatar query
|
|
3240
|
-
staleTime: 5 * 60 * 1e3
|
|
3241
|
-
// 5 minutes
|
|
3919
|
+
enabled: !!name && !!network.type
|
|
3242
3920
|
});
|
|
3243
3921
|
return avatarQuery;
|
|
3244
3922
|
};
|
|
@@ -3441,7 +4119,9 @@ var useSendTransaction = ({
|
|
|
3441
4119
|
setSendTransactionError(
|
|
3442
4120
|
error2 instanceof Error ? error2.message : String(error2)
|
|
3443
4121
|
);
|
|
3444
|
-
onTxFailedOrCancelled?.(
|
|
4122
|
+
onTxFailedOrCancelled?.(
|
|
4123
|
+
error2 instanceof Error ? error2 : new Error(String(error2))
|
|
4124
|
+
);
|
|
3445
4125
|
} finally {
|
|
3446
4126
|
setSendTransactionPending(false);
|
|
3447
4127
|
}
|
|
@@ -3583,9 +4263,11 @@ var useUpdateTextRecord = ({
|
|
|
3583
4263
|
);
|
|
3584
4264
|
const result = useSendTransaction({
|
|
3585
4265
|
signerAccountAddress,
|
|
3586
|
-
onTxConfirmed:
|
|
4266
|
+
onTxConfirmed: async () => {
|
|
4267
|
+
await onSuccess?.();
|
|
4268
|
+
},
|
|
3587
4269
|
onTxFailedOrCancelled: async () => {
|
|
3588
|
-
onError?.();
|
|
4270
|
+
await onError?.();
|
|
3589
4271
|
},
|
|
3590
4272
|
privyUIOptions: {
|
|
3591
4273
|
title: "Update Profile Information",
|
|
@@ -3660,11 +4342,63 @@ var useGetAvatarOfAddress = (address) => {
|
|
|
3660
4342
|
return avatarQuery.data;
|
|
3661
4343
|
return getPicassoImage(address);
|
|
3662
4344
|
},
|
|
3663
|
-
enabled: !!address && domainsQuery.isSuccess && (primaryDomain ? avatarQuery.isSuccess : true)
|
|
3664
|
-
|
|
3665
|
-
|
|
3666
|
-
|
|
4345
|
+
enabled: !!address && domainsQuery.isSuccess && (primaryDomain ? avatarQuery.isSuccess : true)
|
|
4346
|
+
});
|
|
4347
|
+
};
|
|
4348
|
+
var ReverseRegistrarInterface3 = IReverseRegistrar__factory.createInterface();
|
|
4349
|
+
var useUnsetDomain = ({
|
|
4350
|
+
onSuccess,
|
|
4351
|
+
onError
|
|
4352
|
+
}) => {
|
|
4353
|
+
const queryClient = useQueryClient();
|
|
4354
|
+
const { account } = useWallet();
|
|
4355
|
+
const { network } = useVeChainKitConfig();
|
|
4356
|
+
const buildClauses = useCallback(async () => {
|
|
4357
|
+
const clausesArray = [];
|
|
4358
|
+
clausesArray.push({
|
|
4359
|
+
to: getConfig(network.type).vetDomainsReverseRegistrarAddress,
|
|
4360
|
+
value: "0x0",
|
|
4361
|
+
data: ReverseRegistrarInterface3.encodeFunctionData("setName", [""]),
|
|
4362
|
+
comment: `Unsetting your current VeChain nickname of the account ${humanAddress(
|
|
4363
|
+
account?.address ?? "",
|
|
4364
|
+
4,
|
|
4365
|
+
4
|
|
4366
|
+
)}`,
|
|
4367
|
+
abi: ReverseRegistrarInterface3.getFunction("setName")
|
|
4368
|
+
});
|
|
4369
|
+
return clausesArray;
|
|
4370
|
+
}, [account?.address, network.type]);
|
|
4371
|
+
const handleOnSuccess = useCallback(async () => {
|
|
4372
|
+
const address = account?.address ?? "";
|
|
4373
|
+
await invalidateAndRefetchDomainQueries(
|
|
4374
|
+
queryClient,
|
|
4375
|
+
address,
|
|
4376
|
+
"",
|
|
4377
|
+
// No domain being set
|
|
4378
|
+
"",
|
|
4379
|
+
// No subdomain
|
|
4380
|
+
"",
|
|
4381
|
+
// No full domain
|
|
4382
|
+
network.type
|
|
4383
|
+
);
|
|
4384
|
+
onSuccess?.();
|
|
4385
|
+
}, [onSuccess, queryClient, account, network.type]);
|
|
4386
|
+
const result = useSendTransaction({
|
|
4387
|
+
signerAccountAddress: account?.address ?? "",
|
|
4388
|
+
privyUIOptions: {
|
|
4389
|
+
title: "Sign to unset your VeChain nickname",
|
|
4390
|
+
description: "Unset your current VeChain nickname",
|
|
4391
|
+
buttonText: "Sign to continue"
|
|
4392
|
+
},
|
|
4393
|
+
onTxConfirmed: handleOnSuccess,
|
|
4394
|
+
onTxFailedOrCancelled: onError
|
|
3667
4395
|
});
|
|
4396
|
+
return {
|
|
4397
|
+
...result,
|
|
4398
|
+
sendTransaction: async () => {
|
|
4399
|
+
return result.sendTransaction(await buildClauses());
|
|
4400
|
+
}
|
|
4401
|
+
};
|
|
3668
4402
|
};
|
|
3669
4403
|
var useBalances = ({ address = "" }) => {
|
|
3670
4404
|
const { network } = useVeChainKitConfig();
|
|
@@ -3792,6 +4526,17 @@ var useBalances = ({ address = "" }) => {
|
|
|
3792
4526
|
customTokensLoading
|
|
3793
4527
|
]);
|
|
3794
4528
|
};
|
|
4529
|
+
|
|
4530
|
+
// src/utils/StringUtils.ts
|
|
4531
|
+
var isRejectionError = (errorMessage) => {
|
|
4532
|
+
if (!errorMessage) return false;
|
|
4533
|
+
const rejectionTerms = ["rejected", "cancelled", "user denied", "closed"];
|
|
4534
|
+
return rejectionTerms.some(
|
|
4535
|
+
(term) => errorMessage.toLowerCase().includes(term.toLowerCase())
|
|
4536
|
+
);
|
|
4537
|
+
};
|
|
4538
|
+
|
|
4539
|
+
// src/utils/handlePopupError.ts
|
|
3795
4540
|
var handlePopupError = ({
|
|
3796
4541
|
error,
|
|
3797
4542
|
mobileBrowserPopupMessage = "Mobile browser blocked the window. Please try again.",
|
|
@@ -3799,10 +4544,10 @@ var handlePopupError = ({
|
|
|
3799
4544
|
defaultMessage = "Operation failed"
|
|
3800
4545
|
}) => {
|
|
3801
4546
|
const errorMsg = error?.message;
|
|
3802
|
-
if (isMobile && !errorMsg
|
|
4547
|
+
if (isMobile && errorMsg && !isRejectionError(errorMsg)) {
|
|
3803
4548
|
return new Error(mobileBrowserPopupMessage);
|
|
3804
4549
|
}
|
|
3805
|
-
if (errorMsg
|
|
4550
|
+
if (errorMsg && isRejectionError(errorMsg)) {
|
|
3806
4551
|
return new Error(rejectedMessage);
|
|
3807
4552
|
}
|
|
3808
4553
|
return error instanceof Error ? error : new Error(defaultMessage);
|
|
@@ -4014,10 +4759,9 @@ var useWallet = () => {
|
|
|
4014
4759
|
const connectedWalletAddress = isConnectedWithDappKit ? dappKitAccount : isConnectedWithCrossApp ? crossAppAddress : privyEmbeddedWalletAddress;
|
|
4015
4760
|
const { data: smartAccount } = useSmartAccount(connectedWalletAddress);
|
|
4016
4761
|
const activeAddress = isConnectedWithDappKit ? dappKitAccount : smartAccount?.address;
|
|
4017
|
-
const
|
|
4018
|
-
|
|
4019
|
-
|
|
4020
|
-
activeAccountDomain?.data?.domain
|
|
4762
|
+
const activeAccountMetadata = useWalletMetadata(
|
|
4763
|
+
activeAddress ?? "",
|
|
4764
|
+
network.type
|
|
4021
4765
|
);
|
|
4022
4766
|
const connectedMetadata = useWalletMetadata(
|
|
4023
4767
|
connectedWalletAddress ?? "",
|
|
@@ -4029,10 +4773,10 @@ var useWallet = () => {
|
|
|
4029
4773
|
);
|
|
4030
4774
|
const account = activeAddress ? {
|
|
4031
4775
|
address: activeAddress,
|
|
4032
|
-
domain:
|
|
4033
|
-
image:
|
|
4034
|
-
isLoadingMetadata:
|
|
4035
|
-
metadata:
|
|
4776
|
+
domain: activeAccountMetadata.domain,
|
|
4777
|
+
image: activeAccountMetadata.image,
|
|
4778
|
+
isLoadingMetadata: activeAccountMetadata.isLoading,
|
|
4779
|
+
metadata: activeAccountMetadata.records
|
|
4036
4780
|
} : null;
|
|
4037
4781
|
const connectedWallet = connectedWalletAddress ? {
|
|
4038
4782
|
address: connectedWalletAddress,
|
|
@@ -4277,31 +5021,6 @@ var useAccountBalance = (address) => {
|
|
|
4277
5021
|
refetchInterval: 1e4
|
|
4278
5022
|
});
|
|
4279
5023
|
};
|
|
4280
|
-
var useRefreshMetadata = (domain, address) => {
|
|
4281
|
-
const queryClient = useQueryClient();
|
|
4282
|
-
const { network } = useVeChainKitConfig();
|
|
4283
|
-
const refresh = async () => {
|
|
4284
|
-
await queryClient.invalidateQueries({
|
|
4285
|
-
queryKey: getAvatarQueryKey(domain ?? "")
|
|
4286
|
-
});
|
|
4287
|
-
await queryClient.refetchQueries({
|
|
4288
|
-
queryKey: getAvatarQueryKey(domain ?? "")
|
|
4289
|
-
});
|
|
4290
|
-
await queryClient.invalidateQueries({
|
|
4291
|
-
queryKey: getTextRecordsQueryKey(domain, network.type)
|
|
4292
|
-
});
|
|
4293
|
-
await queryClient.refetchQueries({
|
|
4294
|
-
queryKey: getTextRecordsQueryKey(domain, network.type)
|
|
4295
|
-
});
|
|
4296
|
-
await queryClient.invalidateQueries({
|
|
4297
|
-
queryKey: getAvatarOfAddressQueryKey(address)
|
|
4298
|
-
});
|
|
4299
|
-
await queryClient.refetchQueries({
|
|
4300
|
-
queryKey: getAvatarOfAddressQueryKey(address)
|
|
4301
|
-
});
|
|
4302
|
-
};
|
|
4303
|
-
return { refresh };
|
|
4304
|
-
};
|
|
4305
5024
|
|
|
4306
5025
|
// src/hooks/api/utility/useGetNodeUrl.ts
|
|
4307
5026
|
var useGetNodeUrl = () => {
|
|
@@ -5151,7 +5870,8 @@ var AddressDisplay = ({
|
|
|
5151
5870
|
wallet,
|
|
5152
5871
|
label,
|
|
5153
5872
|
style,
|
|
5154
|
-
showHumanAddress = true
|
|
5873
|
+
showHumanAddress = true,
|
|
5874
|
+
fromScreen
|
|
5155
5875
|
}) => {
|
|
5156
5876
|
const [copied, setCopied] = useState(false);
|
|
5157
5877
|
const [copiedDomain, setCopiedDomain] = useState(false);
|
|
@@ -5161,6 +5881,7 @@ var AddressDisplay = ({
|
|
|
5161
5881
|
setTimeout(() => {
|
|
5162
5882
|
setCopied2(false);
|
|
5163
5883
|
}, 2e3);
|
|
5884
|
+
Analytics.user.profile.addressCopied(fromScreen);
|
|
5164
5885
|
};
|
|
5165
5886
|
return /* @__PURE__ */ jsx(VStack, { w: "full", justifyContent: "center", ...style, children: /* @__PURE__ */ jsxs(VStack, { w: "full", spacing: 4, children: [
|
|
5166
5887
|
label && /* @__PURE__ */ jsx(Text, { fontSize: "sm", opacity: 0.7, children: label }),
|
|
@@ -5262,7 +5983,7 @@ var AddressDisplay = ({
|
|
|
5262
5983
|
// package.json
|
|
5263
5984
|
var package_default = {
|
|
5264
5985
|
name: "@vechain/vechain-kit",
|
|
5265
|
-
version: "1.
|
|
5986
|
+
version: "1.6.0",
|
|
5266
5987
|
private: false,
|
|
5267
5988
|
homepage: "https://github.com/vechain/vechain-kit",
|
|
5268
5989
|
repository: "github:vechain/vechain-kit",
|
|
@@ -5288,9 +6009,10 @@ var package_default = {
|
|
|
5288
6009
|
dependencies: {
|
|
5289
6010
|
"@chakra-ui/react": "^2.8.2",
|
|
5290
6011
|
"@choc-ui/chakra-autocomplete": "^5.3.0",
|
|
5291
|
-
"@privy-io/cross-app-connect": "0.1.8
|
|
5292
|
-
"@privy-io/react-auth": "2.
|
|
6012
|
+
"@privy-io/cross-app-connect": "0.1.8",
|
|
6013
|
+
"@privy-io/react-auth": "2.8.0",
|
|
5293
6014
|
"@rainbow-me/rainbowkit": "^2.1.5",
|
|
6015
|
+
"@solana/web3.js": "^1.98.0",
|
|
5294
6016
|
"@tanstack/react-query": "^5.64.2",
|
|
5295
6017
|
"@tanstack/react-query-devtools": "^5.64.1",
|
|
5296
6018
|
"@vechain/dapp-kit-react": "1.5.0",
|
|
@@ -5309,6 +6031,7 @@ var package_default = {
|
|
|
5309
6031
|
"https-browserify": "^1.0.0",
|
|
5310
6032
|
i18next: "^24.2.1",
|
|
5311
6033
|
"i18next-browser-languagedetector": "^8.0.2",
|
|
6034
|
+
"mixpanel-browser": "^2.61.1",
|
|
5312
6035
|
net: "^1.0.2",
|
|
5313
6036
|
process: "^0.11.10",
|
|
5314
6037
|
react: "^18.2.0",
|
|
@@ -5324,6 +6047,7 @@ var package_default = {
|
|
|
5324
6047
|
wagmi: "^2.13.4"
|
|
5325
6048
|
},
|
|
5326
6049
|
devDependencies: {
|
|
6050
|
+
"@types/mixpanel-browser": "^2.51.0",
|
|
5327
6051
|
"@types/react": "^18.2.28",
|
|
5328
6052
|
"@types/react-dom": "^18.2.13",
|
|
5329
6053
|
"cross-env": "^7.0.3",
|
|
@@ -5716,13 +6440,26 @@ var ScrollToTopWrapper = ({ children, ...props }) => {
|
|
|
5716
6440
|
return /* @__PURE__ */ jsx(VStack, { ...props, children });
|
|
5717
6441
|
};
|
|
5718
6442
|
var AccountAvatar = ({ wallet, props }) => {
|
|
5719
|
-
|
|
5720
|
-
|
|
6443
|
+
const previousImageRef = useRef(wallet?.image);
|
|
6444
|
+
useEffect(() => {
|
|
6445
|
+
if (wallet?.image && !wallet.isLoadingMetadata) {
|
|
6446
|
+
previousImageRef.current = wallet.image;
|
|
6447
|
+
}
|
|
6448
|
+
}, [wallet?.image, wallet?.isLoadingMetadata]);
|
|
6449
|
+
if (!props?.src && !wallet?.image && !previousImageRef.current || wallet?.isLoadingMetadata) {
|
|
6450
|
+
return /* @__PURE__ */ jsx(
|
|
6451
|
+
Skeleton,
|
|
6452
|
+
{
|
|
6453
|
+
rounded: "full",
|
|
6454
|
+
width: props?.width,
|
|
6455
|
+
height: props?.height
|
|
6456
|
+
}
|
|
6457
|
+
);
|
|
5721
6458
|
}
|
|
5722
6459
|
return /* @__PURE__ */ jsx(
|
|
5723
6460
|
Image,
|
|
5724
6461
|
{
|
|
5725
|
-
src: props?.src || wallet?.image,
|
|
6462
|
+
src: props?.src || wallet?.image || previousImageRef.current,
|
|
5726
6463
|
alt: props?.alt || wallet?.domain,
|
|
5727
6464
|
objectFit: "cover",
|
|
5728
6465
|
rounded: "full",
|
|
@@ -5735,12 +6472,14 @@ var TransactionButtonAndStatus = ({
|
|
|
5735
6472
|
isSubmitting,
|
|
5736
6473
|
isTxWaitingConfirmation,
|
|
5737
6474
|
onConfirm,
|
|
6475
|
+
onRetry,
|
|
5738
6476
|
transactionPendingText,
|
|
5739
6477
|
txReceipt,
|
|
5740
6478
|
isSubmitForm = false,
|
|
5741
6479
|
buttonText,
|
|
5742
6480
|
isDisabled = false,
|
|
5743
|
-
style
|
|
6481
|
+
style,
|
|
6482
|
+
onError
|
|
5744
6483
|
}) => {
|
|
5745
6484
|
const { t } = useTranslation();
|
|
5746
6485
|
const { darkMode: isDark } = useVeChainKitConfig();
|
|
@@ -5749,6 +6488,11 @@ var TransactionButtonAndStatus = ({
|
|
|
5749
6488
|
if (!transactionError) return null;
|
|
5750
6489
|
return transactionError.reason || t("Something went wrong. Please try again.");
|
|
5751
6490
|
}, [transactionError, t]);
|
|
6491
|
+
useEffect(() => {
|
|
6492
|
+
if (errorMessage) {
|
|
6493
|
+
onError?.(errorMessage);
|
|
6494
|
+
}
|
|
6495
|
+
}, [errorMessage, onError]);
|
|
5752
6496
|
const buttonBg = useMemo(() => {
|
|
5753
6497
|
if (style?.accentColor) return `${style.accentColor} !important`;
|
|
5754
6498
|
return void 0;
|
|
@@ -5761,7 +6505,7 @@ var TransactionButtonAndStatus = ({
|
|
|
5761
6505
|
px: 4,
|
|
5762
6506
|
variant: "vechainKitPrimary",
|
|
5763
6507
|
bg: buttonBg,
|
|
5764
|
-
onClick: onConfirm,
|
|
6508
|
+
onClick: () => errorMessage && onRetry ? onRetry() : onConfirm(),
|
|
5765
6509
|
type: isSubmitForm ? "submit" : "button",
|
|
5766
6510
|
isLoading: isSubmitting,
|
|
5767
6511
|
isDisabled,
|
|
@@ -5975,6 +6719,8 @@ var EmailLoginButton = () => {
|
|
|
5975
6719
|
const { sendCode, state: emailState } = useLoginWithEmail({});
|
|
5976
6720
|
const emailCodeVerificationModal = useDisclosure();
|
|
5977
6721
|
const handleSendCode = async () => {
|
|
6722
|
+
Analytics.auth.flowStarted("email" /* EMAIL */);
|
|
6723
|
+
Analytics.auth.methodSelected("email" /* EMAIL */);
|
|
5978
6724
|
await sendCode({ email });
|
|
5979
6725
|
emailCodeVerificationModal.onOpen();
|
|
5980
6726
|
};
|
|
@@ -6052,9 +6798,13 @@ var LoginWithGoogleButton = ({ isDark, gridColumn }) => {
|
|
|
6052
6798
|
ConnectionButton,
|
|
6053
6799
|
{
|
|
6054
6800
|
isDark,
|
|
6055
|
-
onClick: () =>
|
|
6056
|
-
|
|
6057
|
-
|
|
6801
|
+
onClick: () => {
|
|
6802
|
+
Analytics.auth.flowStarted("google" /* GOOGLE */);
|
|
6803
|
+
Analytics.auth.methodSelected("google" /* GOOGLE */);
|
|
6804
|
+
initOAuth({
|
|
6805
|
+
provider: "google"
|
|
6806
|
+
});
|
|
6807
|
+
},
|
|
6058
6808
|
icon: FcGoogle,
|
|
6059
6809
|
text: t("Continue with Google")
|
|
6060
6810
|
}
|
|
@@ -6081,6 +6831,7 @@ var VeChainLoginButton = ({ isDark, gridColumn }) => {
|
|
|
6081
6831
|
const [loginError, setLoginError] = useState();
|
|
6082
6832
|
const loginLoadingModal = useDisclosure();
|
|
6083
6833
|
const handleLoginWithVeChain = async () => {
|
|
6834
|
+
Analytics.auth.flowStarted("vechain" /* VECHAIN */);
|
|
6084
6835
|
loginLoadingModal.onOpen();
|
|
6085
6836
|
try {
|
|
6086
6837
|
setLoginError(void 0);
|
|
@@ -6093,6 +6844,10 @@ var VeChainLoginButton = ({ isDark, gridColumn }) => {
|
|
|
6093
6844
|
);
|
|
6094
6845
|
}
|
|
6095
6846
|
};
|
|
6847
|
+
const tryAgain = () => {
|
|
6848
|
+
Analytics.auth.tryAgain("vechain" /* VECHAIN */);
|
|
6849
|
+
handleLoginWithVeChain();
|
|
6850
|
+
};
|
|
6096
6851
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
6097
6852
|
/* @__PURE__ */ jsx(GridItem, { colSpan: gridColumn ? gridColumn : 4, w: "full", children: /* @__PURE__ */ jsx(
|
|
6098
6853
|
ConnectionButton,
|
|
@@ -6112,7 +6867,7 @@ var VeChainLoginButton = ({ isDark, gridColumn }) => {
|
|
|
6112
6867
|
onClose: () => {
|
|
6113
6868
|
loginLoadingModal.onClose();
|
|
6114
6869
|
},
|
|
6115
|
-
onTryAgain:
|
|
6870
|
+
onTryAgain: tryAgain,
|
|
6116
6871
|
error: loginError,
|
|
6117
6872
|
title: t("Connecting to VeChain"),
|
|
6118
6873
|
loadingText: t(
|
|
@@ -6128,18 +6883,32 @@ var PasskeyLoginButton = ({ isDark, gridColumn }) => {
|
|
|
6128
6883
|
const [loginError, setLoginError] = useState();
|
|
6129
6884
|
const loginLoadingModal = useDisclosure();
|
|
6130
6885
|
const handleLoginWithPasskey = async () => {
|
|
6886
|
+
Analytics.auth.flowStarted("passkey" /* PASSKEY */);
|
|
6887
|
+
Analytics.auth.methodSelected("passkey" /* PASSKEY */);
|
|
6131
6888
|
loginLoadingModal.onOpen();
|
|
6132
6889
|
try {
|
|
6133
6890
|
setLoginError(void 0);
|
|
6134
6891
|
await loginWithPasskey();
|
|
6135
6892
|
loginLoadingModal.onClose();
|
|
6136
6893
|
} catch (error) {
|
|
6894
|
+
const errorMsg = error instanceof Error ? error.message.toLowerCase() : "";
|
|
6895
|
+
if (errorMsg.includes("not found")) {
|
|
6896
|
+
Analytics.auth.dropOff("passkey-prompt");
|
|
6897
|
+
} else if (errorMsg.includes("abort")) {
|
|
6898
|
+
Analytics.auth.dropOff("passkey-authentication");
|
|
6899
|
+
} else {
|
|
6900
|
+
Analytics.auth.failed("passkey" /* PASSKEY */, errorMsg);
|
|
6901
|
+
}
|
|
6137
6902
|
console.error(error);
|
|
6138
6903
|
setLoginError(
|
|
6139
6904
|
error instanceof Error ? error.message : t("Failed to connect with Passkey")
|
|
6140
6905
|
);
|
|
6141
6906
|
}
|
|
6142
6907
|
};
|
|
6908
|
+
const handleTryAgain = () => {
|
|
6909
|
+
Analytics.auth.tryAgain("passkey" /* PASSKEY */);
|
|
6910
|
+
handleLoginWithPasskey();
|
|
6911
|
+
};
|
|
6143
6912
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
6144
6913
|
/* @__PURE__ */ jsx(GridItem, { colSpan: gridColumn, w: "full", children: /* @__PURE__ */ jsx(
|
|
6145
6914
|
ConnectionButton,
|
|
@@ -6160,55 +6929,82 @@ var PasskeyLoginButton = ({ isDark, gridColumn }) => {
|
|
|
6160
6929
|
error: loginError,
|
|
6161
6930
|
title: t("Connecting with Passkey"),
|
|
6162
6931
|
loadingText: t("Please complete the passkey authentication..."),
|
|
6163
|
-
onTryAgain:
|
|
6932
|
+
onTryAgain: handleTryAgain
|
|
6164
6933
|
}
|
|
6165
6934
|
)
|
|
6166
6935
|
] });
|
|
6167
6936
|
};
|
|
6168
6937
|
var DappKitButton = ({ isDark, gridColumn = 2 }) => {
|
|
6169
6938
|
const { t } = useTranslation();
|
|
6170
|
-
const { open: openDappKitModal } = useWalletModal();
|
|
6939
|
+
const { open: openDappKitModal, onConnectionStatusChange } = useWalletModal();
|
|
6940
|
+
const { dappKit } = useVeChainKitConfig();
|
|
6941
|
+
const { user } = usePrivy();
|
|
6942
|
+
const { source } = useWallet$1();
|
|
6943
|
+
const buttonText = !dappKit?.allowedWallets?.includes("sync2") ? "Connect with VeWorld wallet" : t("Connect wallet");
|
|
6944
|
+
useEffect(() => {
|
|
6945
|
+
const handleConnectionChange = (address, error) => {
|
|
6946
|
+
if (!address) {
|
|
6947
|
+
if (error?.message) {
|
|
6948
|
+
const errorMsg = error.message.toLowerCase();
|
|
6949
|
+
if (errorMsg.includes("veworld")) {
|
|
6950
|
+
return Analytics.auth.dropOff("dappkit-veworld", {
|
|
6951
|
+
...source && { source }
|
|
6952
|
+
});
|
|
6953
|
+
}
|
|
6954
|
+
if (errorMsg.includes("sync2")) {
|
|
6955
|
+
return Analytics.auth.dropOff("dappkit-sync2", {
|
|
6956
|
+
...source && { source }
|
|
6957
|
+
});
|
|
6958
|
+
}
|
|
6959
|
+
if (errorMsg.includes("wallet-connect")) {
|
|
6960
|
+
return Analytics.auth.dropOff(
|
|
6961
|
+
"dappkit-wallet-connect",
|
|
6962
|
+
{
|
|
6963
|
+
...source && { source }
|
|
6964
|
+
}
|
|
6965
|
+
);
|
|
6966
|
+
}
|
|
6967
|
+
if (errorMsg && isRejectionError(errorMsg)) {
|
|
6968
|
+
return Analytics.auth.dropOff("dappkit-view", {
|
|
6969
|
+
...source && { source }
|
|
6970
|
+
});
|
|
6971
|
+
}
|
|
6972
|
+
}
|
|
6973
|
+
return Analytics.auth.dropOff("dappkit-view", {
|
|
6974
|
+
...source && { source }
|
|
6975
|
+
});
|
|
6976
|
+
} else {
|
|
6977
|
+
Analytics.auth.completed({
|
|
6978
|
+
loginMethod: "dappkit" /* DAPPKIT */
|
|
6979
|
+
});
|
|
6980
|
+
}
|
|
6981
|
+
};
|
|
6982
|
+
onConnectionStatusChange(handleConnectionChange);
|
|
6983
|
+
}, [onConnectionStatusChange]);
|
|
6984
|
+
const handleDappKitClick = () => {
|
|
6985
|
+
Analytics.auth.flowStarted("dappkit" /* DAPPKIT */);
|
|
6986
|
+
Analytics.auth.methodSelected("dappkit" /* DAPPKIT */);
|
|
6987
|
+
openDappKitModal();
|
|
6988
|
+
if (source) {
|
|
6989
|
+
Analytics.auth.completed({
|
|
6990
|
+
userId: user?.id,
|
|
6991
|
+
loginMethod: "dappkit" /* DAPPKIT */,
|
|
6992
|
+
platform: source
|
|
6993
|
+
});
|
|
6994
|
+
}
|
|
6995
|
+
};
|
|
6171
6996
|
return /* @__PURE__ */ jsx(GridItem, { colSpan: gridColumn ? gridColumn : 2, w: "full", children: /* @__PURE__ */ jsx(
|
|
6172
6997
|
ConnectionButton,
|
|
6173
6998
|
{
|
|
6174
6999
|
isDark,
|
|
6175
|
-
onClick:
|
|
6176
|
-
icon: IoWalletOutline,
|
|
6177
|
-
|
|
6178
|
-
|
|
7000
|
+
onClick: handleDappKitClick,
|
|
7001
|
+
icon: !dappKit?.allowedWallets?.includes("sync2") ? isDark ? VeWorldLogoLight : VeWorldLogoDark : IoWalletOutline,
|
|
7002
|
+
iconWidth: "27px",
|
|
7003
|
+
text: gridColumn >= 2 ? buttonText : void 0,
|
|
7004
|
+
rightIcon: dappKit?.allowedWallets?.includes("sync2") && /* @__PURE__ */ jsx(Icon, { as: IoIosArrowForward }) || void 0
|
|
6179
7005
|
}
|
|
6180
7006
|
) });
|
|
6181
7007
|
};
|
|
6182
|
-
var EcosystemButton = ({
|
|
6183
|
-
isDark,
|
|
6184
|
-
appsInfo,
|
|
6185
|
-
isLoading,
|
|
6186
|
-
gridColumn
|
|
6187
|
-
}) => {
|
|
6188
|
-
const { t } = useTranslation();
|
|
6189
|
-
const ecosystemModal = useDisclosure();
|
|
6190
|
-
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
6191
|
-
/* @__PURE__ */ jsx(GridItem, { colSpan: gridColumn, w: "full", children: /* @__PURE__ */ jsx(
|
|
6192
|
-
ConnectionButton,
|
|
6193
|
-
{
|
|
6194
|
-
isDark,
|
|
6195
|
-
onClick: ecosystemModal.onOpen,
|
|
6196
|
-
icon: AiOutlineUser,
|
|
6197
|
-
text: gridColumn && gridColumn >= 2 ? t("Other options") : void 0,
|
|
6198
|
-
rightIcon: /* @__PURE__ */ jsx(Icon, { as: IoIosArrowForward })
|
|
6199
|
-
}
|
|
6200
|
-
) }),
|
|
6201
|
-
/* @__PURE__ */ jsx(
|
|
6202
|
-
EcosystemModal,
|
|
6203
|
-
{
|
|
6204
|
-
isOpen: ecosystemModal.isOpen,
|
|
6205
|
-
onClose: ecosystemModal.onClose,
|
|
6206
|
-
appsInfo,
|
|
6207
|
-
isLoading
|
|
6208
|
-
}
|
|
6209
|
-
)
|
|
6210
|
-
] });
|
|
6211
|
-
};
|
|
6212
7008
|
var PrivyButton = ({ isDark, onViewMoreLogin, gridColumn }) => {
|
|
6213
7009
|
const { t } = useTranslation();
|
|
6214
7010
|
return /* @__PURE__ */ jsx(GridItem, { colSpan: gridColumn, w: "full", children: /* @__PURE__ */ jsx(
|
|
@@ -6223,11 +7019,7 @@ var PrivyButton = ({ isDark, onViewMoreLogin, gridColumn }) => {
|
|
|
6223
7019
|
) });
|
|
6224
7020
|
};
|
|
6225
7021
|
var ConnectionOptionsStack = () => {
|
|
6226
|
-
const {
|
|
6227
|
-
privyEcosystemAppIDS,
|
|
6228
|
-
loginMethods,
|
|
6229
|
-
darkMode: isDark
|
|
6230
|
-
} = useVeChainKitConfig();
|
|
7022
|
+
const { loginMethods, darkMode: isDark } = useVeChainKitConfig();
|
|
6231
7023
|
const { login: viewMoreLogin } = usePrivy();
|
|
6232
7024
|
const {
|
|
6233
7025
|
showGoogleLogin,
|
|
@@ -6235,11 +7027,9 @@ var ConnectionOptionsStack = () => {
|
|
|
6235
7027
|
showPasskey,
|
|
6236
7028
|
showVeChainLogin,
|
|
6237
7029
|
showDappKit,
|
|
6238
|
-
showEcosystem,
|
|
6239
7030
|
showMoreLogin,
|
|
6240
7031
|
isOfficialVeChainApp
|
|
6241
7032
|
} = useLoginModalContent();
|
|
6242
|
-
const { data: appsInfo, isLoading: isEcosystemAppsLoading } = useFetchAppInfo(privyEcosystemAppIDS);
|
|
6243
7033
|
return /* @__PURE__ */ jsx(Stack, { spacing: 4, w: "full", align: "center", children: /* @__PURE__ */ jsx(Grid, { templateColumns: "repeat(4, 1fr)", gap: 2, w: "full", children: loginMethods?.map(({ method: method35, gridColumn }) => {
|
|
6244
7034
|
switch (method35) {
|
|
6245
7035
|
case "email":
|
|
@@ -6287,17 +7077,6 @@ var ConnectionOptionsStack = () => {
|
|
|
6287
7077
|
},
|
|
6288
7078
|
"dappkit"
|
|
6289
7079
|
);
|
|
6290
|
-
case "ecosystem":
|
|
6291
|
-
return showEcosystem && /* @__PURE__ */ jsx(
|
|
6292
|
-
EcosystemButton,
|
|
6293
|
-
{
|
|
6294
|
-
isDark,
|
|
6295
|
-
appsInfo: Object.values(appsInfo || {}),
|
|
6296
|
-
isLoading: isEcosystemAppsLoading,
|
|
6297
|
-
gridColumn
|
|
6298
|
-
},
|
|
6299
|
-
"ecosystem"
|
|
6300
|
-
);
|
|
6301
7080
|
case "more":
|
|
6302
7081
|
return showMoreLogin && /* @__PURE__ */ jsx(
|
|
6303
7082
|
PrivyButton,
|
|
@@ -6313,19 +7092,57 @@ var ConnectionOptionsStack = () => {
|
|
|
6313
7092
|
}
|
|
6314
7093
|
}) }) });
|
|
6315
7094
|
};
|
|
7095
|
+
var EcosystemButton = ({ appsInfo, isLoading }) => {
|
|
7096
|
+
const { t } = useTranslation();
|
|
7097
|
+
const ecosystemModal = useDisclosure();
|
|
7098
|
+
const handleEcosystemClick = () => {
|
|
7099
|
+
Analytics.auth.flowStarted("ecosystem" /* ECOSYSTEM */);
|
|
7100
|
+
Analytics.auth.methodSelected("ecosystem" /* ECOSYSTEM */);
|
|
7101
|
+
ecosystemModal.onOpen();
|
|
7102
|
+
};
|
|
7103
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
7104
|
+
/* @__PURE__ */ jsx(
|
|
7105
|
+
Button,
|
|
7106
|
+
{
|
|
7107
|
+
fontSize: "sm",
|
|
7108
|
+
variant: "link",
|
|
7109
|
+
onClick: handleEcosystemClick,
|
|
7110
|
+
children: t("Already have an x2earn app wallet?")
|
|
7111
|
+
}
|
|
7112
|
+
),
|
|
7113
|
+
/* @__PURE__ */ jsx(
|
|
7114
|
+
EcosystemModal,
|
|
7115
|
+
{
|
|
7116
|
+
isOpen: ecosystemModal.isOpen,
|
|
7117
|
+
onClose: ecosystemModal.onClose,
|
|
7118
|
+
appsInfo,
|
|
7119
|
+
isLoading
|
|
7120
|
+
}
|
|
7121
|
+
)
|
|
7122
|
+
] });
|
|
7123
|
+
};
|
|
6316
7124
|
var MainContent = ({ setCurrentContent, onClose }) => {
|
|
6317
7125
|
const { t } = useTranslation();
|
|
6318
7126
|
const { darkMode: isDark } = useVeChainKitConfig();
|
|
6319
7127
|
const { connection } = useWallet();
|
|
6320
7128
|
const { loginModalUI } = useVeChainKitConfig();
|
|
7129
|
+
const { loginMethods, privyEcosystemAppIDS } = useVeChainKitConfig();
|
|
7130
|
+
const { data: appsInfo, isLoading: isEcosystemAppsLoading } = useFetchAppInfo(privyEcosystemAppIDS);
|
|
7131
|
+
const handleFAQClick = () => {
|
|
7132
|
+
Analytics.help.faqViewed();
|
|
7133
|
+
setCurrentContent("faq");
|
|
7134
|
+
};
|
|
6321
7135
|
useEffect(() => {
|
|
6322
7136
|
if (connection.isConnected) {
|
|
6323
7137
|
onClose();
|
|
6324
7138
|
}
|
|
6325
7139
|
}, [connection.isConnected, onClose]);
|
|
7140
|
+
const showEcosystemButton = loginMethods?.some(
|
|
7141
|
+
({ method: method35 }) => method35 === "ecosystem"
|
|
7142
|
+
);
|
|
6326
7143
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
6327
7144
|
/* @__PURE__ */ jsxs(StickyHeaderContainer, { children: [
|
|
6328
|
-
/* @__PURE__ */ jsx(ModalFAQButton, { onClick:
|
|
7145
|
+
/* @__PURE__ */ jsx(ModalFAQButton, { onClick: handleFAQClick }),
|
|
6329
7146
|
/* @__PURE__ */ jsx(ModalHeader, { children: t("Log in or sign up") }),
|
|
6330
7147
|
/* @__PURE__ */ jsx(ModalCloseButton, {})
|
|
6331
7148
|
] }),
|
|
@@ -6361,7 +7178,14 @@ var MainContent = ({ setCurrentContent, onClose }) => {
|
|
|
6361
7178
|
),
|
|
6362
7179
|
/* @__PURE__ */ jsx(ConnectionOptionsStack, {})
|
|
6363
7180
|
] }),
|
|
6364
|
-
/* @__PURE__ */ jsx(ModalFooter, {
|
|
7181
|
+
showEcosystemButton ? /* @__PURE__ */ jsx(ModalFooter, { children: /* @__PURE__ */ jsx(HStack, { justify: "center", w: "full", children: /* @__PURE__ */ jsx(
|
|
7182
|
+
EcosystemButton,
|
|
7183
|
+
{
|
|
7184
|
+
isDark,
|
|
7185
|
+
appsInfo: Object.values(appsInfo || {}),
|
|
7186
|
+
isLoading: isEcosystemAppsLoading
|
|
7187
|
+
}
|
|
7188
|
+
) }) }) : /* @__PURE__ */ jsx(ModalFooter, { pt: 0, pb: "5px" })
|
|
6365
7189
|
] });
|
|
6366
7190
|
};
|
|
6367
7191
|
var AccountMainContent = ({ setCurrentContent, wallet }) => {
|
|
@@ -6773,6 +7597,7 @@ var BalanceSection = ({
|
|
|
6773
7597
|
const { refresh } = useRefreshBalances();
|
|
6774
7598
|
const [isRefreshing, setIsRefreshing] = useState(false);
|
|
6775
7599
|
const handleRefresh = async () => {
|
|
7600
|
+
Analytics.wallet.balanceRefreshed();
|
|
6776
7601
|
setIsRefreshing(true);
|
|
6777
7602
|
await refresh();
|
|
6778
7603
|
setTimeout(() => {
|
|
@@ -6966,12 +7791,18 @@ var QUICK_ACTIONS = [
|
|
|
6966
7791
|
{
|
|
6967
7792
|
icon: MdSwapHoriz,
|
|
6968
7793
|
label: "Swap",
|
|
6969
|
-
onClick: (setCurrentContent) =>
|
|
7794
|
+
onClick: (setCurrentContent) => {
|
|
7795
|
+
Analytics.swap.opened();
|
|
7796
|
+
setCurrentContent("swap-token");
|
|
7797
|
+
}
|
|
6970
7798
|
},
|
|
6971
7799
|
{
|
|
6972
7800
|
icon: LuArrowDownToLine,
|
|
6973
7801
|
label: "Receive",
|
|
6974
|
-
onClick: (setCurrentContent) =>
|
|
7802
|
+
onClick: (setCurrentContent) => {
|
|
7803
|
+
Analytics.wallet.trackWallet("receive_qr_generated");
|
|
7804
|
+
setCurrentContent("receive-token");
|
|
7805
|
+
}
|
|
6975
7806
|
},
|
|
6976
7807
|
{
|
|
6977
7808
|
icon: FiSend,
|
|
@@ -6988,17 +7819,26 @@ var QUICK_ACTIONS = [
|
|
|
6988
7819
|
{
|
|
6989
7820
|
icon: RiSwap3Line,
|
|
6990
7821
|
label: "Bridge",
|
|
6991
|
-
onClick: (setCurrentContent) =>
|
|
7822
|
+
onClick: (setCurrentContent) => {
|
|
7823
|
+
Analytics.bridge.opened();
|
|
7824
|
+
setCurrentContent("bridge");
|
|
7825
|
+
}
|
|
6992
7826
|
},
|
|
6993
7827
|
{
|
|
6994
7828
|
icon: IoMdApps,
|
|
6995
7829
|
label: "Ecosystem",
|
|
6996
|
-
onClick: (setCurrentContent) =>
|
|
7830
|
+
onClick: (setCurrentContent) => {
|
|
7831
|
+
Analytics.ecosystem.opened();
|
|
7832
|
+
setCurrentContent("ecosystem");
|
|
7833
|
+
}
|
|
6997
7834
|
},
|
|
6998
7835
|
{
|
|
6999
7836
|
icon: IoMdSettings,
|
|
7000
7837
|
label: "Settings",
|
|
7001
|
-
onClick: (setCurrentContent) =>
|
|
7838
|
+
onClick: (setCurrentContent) => {
|
|
7839
|
+
Analytics.settings.opened("general");
|
|
7840
|
+
setCurrentContent("settings");
|
|
7841
|
+
}
|
|
7002
7842
|
}
|
|
7003
7843
|
];
|
|
7004
7844
|
var QuickActionButton = ({
|
|
@@ -7055,7 +7895,7 @@ var QuickActionsSection = ({ mt, setCurrentContent }) => {
|
|
|
7055
7895
|
const hasUnreadNotifications = notifications.some((n) => !n.isRead);
|
|
7056
7896
|
const showRedDot = connection.isConnectedWithPrivy && upgradeRequired || hasUnreadNotifications;
|
|
7057
7897
|
return /* @__PURE__ */ jsxs(VStack, { w: "full", mt, spacing: 4, children: [
|
|
7058
|
-
/* @__PURE__ */ jsx(Heading, { size: "xs", fontWeight: "500", w: "full", opacity: 0.5, children: t("
|
|
7898
|
+
/* @__PURE__ */ jsx(Heading, { size: "xs", fontWeight: "500", w: "full", opacity: 0.5, children: t("Tools") }),
|
|
7059
7899
|
/* @__PURE__ */ jsx(Grid, { templateColumns: "repeat(3, 1fr)", gap: 2, w: "full", children: QUICK_ACTIONS.map((action) => /* @__PURE__ */ jsx(
|
|
7060
7900
|
QuickActionButton,
|
|
7061
7901
|
{
|
|
@@ -7266,6 +8106,7 @@ var CrossAppConnectionSecurityCard = () => {
|
|
|
7266
8106
|
variant: "vechainKitSecondary",
|
|
7267
8107
|
w: "full",
|
|
7268
8108
|
onClick: () => {
|
|
8109
|
+
Analytics.settings.manageSecuritySettings();
|
|
7269
8110
|
window.open(
|
|
7270
8111
|
connectionCache?.ecosystemApp.website ?? "https://governance.vebetterdao.org/",
|
|
7271
8112
|
"_blank"
|
|
@@ -7292,6 +8133,15 @@ var AccessAndSecurityContent = ({ setCurrentContent }) => {
|
|
|
7292
8133
|
connectedWallet?.address ?? "",
|
|
7293
8134
|
3
|
|
7294
8135
|
);
|
|
8136
|
+
const handleUpgradeSmartAccountClick = () => {
|
|
8137
|
+
setCurrentContent({
|
|
8138
|
+
type: "upgrade-smart-account",
|
|
8139
|
+
props: {
|
|
8140
|
+
setCurrentContent,
|
|
8141
|
+
initialContent: "access-and-security"
|
|
8142
|
+
}
|
|
8143
|
+
});
|
|
8144
|
+
};
|
|
7295
8145
|
return /* @__PURE__ */ jsxs(ScrollToTopWrapper, { children: [
|
|
7296
8146
|
/* @__PURE__ */ jsxs(StickyHeaderContainer, { children: [
|
|
7297
8147
|
/* @__PURE__ */ jsx(ModalHeader, { children: t("Access and security") }),
|
|
@@ -7329,15 +8179,7 @@ var AccessAndSecurityContent = ({ setCurrentContent }) => {
|
|
|
7329
8179
|
description: t(
|
|
7330
8180
|
"A new version is available for your account"
|
|
7331
8181
|
),
|
|
7332
|
-
onClick:
|
|
7333
|
-
setCurrentContent({
|
|
7334
|
-
type: "upgrade-smart-account",
|
|
7335
|
-
props: {
|
|
7336
|
-
setCurrentContent,
|
|
7337
|
-
initialContent: "access-and-security"
|
|
7338
|
-
}
|
|
7339
|
-
});
|
|
7340
|
-
},
|
|
8182
|
+
onClick: handleUpgradeSmartAccountClick,
|
|
7341
8183
|
leftIcon: IoCogSharp,
|
|
7342
8184
|
extraContent: /* @__PURE__ */ jsx(
|
|
7343
8185
|
Box,
|
|
@@ -7359,6 +8201,7 @@ var AccessAndSecurityContent = ({ setCurrentContent }) => {
|
|
|
7359
8201
|
{
|
|
7360
8202
|
title: t("Your embedded wallet"),
|
|
7361
8203
|
onClick: () => {
|
|
8204
|
+
Analytics.settings.embeddedWalletViewed();
|
|
7362
8205
|
setCurrentContent("embedded-wallet");
|
|
7363
8206
|
},
|
|
7364
8207
|
leftIcon: HiOutlineWallet,
|
|
@@ -7636,7 +8479,7 @@ var SettingsContent = ({
|
|
|
7636
8479
|
const contentRef = useRef(null);
|
|
7637
8480
|
const { t } = useTranslation();
|
|
7638
8481
|
const { privy } = useVeChainKitConfig();
|
|
7639
|
-
const { connection, disconnect,
|
|
8482
|
+
const { connection, disconnect, smartAccount, connectedWallet, account } = useWallet();
|
|
7640
8483
|
const { getConnectionCache } = useCrossAppConnectionCache();
|
|
7641
8484
|
const connectionCache = getConnectionCache();
|
|
7642
8485
|
const { data: appInfo } = useFetchAppInfo(privy?.appId ?? "");
|
|
@@ -7652,7 +8495,52 @@ var SettingsContent = ({
|
|
|
7652
8495
|
if (contentRef.current) {
|
|
7653
8496
|
contentRef.current.scrollTop = 0;
|
|
7654
8497
|
}
|
|
7655
|
-
}, []);
|
|
8498
|
+
}, []);
|
|
8499
|
+
const handleCustomizeProfile = () => {
|
|
8500
|
+
Analytics.customization.started();
|
|
8501
|
+
setCurrentContent({
|
|
8502
|
+
type: "account-customization",
|
|
8503
|
+
props: {
|
|
8504
|
+
setCurrentContent,
|
|
8505
|
+
initialContentSource: "settings"
|
|
8506
|
+
}
|
|
8507
|
+
});
|
|
8508
|
+
};
|
|
8509
|
+
const handleNameChange = () => {
|
|
8510
|
+
Analytics.nameSelection.started("settings");
|
|
8511
|
+
if (account?.domain) {
|
|
8512
|
+
setCurrentContent({
|
|
8513
|
+
type: "choose-name-search",
|
|
8514
|
+
props: {
|
|
8515
|
+
name: "",
|
|
8516
|
+
setCurrentContent,
|
|
8517
|
+
initialContentSource: "settings"
|
|
8518
|
+
}
|
|
8519
|
+
});
|
|
8520
|
+
} else {
|
|
8521
|
+
setCurrentContent({
|
|
8522
|
+
type: "choose-name",
|
|
8523
|
+
props: {
|
|
8524
|
+
setCurrentContent,
|
|
8525
|
+
initialContentSource: "settings",
|
|
8526
|
+
onBack: () => setCurrentContent("settings")
|
|
8527
|
+
}
|
|
8528
|
+
});
|
|
8529
|
+
}
|
|
8530
|
+
};
|
|
8531
|
+
const handleAccessAndSecurity = () => {
|
|
8532
|
+
setCurrentContent("access-and-security");
|
|
8533
|
+
Analytics.settings.accessAndSecurityViewed();
|
|
8534
|
+
};
|
|
8535
|
+
const handleConnectionDetails = () => {
|
|
8536
|
+
setCurrentContent("connection-details");
|
|
8537
|
+
Analytics.settings.connectionDetailsViewed();
|
|
8538
|
+
};
|
|
8539
|
+
const handleLogout = () => {
|
|
8540
|
+
Analytics.auth.trackAuth("disconnect_initiated");
|
|
8541
|
+
disconnect();
|
|
8542
|
+
onLogoutSuccess();
|
|
8543
|
+
};
|
|
7656
8544
|
return /* @__PURE__ */ jsxs(Box, { children: [
|
|
7657
8545
|
/* @__PURE__ */ jsxs(StickyHeaderContainer, { children: [
|
|
7658
8546
|
/* @__PURE__ */ jsx(ModalHeader, { children: t("Settings") }),
|
|
@@ -7660,36 +8548,39 @@ var SettingsContent = ({
|
|
|
7660
8548
|
/* @__PURE__ */ jsx(ModalCloseButton, {})
|
|
7661
8549
|
] }),
|
|
7662
8550
|
/* @__PURE__ */ jsx(ModalBody, { w: "full", children: /* @__PURE__ */ jsxs(VStack, { w: "full", spacing: 0, children: [
|
|
8551
|
+
/* @__PURE__ */ jsx(
|
|
8552
|
+
Heading,
|
|
8553
|
+
{
|
|
8554
|
+
size: "xs",
|
|
8555
|
+
fontWeight: "500",
|
|
8556
|
+
w: "full",
|
|
8557
|
+
opacity: 0.5,
|
|
8558
|
+
children: t("Wallet")
|
|
8559
|
+
}
|
|
8560
|
+
),
|
|
7663
8561
|
/* @__PURE__ */ jsx(
|
|
7664
8562
|
ActionButton,
|
|
7665
8563
|
{
|
|
7666
8564
|
style: {
|
|
7667
8565
|
marginTop: "10px",
|
|
8566
|
+
borderBottomRadius: "0px"
|
|
8567
|
+
},
|
|
8568
|
+
title: t("Customize profile"),
|
|
8569
|
+
onClick: handleCustomizeProfile,
|
|
8570
|
+
leftIcon: CgProfile,
|
|
8571
|
+
rightIcon: MdOutlineNavigateNext
|
|
8572
|
+
}
|
|
8573
|
+
),
|
|
8574
|
+
/* @__PURE__ */ jsx(
|
|
8575
|
+
ActionButton,
|
|
8576
|
+
{
|
|
8577
|
+
style: {
|
|
8578
|
+
borderTopRadius: "0px",
|
|
7668
8579
|
borderBottomRadius: connection.isConnectedWithPrivy ? "0px" : "12px"
|
|
7669
8580
|
},
|
|
7670
8581
|
title: t("Choose account name"),
|
|
7671
8582
|
description: t("Choose a name for your account."),
|
|
7672
|
-
onClick:
|
|
7673
|
-
if (account?.domain) {
|
|
7674
|
-
setCurrentContent({
|
|
7675
|
-
type: "choose-name-search",
|
|
7676
|
-
props: {
|
|
7677
|
-
name: "",
|
|
7678
|
-
setCurrentContent,
|
|
7679
|
-
initialContentSource: "settings"
|
|
7680
|
-
}
|
|
7681
|
-
});
|
|
7682
|
-
} else {
|
|
7683
|
-
setCurrentContent({
|
|
7684
|
-
type: "choose-name",
|
|
7685
|
-
props: {
|
|
7686
|
-
setCurrentContent,
|
|
7687
|
-
initialContentSource: "settings",
|
|
7688
|
-
onBack: () => setCurrentContent("settings")
|
|
7689
|
-
}
|
|
7690
|
-
});
|
|
7691
|
-
}
|
|
7692
|
-
},
|
|
8583
|
+
onClick: handleNameChange,
|
|
7693
8584
|
leftIcon: FaRegAddressCard,
|
|
7694
8585
|
rightIcon: MdOutlineNavigateNext
|
|
7695
8586
|
}
|
|
@@ -7704,9 +8595,7 @@ var SettingsContent = ({
|
|
|
7704
8595
|
description: t(
|
|
7705
8596
|
"Manage your embedded wallet security settings or back it up to a new device."
|
|
7706
8597
|
),
|
|
7707
|
-
onClick:
|
|
7708
|
-
setCurrentContent("access-and-security");
|
|
7709
|
-
},
|
|
8598
|
+
onClick: handleAccessAndSecurity,
|
|
7710
8599
|
leftIcon: IoShieldOutline,
|
|
7711
8600
|
rightIcon: MdOutlineNavigateNext,
|
|
7712
8601
|
extraContent: upgradeRequired && /* @__PURE__ */ jsx(
|
|
@@ -7723,6 +8612,17 @@ var SettingsContent = ({
|
|
|
7723
8612
|
)
|
|
7724
8613
|
}
|
|
7725
8614
|
),
|
|
8615
|
+
/* @__PURE__ */ jsx(
|
|
8616
|
+
Heading,
|
|
8617
|
+
{
|
|
8618
|
+
size: "xs",
|
|
8619
|
+
fontWeight: "500",
|
|
8620
|
+
w: "full",
|
|
8621
|
+
opacity: 0.5,
|
|
8622
|
+
mt: 10,
|
|
8623
|
+
children: t("General")
|
|
8624
|
+
}
|
|
8625
|
+
),
|
|
7726
8626
|
/* @__PURE__ */ jsx(
|
|
7727
8627
|
ActionButton,
|
|
7728
8628
|
{
|
|
@@ -7734,9 +8634,7 @@ var SettingsContent = ({
|
|
|
7734
8634
|
description: t(
|
|
7735
8635
|
"View the details of your connection to this app."
|
|
7736
8636
|
),
|
|
7737
|
-
onClick:
|
|
7738
|
-
setCurrentContent("connection-details");
|
|
7739
|
-
},
|
|
8637
|
+
onClick: handleConnectionDetails,
|
|
7740
8638
|
leftIcon: VscDebugDisconnect,
|
|
7741
8639
|
rightIcon: MdOutlineNavigateNext
|
|
7742
8640
|
}
|
|
@@ -7751,6 +8649,7 @@ var SettingsContent = ({
|
|
|
7751
8649
|
title: t("Notifications"),
|
|
7752
8650
|
description: t("View your notifications and updates."),
|
|
7753
8651
|
onClick: () => {
|
|
8652
|
+
Analytics.notifications.viewed();
|
|
7754
8653
|
setCurrentContent("notifications");
|
|
7755
8654
|
},
|
|
7756
8655
|
leftIcon: BiBell,
|
|
@@ -7799,10 +8698,7 @@ var SettingsContent = ({
|
|
|
7799
8698
|
onClick: () => setCurrentContent({
|
|
7800
8699
|
type: "disconnect-confirm",
|
|
7801
8700
|
props: {
|
|
7802
|
-
onDisconnect:
|
|
7803
|
-
disconnect();
|
|
7804
|
-
onLogoutSuccess();
|
|
7805
|
-
},
|
|
8701
|
+
onDisconnect: handleLogout,
|
|
7806
8702
|
onBack: () => setCurrentContent("settings")
|
|
7807
8703
|
}
|
|
7808
8704
|
}),
|
|
@@ -8141,7 +9037,8 @@ var EmbeddedWalletContent = ({ setCurrentContent }) => {
|
|
|
8141
9037
|
{
|
|
8142
9038
|
wallet: connectedWallet,
|
|
8143
9039
|
style: { mt: 2 },
|
|
8144
|
-
showHumanAddress: false
|
|
9040
|
+
showHumanAddress: false,
|
|
9041
|
+
fromScreen: "account"
|
|
8145
9042
|
}
|
|
8146
9043
|
)
|
|
8147
9044
|
] }),
|
|
@@ -8237,6 +9134,11 @@ var SelectTokenContent = ({ onSelectToken, onBack }) => {
|
|
|
8237
9134
|
}
|
|
8238
9135
|
return Number(b.numericBalance) * b.price - Number(a.numericBalance) * a.price;
|
|
8239
9136
|
});
|
|
9137
|
+
useEffect(() => {
|
|
9138
|
+
if (searchQuery) {
|
|
9139
|
+
Analytics.send.tokenSearchPerformed(searchQuery);
|
|
9140
|
+
}
|
|
9141
|
+
}, [searchQuery, filteredTokens.length]);
|
|
8240
9142
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
8241
9143
|
/* @__PURE__ */ jsxs(StickyHeaderContainer, { children: [
|
|
8242
9144
|
/* @__PURE__ */ jsx(ModalHeader, { children: t("Select Token") }),
|
|
@@ -8316,7 +9218,7 @@ var SendTokenContent = ({
|
|
|
8316
9218
|
setCurrentContent,
|
|
8317
9219
|
isNavigatingFromMain = false,
|
|
8318
9220
|
preselectedToken,
|
|
8319
|
-
onBack = () => setCurrentContent("main")
|
|
9221
|
+
onBack: parentOnBack = () => setCurrentContent("main")
|
|
8320
9222
|
}) => {
|
|
8321
9223
|
const { t } = useTranslation();
|
|
8322
9224
|
const { darkMode: isDark } = useVeChainKitConfig();
|
|
@@ -8341,21 +9243,69 @@ var SendTokenContent = ({
|
|
|
8341
9243
|
},
|
|
8342
9244
|
mode: "onChange"
|
|
8343
9245
|
});
|
|
8344
|
-
const { toAddressOrDomain } = watch();
|
|
8345
|
-
|
|
9246
|
+
const { toAddressOrDomain, amount } = watch();
|
|
9247
|
+
useEffect(() => {
|
|
9248
|
+
if (selectedToken && amount) {
|
|
9249
|
+
Analytics.send.flow("amount", {
|
|
9250
|
+
tokenSymbol: selectedToken.symbol,
|
|
9251
|
+
amount
|
|
9252
|
+
});
|
|
9253
|
+
}
|
|
9254
|
+
}, [amount, selectedToken]);
|
|
9255
|
+
useEffect(() => {
|
|
9256
|
+
if (selectedToken && toAddressOrDomain) {
|
|
9257
|
+
Analytics.send.flow("recipient", {
|
|
9258
|
+
tokenSymbol: selectedToken.symbol,
|
|
9259
|
+
recipientAddress: toAddressOrDomain,
|
|
9260
|
+
recipientType: toAddressOrDomain.includes(".") ? "domain" : "address"
|
|
9261
|
+
});
|
|
9262
|
+
}
|
|
9263
|
+
}, [toAddressOrDomain, selectedToken]);
|
|
9264
|
+
const { data: resolvedDomainData } = useVechainDomain(toAddressOrDomain);
|
|
8346
9265
|
const handleSetMaxAmount = () => {
|
|
8347
9266
|
if (selectedToken) {
|
|
8348
9267
|
setValue("amount", selectedToken.numericBalance);
|
|
9268
|
+
Analytics.send.flow("amount", {
|
|
9269
|
+
tokenSymbol: selectedToken.symbol,
|
|
9270
|
+
amount: selectedToken.numericBalance
|
|
9271
|
+
});
|
|
9272
|
+
}
|
|
9273
|
+
};
|
|
9274
|
+
const handleBack = () => {
|
|
9275
|
+
if (selectedToken) {
|
|
9276
|
+
Analytics.send.flow("review", {
|
|
9277
|
+
tokenSymbol: selectedToken.symbol,
|
|
9278
|
+
amount: amount || void 0,
|
|
9279
|
+
recipientAddress: toAddressOrDomain || void 0,
|
|
9280
|
+
error: "back_button",
|
|
9281
|
+
isError: false
|
|
9282
|
+
});
|
|
9283
|
+
}
|
|
9284
|
+
parentOnBack();
|
|
9285
|
+
};
|
|
9286
|
+
const handleClose = () => {
|
|
9287
|
+
if (selectedToken) {
|
|
9288
|
+
Analytics.send.flow("review", {
|
|
9289
|
+
tokenSymbol: selectedToken.symbol,
|
|
9290
|
+
amount: amount || void 0,
|
|
9291
|
+
recipientAddress: toAddressOrDomain || void 0,
|
|
9292
|
+
error: "modal_closed",
|
|
9293
|
+
isError: false
|
|
9294
|
+
});
|
|
8349
9295
|
}
|
|
8350
9296
|
};
|
|
8351
9297
|
const onSubmit = async (data) => {
|
|
8352
9298
|
if (!selectedToken) return;
|
|
8353
|
-
const isValidReceiver = !
|
|
9299
|
+
const isValidReceiver = resolvedDomainData?.isValidAddressOrDomain && (!resolvedDomainData?.domain || resolvedDomainData?.domain && resolvedDomainData?.isPrimaryDomain);
|
|
8354
9300
|
if (!isValidReceiver) {
|
|
8355
9301
|
setError("toAddressOrDomain", {
|
|
8356
9302
|
type: "manual",
|
|
8357
9303
|
message: t("Invalid address or domain")
|
|
8358
9304
|
});
|
|
9305
|
+
Analytics.send.flow("review", {
|
|
9306
|
+
tokenSymbol: selectedToken.symbol,
|
|
9307
|
+
error: "Invalid address or domain"
|
|
9308
|
+
});
|
|
8359
9309
|
return;
|
|
8360
9310
|
}
|
|
8361
9311
|
if (selectedToken) {
|
|
@@ -8367,15 +9317,25 @@ var SendTokenContent = ({
|
|
|
8367
9317
|
symbol: selectedToken.symbol
|
|
8368
9318
|
})
|
|
8369
9319
|
});
|
|
9320
|
+
Analytics.send.flow("review", {
|
|
9321
|
+
tokenSymbol: selectedToken.symbol,
|
|
9322
|
+
error: "Insufficient balance"
|
|
9323
|
+
});
|
|
8370
9324
|
return;
|
|
8371
9325
|
}
|
|
8372
9326
|
}
|
|
9327
|
+
Analytics.send.flow("review", {
|
|
9328
|
+
tokenSymbol: selectedToken.symbol,
|
|
9329
|
+
amount: data.amount,
|
|
9330
|
+
recipientAddress: resolvedDomainData?.address || data.toAddressOrDomain,
|
|
9331
|
+
recipientType: resolvedDomainData?.domain ? "domain" : "address"
|
|
9332
|
+
});
|
|
8373
9333
|
setCurrentContent({
|
|
8374
9334
|
type: "send-token-summary",
|
|
8375
9335
|
props: {
|
|
8376
9336
|
toAddressOrDomain: data.toAddressOrDomain,
|
|
8377
|
-
resolvedDomain,
|
|
8378
|
-
resolvedAddress,
|
|
9337
|
+
resolvedDomain: resolvedDomainData?.domain,
|
|
9338
|
+
resolvedAddress: resolvedDomainData?.address,
|
|
8379
9339
|
amount: data.amount,
|
|
8380
9340
|
selectedToken,
|
|
8381
9341
|
setCurrentContent
|
|
@@ -8388,14 +9348,27 @@ var SendTokenContent = ({
|
|
|
8388
9348
|
{
|
|
8389
9349
|
setCurrentContent,
|
|
8390
9350
|
onSelectToken: (token) => {
|
|
9351
|
+
Analytics.send.tokenPageViewed(token.symbol);
|
|
8391
9352
|
setSelectedToken(token);
|
|
8392
9353
|
setIsSelectingToken(false);
|
|
8393
9354
|
setIsInitialTokenSelection(false);
|
|
8394
9355
|
},
|
|
8395
9356
|
onBack: () => {
|
|
8396
9357
|
if (isInitialTokenSelection) {
|
|
9358
|
+
if (selectedToken) {
|
|
9359
|
+
Analytics.send.flow("token_select", {
|
|
9360
|
+
tokenSymbol: selectedToken.symbol,
|
|
9361
|
+
error: "User cancelled - back to main"
|
|
9362
|
+
});
|
|
9363
|
+
}
|
|
8397
9364
|
setCurrentContent("main");
|
|
8398
9365
|
} else {
|
|
9366
|
+
if (selectedToken) {
|
|
9367
|
+
Analytics.send.flow("token_select", {
|
|
9368
|
+
tokenSymbol: selectedToken.symbol,
|
|
9369
|
+
error: "User cancelled - back to form"
|
|
9370
|
+
});
|
|
9371
|
+
}
|
|
8399
9372
|
setIsSelectingToken(false);
|
|
8400
9373
|
}
|
|
8401
9374
|
}
|
|
@@ -8405,8 +9378,8 @@ var SendTokenContent = ({
|
|
|
8405
9378
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
8406
9379
|
/* @__PURE__ */ jsxs(StickyHeaderContainer, { children: [
|
|
8407
9380
|
/* @__PURE__ */ jsx(ModalHeader, { children: t("Send") }),
|
|
8408
|
-
/* @__PURE__ */ jsx(ModalBackButton, { onClick:
|
|
8409
|
-
/* @__PURE__ */ jsx(ModalCloseButton, {})
|
|
9381
|
+
/* @__PURE__ */ jsx(ModalBackButton, { onClick: handleBack }),
|
|
9382
|
+
/* @__PURE__ */ jsx(ModalCloseButton, { onClick: handleClose })
|
|
8410
9383
|
] }),
|
|
8411
9384
|
/* @__PURE__ */ jsx(ModalBody, { children: /* @__PURE__ */ jsxs(VStack, { spacing: 1, align: "stretch", position: "relative", children: [
|
|
8412
9385
|
/* @__PURE__ */ jsx(
|
|
@@ -8648,7 +9621,7 @@ var SendTokenSummaryContent = ({
|
|
|
8648
9621
|
}) => {
|
|
8649
9622
|
const { t } = useTranslation();
|
|
8650
9623
|
const { account, connection, connectedWallet } = useWallet();
|
|
8651
|
-
const { data: avatar } =
|
|
9624
|
+
const { data: avatar } = useGetAvatarOfAddress(resolvedAddress ?? "");
|
|
8652
9625
|
const { network } = useVeChainKitConfig();
|
|
8653
9626
|
const { data: upgradeRequired } = useUpgradeRequired(
|
|
8654
9627
|
account?.address ?? "",
|
|
@@ -8662,6 +9635,57 @@ var SendTokenSummaryContent = ({
|
|
|
8662
9635
|
}
|
|
8663
9636
|
return getPicassoImage(resolvedAddress || toAddressOrDomain);
|
|
8664
9637
|
}, [avatar, network.type, resolvedAddress, toAddressOrDomain]);
|
|
9638
|
+
const handleSend = async () => {
|
|
9639
|
+
if (upgradeRequired) {
|
|
9640
|
+
openUpgradeSmartAccountModal();
|
|
9641
|
+
return;
|
|
9642
|
+
}
|
|
9643
|
+
try {
|
|
9644
|
+
Analytics.send.flow("review", {
|
|
9645
|
+
tokenSymbol: selectedToken.symbol,
|
|
9646
|
+
amount,
|
|
9647
|
+
recipientAddress: resolvedAddress || toAddressOrDomain,
|
|
9648
|
+
recipientType: resolvedDomain ? "domain" : "address"
|
|
9649
|
+
});
|
|
9650
|
+
if (selectedToken.symbol === "VET") {
|
|
9651
|
+
await transferVET();
|
|
9652
|
+
} else {
|
|
9653
|
+
await transferERC20();
|
|
9654
|
+
}
|
|
9655
|
+
} catch (error) {
|
|
9656
|
+
Analytics.send.flow("review", {
|
|
9657
|
+
tokenSymbol: selectedToken.symbol,
|
|
9658
|
+
error: error instanceof Error ? error.message : "Unknown error"
|
|
9659
|
+
});
|
|
9660
|
+
console.error(t("Transaction failed:"), error);
|
|
9661
|
+
}
|
|
9662
|
+
};
|
|
9663
|
+
const handleSuccess = (txId) => {
|
|
9664
|
+
Analytics.send.flow("confirmation", {
|
|
9665
|
+
tokenSymbol: selectedToken.symbol,
|
|
9666
|
+
amount,
|
|
9667
|
+
recipientAddress: resolvedAddress || toAddressOrDomain,
|
|
9668
|
+
recipientType: resolvedDomain ? "domain" : "address"
|
|
9669
|
+
});
|
|
9670
|
+
Analytics.send.completed(
|
|
9671
|
+
selectedToken.symbol,
|
|
9672
|
+
amount,
|
|
9673
|
+
txId,
|
|
9674
|
+
selectedToken.symbol === "VET" ? "vet" : "erc20"
|
|
9675
|
+
);
|
|
9676
|
+
setCurrentContent({
|
|
9677
|
+
type: "successful-operation",
|
|
9678
|
+
props: {
|
|
9679
|
+
setCurrentContent,
|
|
9680
|
+
txId,
|
|
9681
|
+
title: t("Transaction successful"),
|
|
9682
|
+
onDone: () => {
|
|
9683
|
+
setCurrentContent("main");
|
|
9684
|
+
},
|
|
9685
|
+
showSocialButtons: true
|
|
9686
|
+
}
|
|
9687
|
+
});
|
|
9688
|
+
};
|
|
8665
9689
|
const {
|
|
8666
9690
|
sendTransaction: transferERC20,
|
|
8667
9691
|
txReceipt: transferERC20Receipt,
|
|
@@ -8675,18 +9699,10 @@ var SendTokenSummaryContent = ({
|
|
|
8675
9699
|
tokenAddress: selectedToken.address,
|
|
8676
9700
|
tokenName: selectedToken.symbol,
|
|
8677
9701
|
onSuccess: () => {
|
|
8678
|
-
|
|
8679
|
-
|
|
8680
|
-
|
|
8681
|
-
|
|
8682
|
-
txId: transferERC20Receipt?.meta.txID,
|
|
8683
|
-
title: t("Transaction successful"),
|
|
8684
|
-
onDone: () => {
|
|
8685
|
-
setCurrentContent("main");
|
|
8686
|
-
},
|
|
8687
|
-
showSocialButtons: true
|
|
8688
|
-
}
|
|
8689
|
-
});
|
|
9702
|
+
handleSuccess(transferERC20Receipt?.meta.txID ?? "");
|
|
9703
|
+
},
|
|
9704
|
+
onError: (error) => {
|
|
9705
|
+
handleError(error ?? "");
|
|
8690
9706
|
}
|
|
8691
9707
|
});
|
|
8692
9708
|
const {
|
|
@@ -8700,42 +9716,65 @@ var SendTokenSummaryContent = ({
|
|
|
8700
9716
|
receiverAddress: resolvedAddress || toAddressOrDomain,
|
|
8701
9717
|
amount,
|
|
8702
9718
|
onSuccess: () => {
|
|
8703
|
-
|
|
8704
|
-
type: "successful-operation",
|
|
8705
|
-
props: {
|
|
8706
|
-
setCurrentContent,
|
|
8707
|
-
txId: transferVETReceipt?.meta.txID,
|
|
8708
|
-
title: t("Transaction successful"),
|
|
8709
|
-
onDone: () => {
|
|
8710
|
-
setCurrentContent("main");
|
|
8711
|
-
},
|
|
8712
|
-
showSocialButtons: true
|
|
8713
|
-
}
|
|
8714
|
-
});
|
|
9719
|
+
handleSuccess(transferVETReceipt?.meta.txID ?? "");
|
|
8715
9720
|
},
|
|
8716
|
-
onError: () => {
|
|
9721
|
+
onError: (error) => {
|
|
9722
|
+
handleError(error ?? "");
|
|
8717
9723
|
}
|
|
8718
9724
|
});
|
|
8719
9725
|
const getTxReceipt = () => {
|
|
8720
9726
|
return selectedToken.symbol === "VET" ? transferVETReceipt : transferERC20Receipt;
|
|
8721
9727
|
};
|
|
8722
|
-
const
|
|
8723
|
-
|
|
8724
|
-
|
|
8725
|
-
|
|
8726
|
-
|
|
8727
|
-
|
|
8728
|
-
|
|
8729
|
-
|
|
8730
|
-
|
|
8731
|
-
|
|
9728
|
+
const isTxWaitingConfirmation = transferERC20WaitingForWalletConfirmation || transferVETWaitingForWalletConfirmation;
|
|
9729
|
+
const isSubmitting = isTxWaitingConfirmation || transferERC20Pending || transferVETPending;
|
|
9730
|
+
const handleBack = () => {
|
|
9731
|
+
Analytics.send.flow("review", {
|
|
9732
|
+
tokenSymbol: selectedToken.symbol,
|
|
9733
|
+
amount,
|
|
9734
|
+
recipientAddress: resolvedAddress || toAddressOrDomain,
|
|
9735
|
+
recipientType: resolvedDomain ? "domain" : "address",
|
|
9736
|
+
error: "back_button",
|
|
9737
|
+
isError: false
|
|
9738
|
+
});
|
|
9739
|
+
setCurrentContent({
|
|
9740
|
+
type: "send-token",
|
|
9741
|
+
props: {
|
|
9742
|
+
setCurrentContent,
|
|
9743
|
+
preselectedToken: selectedToken
|
|
8732
9744
|
}
|
|
8733
|
-
}
|
|
8734
|
-
|
|
9745
|
+
});
|
|
9746
|
+
};
|
|
9747
|
+
const handleClose = () => {
|
|
9748
|
+
Analytics.send.flow("review", {
|
|
9749
|
+
tokenSymbol: selectedToken.symbol,
|
|
9750
|
+
amount,
|
|
9751
|
+
recipientAddress: resolvedAddress || toAddressOrDomain,
|
|
9752
|
+
recipientType: resolvedDomain ? "domain" : "address",
|
|
9753
|
+
error: "modal_closed",
|
|
9754
|
+
isError: false
|
|
9755
|
+
});
|
|
9756
|
+
};
|
|
9757
|
+
const handleError = (error) => {
|
|
9758
|
+
if (error && isRejectionError(error)) {
|
|
9759
|
+
Analytics.send.flow("review", {
|
|
9760
|
+
tokenSymbol: selectedToken.symbol,
|
|
9761
|
+
amount,
|
|
9762
|
+
recipientAddress: resolvedAddress || toAddressOrDomain,
|
|
9763
|
+
recipientType: resolvedDomain ? "domain" : "address",
|
|
9764
|
+
error: "wallet_rejected",
|
|
9765
|
+
isError: true
|
|
9766
|
+
});
|
|
9767
|
+
} else {
|
|
9768
|
+
Analytics.send.flow("review", {
|
|
9769
|
+
tokenSymbol: selectedToken.symbol,
|
|
9770
|
+
amount,
|
|
9771
|
+
recipientAddress: resolvedAddress || toAddressOrDomain,
|
|
9772
|
+
recipientType: resolvedDomain ? "domain" : "address",
|
|
9773
|
+
error,
|
|
9774
|
+
isError: true
|
|
9775
|
+
});
|
|
8735
9776
|
}
|
|
8736
9777
|
};
|
|
8737
|
-
const isTxWaitingConfirmation = transferERC20WaitingForWalletConfirmation || transferVETWaitingForWalletConfirmation;
|
|
8738
|
-
const isSubmitting = isTxWaitingConfirmation || transferERC20Pending || transferVETPending;
|
|
8739
9778
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
8740
9779
|
/* @__PURE__ */ jsxs(StickyHeaderContainer, { children: [
|
|
8741
9780
|
/* @__PURE__ */ jsx(ModalHeader, { children: "Send" }),
|
|
@@ -8743,15 +9782,16 @@ var SendTokenSummaryContent = ({
|
|
|
8743
9782
|
ModalBackButton,
|
|
8744
9783
|
{
|
|
8745
9784
|
isDisabled: isSubmitting,
|
|
8746
|
-
onClick:
|
|
8747
|
-
type: "send-token",
|
|
8748
|
-
props: {
|
|
8749
|
-
setCurrentContent
|
|
8750
|
-
}
|
|
8751
|
-
})
|
|
9785
|
+
onClick: handleBack
|
|
8752
9786
|
}
|
|
8753
9787
|
),
|
|
8754
|
-
/* @__PURE__ */ jsx(
|
|
9788
|
+
/* @__PURE__ */ jsx(
|
|
9789
|
+
ModalCloseButton,
|
|
9790
|
+
{
|
|
9791
|
+
isDisabled: isSubmitting,
|
|
9792
|
+
onClick: handleClose
|
|
9793
|
+
}
|
|
9794
|
+
)
|
|
8755
9795
|
] }),
|
|
8756
9796
|
/* @__PURE__ */ jsx(ModalBody, { children: /* @__PURE__ */ jsxs(VStack, { spacing: 6, align: "stretch", w: "full", children: [
|
|
8757
9797
|
connection.isConnectedWithPrivy && /* @__PURE__ */ jsx(ExchangeWarningAlert, {}),
|
|
@@ -8863,7 +9903,14 @@ var ReceiveTokenContent = ({ setCurrentContent }) => {
|
|
|
8863
9903
|
}
|
|
8864
9904
|
}
|
|
8865
9905
|
),
|
|
8866
|
-
/* @__PURE__ */ jsx(
|
|
9906
|
+
/* @__PURE__ */ jsx(
|
|
9907
|
+
AddressDisplay,
|
|
9908
|
+
{
|
|
9909
|
+
wallet: account,
|
|
9910
|
+
style: { w: "85%" },
|
|
9911
|
+
fromScreen: "receive"
|
|
9912
|
+
}
|
|
9913
|
+
),
|
|
8867
9914
|
/* @__PURE__ */ jsx(Text, { fontSize: "sm", textAlign: "center", children: t("Copy your address or scan this QR code") }),
|
|
8868
9915
|
/* @__PURE__ */ jsx(Text, { fontSize: "xs", textAlign: "center", opacity: 0.5, children: t("This address only supports VeChain assets.") })
|
|
8869
9916
|
] }) }),
|
|
@@ -8873,6 +9920,10 @@ var ReceiveTokenContent = ({ setCurrentContent }) => {
|
|
|
8873
9920
|
};
|
|
8874
9921
|
var SwapTokenContent = ({ setCurrentContent }) => {
|
|
8875
9922
|
const { t } = useTranslation();
|
|
9923
|
+
const handleLaunchBetterSwap = () => {
|
|
9924
|
+
Analytics.swap.launchBetterSwap();
|
|
9925
|
+
window.open("https://swap.tbc.vet/", "_blank");
|
|
9926
|
+
};
|
|
8876
9927
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
8877
9928
|
/* @__PURE__ */ jsxs(StickyHeaderContainer, { children: [
|
|
8878
9929
|
/* @__PURE__ */ jsx(ModalHeader, { children: t("Swap") }),
|
|
@@ -8898,9 +9949,7 @@ var SwapTokenContent = ({ setCurrentContent }) => {
|
|
|
8898
9949
|
Button,
|
|
8899
9950
|
{
|
|
8900
9951
|
variant: "vechainKitSecondary",
|
|
8901
|
-
onClick:
|
|
8902
|
-
window.open("https://swap.tbc.vet/", "_blank");
|
|
8903
|
-
},
|
|
9952
|
+
onClick: handleLaunchBetterSwap,
|
|
8904
9953
|
children: [
|
|
8905
9954
|
t("Launch BetterSwap"),
|
|
8906
9955
|
/* @__PURE__ */ jsx(Icon, { as: FaExternalLinkAlt, ml: 2 })
|
|
@@ -8916,11 +9965,26 @@ var ChooseNameContent = ({
|
|
|
8916
9965
|
}) => {
|
|
8917
9966
|
const { t } = useTranslation();
|
|
8918
9967
|
const { darkMode: isDark } = useVeChainKitConfig();
|
|
9968
|
+
const handleClose = () => {
|
|
9969
|
+
Analytics.nameSelection.dropOff("search", {
|
|
9970
|
+
isError: false,
|
|
9971
|
+
name: "",
|
|
9972
|
+
reason: "modal_closed"
|
|
9973
|
+
});
|
|
9974
|
+
};
|
|
9975
|
+
const handleBack = () => {
|
|
9976
|
+
Analytics.nameSelection.dropOff("search", {
|
|
9977
|
+
isError: false,
|
|
9978
|
+
name: "",
|
|
9979
|
+
reason: "back_button"
|
|
9980
|
+
});
|
|
9981
|
+
onBack();
|
|
9982
|
+
};
|
|
8919
9983
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
8920
9984
|
/* @__PURE__ */ jsxs(StickyHeaderContainer, { children: [
|
|
8921
9985
|
/* @__PURE__ */ jsx(ModalHeader, { children: t("Choose your account name") }),
|
|
8922
|
-
/* @__PURE__ */ jsx(ModalBackButton, { onClick:
|
|
8923
|
-
/* @__PURE__ */ jsx(ModalCloseButton, {})
|
|
9986
|
+
/* @__PURE__ */ jsx(ModalBackButton, { onClick: handleBack }),
|
|
9987
|
+
/* @__PURE__ */ jsx(ModalCloseButton, { onClick: handleClose })
|
|
8924
9988
|
] }),
|
|
8925
9989
|
/* @__PURE__ */ jsx(ModalBody, { children: /* @__PURE__ */ jsxs(VStack, { spacing: 6, align: "center", py: 8, children: [
|
|
8926
9990
|
/* @__PURE__ */ jsx(
|
|
@@ -9037,9 +10101,76 @@ var DomainListItem = ({
|
|
|
9037
10101
|
domain.name
|
|
9038
10102
|
);
|
|
9039
10103
|
};
|
|
10104
|
+
var UnsetDomainListItem = ({ onUnset }) => {
|
|
10105
|
+
const { darkMode: isDark } = useVeChainKitConfig();
|
|
10106
|
+
const { t } = useTranslation();
|
|
10107
|
+
return /* @__PURE__ */ jsx(
|
|
10108
|
+
ListItem,
|
|
10109
|
+
{
|
|
10110
|
+
p: 4,
|
|
10111
|
+
bg: isDark ? "#1f1f1e" : "white",
|
|
10112
|
+
borderRadius: "xl",
|
|
10113
|
+
cursor: "pointer",
|
|
10114
|
+
opacity: 1,
|
|
10115
|
+
border: `1px solid ${isDark ? "#2d2d2d" : "#eaeaea"}`,
|
|
10116
|
+
_hover: {
|
|
10117
|
+
bg: isDark ? "#252525" : "gray.50",
|
|
10118
|
+
borderColor: isDark ? "#3d3d3d" : "#dedede",
|
|
10119
|
+
color: "red.400"
|
|
10120
|
+
},
|
|
10121
|
+
onClick: onUnset,
|
|
10122
|
+
transition: "all 0.2s",
|
|
10123
|
+
role: "button",
|
|
10124
|
+
"aria-label": t("Unset current domain"),
|
|
10125
|
+
children: /* @__PURE__ */ jsxs(HStack, { spacing: 3, align: "center", children: [
|
|
10126
|
+
/* @__PURE__ */ jsx(
|
|
10127
|
+
Box,
|
|
10128
|
+
{
|
|
10129
|
+
width: "40px",
|
|
10130
|
+
height: "40px",
|
|
10131
|
+
borderRadius: "full",
|
|
10132
|
+
display: "flex",
|
|
10133
|
+
alignItems: "center",
|
|
10134
|
+
justifyContent: "center",
|
|
10135
|
+
bg: isDark ? "whiteAlpha.100" : "gray.100",
|
|
10136
|
+
children: /* @__PURE__ */ jsx(
|
|
10137
|
+
Icon,
|
|
10138
|
+
{
|
|
10139
|
+
as: IoTrashOutline,
|
|
10140
|
+
fontSize: "18px",
|
|
10141
|
+
color: isDark ? "red.300" : "red.500"
|
|
10142
|
+
}
|
|
10143
|
+
)
|
|
10144
|
+
}
|
|
10145
|
+
),
|
|
10146
|
+
/* @__PURE__ */ jsxs(VStack, { align: "start", spacing: 0, flex: 1, children: [
|
|
10147
|
+
/* @__PURE__ */ jsx(
|
|
10148
|
+
Text,
|
|
10149
|
+
{
|
|
10150
|
+
color: isDark ? "whiteAlpha.900" : "gray.700",
|
|
10151
|
+
fontSize: "md",
|
|
10152
|
+
fontWeight: "500",
|
|
10153
|
+
children: t("Unset current domain")
|
|
10154
|
+
}
|
|
10155
|
+
),
|
|
10156
|
+
/* @__PURE__ */ jsx(
|
|
10157
|
+
Text,
|
|
10158
|
+
{
|
|
10159
|
+
fontSize: "sm",
|
|
10160
|
+
color: isDark ? "whiteAlpha.600" : "blackAlpha.600",
|
|
10161
|
+
children: t("Remove your current domain name")
|
|
10162
|
+
}
|
|
10163
|
+
)
|
|
10164
|
+
] })
|
|
10165
|
+
] })
|
|
10166
|
+
},
|
|
10167
|
+
"unset-domain-list-item"
|
|
10168
|
+
);
|
|
10169
|
+
};
|
|
9040
10170
|
var ExistingDomainsList = ({
|
|
9041
10171
|
domains,
|
|
9042
10172
|
onDomainSelect,
|
|
10173
|
+
onUnsetDomain,
|
|
9043
10174
|
isLoading
|
|
9044
10175
|
}) => {
|
|
9045
10176
|
const { t } = useTranslation();
|
|
@@ -9073,15 +10204,23 @@ var ExistingDomainsList = ({
|
|
|
9073
10204
|
]
|
|
9074
10205
|
}
|
|
9075
10206
|
),
|
|
9076
|
-
/* @__PURE__ */ jsx(AccordionPanel, { pb: 4, pt: 2, children: /* @__PURE__ */
|
|
9077
|
-
|
|
9078
|
-
|
|
9079
|
-
|
|
9080
|
-
|
|
9081
|
-
|
|
9082
|
-
|
|
9083
|
-
|
|
9084
|
-
|
|
10207
|
+
/* @__PURE__ */ jsx(AccordionPanel, { pb: 4, pt: 2, children: /* @__PURE__ */ jsxs(List, { spacing: 2, children: [
|
|
10208
|
+
domains.map((domain) => /* @__PURE__ */ jsx(
|
|
10209
|
+
DomainListItem,
|
|
10210
|
+
{
|
|
10211
|
+
domain,
|
|
10212
|
+
isCurrentDomain: domain.name === account?.domain,
|
|
10213
|
+
onSelect: onDomainSelect
|
|
10214
|
+
},
|
|
10215
|
+
domain.name
|
|
10216
|
+
)),
|
|
10217
|
+
account?.domain && /* @__PURE__ */ jsx(
|
|
10218
|
+
UnsetDomainListItem,
|
|
10219
|
+
{
|
|
10220
|
+
onUnset: onUnsetDomain
|
|
10221
|
+
}
|
|
10222
|
+
)
|
|
10223
|
+
] }) })
|
|
9085
10224
|
] }) }) });
|
|
9086
10225
|
};
|
|
9087
10226
|
var ChooseNameSearchContent = ({
|
|
@@ -9116,10 +10255,15 @@ var ChooseNameSearchContent = ({
|
|
|
9116
10255
|
];
|
|
9117
10256
|
useEffect(() => {
|
|
9118
10257
|
if (!hasInteracted) return;
|
|
10258
|
+
const hasSpecialChars = /[^a-zA-Z0-9-]|\s/.test(name);
|
|
9119
10259
|
if (name.length < 3) {
|
|
9120
10260
|
setError(t("Name must be at least 3 characters long"));
|
|
9121
10261
|
setIsAvailable(false);
|
|
9122
10262
|
setIsOwnDomain(false);
|
|
10263
|
+
} else if (hasSpecialChars) {
|
|
10264
|
+
setError(t("Only letters, numbers, and hyphens are allowed"));
|
|
10265
|
+
setIsAvailable(false);
|
|
10266
|
+
setIsOwnDomain(false);
|
|
9123
10267
|
} else if (isProtected) {
|
|
9124
10268
|
setError(t("This domain is protected"));
|
|
9125
10269
|
setIsAvailable(false);
|
|
@@ -9140,6 +10284,9 @@ var ChooseNameSearchContent = ({
|
|
|
9140
10284
|
setIsAvailable(true);
|
|
9141
10285
|
setIsOwnDomain(false);
|
|
9142
10286
|
}
|
|
10287
|
+
if (name.length >= 3 && !isFetchingDomainInfo) {
|
|
10288
|
+
Analytics.nameSelection.searched(name, isAvailable);
|
|
10289
|
+
}
|
|
9143
10290
|
}, [
|
|
9144
10291
|
name,
|
|
9145
10292
|
hasInteracted,
|
|
@@ -9147,7 +10294,9 @@ var ChooseNameSearchContent = ({
|
|
|
9147
10294
|
isEnsCheckLoading,
|
|
9148
10295
|
domainInfo,
|
|
9149
10296
|
account?.address,
|
|
9150
|
-
isProtected
|
|
10297
|
+
isProtected,
|
|
10298
|
+
isAvailable,
|
|
10299
|
+
isFetchingDomainInfo
|
|
9151
10300
|
]);
|
|
9152
10301
|
const handleContinue = () => {
|
|
9153
10302
|
if (isAvailable && !error) {
|
|
@@ -9163,27 +10312,53 @@ var ChooseNameSearchContent = ({
|
|
|
9163
10312
|
}
|
|
9164
10313
|
};
|
|
9165
10314
|
const handleDomainSelect = (selectedDomain) => {
|
|
9166
|
-
const
|
|
10315
|
+
const parts3 = selectedDomain.split(".");
|
|
10316
|
+
const baseName = parts3[0];
|
|
10317
|
+
const domainType = parts3.length > 2 ? `${parts3[1]}.${parts3[2]}` : "vet";
|
|
9167
10318
|
setCurrentContent({
|
|
9168
10319
|
type: "choose-name-summary",
|
|
9169
10320
|
props: {
|
|
9170
10321
|
name: baseName,
|
|
10322
|
+
domainType,
|
|
9171
10323
|
isOwnDomain: true,
|
|
9172
10324
|
setCurrentContent,
|
|
9173
10325
|
initialContentSource
|
|
9174
10326
|
}
|
|
9175
10327
|
});
|
|
9176
10328
|
};
|
|
10329
|
+
const handleUnsetDomain = () => {
|
|
10330
|
+
setCurrentContent({
|
|
10331
|
+
type: "choose-name-summary",
|
|
10332
|
+
props: {
|
|
10333
|
+
name: "",
|
|
10334
|
+
domainType: "",
|
|
10335
|
+
isOwnDomain: false,
|
|
10336
|
+
isUnsetting: true,
|
|
10337
|
+
setCurrentContent,
|
|
10338
|
+
initialContentSource
|
|
10339
|
+
}
|
|
10340
|
+
});
|
|
10341
|
+
};
|
|
10342
|
+
const handleClose = () => {
|
|
10343
|
+
Analytics.nameSelection.dropOff("search", {
|
|
10344
|
+
isError: false,
|
|
10345
|
+
name,
|
|
10346
|
+
error: "modal_closed"
|
|
10347
|
+
});
|
|
10348
|
+
};
|
|
10349
|
+
const handleBack = () => {
|
|
10350
|
+
Analytics.nameSelection.dropOff("search", {
|
|
10351
|
+
isError: false,
|
|
10352
|
+
name,
|
|
10353
|
+
reason: "back_button"
|
|
10354
|
+
});
|
|
10355
|
+
setCurrentContent(initialContentSource);
|
|
10356
|
+
};
|
|
9177
10357
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
9178
|
-
/* @__PURE__ */ jsxs(StickyHeaderContainer, { children: [
|
|
9179
|
-
/* @__PURE__ */ jsx(ModalHeader, { children: t("Choose Name") }),
|
|
9180
|
-
/* @__PURE__ */ jsx(
|
|
9181
|
-
|
|
9182
|
-
{
|
|
9183
|
-
onClick: () => setCurrentContent(initialContentSource)
|
|
9184
|
-
}
|
|
9185
|
-
),
|
|
9186
|
-
/* @__PURE__ */ jsx(ModalCloseButton, {})
|
|
10358
|
+
/* @__PURE__ */ jsxs(StickyHeaderContainer, { children: [
|
|
10359
|
+
/* @__PURE__ */ jsx(ModalHeader, { children: t("Choose Name") }),
|
|
10360
|
+
/* @__PURE__ */ jsx(ModalBackButton, { onClick: handleBack }),
|
|
10361
|
+
/* @__PURE__ */ jsx(ModalCloseButton, { onClick: handleClose })
|
|
9187
10362
|
] }),
|
|
9188
10363
|
/* @__PURE__ */ jsx(ModalBody, { children: /* @__PURE__ */ jsxs(VStack, { spacing: 4, align: "stretch", children: [
|
|
9189
10364
|
/* @__PURE__ */ jsx(
|
|
@@ -9191,6 +10366,7 @@ var ChooseNameSearchContent = ({
|
|
|
9191
10366
|
{
|
|
9192
10367
|
domains: allUserDomains,
|
|
9193
10368
|
onDomainSelect: handleDomainSelect,
|
|
10369
|
+
onUnsetDomain: handleUnsetDomain,
|
|
9194
10370
|
isLoading: isLoadingOwnedDomains
|
|
9195
10371
|
}
|
|
9196
10372
|
),
|
|
@@ -9262,7 +10438,9 @@ var ChooseNameSearchContent = ({
|
|
|
9262
10438
|
var ChooseNameSummaryContent = ({
|
|
9263
10439
|
setCurrentContent,
|
|
9264
10440
|
name,
|
|
10441
|
+
domainType = "veworld.vet",
|
|
9265
10442
|
isOwnDomain,
|
|
10443
|
+
isUnsetting = false,
|
|
9266
10444
|
initialContentSource = "settings"
|
|
9267
10445
|
}) => {
|
|
9268
10446
|
const { t } = useTranslation();
|
|
@@ -9273,34 +10451,60 @@ var ChooseNameSummaryContent = ({
|
|
|
9273
10451
|
3
|
|
9274
10452
|
);
|
|
9275
10453
|
const { open: openUpgradeSmartAccountModal } = useUpgradeSmartAccountModal();
|
|
10454
|
+
const handleError = (error) => {
|
|
10455
|
+
if (isRejectionError(error)) {
|
|
10456
|
+
Analytics.nameSelection.dropOff("confirmation", {
|
|
10457
|
+
isError: true,
|
|
10458
|
+
name,
|
|
10459
|
+
error,
|
|
10460
|
+
reason: "wallet_rejected"
|
|
10461
|
+
});
|
|
10462
|
+
} else {
|
|
10463
|
+
Analytics.nameSelection.failed("confirmation", {
|
|
10464
|
+
error,
|
|
10465
|
+
name
|
|
10466
|
+
});
|
|
10467
|
+
}
|
|
10468
|
+
};
|
|
10469
|
+
const unsetDomainHook = useUnsetDomain({
|
|
10470
|
+
onSuccess: () => handleSuccess()
|
|
10471
|
+
});
|
|
10472
|
+
const isVeWorldSubdomain = domainType.endsWith("veworld.vet");
|
|
10473
|
+
const veWorldSubdomainHook = useClaimVeWorldSubdomain({
|
|
10474
|
+
subdomain: name,
|
|
10475
|
+
domain: domainType,
|
|
10476
|
+
alreadyOwned: isOwnDomain,
|
|
10477
|
+
onSuccess: () => handleSuccess()
|
|
10478
|
+
});
|
|
10479
|
+
const vetDomainHook = useClaimVetDomain({
|
|
10480
|
+
domain: name,
|
|
10481
|
+
alreadyOwned: isOwnDomain,
|
|
10482
|
+
onSuccess: () => handleSuccess()
|
|
10483
|
+
});
|
|
9276
10484
|
const {
|
|
9277
10485
|
sendTransaction,
|
|
9278
10486
|
txReceipt,
|
|
9279
10487
|
error: txError,
|
|
9280
10488
|
isWaitingForWalletConfirmation,
|
|
9281
10489
|
isTransactionPending
|
|
9282
|
-
} =
|
|
9283
|
-
|
|
9284
|
-
|
|
9285
|
-
|
|
9286
|
-
|
|
9287
|
-
|
|
9288
|
-
|
|
9289
|
-
|
|
9290
|
-
|
|
9291
|
-
|
|
9292
|
-
|
|
9293
|
-
|
|
9294
|
-
|
|
9295
|
-
|
|
9296
|
-
),
|
|
9297
|
-
onDone: () => {
|
|
9298
|
-
setCurrentContent(initialContentSource);
|
|
9299
|
-
}
|
|
10490
|
+
} = isUnsetting ? unsetDomainHook : isVeWorldSubdomain ? veWorldSubdomainHook : vetDomainHook;
|
|
10491
|
+
const handleSuccess = () => {
|
|
10492
|
+
setCurrentContent({
|
|
10493
|
+
type: "successful-operation",
|
|
10494
|
+
props: {
|
|
10495
|
+
setCurrentContent,
|
|
10496
|
+
txId: txReceipt?.meta.txID,
|
|
10497
|
+
title: isUnsetting ? t("Domain unset") : t("Domain set"),
|
|
10498
|
+
description: isUnsetting ? t("Your domain has been unset successfully.") : t(
|
|
10499
|
+
`Your address has been successfully set to {{name}}.{{domainType}}.`,
|
|
10500
|
+
{ name, domainType }
|
|
10501
|
+
),
|
|
10502
|
+
onDone: () => {
|
|
10503
|
+
setCurrentContent(initialContentSource);
|
|
9300
10504
|
}
|
|
9301
|
-
}
|
|
9302
|
-
}
|
|
9303
|
-
}
|
|
10505
|
+
}
|
|
10506
|
+
});
|
|
10507
|
+
};
|
|
9304
10508
|
const handleConfirm = async () => {
|
|
9305
10509
|
if (upgradeRequired) {
|
|
9306
10510
|
openUpgradeSmartAccountModal();
|
|
@@ -9312,28 +10516,57 @@ var ChooseNameSummaryContent = ({
|
|
|
9312
10516
|
console.error("Transaction failed:", error);
|
|
9313
10517
|
}
|
|
9314
10518
|
};
|
|
10519
|
+
const handleRetry = () => {
|
|
10520
|
+
Analytics.nameSelection.retry("confirmation");
|
|
10521
|
+
handleConfirm();
|
|
10522
|
+
};
|
|
10523
|
+
const handleClose = () => {
|
|
10524
|
+
Analytics.nameSelection.dropOff("confirmation", {
|
|
10525
|
+
isError: false,
|
|
10526
|
+
name: isUnsetting ? "" : name,
|
|
10527
|
+
error: "modal_closed"
|
|
10528
|
+
});
|
|
10529
|
+
};
|
|
10530
|
+
const handleBack = () => {
|
|
10531
|
+
Analytics.nameSelection.dropOff("confirmation", {
|
|
10532
|
+
isError: false,
|
|
10533
|
+
name: isUnsetting ? "" : name,
|
|
10534
|
+
error: "back_button"
|
|
10535
|
+
});
|
|
10536
|
+
setCurrentContent({
|
|
10537
|
+
type: "choose-name-search",
|
|
10538
|
+
props: {
|
|
10539
|
+
setCurrentContent,
|
|
10540
|
+
name,
|
|
10541
|
+
initialContentSource
|
|
10542
|
+
}
|
|
10543
|
+
});
|
|
10544
|
+
};
|
|
9315
10545
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
9316
10546
|
/* @__PURE__ */ jsxs(StickyHeaderContainer, { children: [
|
|
9317
|
-
/* @__PURE__ */ jsx(ModalHeader, { children: t("Confirm Name") }),
|
|
10547
|
+
/* @__PURE__ */ jsx(ModalHeader, { children: isUnsetting ? t("Confirm Unset Domain") : t("Confirm Name") }),
|
|
9318
10548
|
/* @__PURE__ */ jsx(
|
|
9319
10549
|
ModalBackButton,
|
|
9320
10550
|
{
|
|
9321
|
-
onClick:
|
|
9322
|
-
type: "choose-name-search",
|
|
9323
|
-
props: {
|
|
9324
|
-
setCurrentContent,
|
|
9325
|
-
name,
|
|
9326
|
-
initialContentSource
|
|
9327
|
-
}
|
|
9328
|
-
}),
|
|
10551
|
+
onClick: handleBack,
|
|
9329
10552
|
isDisabled: isTransactionPending
|
|
9330
10553
|
}
|
|
9331
10554
|
),
|
|
9332
|
-
/* @__PURE__ */ jsx(
|
|
10555
|
+
/* @__PURE__ */ jsx(
|
|
10556
|
+
ModalCloseButton,
|
|
10557
|
+
{
|
|
10558
|
+
isDisabled: isTransactionPending,
|
|
10559
|
+
onClick: handleClose
|
|
10560
|
+
}
|
|
10561
|
+
)
|
|
9333
10562
|
] }),
|
|
9334
10563
|
/* @__PURE__ */ jsx(ModalBody, { children: /* @__PURE__ */ jsxs(VStack, { spacing: 4, w: "full", textAlign: "center", children: [
|
|
9335
|
-
/* @__PURE__ */ jsx(Text, { fontSize: "lg", children: t(
|
|
9336
|
-
|
|
10564
|
+
/* @__PURE__ */ jsx(Text, { fontSize: "lg", children: isUnsetting ? t(
|
|
10565
|
+
"Are you sure you want to unset your current domain?"
|
|
10566
|
+
) : t(
|
|
10567
|
+
"Are you sure you want to set your domain name to"
|
|
10568
|
+
) }),
|
|
10569
|
+
!isUnsetting && /* @__PURE__ */ jsx(Text, { fontSize: "xl", fontWeight: "bold", color: "blue.500", children: `${name}.${domainType}` })
|
|
9337
10570
|
] }) }),
|
|
9338
10571
|
/* @__PURE__ */ jsx(ModalFooter, { gap: 4, w: "full", children: /* @__PURE__ */ jsx(
|
|
9339
10572
|
TransactionButtonAndStatus,
|
|
@@ -9342,10 +10575,12 @@ var ChooseNameSummaryContent = ({
|
|
|
9342
10575
|
isSubmitting: isTransactionPending,
|
|
9343
10576
|
isTxWaitingConfirmation: isWaitingForWalletConfirmation,
|
|
9344
10577
|
onConfirm: handleConfirm,
|
|
9345
|
-
|
|
10578
|
+
onRetry: handleRetry,
|
|
10579
|
+
transactionPendingText: isUnsetting ? t("Unsetting current domain...") : t("Claiming name..."),
|
|
9346
10580
|
txReceipt,
|
|
9347
10581
|
buttonText: t("Confirm"),
|
|
9348
|
-
isDisabled: isTransactionPending
|
|
10582
|
+
isDisabled: isTransactionPending,
|
|
10583
|
+
onError: handleError
|
|
9349
10584
|
}
|
|
9350
10585
|
) })
|
|
9351
10586
|
] });
|
|
@@ -9542,6 +10777,7 @@ var en_default = {
|
|
|
9542
10777
|
"Address is required": "Address is required",
|
|
9543
10778
|
"All apps": "All apps",
|
|
9544
10779
|
"Already have an app account?": "Already have an app account?",
|
|
10780
|
+
"Already have an x2earn app wallet?": "Already have an x2earn app wallet?",
|
|
9545
10781
|
Amount: "Amount",
|
|
9546
10782
|
"Amount is required": "Amount is required",
|
|
9547
10783
|
"An X2Earn application in VeBetterDAO is a sustainable app that rewards users with B3TR tokens for eco-friendly actions. These apps must distribute B3TR, link user wallets, and provide proof of sustainable actions. They join VeBetterDAO through endorsement and participate in weekly token allocation rounds.": "An X2Earn application in VeBetterDAO is a sustainable app that rewards users with B3TR tokens for eco-friendly actions. These apps must distribute B3TR, link user wallets, and provide proof of sustainable actions. They join VeBetterDAO through endorsement and participate in weekly token allocation rounds.",
|
|
@@ -9555,6 +10791,7 @@ var en_default = {
|
|
|
9555
10791
|
"Are you sure you want to disconnect your wallet?": "Are you sure you want to disconnect your wallet?",
|
|
9556
10792
|
"Are you sure you want to set your domain name to": "Are you sure you want to set your domain name to",
|
|
9557
10793
|
"Are you sure you want to unlink {{accountType}} as a login method linked to {{accountDescription}}?": "Are you sure you want to unlink {{accountType}} as a login method linked to {{accountDescription}}?",
|
|
10794
|
+
"Are you sure you want to unset your current domain?": "Are you sure you want to unset your current domain?",
|
|
9558
10795
|
Assets: "Assets",
|
|
9559
10796
|
At: "At",
|
|
9560
10797
|
"B3TR is the incentive token of VeBetterDAO, built on VechainThor blockchain. It has a capped supply of 1 billion tokens, emitted weekly over 12 years. B3TR is used for rewards, governance, and backing VOT3 tokens 1:1. It supports sustainability applications and DAO treasury management.": "B3TR is the incentive token of VeBetterDAO, built on VechainThor blockchain. It has a capped supply of 1 billion tokens, emitted weekly over 12 years. B3TR is used for rewards, governance, and backing VOT3 tokens 1:1. It supports sustainability applications and DAO treasury management.",
|
|
@@ -9594,6 +10831,7 @@ var en_default = {
|
|
|
9594
10831
|
Confirm: "Confirm",
|
|
9595
10832
|
"Confirm Changes": "Confirm Changes",
|
|
9596
10833
|
"Confirm Name": "Confirm Name",
|
|
10834
|
+
"Confirm Unset Domain": "Confirm Unset Domain",
|
|
9597
10835
|
"Confirm the transaction in your wallet to complete it.": "Confirm the transaction in your wallet to complete it.",
|
|
9598
10836
|
"Confirm transaction": "Confirm transaction",
|
|
9599
10837
|
"Connect Wallet": "Connect Wallet",
|
|
@@ -9647,6 +10885,8 @@ var en_default = {
|
|
|
9647
10885
|
Discord: "Discord",
|
|
9648
10886
|
"Display Name": "Display Name",
|
|
9649
10887
|
"Display name must be less than 25 characters": "Display name must be less than 25 characters",
|
|
10888
|
+
"Domain set": "Domain set",
|
|
10889
|
+
"Domain unset": "Domain unset",
|
|
9650
10890
|
Done: "Done",
|
|
9651
10891
|
Ecosystem: "Ecosystem",
|
|
9652
10892
|
"Ecosystem Login": "Ecosystem Login",
|
|
@@ -9679,6 +10919,7 @@ var en_default = {
|
|
|
9679
10919
|
"For security reasons, you can manage your embedded wallet settings only on the {{appName}} platform.": "For security reasons, you can manage your embedded wallet settings only on the {{appName}} platform.",
|
|
9680
10920
|
"Frequently asked questions": "Frequently asked questions",
|
|
9681
10921
|
From: "From",
|
|
10922
|
+
General: "General",
|
|
9682
10923
|
Github: "Github",
|
|
9683
10924
|
"Give a nickname to your wallet to easily identify it.": "Give a nickname to your wallet to easily identify it.",
|
|
9684
10925
|
"Good news! Multiclause transactions are now fully supported for smart accounts. You can now enjoy a better user experience, lower gas costs, and enchanced security.": "Good news! Multiclause transactions are now fully supported for smart accounts. You can now enjoy a better user experience, lower gas costs, and enchanced security.",
|
|
@@ -9764,6 +11005,7 @@ var en_default = {
|
|
|
9764
11005
|
"Node URL": "Node URL",
|
|
9765
11006
|
"Not available": "Not available",
|
|
9766
11007
|
Notifications: "Notifications",
|
|
11008
|
+
"Only letters, numbers, and hyphens are allowed": "Only letters, numbers, and hyphens are allowed",
|
|
9767
11009
|
Other: "Other",
|
|
9768
11010
|
"Other options": "Other options",
|
|
9769
11011
|
Passkey: "Passkey",
|
|
@@ -9804,6 +11046,7 @@ var en_default = {
|
|
|
9804
11046
|
Remove: "Remove",
|
|
9805
11047
|
"Remove Login Method": "Remove Login Method",
|
|
9806
11048
|
"Remove from shortcuts": "Remove from shortcuts",
|
|
11049
|
+
"Remove your current domain name": "Remove your current domain name",
|
|
9807
11050
|
"Resend code": "Resend code",
|
|
9808
11051
|
Retry: "Retry",
|
|
9809
11052
|
"Safari blocked the login window. Please try again, it should work now.": "Safari blocked the login window. Please try again, it should work now.",
|
|
@@ -9883,6 +11126,7 @@ var en_default = {
|
|
|
9883
11126
|
"Token Contract Address": "Token Contract Address",
|
|
9884
11127
|
"Token already added": "Token already added",
|
|
9885
11128
|
"Tokens transferred successfully.": "Tokens transferred successfully.",
|
|
11129
|
+
Tools: "Tools",
|
|
9886
11130
|
"Total balance": "Total balance",
|
|
9887
11131
|
"Transaction completed!": "Transaction completed!",
|
|
9888
11132
|
"Transaction failed": "Transaction failed",
|
|
@@ -9902,6 +11146,11 @@ var en_default = {
|
|
|
9902
11146
|
"Unknown error": "Unknown error",
|
|
9903
11147
|
"Unknown status": "Unknown status",
|
|
9904
11148
|
"Unlink Login Method": "Unlink Login Method",
|
|
11149
|
+
"Unset current domain": "Unset current domain",
|
|
11150
|
+
"Unsetting current domain": "Unsetting current domain",
|
|
11151
|
+
"Unsetting current domain...": "Unsetting current domain...",
|
|
11152
|
+
"Unsetting your current VeChain nickname": "Unsetting your current VeChain nickname",
|
|
11153
|
+
"Unsetting your current domain": "Unsetting your current domain",
|
|
9905
11154
|
"Update profile image": "Update profile image",
|
|
9906
11155
|
"Upgrade Now": "Upgrade Now",
|
|
9907
11156
|
"Upgrade Smart Account to V3": "Upgrade Smart Account to V3",
|
|
@@ -9969,8 +11218,10 @@ var en_default = {
|
|
|
9969
11218
|
"You own a Smart Account and it has priority over your wallet.": "You own a Smart Account and it has priority over your wallet.",
|
|
9970
11219
|
"Your account has been successfully upgraded to the latest version. You can now enjoy a better user experience, lower gas costs, and enhanced security.": "Your account has been successfully upgraded to the latest version. You can now enjoy a better user experience, lower gas costs, and enhanced security.",
|
|
9971
11220
|
"Your accounts": "Your accounts",
|
|
11221
|
+
"Your address has been successfully set to {{name}}.{{domainType}}.": "Your address has been successfully set to {{name}}.{{domainType}}.",
|
|
9972
11222
|
"Your changes have been saved successfully.": "Your changes have been saved successfully.",
|
|
9973
11223
|
"Your customizations are linked to your .vet domain name, making them portable across different applications.": "Your customizations are linked to your .vet domain name, making them portable across different applications.",
|
|
11224
|
+
"Your domain has been unset successfully.": "Your domain has been unset successfully.",
|
|
9974
11225
|
"Your embedded wallet": "Your embedded wallet",
|
|
9975
11226
|
"Your existing domains": "Your existing domains",
|
|
9976
11227
|
"Your mobile browser blocked the login window.": "Your mobile browser blocked the login window.",
|
|
@@ -9987,6 +11238,7 @@ var en_default = {
|
|
|
9987
11238
|
"Your wallet is secured by a private key. The private key is a unique code that allows you to access your wallet. It is stored in your browser and is used to sign transactions. The private key is never shared with anyone, including the VeChain Foundation.": "Your wallet is secured by a private key. The private key is a unique code that allows you to access your wallet. It is stored in your browser and is used to sign transactions. The private key is never shared with anyone, including the VeChain Foundation.",
|
|
9988
11239
|
"Your wallet security depends on how you access it. With self-custody options like the VeWorld extension, mobile app, or hardware wallet, you have complete control over your private keys. This extension itself has no access to your private keys. When logging in with social accounts or VeChain, your wallet is created and secured by Privy and managed by VeChain, providing an easier onboarding experience while maintaining security.": "Your wallet security depends on how you access it. With self-custody options like the VeWorld extension, mobile app, or hardware wallet, you have complete control over your private keys. This extension itself has no access to your private keys. When logging in with social accounts or VeChain, your wallet is created and secured by Privy and managed by VeChain, providing an easier onboarding experience while maintaining security.",
|
|
9989
11240
|
"Your {{name}}.veworld.vet name has been claimed successfully.": "Your {{name}}.veworld.vet name has been claimed successfully.",
|
|
11241
|
+
"Your {{name}}.{{domainType}} name has been claimed successfully.": "Your {{name}}.{{domainType}} name has been claimed successfully.",
|
|
9990
11242
|
here: "here",
|
|
9991
11243
|
of: "of",
|
|
9992
11244
|
on: "on",
|
|
@@ -10030,6 +11282,7 @@ var de_default = {
|
|
|
10030
11282
|
"Address is required": "Adresse ist erforderlich",
|
|
10031
11283
|
"All apps": "Alle Apps",
|
|
10032
11284
|
"Already have an app account?": "Haben Sie bereits ein App-Konto?",
|
|
11285
|
+
"Already have an x2earn app wallet?": "Haben Sie bereits eine x2earn-App-Wallet?",
|
|
10033
11286
|
Amount: "Betrag",
|
|
10034
11287
|
"Amount is required": "Betrag ist erforderlich",
|
|
10035
11288
|
"An X2Earn application in VeBetterDAO is a sustainable app that rewards users with B3TR tokens for eco-friendly actions. These apps must distribute B3TR, link user wallets, and provide proof of sustainable actions. They join VeBetterDAO through endorsement and participate in weekly token allocation rounds.": "Eine X2Earn-Anwendung in VeBetterDAO ist eine nachhaltige App, die Benutzer f\xFCr umweltfreundliche Aktionen mit B3TR-Token belohnt. Diese Apps m\xFCssen B3TR verteilen, Benutzer-Wallets verkn\xFCpfen und den Nachweis nachhaltiger Aktionen erbringen. Sie treten VeBetterDAO durch Unterst\xFCtzung bei und nehmen an w\xF6chentlichen Token-Zuweisungsrunden teil.",
|
|
@@ -10043,6 +11296,7 @@ var de_default = {
|
|
|
10043
11296
|
"Are you sure you want to disconnect your wallet?": "Sind Sie sicher, dass Sie Ihr Wallet trennen m\xF6chten?",
|
|
10044
11297
|
"Are you sure you want to set your domain name to": "Sind Sie sicher, dass Sie Ihren Domainnamen auf",
|
|
10045
11298
|
"Are you sure you want to unlink {{accountType}} as a login method linked to {{accountDescription}}?": "Sind Sie sicher, dass Sie {{accountType}} als Anmeldemethode, die mit {{accountDescription}} verkn\xFCpft ist, trennen m\xF6chten?",
|
|
11299
|
+
"Are you sure you want to unset your current domain?": "Sind Sie sicher, dass Sie Ihre aktuelle Domain aufheben m\xF6chten?",
|
|
10046
11300
|
Assets: "Verm\xF6genswerte",
|
|
10047
11301
|
At: "Am",
|
|
10048
11302
|
"B3TR is the incentive token of VeBetterDAO, built on VechainThor blockchain. It has a capped supply of 1 billion tokens, emitted weekly over 12 years. B3TR is used for rewards, governance, and backing VOT3 tokens 1:1. It supports sustainability applications and DAO treasury management.": "B3TR ist der Anreiz-Token von VeBetterDAO, aufgebaut auf der VechainThor-Blockchain. Es gibt eine Obergrenze von 1 Milliarde Tokens, die w\xF6chentlich \xFCber 12 Jahre hinweg ausgegeben werden. B3TR wird f\xFCr Belohnungen, Governance und die Unterst\xFCtzung von VOT3-Token im Verh\xE4ltnis 1:1 verwendet. Es unterst\xFCtzt Nachhaltigkeitsanwendungen und das Verwaltung der DAO-Kasse.",
|
|
@@ -10082,6 +11336,7 @@ var de_default = {
|
|
|
10082
11336
|
Confirm: "Best\xE4tigen",
|
|
10083
11337
|
"Confirm Changes": "\xC4nderungen best\xE4tigen",
|
|
10084
11338
|
"Confirm Name": "Name best\xE4tigen",
|
|
11339
|
+
"Confirm Unset Domain": "L\xF6schung der Domain best\xE4tigen",
|
|
10085
11340
|
"Confirm the transaction in your wallet to complete it.": "Best\xE4tigen Sie die Transaktion in Ihrer Wallet, um sie abzuschlie\xDFen.",
|
|
10086
11341
|
"Confirm transaction": "Transaktion best\xE4tigen",
|
|
10087
11342
|
"Connect Wallet": "Wallet verbinden",
|
|
@@ -10135,6 +11390,8 @@ var de_default = {
|
|
|
10135
11390
|
Discord: "Discord",
|
|
10136
11391
|
"Display Name": "Anzeigename",
|
|
10137
11392
|
"Display name must be less than 25 characters": "Der Anzeigename muss weniger als 25 Zeichen umfassen",
|
|
11393
|
+
"Domain set": "Domain eingerichtet",
|
|
11394
|
+
"Domain unset": "Domain aufgehoben",
|
|
10138
11395
|
Done: "Fertig",
|
|
10139
11396
|
Ecosystem: "\xD6kosystem",
|
|
10140
11397
|
"Ecosystem Login": "\xD6kosystem-Anmeldung",
|
|
@@ -10167,6 +11424,7 @@ var de_default = {
|
|
|
10167
11424
|
"For security reasons, you can manage your embedded wallet settings only on the {{appName}} platform.": "Aus Sicherheitsgr\xFCnden k\xF6nnen Sie die Einstellungen Ihrer eingebetteten Wallet nur auf der {{appName}} Plattform verwalten.",
|
|
10168
11425
|
"Frequently asked questions": "H\xE4ufig gestellte Fragen",
|
|
10169
11426
|
From: "Von",
|
|
11427
|
+
General: "Allgemein",
|
|
10170
11428
|
Github: "Github",
|
|
10171
11429
|
"Give a nickname to your wallet to easily identify it.": "Geben Sie Ihrer Brieftasche einen Spitznamen, um sie leicht identifizieren zu k\xF6nnen.",
|
|
10172
11430
|
"Good news! Multiclause transactions are now fully supported for smart accounts. You can now enjoy a better user experience, lower gas costs, and enchanced security.": "Gute Neuigkeiten! Multiclause-Transaktionen werden jetzt vollst\xE4ndig f\xFCr Smart-Accounts unterst\xFCtzt. Sie k\xF6nnen jetzt von einer besseren Benutzererfahrung, niedrigeren Gaskosten und erh\xF6hter Sicherheit profitieren.",
|
|
@@ -10252,6 +11510,7 @@ var de_default = {
|
|
|
10252
11510
|
"Node URL": "Knoten-URL",
|
|
10253
11511
|
"Not available": "Nicht verf\xFCgbar",
|
|
10254
11512
|
Notifications: "Benachrichtigungen",
|
|
11513
|
+
"Only letters, numbers, and hyphens are allowed": "Es sind nur Buchstaben, Zahlen und Bindestriche erlaubt",
|
|
10255
11514
|
Other: "Andere",
|
|
10256
11515
|
"Other options": "Weitere Optionen",
|
|
10257
11516
|
Passkey: "Passwort",
|
|
@@ -10292,6 +11551,7 @@ var de_default = {
|
|
|
10292
11551
|
Remove: "Entfernen",
|
|
10293
11552
|
"Remove Login Method": "Anmeldemethode entfernen",
|
|
10294
11553
|
"Remove from shortcuts": "Aus den Verkn\xFCpfungen entfernen",
|
|
11554
|
+
"Remove your current domain name": "Entfernen Sie Ihren aktuellen Domainnamen",
|
|
10295
11555
|
"Resend code": "Code erneut senden",
|
|
10296
11556
|
Retry: "Erneut versuchen",
|
|
10297
11557
|
"Safari blocked the login window. Please try again, it should work now.": "Safari hat das Anmeldefenster blockiert. Bitte versuchen Sie es erneut, jetzt sollte es funktionieren.",
|
|
@@ -10371,6 +11631,7 @@ var de_default = {
|
|
|
10371
11631
|
"Token Contract Address": "Token-Vertragsadresse",
|
|
10372
11632
|
"Token already added": "Token bereits hinzugef\xFCgt",
|
|
10373
11633
|
"Tokens transferred successfully.": "Tokens erfolgreich \xFCbertragen.",
|
|
11634
|
+
Tools: "Werkzeuge",
|
|
10374
11635
|
"Total balance": "Gesamtguthaben",
|
|
10375
11636
|
"Transaction completed!": "Transaktion abgeschlossen!",
|
|
10376
11637
|
"Transaction failed": "Transaktion fehlgeschlagen",
|
|
@@ -10390,6 +11651,11 @@ var de_default = {
|
|
|
10390
11651
|
"Unknown error": "Unbekannter Fehler",
|
|
10391
11652
|
"Unknown status": "Unbekannter Status",
|
|
10392
11653
|
"Unlink Login Method": "Anmeldemethode entfernen",
|
|
11654
|
+
"Unset current domain": "Aktuelle Domain aufheben",
|
|
11655
|
+
"Unsetting current domain": "Aufheben der aktuellen Domain",
|
|
11656
|
+
"Unsetting current domain...": "Aktuelle Domain wird aufgehoben...",
|
|
11657
|
+
"Unsetting your current VeChain nickname": "Aufheben Ihres aktuellen VeChain-Spitznamens",
|
|
11658
|
+
"Unsetting your current domain": "Aufheben Ihrer aktuellen Domain",
|
|
10393
11659
|
"Update profile image": "Profilbild aktualisieren",
|
|
10394
11660
|
"Upgrade Now": "Jetzt upgraden",
|
|
10395
11661
|
"Upgrade Smart Account to V3": "Smart Account auf V3 upgraden",
|
|
@@ -10457,8 +11723,10 @@ var de_default = {
|
|
|
10457
11723
|
"You own a Smart Account and it has priority over your wallet.": "Sie besitzen einen Smart Account und dieser hat Vorrang vor Ihrer Wallet.",
|
|
10458
11724
|
"Your account has been successfully upgraded to the latest version. You can now enjoy a better user experience, lower gas costs, and enhanced security.": "Ihr Konto wurde erfolgreich auf die neueste Version aktualisiert. Sie k\xF6nnen nun eine bessere Benutzererfahrung, niedrigere Gaskosten und erh\xF6hte Sicherheit genie\xDFen.",
|
|
10459
11725
|
"Your accounts": "Ihre Konten",
|
|
11726
|
+
"Your address has been successfully set to {{name}}.{{domainType}}.": "Ihre Adresse wurde erfolgreich auf {{name}}.{{domainType}} gesetzt.",
|
|
10460
11727
|
"Your changes have been saved successfully.": "Ihre \xC4nderungen wurden erfolgreich gespeichert.",
|
|
10461
11728
|
"Your customizations are linked to your .vet domain name, making them portable across different applications.": "Ihre Anpassungen sind mit Ihrem .vet-Domainnamen verkn\xFCpft, wodurch sie in verschiedenen Anwendungen tragbar sind.",
|
|
11729
|
+
"Your domain has been unset successfully.": "Ihre Domain wurde erfolgreich aufgehoben.",
|
|
10462
11730
|
"Your embedded wallet": "Ihr eingebettetes Portemonnaie",
|
|
10463
11731
|
"Your existing domains": "Ihre vorhandenen Domains",
|
|
10464
11732
|
"Your mobile browser blocked the login window.": "Ihr mobiler Browser hat das Anmeldefenster blockiert.",
|
|
@@ -10475,6 +11743,7 @@ var de_default = {
|
|
|
10475
11743
|
"Your wallet is secured by a private key. The private key is a unique code that allows you to access your wallet. It is stored in your browser and is used to sign transactions. The private key is never shared with anyone, including the VeChain Foundation.": "Ihr Wallet ist durch einen privaten Schl\xFCssel gesichert. Der private Schl\xFCssel ist ein einzigartiger Code, der es Ihnen erm\xF6glicht, auf Ihr Wallet zuzugreifen. Er wird in Ihrem Browser gespeichert und wird verwendet, um Transaktionen zu signieren. Der private Schl\xFCssel wird niemals mit jemandem geteilt, einschlie\xDFlich der VeChain Foundation.",
|
|
10476
11744
|
"Your wallet security depends on how you access it. With self-custody options like the VeWorld extension, mobile app, or hardware wallet, you have complete control over your private keys. This extension itself has no access to your private keys. When logging in with social accounts or VeChain, your wallet is created and secured by Privy and managed by VeChain, providing an easier onboarding experience while maintaining security.": "Die Sicherheit Ihres Wallets h\xE4ngt davon ab, wie Sie darauf zugreifen. Mit Selbstverwaltungsoptionen wie der VeWorld-Erweiterung, der mobilen App oder einer Hardware-Wallet haben Sie die vollst\xE4ndige Kontrolle \xFCber Ihre privaten Schl\xFCssel. Diese Erweiterung selbst hat keinen Zugriff auf Ihre privaten Schl\xFCssel. Beim Einloggen mit sozialen Konten oder VeChain wird Ihr Wallet von Privy erstellt und gesichert und von VeChain verwaltet, was ein einfacheres Onboarding-Erlebnis bietet und gleichzeitig die Sicherheit gew\xE4hrleistet.",
|
|
10477
11745
|
"Your {{name}}.veworld.vet name has been claimed successfully.": "Ihr {{name}}.veworld.vet-Name wurde erfolgreich beansprucht.",
|
|
11746
|
+
"Your {{name}}.{{domainType}} name has been claimed successfully.": "Ihr {{name}}.{{domainType}}-Name wurde erfolgreich beansprucht.",
|
|
10478
11747
|
here: "hier",
|
|
10479
11748
|
of: "von",
|
|
10480
11749
|
on: "am",
|
|
@@ -10518,6 +11787,7 @@ var it_default = {
|
|
|
10518
11787
|
"Address is required": "L'indirizzo \xE8 richiesto",
|
|
10519
11788
|
"All apps": "Tutte le app",
|
|
10520
11789
|
"Already have an app account?": "Hai gi\xE0 un account nell'app?",
|
|
11790
|
+
"Already have an x2earn app wallet?": "Hai gi\xE0 un portafoglio x2earn app?",
|
|
10521
11791
|
Amount: "Importo",
|
|
10522
11792
|
"Amount is required": "\xC8 richiesto l'importo",
|
|
10523
11793
|
"An X2Earn application in VeBetterDAO is a sustainable app that rewards users with B3TR tokens for eco-friendly actions. These apps must distribute B3TR, link user wallets, and provide proof of sustainable actions. They join VeBetterDAO through endorsement and participate in weekly token allocation rounds.": "Un'applicazione X2Earn in VeBetterDAO \xE8 un'app sostenibile che premia gli utenti con token B3TR per azioni ecologiche. Queste app devono distribuire B3TR, collegare i portafogli degli utenti e fornire la prova delle azioni sostenibili. Si uniscono a VeBetterDAO tramite sponsorizzazione e partecipano a turni settimanali di allocazione dei token.",
|
|
@@ -10531,6 +11801,7 @@ var it_default = {
|
|
|
10531
11801
|
"Are you sure you want to disconnect your wallet?": "Sei sicuro di voler disconnettere il tuo portafoglio?",
|
|
10532
11802
|
"Are you sure you want to set your domain name to": "Sei sicuro di voler impostare il tuo nome di dominio su",
|
|
10533
11803
|
"Are you sure you want to unlink {{accountType}} as a login method linked to {{accountDescription}}?": "Sei sicuro di voler scollegare {{accountType}} come metodo di accesso collegato a {{accountDescription}}?",
|
|
11804
|
+
"Are you sure you want to unset your current domain?": "Sei sicuro di voler rimuovere il tuo attuale dominio?",
|
|
10534
11805
|
Assets: "Risorse",
|
|
10535
11806
|
At: "Alle",
|
|
10536
11807
|
"B3TR is the incentive token of VeBetterDAO, built on VechainThor blockchain. It has a capped supply of 1 billion tokens, emitted weekly over 12 years. B3TR is used for rewards, governance, and backing VOT3 tokens 1:1. It supports sustainability applications and DAO treasury management.": "B3TR \xE8 il token incentivo di VeBetterDAO, creato sulla blockchain VechainThor. Ha una fornitura massima di 1 miliardo di token, emessi settimanalmente per 12 anni. B3TR viene utilizzato per ricompense, governance e supporto dei token VOT3 1:1. Supporta applicazioni di sostenibilit\xE0 e gestione del tesoro del DAO.",
|
|
@@ -10570,6 +11841,7 @@ var it_default = {
|
|
|
10570
11841
|
Confirm: "Conferma",
|
|
10571
11842
|
"Confirm Changes": "Conferma Modifiche",
|
|
10572
11843
|
"Confirm Name": "Conferma Nome",
|
|
11844
|
+
"Confirm Unset Domain": "Conferma Rimozione Dominio",
|
|
10573
11845
|
"Confirm the transaction in your wallet to complete it.": "Conferma la transazione nel tuo portafoglio per completarla.",
|
|
10574
11846
|
"Confirm transaction": "Conferma transazione",
|
|
10575
11847
|
"Connect Wallet": "Collega Portafoglio",
|
|
@@ -10623,6 +11895,8 @@ var it_default = {
|
|
|
10623
11895
|
Discord: "Discord",
|
|
10624
11896
|
"Display Name": "Nome da visualizzare",
|
|
10625
11897
|
"Display name must be less than 25 characters": "Il nome da visualizzare deve contenere meno di 25 caratteri",
|
|
11898
|
+
"Domain set": "Dominio impostato",
|
|
11899
|
+
"Domain unset": "Dominio rimosso",
|
|
10626
11900
|
Done: "Fatto",
|
|
10627
11901
|
Ecosystem: "Ecosistema",
|
|
10628
11902
|
"Ecosystem Login": "Accesso Ecosistema",
|
|
@@ -10655,6 +11929,7 @@ var it_default = {
|
|
|
10655
11929
|
"For security reasons, you can manage your embedded wallet settings only on the {{appName}} platform.": "Per motivi di sicurezza, puoi gestire le impostazioni del tuo portafoglio integrato solo sulla piattaforma {{appName}}.",
|
|
10656
11930
|
"Frequently asked questions": "Domande frequenti",
|
|
10657
11931
|
From: "Da",
|
|
11932
|
+
General: "Generale",
|
|
10658
11933
|
Github: "Github",
|
|
10659
11934
|
"Give a nickname to your wallet to easily identify it.": "Dai un soprannome al tuo portafoglio per identificarlo facilmente.",
|
|
10660
11935
|
"Good news! Multiclause transactions are now fully supported for smart accounts. You can now enjoy a better user experience, lower gas costs, and enchanced security.": "Buone notizie! Le transazioni multi-clausola sono ora completamente supportate per gli account intelligenti. Ora puoi godere di una migliore esperienza utente, costi di gas ridotti e maggiore sicurezza.",
|
|
@@ -10740,6 +12015,7 @@ var it_default = {
|
|
|
10740
12015
|
"Node URL": "URL del nodo",
|
|
10741
12016
|
"Not available": "Non disponibile",
|
|
10742
12017
|
Notifications: "Notifiche",
|
|
12018
|
+
"Only letters, numbers, and hyphens are allowed": "Sono ammessi solo lettere, numeri e trattini",
|
|
10743
12019
|
Other: "Altro",
|
|
10744
12020
|
"Other options": "Altre opzioni",
|
|
10745
12021
|
Passkey: "Chiave di accesso",
|
|
@@ -10780,6 +12056,7 @@ var it_default = {
|
|
|
10780
12056
|
Remove: "Rimuovi",
|
|
10781
12057
|
"Remove Login Method": "Rimuovi metodo di accesso",
|
|
10782
12058
|
"Remove from shortcuts": "Rimuovi dai collegamenti",
|
|
12059
|
+
"Remove your current domain name": "Rimuovi il tuo attuale nome di dominio",
|
|
10783
12060
|
"Resend code": "Reinvia codice",
|
|
10784
12061
|
Retry: "Riprova",
|
|
10785
12062
|
"Safari blocked the login window. Please try again, it should work now.": "Safari ha bloccato la finestra di accesso. Si prega di riprovare, dovrebbe funzionare ora.",
|
|
@@ -10859,6 +12136,7 @@ var it_default = {
|
|
|
10859
12136
|
"Token Contract Address": "Indirizzo del Contratto del Token",
|
|
10860
12137
|
"Token already added": "Token gi\xE0 aggiunto",
|
|
10861
12138
|
"Tokens transferred successfully.": "Token trasferiti con successo.",
|
|
12139
|
+
Tools: "Strumenti",
|
|
10862
12140
|
"Total balance": "Saldo totale",
|
|
10863
12141
|
"Transaction completed!": "Transazione completata!",
|
|
10864
12142
|
"Transaction failed": "Transazione fallita",
|
|
@@ -10878,6 +12156,11 @@ var it_default = {
|
|
|
10878
12156
|
"Unknown error": "Errore sconosciuto",
|
|
10879
12157
|
"Unknown status": "Stato sconosciuto",
|
|
10880
12158
|
"Unlink Login Method": "Scollega metodo di accesso",
|
|
12159
|
+
"Unset current domain": "Rimuovi dominio attuale",
|
|
12160
|
+
"Unsetting current domain": "Rimozione del dominio attuale",
|
|
12161
|
+
"Unsetting current domain...": "Rimozione del dominio attuale in corso...",
|
|
12162
|
+
"Unsetting your current VeChain nickname": "Rimozione del tuo attuale soprannome VeChain",
|
|
12163
|
+
"Unsetting your current domain": "Rimozione del tuo attuale dominio",
|
|
10881
12164
|
"Update profile image": "Aggiorna immagine del profilo",
|
|
10882
12165
|
"Upgrade Now": "Aggiorna Ora",
|
|
10883
12166
|
"Upgrade Smart Account to V3": "Aggiorna Conto Smart a V3",
|
|
@@ -10945,8 +12228,10 @@ var it_default = {
|
|
|
10945
12228
|
"You own a Smart Account and it has priority over your wallet.": "Possiedi un Account Smart e ha priorit\xE0 sul tuo portafoglio.",
|
|
10946
12229
|
"Your account has been successfully upgraded to the latest version. You can now enjoy a better user experience, lower gas costs, and enhanced security.": "Il tuo account \xE8 stato aggiornato con successo all'ultima versione. Ora puoi godere di un'esperienza utente migliorata, costi del gas ridotti e maggiore sicurezza.",
|
|
10947
12230
|
"Your accounts": "I tuoi account",
|
|
12231
|
+
"Your address has been successfully set to {{name}}.{{domainType}}.": "Il tuo indirizzo \xE8 stato impostato correttamente su {{name}}.{{domainType}}.",
|
|
10948
12232
|
"Your changes have been saved successfully.": "Le tue modifiche sono state salvate con successo.",
|
|
10949
12233
|
"Your customizations are linked to your .vet domain name, making them portable across different applications.": "Le tue personalizzazioni sono collegate al tuo nome di dominio .vet, rendendole portabili tra diverse applicazioni.",
|
|
12234
|
+
"Your domain has been unset successfully.": "Il tuo dominio \xE8 stato rimosso con successo.",
|
|
10950
12235
|
"Your embedded wallet": "Il tuo portafoglio integrato",
|
|
10951
12236
|
"Your existing domains": "I tuoi domini esistenti",
|
|
10952
12237
|
"Your mobile browser blocked the login window.": "Il tuo browser mobile ha bloccato la finestra di accesso.",
|
|
@@ -10963,6 +12248,7 @@ var it_default = {
|
|
|
10963
12248
|
"Your wallet is secured by a private key. The private key is a unique code that allows you to access your wallet. It is stored in your browser and is used to sign transactions. The private key is never shared with anyone, including the VeChain Foundation.": "Il tuo portafoglio \xE8 protetto da una chiave privata. La chiave privata \xE8 un codice unico che ti consente di accedere al tuo portafoglio. \xC8 memorizzata nel tuo browser e viene utilizzata per firmare le transazioni. La chiave privata non viene mai condivisa con nessuno, inclusa la Fondazione VeChain.",
|
|
10964
12249
|
"Your wallet security depends on how you access it. With self-custody options like the VeWorld extension, mobile app, or hardware wallet, you have complete control over your private keys. This extension itself has no access to your private keys. When logging in with social accounts or VeChain, your wallet is created and secured by Privy and managed by VeChain, providing an easier onboarding experience while maintaining security.": "La sicurezza del tuo portafoglio dipende da come vi accedi. Con opzioni di autocustodia come l'estensione VeWorld, l'app mobile o il portafoglio hardware, hai il controllo completo sulle tue chiavi private. Questa estensione stessa non ha accesso alle tue chiavi private. Quando accedi con i social account o VeChain, il tuo portafoglio viene creato e protetto da Privy e gestito da VeChain, offrendo un'esperienza di onboarding pi\xF9 semplice mantenendo la sicurezza.",
|
|
10965
12250
|
"Your {{name}}.veworld.vet name has been claimed successfully.": "Il tuo nome {{name}}.veworld.vet \xE8 stato rivendicato con successo.",
|
|
12251
|
+
"Your {{name}}.{{domainType}} name has been claimed successfully.": "Il tuo nome {{name}}.{{domainType}} \xE8 stato rivendicato con successo.",
|
|
10966
12252
|
here: "qui",
|
|
10967
12253
|
of: "di",
|
|
10968
12254
|
on: "su",
|
|
@@ -11006,6 +12292,7 @@ var fr_default = {
|
|
|
11006
12292
|
"Address is required": "L'adresse est requise",
|
|
11007
12293
|
"All apps": "Toutes les applications",
|
|
11008
12294
|
"Already have an app account?": "Vous avez d\xE9j\xE0 un compte sur l'application\xA0?",
|
|
12295
|
+
"Already have an x2earn app wallet?": "Vous avez d\xE9j\xE0 un portefeuille d'application x2earn ?",
|
|
11009
12296
|
Amount: "Montant",
|
|
11010
12297
|
"Amount is required": "Le montant est requis",
|
|
11011
12298
|
"An X2Earn application in VeBetterDAO is a sustainable app that rewards users with B3TR tokens for eco-friendly actions. These apps must distribute B3TR, link user wallets, and provide proof of sustainable actions. They join VeBetterDAO through endorsement and participate in weekly token allocation rounds.": "Une application X2Earn dans VeBetterDAO est une application durable qui r\xE9compense les utilisateurs avec des tokens B3TR pour des actions \xE9cologiques. Ces applications doivent distribuer B3TR, lier les portefeuilles utilisateurs et fournir une preuve des actions durables. Elles rejoignent VeBetterDAO par recommandation et participent \xE0 des rondes d\u2019allocation de tokens hebdomadaires.",
|
|
@@ -11019,6 +12306,7 @@ var fr_default = {
|
|
|
11019
12306
|
"Are you sure you want to disconnect your wallet?": "\xCAtes-vous s\xFBr de vouloir d\xE9connecter votre portefeuille ?",
|
|
11020
12307
|
"Are you sure you want to set your domain name to": "\xCAtes-vous s\xFBr de vouloir d\xE9finir votre nom de domaine sur",
|
|
11021
12308
|
"Are you sure you want to unlink {{accountType}} as a login method linked to {{accountDescription}}?": "\xCAtes-vous s\xFBr de vouloir dissocier {{accountType}} en tant que m\xE9thode de connexion li\xE9e \xE0 {{accountDescription}} ?",
|
|
12309
|
+
"Are you sure you want to unset your current domain?": "\xCAtes-vous s\xFBr de vouloir d\xE9s\xE9lectionner votre domaine actuel ?",
|
|
11022
12310
|
Assets: "Actifs",
|
|
11023
12311
|
At: "\xC0",
|
|
11024
12312
|
"B3TR is the incentive token of VeBetterDAO, built on VechainThor blockchain. It has a capped supply of 1 billion tokens, emitted weekly over 12 years. B3TR is used for rewards, governance, and backing VOT3 tokens 1:1. It supports sustainability applications and DAO treasury management.": "B3TR est le token incitatif de VeBetterDAO, construit sur la blockchain VechainThor. Il a un approvisionnement limit\xE9 \xE0 1 milliard de tokens, \xE9mis de fa\xE7on hebdomadaire sur 12 ans. B3TR est utilis\xE9 pour les r\xE9compenses, la gouvernance et pour soutenir les tokens VOT3 \xE0 un taux de 1:1. Il soutient les applications de durabilit\xE9 et la gestion de la tr\xE9sorerie DAO.",
|
|
@@ -11058,6 +12346,7 @@ var fr_default = {
|
|
|
11058
12346
|
Confirm: "Confirmer",
|
|
11059
12347
|
"Confirm Changes": "Confirmer les modifications",
|
|
11060
12348
|
"Confirm Name": "Confirmer le nom",
|
|
12349
|
+
"Confirm Unset Domain": "Confirmer la d\xE9s\xE9lection du domaine",
|
|
11061
12350
|
"Confirm the transaction in your wallet to complete it.": "Confirmez la transaction dans votre portefeuille pour la terminer.",
|
|
11062
12351
|
"Confirm transaction": "Confirmer la transaction",
|
|
11063
12352
|
"Connect Wallet": "Connecter le portefeuille",
|
|
@@ -11111,6 +12400,8 @@ var fr_default = {
|
|
|
11111
12400
|
Discord: "Discord",
|
|
11112
12401
|
"Display Name": "Nom affich\xE9",
|
|
11113
12402
|
"Display name must be less than 25 characters": "Le nom affich\xE9 doit comporter moins de 25 caract\xE8res",
|
|
12403
|
+
"Domain set": "Domaine d\xE9fini",
|
|
12404
|
+
"Domain unset": "Domaine d\xE9s\xE9lectionn\xE9",
|
|
11114
12405
|
Done: "Fait",
|
|
11115
12406
|
Ecosystem: "\xC9cosyst\xE8me",
|
|
11116
12407
|
"Ecosystem Login": "Connexion \xE0 l'\xE9cosyst\xE8me",
|
|
@@ -11143,6 +12434,7 @@ var fr_default = {
|
|
|
11143
12434
|
"For security reasons, you can manage your embedded wallet settings only on the {{appName}} platform.": "Pour des raisons de s\xE9curit\xE9, vous pouvez g\xE9rer les param\xE8tres de votre portefeuille int\xE9gr\xE9 uniquement sur la plateforme {{appName}}.",
|
|
11144
12435
|
"Frequently asked questions": "Questions fr\xE9quemment pos\xE9es",
|
|
11145
12436
|
From: "De",
|
|
12437
|
+
General: "G\xE9n\xE9ral",
|
|
11146
12438
|
Github: "Github",
|
|
11147
12439
|
"Give a nickname to your wallet to easily identify it.": "Donnez un surnom \xE0 votre portefeuille pour l'identifier facilement.",
|
|
11148
12440
|
"Good news! Multiclause transactions are now fully supported for smart accounts. You can now enjoy a better user experience, lower gas costs, and enchanced security.": "Bonne nouvelle ! Les transactions multiclause sont d\xE9sormais enti\xE8rement prises en charge pour les comptes intelligents. Vous pouvez d\xE9sormais profiter d'une meilleure exp\xE9rience utilisateur, de frais de gaz r\xE9duits et d'une s\xE9curit\xE9 renforc\xE9e.",
|
|
@@ -11228,6 +12520,7 @@ var fr_default = {
|
|
|
11228
12520
|
"Node URL": "URL du n\u0153ud",
|
|
11229
12521
|
"Not available": "Non disponible",
|
|
11230
12522
|
Notifications: "Notifications",
|
|
12523
|
+
"Only letters, numbers, and hyphens are allowed": "Seules les lettres, les chiffres et les tirets sont autoris\xE9s",
|
|
11231
12524
|
Other: "Autre",
|
|
11232
12525
|
"Other options": "Autres options",
|
|
11233
12526
|
Passkey: "Cl\xE9 de passe",
|
|
@@ -11268,6 +12561,7 @@ var fr_default = {
|
|
|
11268
12561
|
Remove: "Supprimer",
|
|
11269
12562
|
"Remove Login Method": "Supprimer la m\xE9thode de connexion",
|
|
11270
12563
|
"Remove from shortcuts": "Retirer des raccourcis",
|
|
12564
|
+
"Remove your current domain name": "Supprimer votre nom de domaine actuel",
|
|
11271
12565
|
"Resend code": "Renvoyer le code",
|
|
11272
12566
|
Retry: "R\xE9essayer",
|
|
11273
12567
|
"Safari blocked the login window. Please try again, it should work now.": "Safari a bloqu\xE9 la fen\xEAtre de connexion. Veuillez r\xE9essayer, cela devrait fonctionner maintenant.",
|
|
@@ -11347,6 +12641,7 @@ var fr_default = {
|
|
|
11347
12641
|
"Token Contract Address": "Adresse du contrat du jeton",
|
|
11348
12642
|
"Token already added": "Jeton d\xE9j\xE0 ajout\xE9",
|
|
11349
12643
|
"Tokens transferred successfully.": "Jetons transf\xE9r\xE9s avec succ\xE8s.",
|
|
12644
|
+
Tools: "Outils",
|
|
11350
12645
|
"Total balance": "Solde total",
|
|
11351
12646
|
"Transaction completed!": "Transaction termin\xE9e !",
|
|
11352
12647
|
"Transaction failed": "La transaction a \xE9chou\xE9",
|
|
@@ -11366,6 +12661,11 @@ var fr_default = {
|
|
|
11366
12661
|
"Unknown error": "Erreur inconnue",
|
|
11367
12662
|
"Unknown status": "Statut inconnu",
|
|
11368
12663
|
"Unlink Login Method": "Dissocier la m\xE9thode de connexion",
|
|
12664
|
+
"Unset current domain": "D\xE9s\xE9lectionner le domaine actuel",
|
|
12665
|
+
"Unsetting current domain": "D\xE9s\xE9lection du domaine actuel",
|
|
12666
|
+
"Unsetting current domain...": "D\xE9s\xE9lection du domaine actuel...",
|
|
12667
|
+
"Unsetting your current VeChain nickname": "D\xE9s\xE9lection de votre surnom VeChain actuel",
|
|
12668
|
+
"Unsetting your current domain": "D\xE9s\xE9lection de votre domaine actuel",
|
|
11369
12669
|
"Update profile image": "Mettre \xE0 jour l'image de profil",
|
|
11370
12670
|
"Upgrade Now": "Mettre \xE0 niveau maintenant",
|
|
11371
12671
|
"Upgrade Smart Account to V3": "Mettre \xE0 niveau le compte intelligent vers V3",
|
|
@@ -11433,8 +12733,10 @@ var fr_default = {
|
|
|
11433
12733
|
"You own a Smart Account and it has priority over your wallet.": "Vous poss\xE9dez un Smart Account et il a la priorit\xE9 sur votre portefeuille.",
|
|
11434
12734
|
"Your account has been successfully upgraded to the latest version. You can now enjoy a better user experience, lower gas costs, and enhanced security.": "Votre compte a \xE9t\xE9 mis \xE0 niveau avec succ\xE8s vers la derni\xE8re version. Vous pouvez d\xE9sormais profiter d'une meilleure exp\xE9rience utilisateur, de co\xFBts de gaz r\xE9duits et d'une s\xE9curit\xE9 renforc\xE9e.",
|
|
11435
12735
|
"Your accounts": "Vos comptes",
|
|
12736
|
+
"Your address has been successfully set to {{name}}.{{domainType}}.": "Votre adresse a \xE9t\xE9 d\xE9finie avec succ\xE8s sur {{name}}.{{domainType}}.",
|
|
11436
12737
|
"Your changes have been saved successfully.": "Vos modifications ont \xE9t\xE9 enregistr\xE9es avec succ\xE8s.",
|
|
11437
12738
|
"Your customizations are linked to your .vet domain name, making them portable across different applications.": "Vos personnalisations sont li\xE9es \xE0 votre nom de domaine .vet, ce qui les rend portables \xE0 travers diff\xE9rentes applications.",
|
|
12739
|
+
"Your domain has been unset successfully.": "Votre domaine a \xE9t\xE9 d\xE9s\xE9lectionn\xE9 avec succ\xE8s.",
|
|
11438
12740
|
"Your embedded wallet": "Votre portefeuille int\xE9gr\xE9",
|
|
11439
12741
|
"Your existing domains": "Vos domaines existants",
|
|
11440
12742
|
"Your mobile browser blocked the login window.": "Votre navigateur mobile a bloqu\xE9 la fen\xEAtre de connexion.",
|
|
@@ -11451,6 +12753,7 @@ var fr_default = {
|
|
|
11451
12753
|
"Your wallet is secured by a private key. The private key is a unique code that allows you to access your wallet. It is stored in your browser and is used to sign transactions. The private key is never shared with anyone, including the VeChain Foundation.": "Votre portefeuille est s\xE9curis\xE9 par une cl\xE9 priv\xE9e. La cl\xE9 priv\xE9e est un code unique qui vous permet d'acc\xE9der \xE0 votre portefeuille. Elle est stock\xE9e dans votre navigateur et est utilis\xE9e pour signer des transactions. La cl\xE9 priv\xE9e n'est jamais partag\xE9e avec qui que ce soit, y compris la Fondation VeChain.",
|
|
11452
12754
|
"Your wallet security depends on how you access it. With self-custody options like the VeWorld extension, mobile app, or hardware wallet, you have complete control over your private keys. This extension itself has no access to your private keys. When logging in with social accounts or VeChain, your wallet is created and secured by Privy and managed by VeChain, providing an easier onboarding experience while maintaining security.": "La s\xE9curit\xE9 de votre portefeuille d\xE9pend de la fa\xE7on dont vous y acc\xE9dez. Avec des options d'auto-gardiennage comme l'extension VeWorld, l'application mobile ou le portefeuille mat\xE9riel, vous avez un contr\xF4le complet sur vos cl\xE9s priv\xE9es. Cette extension en elle-m\xEAme n'a pas acc\xE8s \xE0 vos cl\xE9s priv\xE9es. Lors de la connexion avec des comptes sociaux ou VeChain, votre portefeuille est cr\xE9\xE9 et s\xE9curis\xE9 par Privy et g\xE9r\xE9 par VeChain, offrant une exp\xE9rience d'int\xE9gration plus facile tout en maintenant la s\xE9curit\xE9.",
|
|
11453
12755
|
"Your {{name}}.veworld.vet name has been claimed successfully.": "Votre nom {{name}}.veworld.vet a \xE9t\xE9 revendiqu\xE9 avec succ\xE8s.",
|
|
12756
|
+
"Your {{name}}.{{domainType}} name has been claimed successfully.": "Votre nom {{name}}.{{domainType}} a \xE9t\xE9 revendiqu\xE9 avec succ\xE8s.",
|
|
11454
12757
|
here: "ici",
|
|
11455
12758
|
of: "de",
|
|
11456
12759
|
on: "le",
|
|
@@ -11494,6 +12797,7 @@ var es_default = {
|
|
|
11494
12797
|
"Address is required": "Se requiere direcci\xF3n",
|
|
11495
12798
|
"All apps": "Todas las aplicaciones",
|
|
11496
12799
|
"Already have an app account?": "\xBFYa tienes una cuenta de la aplicaci\xF3n?",
|
|
12800
|
+
"Already have an x2earn app wallet?": "\xBFYa tienes una billetera de aplicaci\xF3n x2earn?",
|
|
11497
12801
|
Amount: "Cantidad",
|
|
11498
12802
|
"Amount is required": "Se requiere un monto",
|
|
11499
12803
|
"An X2Earn application in VeBetterDAO is a sustainable app that rewards users with B3TR tokens for eco-friendly actions. These apps must distribute B3TR, link user wallets, and provide proof of sustainable actions. They join VeBetterDAO through endorsement and participate in weekly token allocation rounds.": "Una aplicaci\xF3n X2Earn en VeBetterDAO es una app sostenible que recompensa a los usuarios con tokens B3TR por acciones ecol\xF3gicas. Estas aplicaciones deben distribuir B3TR, vincular las billeteras de los usuarios y proporcionar pruebas de acciones sostenibles. Se unen a VeBetterDAO a trav\xE9s de la recomendaci\xF3n y participan en rondas semanales de asignaci\xF3n de tokens.",
|
|
@@ -11507,6 +12811,7 @@ var es_default = {
|
|
|
11507
12811
|
"Are you sure you want to disconnect your wallet?": "\xBFEst\xE1s seguro de que quieres desconectar tu billetera?",
|
|
11508
12812
|
"Are you sure you want to set your domain name to": "\xBFEst\xE1s seguro de que quieres establecer tu nombre de dominio en",
|
|
11509
12813
|
"Are you sure you want to unlink {{accountType}} as a login method linked to {{accountDescription}}?": "\xBFEst\xE1 seguro de que desea desvincular {{accountType}} como m\xE9todo de inicio de sesi\xF3n vinculado a {{accountDescription}}?",
|
|
12814
|
+
"Are you sure you want to unset your current domain?": "\xBFEst\xE1 seguro de que desea desactivar su dominio actual?",
|
|
11510
12815
|
Assets: "Activos",
|
|
11511
12816
|
At: "En",
|
|
11512
12817
|
"B3TR is the incentive token of VeBetterDAO, built on VechainThor blockchain. It has a capped supply of 1 billion tokens, emitted weekly over 12 years. B3TR is used for rewards, governance, and backing VOT3 tokens 1:1. It supports sustainability applications and DAO treasury management.": "B3TR es el token de incentivo de VeBetterDAO, construido sobre la blockchain VechainThor. Tiene un suministro limitado de 1 mil millones de tokens, emitidos semanalmente durante 12 a\xF1os. B3TR se utiliza para recompensas, gobernanza y respaldar tokens VOT3 en una proporci\xF3n de 1:1. Apoya aplicaciones sostenibles y la gesti\xF3n del tesoro del DAO.",
|
|
@@ -11546,6 +12851,7 @@ var es_default = {
|
|
|
11546
12851
|
Confirm: "Confirmar",
|
|
11547
12852
|
"Confirm Changes": "Confirmar cambios",
|
|
11548
12853
|
"Confirm Name": "Confirmar Nombre",
|
|
12854
|
+
"Confirm Unset Domain": "Confirmar desactivaci\xF3n de dominio",
|
|
11549
12855
|
"Confirm the transaction in your wallet to complete it.": "Confirme la transacci\xF3n en su monedero para completarla.",
|
|
11550
12856
|
"Confirm transaction": "Confirmar transacci\xF3n",
|
|
11551
12857
|
"Connect Wallet": "Conectar Monedero",
|
|
@@ -11599,6 +12905,8 @@ var es_default = {
|
|
|
11599
12905
|
Discord: "Discord",
|
|
11600
12906
|
"Display Name": "Nombre para mostrar",
|
|
11601
12907
|
"Display name must be less than 25 characters": "El nombre para mostrar debe tener menos de 25 caracteres",
|
|
12908
|
+
"Domain set": "Dominio configurado",
|
|
12909
|
+
"Domain unset": "Dominio desactivado",
|
|
11602
12910
|
Done: "Hecho",
|
|
11603
12911
|
Ecosystem: "Ecosistema",
|
|
11604
12912
|
"Ecosystem Login": "Inicio de sesi\xF3n en el ecosistema",
|
|
@@ -11631,6 +12939,7 @@ var es_default = {
|
|
|
11631
12939
|
"For security reasons, you can manage your embedded wallet settings only on the {{appName}} platform.": "Por razones de seguridad, puedes gestionar la configuraci\xF3n de tu billetera integrada solo en la plataforma {{appName}}.",
|
|
11632
12940
|
"Frequently asked questions": "Preguntas frecuentes",
|
|
11633
12941
|
From: "De",
|
|
12942
|
+
General: "General",
|
|
11634
12943
|
Github: "Github",
|
|
11635
12944
|
"Give a nickname to your wallet to easily identify it.": "Dale un apodo a tu billetera para identificarla f\xE1cilmente.",
|
|
11636
12945
|
"Good news! Multiclause transactions are now fully supported for smart accounts. You can now enjoy a better user experience, lower gas costs, and enchanced security.": "\xA1Buenas noticias! Las transacciones multicl\xE1usula ahora son totalmente compatibles con las cuentas inteligentes. Ahora puedes disfrutar de una mejor experiencia de usuario, menores costos de gas y mayor seguridad.",
|
|
@@ -11716,6 +13025,7 @@ var es_default = {
|
|
|
11716
13025
|
"Node URL": "URL del nodo",
|
|
11717
13026
|
"Not available": "No disponible",
|
|
11718
13027
|
Notifications: "Notificaciones",
|
|
13028
|
+
"Only letters, numbers, and hyphens are allowed": "Solo se permiten letras, n\xFAmeros y guiones",
|
|
11719
13029
|
Other: "Otro",
|
|
11720
13030
|
"Other options": "Otras opciones",
|
|
11721
13031
|
Passkey: "Clave de acceso",
|
|
@@ -11756,6 +13066,7 @@ var es_default = {
|
|
|
11756
13066
|
Remove: "Eliminar",
|
|
11757
13067
|
"Remove Login Method": "Eliminar m\xE9todo de inicio de sesi\xF3n",
|
|
11758
13068
|
"Remove from shortcuts": "Eliminar de los accesos directos",
|
|
13069
|
+
"Remove your current domain name": "Eliminar su nombre de dominio actual",
|
|
11759
13070
|
"Resend code": "Reenviar c\xF3digo",
|
|
11760
13071
|
Retry: "Reintentar",
|
|
11761
13072
|
"Safari blocked the login window. Please try again, it should work now.": "Safari bloque\xF3 la ventana de inicio de sesi\xF3n. Por favor, int\xE9ntelo de nuevo, deber\xEDa funcionar ahora.",
|
|
@@ -11835,6 +13146,7 @@ var es_default = {
|
|
|
11835
13146
|
"Token Contract Address": "Direcci\xF3n del contrato del token",
|
|
11836
13147
|
"Token already added": "Token ya agregado",
|
|
11837
13148
|
"Tokens transferred successfully.": "Tokens transferidos exitosamente.",
|
|
13149
|
+
Tools: "Herramientas",
|
|
11838
13150
|
"Total balance": "Saldo total",
|
|
11839
13151
|
"Transaction completed!": "\xA1Transacci\xF3n completada!",
|
|
11840
13152
|
"Transaction failed": "Transacci\xF3n fallida",
|
|
@@ -11854,6 +13166,11 @@ var es_default = {
|
|
|
11854
13166
|
"Unknown error": "Error desconocido",
|
|
11855
13167
|
"Unknown status": "Estado desconocido",
|
|
11856
13168
|
"Unlink Login Method": "Desvincular m\xE9todo de inicio de sesi\xF3n",
|
|
13169
|
+
"Unset current domain": "Desactivar dominio actual",
|
|
13170
|
+
"Unsetting current domain": "Desactivando dominio actual",
|
|
13171
|
+
"Unsetting current domain...": "Desactivando dominio actual...",
|
|
13172
|
+
"Unsetting your current VeChain nickname": "Desactivando su apodo de VeChain actual",
|
|
13173
|
+
"Unsetting your current domain": "Desactivando su dominio actual",
|
|
11857
13174
|
"Update profile image": "Actualizar imagen de perfil",
|
|
11858
13175
|
"Upgrade Now": "Actualizar ahora",
|
|
11859
13176
|
"Upgrade Smart Account to V3": "Actualizar cuenta inteligente a V3",
|
|
@@ -11921,8 +13238,10 @@ var es_default = {
|
|
|
11921
13238
|
"You own a Smart Account and it has priority over your wallet.": "Posees una Smart Account y tiene prioridad sobre tu billetera.",
|
|
11922
13239
|
"Your account has been successfully upgraded to the latest version. You can now enjoy a better user experience, lower gas costs, and enhanced security.": "Su cuenta ha sido actualizada exitosamente a la \xFAltima versi\xF3n. Ahora puede disfrutar de una mejor experiencia de usuario, menores costos de gas y mayor seguridad.",
|
|
11923
13240
|
"Your accounts": "Tus cuentas",
|
|
13241
|
+
"Your address has been successfully set to {{name}}.{{domainType}}.": "Su direcci\xF3n ha sido configurada exitosamente a {{name}}.{{domainType}}.",
|
|
11924
13242
|
"Your changes have been saved successfully.": "Tus cambios han sido guardados exitosamente.",
|
|
11925
13243
|
"Your customizations are linked to your .vet domain name, making them portable across different applications.": "Tus personalizaciones est\xE1n vinculadas a tu nombre de dominio .vet, lo que las hace port\xE1tiles a trav\xE9s de diferentes aplicaciones.",
|
|
13244
|
+
"Your domain has been unset successfully.": "Su dominio ha sido desactivado exitosamente.",
|
|
11926
13245
|
"Your embedded wallet": "Su billetera integrada",
|
|
11927
13246
|
"Your existing domains": "Tus dominios existentes",
|
|
11928
13247
|
"Your mobile browser blocked the login window.": "Tu navegador m\xF3vil bloque\xF3 la ventana de inicio de sesi\xF3n.",
|
|
@@ -11939,6 +13258,7 @@ var es_default = {
|
|
|
11939
13258
|
"Your wallet is secured by a private key. The private key is a unique code that allows you to access your wallet. It is stored in your browser and is used to sign transactions. The private key is never shared with anyone, including the VeChain Foundation.": "Tu billetera est\xE1 protegida por una clave privada. La clave privada es un c\xF3digo \xFAnico que te permite acceder a tu billetera. Se almacena en tu navegador y se utiliza para firmar transacciones. La clave privada nunca se comparte con nadie, incluida la Fundaci\xF3n VeChain.",
|
|
11940
13259
|
"Your wallet security depends on how you access it. With self-custody options like the VeWorld extension, mobile app, or hardware wallet, you have complete control over your private keys. This extension itself has no access to your private keys. When logging in with social accounts or VeChain, your wallet is created and secured by Privy and managed by VeChain, providing an easier onboarding experience while maintaining security.": "La seguridad de tu billetera depende de c\xF3mo accedas a ella. Con opciones de autocustodia como la extensi\xF3n VeWorld, la aplicaci\xF3n m\xF3vil o la billetera de hardware, tienes control total sobre tus claves privadas. Esta extensi\xF3n no tiene acceso a tus claves privadas. Al iniciar sesi\xF3n con cuentas sociales o VeChain, tu billetera es creada y asegurada por Privy y gestionada por VeChain, ofreciendo una experiencia de integraci\xF3n m\xE1s sencilla mientras se mantiene la seguridad.",
|
|
11941
13260
|
"Your {{name}}.veworld.vet name has been claimed successfully.": "Tu nombre {{name}}.veworld.vet ha sido reclamado exitosamente.",
|
|
13261
|
+
"Your {{name}}.{{domainType}} name has been claimed successfully.": "Su nombre {{name}}.{{domainType}} ha sido reclamado exitosamente.",
|
|
11942
13262
|
here: "aqu\xED",
|
|
11943
13263
|
of: "de",
|
|
11944
13264
|
on: "en",
|
|
@@ -11982,6 +13302,7 @@ var zh_default = {
|
|
|
11982
13302
|
"Address is required": "\u5730\u5740\u662F\u5FC5\u9700\u7684",
|
|
11983
13303
|
"All apps": "\u6240\u6709\u5E94\u7528",
|
|
11984
13304
|
"Already have an app account?": "\u5DF2\u7ECF\u6709\u4E00\u4E2A\u5E94\u7528\u8D26\u6237\uFF1F",
|
|
13305
|
+
"Already have an x2earn app wallet?": "\u5DF2\u7ECF\u6709\u4E00\u4E2Ax2earn\u5E94\u7528\u94B1\u5305\u4E86\u5417\uFF1F",
|
|
11985
13306
|
Amount: "\u91D1\u989D",
|
|
11986
13307
|
"Amount is required": "\u91D1\u989D\u662F\u5FC5\u9700\u7684",
|
|
11987
13308
|
"An X2Earn application in VeBetterDAO is a sustainable app that rewards users with B3TR tokens for eco-friendly actions. These apps must distribute B3TR, link user wallets, and provide proof of sustainable actions. They join VeBetterDAO through endorsement and participate in weekly token allocation rounds.": "VeBetterDAO \u7684 X2Earn \u5E94\u7528\u7A0B\u5E8F\u662F\u4E00\u6B3E\u53EF\u6301\u7EED\u53D1\u5C55\u7684\u5E94\u7528\u7A0B\u5E8F\uFF0C\u7528\u6237\u56E0\u751F\u6001\u53CB\u597D\u884C\u4E3A\u800C\u83B7\u5F97 B3TR \u4EE3\u5E01\u5956\u52B1\u3002\u8FD9\u4E9B\u5E94\u7528\u7A0B\u5E8F\u5FC5\u987B\u5206\u53D1 B3TR\uFF0C\u94FE\u63A5\u7528\u6237\u94B1\u5305\u5E76\u63D0\u4F9B\u53EF\u6301\u7EED\u884C\u52A8\u7684\u8BC1\u660E\u3002\u5B83\u4EEC\u901A\u8FC7\u80CC\u4E66\u52A0\u5165 VeBetterDAO\uFF0C\u5E76\u53C2\u4E0E\u6BCF\u5468\u7684\u4EE3\u5E01\u5206\u914D\u8F6E\u6B21\u3002",
|
|
@@ -11995,6 +13316,7 @@ var zh_default = {
|
|
|
11995
13316
|
"Are you sure you want to disconnect your wallet?": "\u60A8\u786E\u5B9A\u8981\u65AD\u5F00\u94B1\u5305\u8FDE\u63A5\u5417\uFF1F",
|
|
11996
13317
|
"Are you sure you want to set your domain name to": "\u60A8\u786E\u5B9A\u8981\u5C06\u60A8\u7684\u57DF\u540D\u8BBE\u7F6E\u4E3A",
|
|
11997
13318
|
"Are you sure you want to unlink {{accountType}} as a login method linked to {{accountDescription}}?": "\u60A8\u786E\u5B9A\u8981\u53D6\u6D88\u94FE\u63A5 {{accountDescription}} \u4E2D\u4F5C\u4E3A\u767B\u5F55\u65B9\u5F0F\u4E4B\u4E00\u7684 {{accountType}} \u5417\uFF1F",
|
|
13319
|
+
"Are you sure you want to unset your current domain?": "\u60A8\u786E\u5B9A\u8981\u53D6\u6D88\u8BBE\u7F6E\u5F53\u524D\u57DF\u540D\u5417\uFF1F",
|
|
11998
13320
|
Assets: "\u8D44\u4EA7",
|
|
11999
13321
|
At: "\u5728",
|
|
12000
13322
|
"B3TR is the incentive token of VeBetterDAO, built on VechainThor blockchain. It has a capped supply of 1 billion tokens, emitted weekly over 12 years. B3TR is used for rewards, governance, and backing VOT3 tokens 1:1. It supports sustainability applications and DAO treasury management.": "B3TR \u662F VeBetterDAO \u7684\u6FC0\u52B1\u6027\u4EE3\u5E01\uFF0C\u57FA\u4E8E VechainThor \u533A\u5757\u94FE\u6784\u5EFA\u3002\u5176\u4F9B\u5E94\u91CF\u4E0A\u9650\u4E3A 10 \u4EBF\u4E2A\u4EE3\u5E01\uFF0C\u5206 12 \u5E74\u6BCF\u5468\u53D1\u653E\u3002B3TR \u7528\u4E8E\u5956\u52B1\u3001\u6CBB\u7406\u4EE5\u53CA 1:1 \u652F\u6301 VOT3 \u4EE3\u5E01\u3002\u5B83\u652F\u6301\u53EF\u6301\u7EED\u6027\u5E94\u7528\u548C DAO \u8D22\u52A1\u7BA1\u7406\u3002",
|
|
@@ -12034,6 +13356,7 @@ var zh_default = {
|
|
|
12034
13356
|
Confirm: "\u786E\u8BA4",
|
|
12035
13357
|
"Confirm Changes": "\u786E\u8BA4\u66F4\u6539",
|
|
12036
13358
|
"Confirm Name": "\u786E\u8BA4\u59D3\u540D",
|
|
13359
|
+
"Confirm Unset Domain": "\u786E\u8BA4\u53D6\u6D88\u8BBE\u7F6E\u57DF\u540D",
|
|
12037
13360
|
"Confirm the transaction in your wallet to complete it.": "\u5728\u60A8\u7684\u94B1\u5305\u4E2D\u786E\u8BA4\u4EA4\u6613\u4EE5\u5B8C\u6210\u5B83\u3002",
|
|
12038
13361
|
"Confirm transaction": "\u786E\u8BA4\u4EA4\u6613",
|
|
12039
13362
|
"Connect Wallet": "\u8FDE\u63A5\u94B1\u5305",
|
|
@@ -12087,6 +13410,8 @@ var zh_default = {
|
|
|
12087
13410
|
Discord: "Discord",
|
|
12088
13411
|
"Display Name": "\u663E\u793A\u540D\u79F0",
|
|
12089
13412
|
"Display name must be less than 25 characters": "\u663E\u793A\u540D\u79F0\u5FC5\u987B\u5C11\u4E8E25\u4E2A\u5B57\u7B26",
|
|
13413
|
+
"Domain set": "\u57DF\u540D\u5DF2\u8BBE\u7F6E",
|
|
13414
|
+
"Domain unset": "\u57DF\u540D\u5DF2\u53D6\u6D88\u8BBE\u7F6E",
|
|
12090
13415
|
Done: "\u5B8C\u6210",
|
|
12091
13416
|
Ecosystem: "\u751F\u6001\u7CFB\u7EDF",
|
|
12092
13417
|
"Ecosystem Login": "\u751F\u6001\u7CFB\u7EDF\u767B\u5F55",
|
|
@@ -12119,6 +13444,7 @@ var zh_default = {
|
|
|
12119
13444
|
"For security reasons, you can manage your embedded wallet settings only on the {{appName}} platform.": "\u51FA\u4E8E\u5B89\u5168\u539F\u56E0\uFF0C\u60A8\u53EA\u80FD\u5728 {{appName}} \u5E73\u53F0\u4E0A\u7BA1\u7406\u5D4C\u5165\u5F0F\u94B1\u5305\u8BBE\u7F6E\u3002",
|
|
12120
13445
|
"Frequently asked questions": "\u5E38\u89C1\u95EE\u9898\u89E3\u7B54",
|
|
12121
13446
|
From: "\u81EA",
|
|
13447
|
+
General: "\u5E38\u89C4",
|
|
12122
13448
|
Github: "Github",
|
|
12123
13449
|
"Give a nickname to your wallet to easily identify it.": "\u7ED9\u60A8\u7684\u94B1\u5305\u8D77\u4E00\u4E2A\u6635\u79F0\uFF0C\u4EE5\u4FBF\u4E8E\u8BC6\u522B\u3002",
|
|
12124
13450
|
"Good news! Multiclause transactions are now fully supported for smart accounts. You can now enjoy a better user experience, lower gas costs, and enchanced security.": "\u597D\u6D88\u606F\uFF01\u591A\u6761\u6B3E\u4EA4\u6613\u73B0\u5728\u5DF2\u5B8C\u5168\u652F\u6301\u667A\u80FD\u8D26\u6237\u3002\u60A8\u73B0\u5728\u53EF\u4EE5\u4EAB\u53D7\u66F4\u597D\u7684\u7528\u6237\u4F53\u9A8C\u3001\u66F4\u4F4E\u7684\u71C3\u6C14\u6210\u672C\u548C\u66F4\u9AD8\u7684\u5B89\u5168\u6027\u3002",
|
|
@@ -12204,6 +13530,7 @@ var zh_default = {
|
|
|
12204
13530
|
"Node URL": "\u8282\u70B9 URL",
|
|
12205
13531
|
"Not available": "\u4E0D\u53EF\u7528",
|
|
12206
13532
|
Notifications: "\u901A\u77E5",
|
|
13533
|
+
"Only letters, numbers, and hyphens are allowed": "\u53EA\u5141\u8BB8\u4F7F\u7528\u5B57\u6BCD\u3001\u6570\u5B57\u548C\u8FDE\u5B57\u7B26",
|
|
12207
13534
|
Other: "\u5176\u4ED6",
|
|
12208
13535
|
"Other options": "\u5176\u4ED6\u9009\u9879",
|
|
12209
13536
|
Passkey: "\u901A\u884C\u5BC6\u94A5",
|
|
@@ -12244,6 +13571,7 @@ var zh_default = {
|
|
|
12244
13571
|
Remove: "\u79FB\u9664",
|
|
12245
13572
|
"Remove Login Method": "\u79FB\u9664\u767B\u5F55\u65B9\u5F0F",
|
|
12246
13573
|
"Remove from shortcuts": "\u4ECE\u5FEB\u6377\u65B9\u5F0F\u4E2D\u79FB\u9664",
|
|
13574
|
+
"Remove your current domain name": "\u79FB\u9664\u5F53\u524D\u57DF\u540D",
|
|
12247
13575
|
"Resend code": "\u91CD\u65B0\u53D1\u9001\u4EE3\u7801",
|
|
12248
13576
|
Retry: "\u91CD\u8BD5",
|
|
12249
13577
|
"Safari blocked the login window. Please try again, it should work now.": "Safari \u963B\u6B62\u4E86\u767B\u5F55\u7A97\u53E3\u3002\u8BF7\u518D\u6B21\u5C1D\u8BD5\uFF0C\u73B0\u5728\u5E94\u8BE5\u53EF\u4EE5\u6B63\u5E38\u5DE5\u4F5C\u3002",
|
|
@@ -12323,6 +13651,7 @@ var zh_default = {
|
|
|
12323
13651
|
"Token Contract Address": "\u4EE3\u5E01\u5408\u7EA6\u5730\u5740",
|
|
12324
13652
|
"Token already added": "\u4EE3\u5E01\u5DF2\u6DFB\u52A0",
|
|
12325
13653
|
"Tokens transferred successfully.": "\u4EE3\u5E01\u8F6C\u79FB\u6210\u529F\u3002",
|
|
13654
|
+
Tools: "\u5DE5\u5177",
|
|
12326
13655
|
"Total balance": "\u603B\u4F59\u989D",
|
|
12327
13656
|
"Transaction completed!": "\u4EA4\u6613\u5B8C\u6210\uFF01",
|
|
12328
13657
|
"Transaction failed": "\u4EA4\u6613\u5931\u8D25",
|
|
@@ -12342,6 +13671,11 @@ var zh_default = {
|
|
|
12342
13671
|
"Unknown error": "\u672A\u77E5\u9519\u8BEF",
|
|
12343
13672
|
"Unknown status": "\u672A\u77E5\u72B6\u6001",
|
|
12344
13673
|
"Unlink Login Method": "\u53D6\u6D88\u94FE\u63A5\u767B\u5F55\u65B9\u5F0F",
|
|
13674
|
+
"Unset current domain": "\u53D6\u6D88\u8BBE\u7F6E\u5F53\u524D\u57DF\u540D",
|
|
13675
|
+
"Unsetting current domain": "\u6B63\u5728\u53D6\u6D88\u8BBE\u7F6E\u5F53\u524D\u57DF\u540D",
|
|
13676
|
+
"Unsetting current domain...": "\u6B63\u5728\u53D6\u6D88\u8BBE\u7F6E\u5F53\u524D\u57DF\u540D...",
|
|
13677
|
+
"Unsetting your current VeChain nickname": "\u53D6\u6D88\u8BBE\u7F6E\u60A8\u5F53\u524D\u7684VeChain\u6635\u79F0",
|
|
13678
|
+
"Unsetting your current domain": "\u53D6\u6D88\u8BBE\u7F6E\u60A8\u5F53\u524D\u7684\u57DF\u540D",
|
|
12345
13679
|
"Update profile image": "\u66F4\u65B0\u8D44\u6599\u56FE\u7247",
|
|
12346
13680
|
"Upgrade Now": "\u7ACB\u5373\u5347\u7EA7",
|
|
12347
13681
|
"Upgrade Smart Account to V3": "\u5C06\u667A\u80FD\u8D26\u6237\u5347\u7EA7\u5230V3",
|
|
@@ -12409,8 +13743,10 @@ var zh_default = {
|
|
|
12409
13743
|
"You own a Smart Account and it has priority over your wallet.": "\u60A8\u62E5\u6709\u4E00\u4E2A\u667A\u80FD\u8D26\u6237\uFF0C\u5B83\u4F18\u5148\u4E8E\u60A8\u7684\u94B1\u5305\u3002",
|
|
12410
13744
|
"Your account has been successfully upgraded to the latest version. You can now enjoy a better user experience, lower gas costs, and enhanced security.": "\u60A8\u7684\u8D26\u6237\u5DF2\u6210\u529F\u5347\u7EA7\u5230\u6700\u65B0\u7248\u672C\u3002\u60A8\u73B0\u5728\u53EF\u4EE5\u4EAB\u53D7\u66F4\u597D\u7684\u7528\u6237\u4F53\u9A8C\u3001\u66F4\u4F4E\u7684\u71C3\u6C14\u8D39\u7528\u548C\u589E\u5F3A\u7684\u5B89\u5168\u6027\u3002",
|
|
12411
13745
|
"Your accounts": "\u60A8\u7684\u8D26\u6237",
|
|
13746
|
+
"Your address has been successfully set to {{name}}.{{domainType}}.": "\u60A8\u7684\u5730\u5740\u5DF2\u6210\u529F\u8BBE\u7F6E\u4E3A{{name}}.{{domainType}}\u3002",
|
|
12412
13747
|
"Your changes have been saved successfully.": "\u60A8\u7684\u66F4\u6539\u5DF2\u6210\u529F\u4FDD\u5B58\u3002",
|
|
12413
13748
|
"Your customizations are linked to your .vet domain name, making them portable across different applications.": "\u60A8\u7684\u81EA\u5B9A\u4E49\u8BBE\u7F6E\u4E0E\u60A8\u7684.vet\u57DF\u540D\u76F8\u5173\u8054\uFF0C\u4F7F\u5176\u80FD\u591F\u5728\u4E0D\u540C\u7684\u5E94\u7528\u7A0B\u5E8F\u4E2D\u6D41\u7545\u4F7F\u7528\u3002",
|
|
13749
|
+
"Your domain has been unset successfully.": "\u60A8\u7684\u57DF\u540D\u5DF2\u6210\u529F\u53D6\u6D88\u8BBE\u7F6E\u3002",
|
|
12414
13750
|
"Your embedded wallet": "\u60A8\u7684\u5D4C\u5165\u94B1\u5305",
|
|
12415
13751
|
"Your existing domains": "\u60A8\u73B0\u6709\u7684\u57DF\u540D",
|
|
12416
13752
|
"Your mobile browser blocked the login window.": "\u60A8\u7684\u79FB\u52A8\u6D4F\u89C8\u5668\u963B\u6B62\u4E86\u767B\u5F55\u7A97\u53E3\u3002",
|
|
@@ -12427,6 +13763,7 @@ var zh_default = {
|
|
|
12427
13763
|
"Your wallet is secured by a private key. The private key is a unique code that allows you to access your wallet. It is stored in your browser and is used to sign transactions. The private key is never shared with anyone, including the VeChain Foundation.": "\u60A8\u7684\u94B1\u5305\u7531\u79C1\u94A5\u4FDD\u62A4\u3002\u79C1\u94A5\u662F\u4E00\u4E2A\u72EC\u7279\u7684\u4EE3\u7801\uFF0C\u5141\u8BB8\u60A8\u8BBF\u95EE\u60A8\u7684\u94B1\u5305\u3002\u5B83\u5B58\u50A8\u5728\u60A8\u7684\u6D4F\u89C8\u5668\u4E2D\uFF0C\u7528\u4E8E\u7B7E\u7F72\u4EA4\u6613\u3002\u79C1\u94A5\u4E0D\u4F1A\u4E0E\u4EFB\u4F55\u4EBA\u5171\u4EAB\uFF0C\u5305\u62EC\u552F\u94FE\u57FA\u91D1\u4F1A\u3002",
|
|
12428
13764
|
"Your wallet security depends on how you access it. With self-custody options like the VeWorld extension, mobile app, or hardware wallet, you have complete control over your private keys. This extension itself has no access to your private keys. When logging in with social accounts or VeChain, your wallet is created and secured by Privy and managed by VeChain, providing an easier onboarding experience while maintaining security.": "\u60A8\u7684\u94B1\u5305\u5B89\u5168\u6027\u53D6\u51B3\u4E8E\u60A8\u5982\u4F55\u8BBF\u95EE\u5B83\u3002\u901A\u8FC7 VeWorld \u63D2\u4EF6\u3001\u79FB\u52A8\u5E94\u7528\u6216\u786C\u4EF6\u94B1\u5305\u7B49\u81EA\u6211\u6258\u7BA1\u9009\u9879\uFF0C\u60A8\u53EF\u4EE5\u5B8C\u5168\u63A7\u5236\u60A8\u7684\u79C1\u94A5\u3002\u6B64\u63D2\u4EF6\u672C\u8EAB\u65E0\u6CD5\u8BBF\u95EE\u60A8\u7684\u79C1\u94A5\u3002\u4F7F\u7528\u793E\u4EA4\u8D26\u6237\u6216\u552F\u94FE\u767B\u5F55\u65F6\uFF0C\u60A8\u7684\u94B1\u5305\u7531 Privy \u521B\u5EFA\u548C\u4FDD\u62A4\uFF0C\u5E76\u7531\u552F\u94FE\u7BA1\u7406\uFF0C\u63D0\u4F9B\u66F4\u7B80\u5355\u7684\u5165\u95E8\u4F53\u9A8C\uFF0C\u540C\u65F6\u4FDD\u6301\u5B89\u5168\u6027\u3002",
|
|
12429
13765
|
"Your {{name}}.veworld.vet name has been claimed successfully.": "\u60A8\u7684 {{name}}.veworld.vet \u540D\u5B57\u5DF2\u6210\u529F\u6CE8\u518C\u3002",
|
|
13766
|
+
"Your {{name}}.{{domainType}} name has been claimed successfully.": "\u60A8\u7684{{name}}.{{domainType}}\u540D\u79F0\u5DF2\u6210\u529F\u7533\u8BF7\u3002",
|
|
12430
13767
|
here: "\u8FD9\u91CC",
|
|
12431
13768
|
of: "\u7684",
|
|
12432
13769
|
on: "\u5F00\u542F",
|
|
@@ -12470,6 +13807,7 @@ var ja_default = {
|
|
|
12470
13807
|
"Address is required": "\u30A2\u30C9\u30EC\u30B9\u304C\u5FC5\u8981\u3067\u3059",
|
|
12471
13808
|
"All apps": "\u3059\u3079\u3066\u306E\u30A2\u30D7\u30EA",
|
|
12472
13809
|
"Already have an app account?": "\u65E2\u306B\u30A2\u30D7\u30EA\u306E\u30A2\u30AB\u30A6\u30F3\u30C8\u3092\u304A\u6301\u3061\u3067\u3059\u304B\uFF1F",
|
|
13810
|
+
"Already have an x2earn app wallet?": "\u65E2\u306Bx2earn\u30A2\u30D7\u30EA\u306E\u30A6\u30A9\u30EC\u30C3\u30C8\u3092\u304A\u6301\u3061\u3067\u3059\u304B\uFF1F",
|
|
12473
13811
|
Amount: "\u91D1\u984D",
|
|
12474
13812
|
"Amount is required": "\u91D1\u984D\u304C\u5FC5\u8981\u3067\u3059",
|
|
12475
13813
|
"An X2Earn application in VeBetterDAO is a sustainable app that rewards users with B3TR tokens for eco-friendly actions. These apps must distribute B3TR, link user wallets, and provide proof of sustainable actions. They join VeBetterDAO through endorsement and participate in weekly token allocation rounds.": "VeBetterDAO\u306EX2Earn\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u306F\u3001\u74B0\u5883\u306B\u512A\u3057\u3044\u884C\u52D5\u3092\u3068\u308B\u30E6\u30FC\u30B6\u30FC\u306BB3TR\u30C8\u30FC\u30AF\u30F3\u3092\u5831\u916C\u3068\u3057\u3066\u63D0\u4F9B\u3059\u308B\u6301\u7D9A\u53EF\u80FD\u306A\u30A2\u30D7\u30EA\u3067\u3059\u3002\u3053\u308C\u3089\u306E\u30A2\u30D7\u30EA\u306FB3TR\u3092\u914D\u5E03\u3057\u3001\u30E6\u30FC\u30B6\u306E\u30A6\u30A9\u30EC\u30C3\u30C8\u3092\u30EA\u30F3\u30AF\u3057\u3001\u6301\u7D9A\u53EF\u80FD\u306A\u884C\u52D5\u306E\u8A3C\u660E\u3092\u63D0\u4F9B\u3057\u306A\u3051\u308C\u3070\u306A\u308A\u307E\u305B\u3093\u3002\u3053\u308C\u3089\u306F\u63A8\u85A6\u3092\u901A\u3058\u3066VeBetterDAO\u306B\u53C2\u52A0\u3057\u3001\u9031\u3054\u3068\u306E\u30C8\u30FC\u30AF\u30F3\u5272\u308A\u5F53\u3066\u30E9\u30A6\u30F3\u30C9\u306B\u53C2\u52A0\u3057\u307E\u3059\u3002",
|
|
@@ -12483,6 +13821,7 @@ var ja_default = {
|
|
|
12483
13821
|
"Are you sure you want to disconnect your wallet?": "\u30A6\u30A9\u30EC\u30C3\u30C8\u3092\u5207\u65AD\u3057\u3066\u3082\u3088\u308D\u3057\u3044\u3067\u3059\u304B\uFF1F",
|
|
12484
13822
|
"Are you sure you want to set your domain name to": "\u30C9\u30E1\u30A4\u30F3\u540D\u3092\u8A2D\u5B9A\u3057\u3066\u3082\u3088\u308D\u3057\u3044\u3067\u3059\u304B",
|
|
12485
13823
|
"Are you sure you want to unlink {{accountType}} as a login method linked to {{accountDescription}}?": "{{accountDescription}}\u306B\u30EA\u30F3\u30AF\u3055\u308C\u305F\u30ED\u30B0\u30A4\u30F3\u65B9\u6CD5\u3068\u3057\u3066{{accountType}}\u306E\u30EA\u30F3\u30AF\u3092\u89E3\u9664\u3057\u3066\u3082\u3088\u308D\u3057\u3044\u3067\u3059\u304B\uFF1F",
|
|
13824
|
+
"Are you sure you want to unset your current domain?": "\u73FE\u5728\u306E\u30C9\u30E1\u30A4\u30F3\u3092\u89E3\u9664\u3057\u3066\u3082\u3088\u308D\u3057\u3044\u3067\u3059\u304B\uFF1F",
|
|
12486
13825
|
Assets: "\u8CC7\u7523",
|
|
12487
13826
|
At: "\u3067",
|
|
12488
13827
|
"B3TR is the incentive token of VeBetterDAO, built on VechainThor blockchain. It has a capped supply of 1 billion tokens, emitted weekly over 12 years. B3TR is used for rewards, governance, and backing VOT3 tokens 1:1. It supports sustainability applications and DAO treasury management.": "B3TR\u306FVeBetterDAO\u306E\u30A4\u30F3\u30BB\u30F3\u30C6\u30A3\u30D6\u30C8\u30FC\u30AF\u30F3\u3067\u3042\u308A\u3001VechainThor\u30D6\u30ED\u30C3\u30AF\u30C1\u30A7\u30FC\u30F3\u4E0A\u306B\u69CB\u7BC9\u3055\u308C\u3066\u3044\u307E\u3059\u3002\u7DCF\u4F9B\u7D66\u91CF\u306F10\u5104\u30C8\u30FC\u30AF\u30F3\u306B\u9650\u5B9A\u3055\u308C\u300112\u5E74\u9593\u306B\u308F\u305F\u3063\u3066\u6BCE\u9031\u767A\u884C\u3055\u308C\u307E\u3059\u3002B3TR\u306F\u5831\u916C\u3001\u30AC\u30D0\u30CA\u30F3\u30B9\u3001\u304A\u3088\u3073VOT3\u30C8\u30FC\u30AF\u30F3\u306E1:1\u306E\u4FDD\u8B77\u306B\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002\u305D\u308C\u306F\u30B5\u30B9\u30C6\u30CA\u30D3\u30EA\u30C6\u30A3\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u3068DAO\u30C8\u30EC\u30B8\u30E3\u30EA\u7BA1\u7406\u3092\u30B5\u30DD\u30FC\u30C8\u3057\u307E\u3059\u3002",
|
|
@@ -12522,6 +13861,7 @@ var ja_default = {
|
|
|
12522
13861
|
Confirm: "\u78BA\u8A8D",
|
|
12523
13862
|
"Confirm Changes": "\u5909\u66F4\u3092\u78BA\u8A8D",
|
|
12524
13863
|
"Confirm Name": "\u540D\u524D\u3092\u78BA\u8A8D",
|
|
13864
|
+
"Confirm Unset Domain": "\u30C9\u30E1\u30A4\u30F3\u89E3\u9664\u3092\u78BA\u8A8D",
|
|
12525
13865
|
"Confirm the transaction in your wallet to complete it.": "\u30A6\u30A9\u30EC\u30C3\u30C8\u3067\u30C8\u30E9\u30F3\u30B6\u30AF\u30B7\u30E7\u30F3\u3092\u78BA\u8A8D\u3057\u3066\u5B8C\u4E86\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
|
|
12526
13866
|
"Confirm transaction": "\u53D6\u5F15\u3092\u78BA\u8A8D",
|
|
12527
13867
|
"Connect Wallet": "\u30A6\u30A9\u30EC\u30C3\u30C8\u3092\u63A5\u7D9A",
|
|
@@ -12575,6 +13915,8 @@ var ja_default = {
|
|
|
12575
13915
|
Discord: "\u30C7\u30A3\u30B9\u30B3\u30FC\u30C9",
|
|
12576
13916
|
"Display Name": "\u8868\u793A\u540D",
|
|
12577
13917
|
"Display name must be less than 25 characters": "\u8868\u793A\u540D\u306F25\u6587\u5B57\u672A\u6E80\u3067\u306A\u3051\u308C\u3070\u306A\u308A\u307E\u305B\u3093",
|
|
13918
|
+
"Domain set": "\u30C9\u30E1\u30A4\u30F3\u304C\u8A2D\u5B9A\u3055\u308C\u307E\u3057\u305F",
|
|
13919
|
+
"Domain unset": "\u30C9\u30E1\u30A4\u30F3\u304C\u89E3\u9664\u3055\u308C\u307E\u3057\u305F",
|
|
12578
13920
|
Done: "\u5B8C\u4E86",
|
|
12579
13921
|
Ecosystem: "\u30A8\u30B3\u30B7\u30B9\u30C6\u30E0",
|
|
12580
13922
|
"Ecosystem Login": "\u30A8\u30B3\u30B7\u30B9\u30C6\u30E0\u306B\u30ED\u30B0\u30A4\u30F3",
|
|
@@ -12607,6 +13949,7 @@ var ja_default = {
|
|
|
12607
13949
|
"For security reasons, you can manage your embedded wallet settings only on the {{appName}} platform.": "\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u4E0A\u306E\u7406\u7531\u304B\u3089\u3001\u57CB\u3081\u8FBC\u307F\u30A6\u30A9\u30EC\u30C3\u30C8\u306E\u8A2D\u5B9A\u306F{{appName}}\u30D7\u30E9\u30C3\u30C8\u30D5\u30A9\u30FC\u30E0\u3067\u306E\u307F\u7BA1\u7406\u3067\u304D\u307E\u3059\u3002",
|
|
12608
13950
|
"Frequently asked questions": "\u3088\u304F\u3042\u308B\u8CEA\u554F",
|
|
12609
13951
|
From: "\u9001\u4FE1\u5143",
|
|
13952
|
+
General: "\u4E00\u822C",
|
|
12610
13953
|
Github: "\u30AE\u30C3\u30C8\u30CF\u30D6",
|
|
12611
13954
|
"Give a nickname to your wallet to easily identify it.": "\u30A6\u30A9\u30EC\u30C3\u30C8\u306B\u30CB\u30C3\u30AF\u30CD\u30FC\u30E0\u3092\u4ED8\u3051\u3066\u7C21\u5358\u306B\u8B58\u5225\u3057\u307E\u3057\u3087\u3046\u3002",
|
|
12612
13955
|
"Good news! Multiclause transactions are now fully supported for smart accounts. You can now enjoy a better user experience, lower gas costs, and enchanced security.": "\u6717\u5831\u3067\u3059\uFF01\u30B9\u30DE\u30FC\u30C8\u30A2\u30AB\u30A6\u30F3\u30C8\u306E\u305F\u3081\u306B\u3001\u30DE\u30EB\u30C1\u30AF\u30ED\u30FC\u30BA\u53D6\u5F15\u304C\u5B8C\u5168\u306B\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u308B\u3088\u3046\u306B\u306A\u308A\u307E\u3057\u305F\u3002\u3053\u308C\u3067\u3001\u3088\u308A\u826F\u3044\u30E6\u30FC\u30B6\u30FC\u4F53\u9A13\u3001\u4F4E\u30B3\u30B9\u30C8\u306E\u30AC\u30B9\u3001\u305D\u3057\u3066\u5F37\u5316\u3055\u308C\u305F\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u3092\u697D\u3057\u3080\u3053\u3068\u304C\u3067\u304D\u307E\u3059\u3002",
|
|
@@ -12692,6 +14035,7 @@ var ja_default = {
|
|
|
12692
14035
|
"Node URL": "\u30CE\u30FC\u30C9URL",
|
|
12693
14036
|
"Not available": "\u5229\u7528\u4E0D\u53EF",
|
|
12694
14037
|
Notifications: "\u901A\u77E5",
|
|
14038
|
+
"Only letters, numbers, and hyphens are allowed": "\u4F7F\u7528\u3067\u304D\u308B\u306E\u306F\u6587\u5B57\u3001\u6570\u5B57\u3001\u30CF\u30A4\u30D5\u30F3\u306E\u307F\u3067\u3059",
|
|
12695
14039
|
Other: "\u305D\u306E\u4ED6",
|
|
12696
14040
|
"Other options": "\u305D\u306E\u4ED6\u306E\u30AA\u30D7\u30B7\u30E7\u30F3",
|
|
12697
14041
|
Passkey: "\u30D1\u30B9\u30AD\u30FC",
|
|
@@ -12732,6 +14076,7 @@ var ja_default = {
|
|
|
12732
14076
|
Remove: "\u524A\u9664",
|
|
12733
14077
|
"Remove Login Method": "\u30ED\u30B0\u30A4\u30F3\u65B9\u6CD5\u306E\u524A\u9664",
|
|
12734
14078
|
"Remove from shortcuts": "\u30B7\u30E7\u30FC\u30C8\u30AB\u30C3\u30C8\u304B\u3089\u524A\u9664",
|
|
14079
|
+
"Remove your current domain name": "\u73FE\u5728\u306E\u30C9\u30E1\u30A4\u30F3\u540D\u3092\u524A\u9664\u3059\u308B",
|
|
12735
14080
|
"Resend code": "\u30B3\u30FC\u30C9\u3092\u518D\u9001\u4FE1",
|
|
12736
14081
|
Retry: "\u518D\u8A66\u884C",
|
|
12737
14082
|
"Safari blocked the login window. Please try again, it should work now.": "Safari\u304C\u30ED\u30B0\u30A4\u30F3\u30A6\u30A3\u30F3\u30C9\u30A6\u3092\u30D6\u30ED\u30C3\u30AF\u3057\u307E\u3057\u305F\u3002\u3082\u3046\u4E00\u5EA6\u304A\u8A66\u3057\u304F\u3060\u3055\u3044\u3002\u4ECA\u5EA6\u306F\u3046\u307E\u304F\u3044\u304F\u306F\u305A\u3067\u3059\u3002",
|
|
@@ -12811,6 +14156,7 @@ var ja_default = {
|
|
|
12811
14156
|
"Token Contract Address": "\u30C8\u30FC\u30AF\u30F3\u5951\u7D04\u30A2\u30C9\u30EC\u30B9",
|
|
12812
14157
|
"Token already added": "\u30C8\u30FC\u30AF\u30F3\u306F\u65E2\u306B\u8FFD\u52A0\u3055\u308C\u3066\u3044\u307E\u3059",
|
|
12813
14158
|
"Tokens transferred successfully.": "\u30C8\u30FC\u30AF\u30F3\u306E\u8EE2\u9001\u304C\u6210\u529F\u3057\u307E\u3057\u305F\u3002",
|
|
14159
|
+
Tools: "\u30C4\u30FC\u30EB",
|
|
12814
14160
|
"Total balance": "\u7DCF\u6B8B\u9AD8",
|
|
12815
14161
|
"Transaction completed!": "\u53D6\u5F15\u304C\u5B8C\u4E86\u3057\u307E\u3057\u305F\uFF01",
|
|
12816
14162
|
"Transaction failed": "\u53D6\u5F15\u306B\u5931\u6557\u3057\u307E\u3057\u305F",
|
|
@@ -12830,6 +14176,11 @@ var ja_default = {
|
|
|
12830
14176
|
"Unknown error": "\u4E0D\u660E\u306A\u30A8\u30E9\u30FC",
|
|
12831
14177
|
"Unknown status": "\u4E0D\u660E\u306A\u72B6\u614B",
|
|
12832
14178
|
"Unlink Login Method": "\u30ED\u30B0\u30A4\u30F3\u65B9\u6CD5\u306E\u30EA\u30F3\u30AF\u89E3\u9664",
|
|
14179
|
+
"Unset current domain": "\u73FE\u5728\u306E\u30C9\u30E1\u30A4\u30F3\u3092\u89E3\u9664\u3059\u308B",
|
|
14180
|
+
"Unsetting current domain": "\u73FE\u5728\u306E\u30C9\u30E1\u30A4\u30F3\u3092\u89E3\u9664\u4E2D",
|
|
14181
|
+
"Unsetting current domain...": "\u73FE\u5728\u306E\u30C9\u30E1\u30A4\u30F3\u3092\u89E3\u9664\u4E2D...",
|
|
14182
|
+
"Unsetting your current VeChain nickname": "\u73FE\u5728\u306EVeChain\u30CB\u30C3\u30AF\u30CD\u30FC\u30E0\u3092\u89E3\u9664\u4E2D",
|
|
14183
|
+
"Unsetting your current domain": "\u73FE\u5728\u306E\u30C9\u30E1\u30A4\u30F3\u3092\u89E3\u9664\u4E2D",
|
|
12833
14184
|
"Update profile image": "\u30D7\u30ED\u30D5\u30A3\u30FC\u30EB\u753B\u50CF\u3092\u66F4\u65B0",
|
|
12834
14185
|
"Upgrade Now": "\u4ECA\u3059\u3050\u30A2\u30C3\u30D7\u30B0\u30EC\u30FC\u30C9",
|
|
12835
14186
|
"Upgrade Smart Account to V3": "\u30B9\u30DE\u30FC\u30C8\u30A2\u30AB\u30A6\u30F3\u30C8\u3092V3\u306B\u30A2\u30C3\u30D7\u30B0\u30EC\u30FC\u30C9",
|
|
@@ -12897,8 +14248,10 @@ var ja_default = {
|
|
|
12897
14248
|
"You own a Smart Account and it has priority over your wallet.": "\u3042\u306A\u305F\u306F\u30B9\u30DE\u30FC\u30C8\u30A2\u30AB\u30A6\u30F3\u30C8\u3092\u6240\u6709\u3057\u3066\u304A\u308A\u3001\u305D\u308C\u306F\u3042\u306A\u305F\u306E\u30A6\u30A9\u30EC\u30C3\u30C8\u3088\u308A\u512A\u5148\u3055\u308C\u307E\u3059\u3002",
|
|
12898
14249
|
"Your account has been successfully upgraded to the latest version. You can now enjoy a better user experience, lower gas costs, and enhanced security.": "\u3042\u306A\u305F\u306E\u30A2\u30AB\u30A6\u30F3\u30C8\u306F\u6700\u65B0\u30D0\u30FC\u30B8\u30E7\u30F3\u306B\u6B63\u5E38\u306B\u30A2\u30C3\u30D7\u30B0\u30EC\u30FC\u30C9\u3055\u308C\u307E\u3057\u305F\u3002\u3088\u308A\u826F\u3044\u30E6\u30FC\u30B6\u30FC\u4F53\u9A13\u3001\u4F4E\u3044\u30AC\u30B9\u30B3\u30B9\u30C8\u3001\u5F37\u5316\u3055\u308C\u305F\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u3092\u304A\u697D\u3057\u307F\u304F\u3060\u3055\u3044\u3002",
|
|
12899
14250
|
"Your accounts": "\u3042\u306A\u305F\u306E\u30A2\u30AB\u30A6\u30F3\u30C8",
|
|
14251
|
+
"Your address has been successfully set to {{name}}.{{domainType}}.": "\u3042\u306A\u305F\u306E\u30A2\u30C9\u30EC\u30B9\u306F{{name}}.{{domainType}}\u306B\u6B63\u5E38\u306B\u8A2D\u5B9A\u3055\u308C\u307E\u3057\u305F\u3002",
|
|
12900
14252
|
"Your changes have been saved successfully.": "\u5909\u66F4\u306F\u6B63\u5E38\u306B\u4FDD\u5B58\u3055\u308C\u307E\u3057\u305F\u3002",
|
|
12901
14253
|
"Your customizations are linked to your .vet domain name, making them portable across different applications.": "\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA\u306F.vet\u30C9\u30E1\u30A4\u30F3\u540D\u306B\u30EA\u30F3\u30AF\u3055\u308C\u3066\u3044\u308B\u305F\u3081\u3001\u7570\u306A\u308B\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u9593\u3067\u6301\u3061\u904B\u3079\u307E\u3059\u3002",
|
|
14254
|
+
"Your domain has been unset successfully.": "\u3042\u306A\u305F\u306E\u30C9\u30E1\u30A4\u30F3\u306F\u6B63\u5E38\u306B\u89E3\u9664\u3055\u308C\u307E\u3057\u305F\u3002",
|
|
12902
14255
|
"Your embedded wallet": "\u3042\u306A\u305F\u306E\u57CB\u3081\u8FBC\u307F\u30A6\u30A9\u30EC\u30C3\u30C8",
|
|
12903
14256
|
"Your existing domains": "\u65E2\u5B58\u306E\u30C9\u30E1\u30A4\u30F3",
|
|
12904
14257
|
"Your mobile browser blocked the login window.": "\u30E2\u30D0\u30A4\u30EB\u30D6\u30E9\u30A6\u30B6\u304C\u30ED\u30B0\u30A4\u30F3\u30A6\u30A3\u30F3\u30C9\u30A6\u3092\u30D6\u30ED\u30C3\u30AF\u3057\u307E\u3057\u305F\u3002",
|
|
@@ -12915,6 +14268,7 @@ var ja_default = {
|
|
|
12915
14268
|
"Your wallet is secured by a private key. The private key is a unique code that allows you to access your wallet. It is stored in your browser and is used to sign transactions. The private key is never shared with anyone, including the VeChain Foundation.": "\u30A6\u30A9\u30EC\u30C3\u30C8\u306F\u79D8\u5BC6\u9375\u306B\u3088\u3063\u3066\u4FDD\u8B77\u3055\u308C\u3066\u3044\u307E\u3059\u3002\u79D8\u5BC6\u9375\u306F\u30A6\u30A9\u30EC\u30C3\u30C8\u3078\u306E\u30A2\u30AF\u30BB\u30B9\u3092\u53EF\u80FD\u306B\u3059\u308B\u4E00\u610F\u306E\u30B3\u30FC\u30C9\u3067\u3059\u3002\u3053\u308C\u306F\u30D6\u30E9\u30A6\u30B6\u306B\u4FDD\u5B58\u3055\u308C\u3001\u30C8\u30E9\u30F3\u30B6\u30AF\u30B7\u30E7\u30F3\u306E\u7F72\u540D\u306B\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002\u79D8\u5BC6\u9375\u306F\u3001VeChain\u306E\u8CA1\u56E3\u3092\u542B\u3080\u8AB0\u3068\u3082\u5171\u6709\u3055\u308C\u307E\u305B\u3093\u3002",
|
|
12916
14269
|
"Your wallet security depends on how you access it. With self-custody options like the VeWorld extension, mobile app, or hardware wallet, you have complete control over your private keys. This extension itself has no access to your private keys. When logging in with social accounts or VeChain, your wallet is created and secured by Privy and managed by VeChain, providing an easier onboarding experience while maintaining security.": "\u30A6\u30A9\u30EC\u30C3\u30C8\u306E\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u306F\u3001\u30A2\u30AF\u30BB\u30B9\u65B9\u6CD5\u306B\u4F9D\u5B58\u3057\u307E\u3059\u3002VeWorld\u62E1\u5F35\u6A5F\u80FD\u3084\u30E2\u30D0\u30A4\u30EB\u30A2\u30D7\u30EA\u3001\u30CF\u30FC\u30C9\u30A6\u30A7\u30A2\u30A6\u30A9\u30EC\u30C3\u30C8\u306A\u3069\u306E\u81EA\u5DF1\u7BA1\u7406\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u4F7F\u7528\u3059\u308B\u3053\u3068\u3067\u3001\u79D8\u5BC6\u9375\u3092\u5B8C\u5168\u306B\u7BA1\u7406\u3067\u304D\u307E\u3059\u3002\u3053\u306E\u62E1\u5F35\u6A5F\u80FD\u81EA\u4F53\u306F\u3042\u306A\u305F\u306E\u79D8\u5BC6\u9375\u306B\u30A2\u30AF\u30BB\u30B9\u3059\u308B\u3053\u3068\u306F\u3042\u308A\u307E\u305B\u3093\u3002\u30BD\u30FC\u30B7\u30E3\u30EB\u30A2\u30AB\u30A6\u30F3\u30C8\u3084VeChain\u3092\u4F7F\u7528\u3057\u3066\u30ED\u30B0\u30A4\u30F3\u3059\u308B\u5834\u5408\u3001\u30A6\u30A9\u30EC\u30C3\u30C8\u306FPrivy\u306B\u3088\u3063\u3066\u4F5C\u6210\u3055\u308C\u3001\u4FDD\u8B77\u3055\u308C\u3001VeChain\u306B\u3088\u3063\u3066\u7BA1\u7406\u3055\u308C\u3001\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u3092\u7DAD\u6301\u3057\u3064\u3064\u5BB9\u6613\u306A\u30AA\u30F3\u30DC\u30FC\u30C7\u30A3\u30F3\u30B0\u4F53\u9A13\u3092\u63D0\u4F9B\u3057\u307E\u3059\u3002",
|
|
12917
14270
|
"Your {{name}}.veworld.vet name has been claimed successfully.": "\u3042\u306A\u305F\u306E{{name}}.veworld.vet\u540D\u304C\u6B63\u5E38\u306B\u8ACB\u6C42\u3055\u308C\u307E\u3057\u305F\u3002",
|
|
14271
|
+
"Your {{name}}.{{domainType}} name has been claimed successfully.": "\u3042\u306A\u305F\u306E{{name}}.{{domainType}}\u540D\u306F\u6B63\u5E38\u306B\u53D6\u5F97\u3055\u308C\u307E\u3057\u305F\u3002",
|
|
12918
14272
|
here: "\u3053\u3061\u3089",
|
|
12919
14273
|
of: "\u306E",
|
|
12920
14274
|
on: "\u4E0A",
|
|
@@ -12984,6 +14338,10 @@ var i18n_default = i18n;
|
|
|
12984
14338
|
var FAQContent = ({ onGoBack }) => {
|
|
12985
14339
|
const { network, darkMode: isDark } = useVeChainKitConfig();
|
|
12986
14340
|
const { i18n: i18n2, t } = useTranslation();
|
|
14341
|
+
const handleLanguageChange = (e) => {
|
|
14342
|
+
Analytics.settings.language.changed(e.target.value, i18n2.language);
|
|
14343
|
+
i18n2.changeLanguage(e.target.value);
|
|
14344
|
+
};
|
|
12987
14345
|
return /* @__PURE__ */ jsxs(ScrollToTopWrapper, { children: [
|
|
12988
14346
|
/* @__PURE__ */ jsxs(StickyHeaderContainer, { children: [
|
|
12989
14347
|
/* @__PURE__ */ jsx(ModalHeader, { children: t("Help") }),
|
|
@@ -13028,7 +14386,7 @@ var FAQContent = ({ onGoBack }) => {
|
|
|
13028
14386
|
size: "sm",
|
|
13029
14387
|
width: "auto",
|
|
13030
14388
|
value: i18n2.language,
|
|
13031
|
-
onChange:
|
|
14389
|
+
onChange: handleLanguageChange,
|
|
13032
14390
|
bg: isDark ? "whiteAlpha.200" : "gray.100",
|
|
13033
14391
|
borderColor: isDark ? "whiteAlpha.300" : "gray.200",
|
|
13034
14392
|
_hover: {
|
|
@@ -13066,7 +14424,8 @@ var FAQContent = ({ onGoBack }) => {
|
|
|
13066
14424
|
] });
|
|
13067
14425
|
};
|
|
13068
14426
|
var CustomizationContent = ({
|
|
13069
|
-
setCurrentContent
|
|
14427
|
+
setCurrentContent,
|
|
14428
|
+
initialContentSource = "profile"
|
|
13070
14429
|
}) => {
|
|
13071
14430
|
const { t } = useTranslation();
|
|
13072
14431
|
const { network } = useVeChainKitConfig();
|
|
@@ -13135,9 +14494,14 @@ var CustomizationContent = ({
|
|
|
13135
14494
|
network.type
|
|
13136
14495
|
);
|
|
13137
14496
|
setAvatarIpfsHash(ipfsHash);
|
|
14497
|
+
Analytics.customization.imageUploaded(true);
|
|
13138
14498
|
} catch (error) {
|
|
13139
14499
|
console.error("Error uploading image:", error);
|
|
13140
14500
|
setPreviewImageUrl(null);
|
|
14501
|
+
Analytics.customization.imageUploaded(
|
|
14502
|
+
false,
|
|
14503
|
+
error instanceof Error ? error.message : "Unknown error"
|
|
14504
|
+
);
|
|
13141
14505
|
} finally {
|
|
13142
14506
|
setIsUploading(false);
|
|
13143
14507
|
}
|
|
@@ -13173,15 +14537,43 @@ var CustomizationContent = ({
|
|
|
13173
14537
|
type: "account-customization-summary",
|
|
13174
14538
|
props: {
|
|
13175
14539
|
setCurrentContent,
|
|
13176
|
-
changes: getChangedValues()
|
|
14540
|
+
changes: getChangedValues(),
|
|
14541
|
+
onDoneRedirectContent: initialContentSource
|
|
13177
14542
|
}
|
|
13178
14543
|
});
|
|
13179
14544
|
};
|
|
14545
|
+
const handleClose = () => {
|
|
14546
|
+
if (isUploading) {
|
|
14547
|
+
Analytics.customization.dropOff({
|
|
14548
|
+
stage: "avatar",
|
|
14549
|
+
reason: "modal_closed_during_upload"
|
|
14550
|
+
});
|
|
14551
|
+
} else {
|
|
14552
|
+
Analytics.customization.dropOff({
|
|
14553
|
+
stage: "form",
|
|
14554
|
+
reason: "modal_closed"
|
|
14555
|
+
});
|
|
14556
|
+
}
|
|
14557
|
+
};
|
|
14558
|
+
const handleBack = () => {
|
|
14559
|
+
if (isUploading) {
|
|
14560
|
+
Analytics.customization.dropOff({
|
|
14561
|
+
stage: "avatar",
|
|
14562
|
+
reason: "back_button_during_upload"
|
|
14563
|
+
});
|
|
14564
|
+
} else {
|
|
14565
|
+
Analytics.customization.dropOff({
|
|
14566
|
+
stage: "form",
|
|
14567
|
+
reason: "back_button"
|
|
14568
|
+
});
|
|
14569
|
+
}
|
|
14570
|
+
setCurrentContent("profile");
|
|
14571
|
+
};
|
|
13180
14572
|
return /* @__PURE__ */ jsxs(Box, { children: [
|
|
13181
14573
|
/* @__PURE__ */ jsxs(StickyHeaderContainer, { children: [
|
|
13182
14574
|
/* @__PURE__ */ jsx(ModalHeader, { children: t("Customization") }),
|
|
13183
|
-
/* @__PURE__ */ jsx(ModalBackButton, { onClick:
|
|
13184
|
-
/* @__PURE__ */ jsx(ModalCloseButton, {})
|
|
14575
|
+
/* @__PURE__ */ jsx(ModalBackButton, { onClick: handleBack }),
|
|
14576
|
+
/* @__PURE__ */ jsx(ModalCloseButton, { onClick: handleClose })
|
|
13185
14577
|
] }),
|
|
13186
14578
|
/* @__PURE__ */ jsxs(ModalBody, { children: [
|
|
13187
14579
|
/* @__PURE__ */ jsxs(
|
|
@@ -13279,13 +14671,21 @@ var CustomizationContent = ({
|
|
|
13279
14671
|
"Choose a unique .vet domain name for your account."
|
|
13280
14672
|
),
|
|
13281
14673
|
onClick: () => {
|
|
14674
|
+
Analytics.nameSelection.started(
|
|
14675
|
+
"account-customization"
|
|
14676
|
+
);
|
|
13282
14677
|
if (account?.domain) {
|
|
13283
14678
|
setCurrentContent({
|
|
13284
14679
|
type: "choose-name-search",
|
|
13285
14680
|
props: {
|
|
13286
14681
|
name: "",
|
|
13287
14682
|
setCurrentContent,
|
|
13288
|
-
initialContentSource:
|
|
14683
|
+
initialContentSource: {
|
|
14684
|
+
type: "account-customization",
|
|
14685
|
+
props: {
|
|
14686
|
+
setCurrentContent
|
|
14687
|
+
}
|
|
14688
|
+
}
|
|
13289
14689
|
}
|
|
13290
14690
|
});
|
|
13291
14691
|
} else {
|
|
@@ -13293,10 +14693,18 @@ var CustomizationContent = ({
|
|
|
13293
14693
|
type: "choose-name",
|
|
13294
14694
|
props: {
|
|
13295
14695
|
setCurrentContent,
|
|
13296
|
-
initialContentSource:
|
|
13297
|
-
|
|
13298
|
-
|
|
13299
|
-
|
|
14696
|
+
initialContentSource: {
|
|
14697
|
+
type: "account-customization",
|
|
14698
|
+
props: {
|
|
14699
|
+
setCurrentContent
|
|
14700
|
+
}
|
|
14701
|
+
},
|
|
14702
|
+
onBack: () => setCurrentContent({
|
|
14703
|
+
type: "account-customization",
|
|
14704
|
+
props: {
|
|
14705
|
+
setCurrentContent
|
|
14706
|
+
}
|
|
14707
|
+
})
|
|
13300
14708
|
}
|
|
13301
14709
|
});
|
|
13302
14710
|
}
|
|
@@ -13513,7 +14921,8 @@ var CustomizationContent = ({
|
|
|
13513
14921
|
};
|
|
13514
14922
|
var CustomizationSummaryContent = ({
|
|
13515
14923
|
setCurrentContent,
|
|
13516
|
-
changes
|
|
14924
|
+
changes,
|
|
14925
|
+
onDoneRedirectContent
|
|
13517
14926
|
}) => {
|
|
13518
14927
|
const { t } = useTranslation();
|
|
13519
14928
|
const { darkMode: isDark } = useVeChainKitConfig();
|
|
@@ -13547,7 +14956,12 @@ var CustomizationSummaryContent = ({
|
|
|
13547
14956
|
// Pass the pre-fetched resolver address
|
|
13548
14957
|
signerAccountAddress: account?.address ?? "",
|
|
13549
14958
|
onSuccess: async () => {
|
|
13550
|
-
|
|
14959
|
+
Analytics.customization.completed({
|
|
14960
|
+
hasAvatar: !!changes.avatarIpfsHash,
|
|
14961
|
+
hasDisplayName: !!changes.displayName,
|
|
14962
|
+
hasDescription: !!changes.description,
|
|
14963
|
+
hasSocials: !!(changes.twitter || changes.website || changes.email)
|
|
14964
|
+
});
|
|
13551
14965
|
setCurrentContent({
|
|
13552
14966
|
type: "successful-operation",
|
|
13553
14967
|
props: {
|
|
@@ -13558,10 +14972,29 @@ var CustomizationSummaryContent = ({
|
|
|
13558
14972
|
"Your changes have been saved successfully."
|
|
13559
14973
|
),
|
|
13560
14974
|
onDone: () => {
|
|
13561
|
-
setCurrentContent(
|
|
14975
|
+
setCurrentContent(onDoneRedirectContent);
|
|
13562
14976
|
}
|
|
13563
14977
|
}
|
|
13564
14978
|
});
|
|
14979
|
+
try {
|
|
14980
|
+
await refreshMetadata();
|
|
14981
|
+
} catch (error) {
|
|
14982
|
+
console.error("Error refreshing data:", error);
|
|
14983
|
+
}
|
|
14984
|
+
},
|
|
14985
|
+
onError: (error) => {
|
|
14986
|
+
if (error && isRejectionError(error?.message ?? "")) {
|
|
14987
|
+
Analytics.customization.dropOff({
|
|
14988
|
+
stage: "confirmation",
|
|
14989
|
+
reason: "wallet_rejected",
|
|
14990
|
+
error: error?.message
|
|
14991
|
+
});
|
|
14992
|
+
} else {
|
|
14993
|
+
Analytics.customization.failed(
|
|
14994
|
+
"confirmation",
|
|
14995
|
+
error instanceof Error ? error.message : "Unknown error"
|
|
14996
|
+
);
|
|
14997
|
+
}
|
|
13565
14998
|
}
|
|
13566
14999
|
});
|
|
13567
15000
|
const onSubmit = async (data) => {
|
|
@@ -13591,6 +15024,11 @@ var CustomizationSummaryContent = ({
|
|
|
13591
15024
|
}
|
|
13592
15025
|
} catch (error) {
|
|
13593
15026
|
console.error("Error saving changes:", error);
|
|
15027
|
+
Analytics.customization.dropOff({
|
|
15028
|
+
stage: "confirmation",
|
|
15029
|
+
reason: "transaction_error",
|
|
15030
|
+
error: error instanceof Error ? error.message : "Unknown error"
|
|
15031
|
+
});
|
|
13594
15032
|
}
|
|
13595
15033
|
};
|
|
13596
15034
|
const renderField = (label, value) => {
|
|
@@ -13607,6 +15045,31 @@ var CustomizationSummaryContent = ({
|
|
|
13607
15045
|
/* @__PURE__ */ jsx(Text, { fontSize: "md", children: value })
|
|
13608
15046
|
] });
|
|
13609
15047
|
};
|
|
15048
|
+
const handleRetry = () => {
|
|
15049
|
+
Analytics.customization.failed(
|
|
15050
|
+
"confirmation",
|
|
15051
|
+
txError instanceof Error ? txError.message : "Unknown error"
|
|
15052
|
+
);
|
|
15053
|
+
handleSubmit(onSubmit)();
|
|
15054
|
+
};
|
|
15055
|
+
const handleClose = () => {
|
|
15056
|
+
Analytics.customization.dropOff({
|
|
15057
|
+
stage: "confirmation",
|
|
15058
|
+
reason: "modal_closed"
|
|
15059
|
+
});
|
|
15060
|
+
};
|
|
15061
|
+
const handleBack = () => {
|
|
15062
|
+
Analytics.customization.dropOff({
|
|
15063
|
+
stage: "confirmation",
|
|
15064
|
+
reason: "back_button"
|
|
15065
|
+
});
|
|
15066
|
+
setCurrentContent({
|
|
15067
|
+
type: "account-customization",
|
|
15068
|
+
props: {
|
|
15069
|
+
setCurrentContent
|
|
15070
|
+
}
|
|
15071
|
+
});
|
|
15072
|
+
};
|
|
13610
15073
|
return /* @__PURE__ */ jsxs(Box, { as: "form", onSubmit: handleSubmit(onSubmit), children: [
|
|
13611
15074
|
/* @__PURE__ */ jsxs(StickyHeaderContainer, { children: [
|
|
13612
15075
|
/* @__PURE__ */ jsx(ModalHeader, { children: t("Confirm Changes") }),
|
|
@@ -13614,10 +15077,16 @@ var CustomizationSummaryContent = ({
|
|
|
13614
15077
|
ModalBackButton,
|
|
13615
15078
|
{
|
|
13616
15079
|
isDisabled: isTransactionPending,
|
|
13617
|
-
onClick:
|
|
15080
|
+
onClick: handleBack
|
|
13618
15081
|
}
|
|
13619
15082
|
),
|
|
13620
|
-
/* @__PURE__ */ jsx(
|
|
15083
|
+
/* @__PURE__ */ jsx(
|
|
15084
|
+
ModalCloseButton,
|
|
15085
|
+
{
|
|
15086
|
+
isDisabled: isTransactionPending,
|
|
15087
|
+
onClick: handleClose
|
|
15088
|
+
}
|
|
15089
|
+
)
|
|
13621
15090
|
] }),
|
|
13622
15091
|
/* @__PURE__ */ jsx(ModalBody, { children: /* @__PURE__ */ jsxs(VStack, { spacing: 4, align: "stretch", children: [
|
|
13623
15092
|
changes.avatarIpfsHash && /* @__PURE__ */ jsxs(VStack, { align: "flex-start", w: "full", spacing: 1, children: [
|
|
@@ -13644,6 +15113,7 @@ var CustomizationSummaryContent = ({
|
|
|
13644
15113
|
isSubmitting: isTransactionPending,
|
|
13645
15114
|
isTxWaitingConfirmation: isWaitingForWalletConfirmation,
|
|
13646
15115
|
onConfirm: handleSubmit(onSubmit),
|
|
15116
|
+
onRetry: handleRetry,
|
|
13647
15117
|
transactionPendingText: t("Saving changes..."),
|
|
13648
15118
|
txReceipt,
|
|
13649
15119
|
buttonText: t("Confirm"),
|
|
@@ -13674,7 +15144,15 @@ var ProfileContent = ({
|
|
|
13674
15144
|
/* @__PURE__ */ jsx(
|
|
13675
15145
|
ProfileCard,
|
|
13676
15146
|
{
|
|
13677
|
-
onEditClick: () =>
|
|
15147
|
+
onEditClick: () => {
|
|
15148
|
+
Analytics.customization.started();
|
|
15149
|
+
setCurrentContent({
|
|
15150
|
+
type: "account-customization",
|
|
15151
|
+
props: {
|
|
15152
|
+
setCurrentContent
|
|
15153
|
+
}
|
|
15154
|
+
});
|
|
15155
|
+
},
|
|
13678
15156
|
address: account?.address ?? "",
|
|
13679
15157
|
showHeader: false,
|
|
13680
15158
|
style: {
|
|
@@ -14156,6 +15634,10 @@ var ManageCustomTokenContent = ({
|
|
|
14156
15634
|
var BridgeContent = ({ setCurrentContent }) => {
|
|
14157
15635
|
const { t } = useTranslation();
|
|
14158
15636
|
const { darkMode: isDark } = useVeChainKitConfig();
|
|
15637
|
+
const handleLaunchVeChainEnergy = () => {
|
|
15638
|
+
Analytics.bridge.launchVeChainEnergy();
|
|
15639
|
+
window.open("https://swap.vechain.energy/", "_blank");
|
|
15640
|
+
};
|
|
14159
15641
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
14160
15642
|
/* @__PURE__ */ jsxs(StickyHeaderContainer, { children: [
|
|
14161
15643
|
/* @__PURE__ */ jsx(ModalHeader, { children: t("Bridge") }),
|
|
@@ -14172,9 +15654,7 @@ var BridgeContent = ({ setCurrentContent }) => {
|
|
|
14172
15654
|
Button,
|
|
14173
15655
|
{
|
|
14174
15656
|
variant: "vechainKitSecondary",
|
|
14175
|
-
onClick:
|
|
14176
|
-
window.open("https://swap.vechain.energy/", "_blank");
|
|
14177
|
-
},
|
|
15657
|
+
onClick: handleLaunchVeChainEnergy,
|
|
14178
15658
|
children: [
|
|
14179
15659
|
t("Launch vechain.energy"),
|
|
14180
15660
|
/* @__PURE__ */ jsx(Icon, { as: FaExternalLinkAlt, ml: 2 })
|
|
@@ -14776,6 +16256,10 @@ var NotificationItem = ({
|
|
|
14776
16256
|
onMarkAsRead
|
|
14777
16257
|
}) => {
|
|
14778
16258
|
const { t } = useTranslation();
|
|
16259
|
+
const handleDismiss = () => {
|
|
16260
|
+
Analytics.notifications.dismissed(notification.status);
|
|
16261
|
+
onMarkAsRead(notification.id);
|
|
16262
|
+
};
|
|
14779
16263
|
if (notification.isRead && !isArchiveView) {
|
|
14780
16264
|
return null;
|
|
14781
16265
|
}
|
|
@@ -14788,6 +16272,8 @@ var NotificationItem = ({
|
|
|
14788
16272
|
pr: 8,
|
|
14789
16273
|
position: "relative",
|
|
14790
16274
|
opacity: notification.isRead ? 0.7 : 1,
|
|
16275
|
+
cursor: "pointer",
|
|
16276
|
+
_hover: { opacity: 0.8 },
|
|
14791
16277
|
children: [
|
|
14792
16278
|
/* @__PURE__ */ jsx(AlertIcon, { boxSize: "16px" }),
|
|
14793
16279
|
/* @__PURE__ */ jsxs(Box, { children: [
|
|
@@ -14803,7 +16289,10 @@ var NotificationItem = ({
|
|
|
14803
16289
|
size: "sm",
|
|
14804
16290
|
variant: "ghost",
|
|
14805
16291
|
icon: /* @__PURE__ */ jsx(IoCloseCircle, {}),
|
|
14806
|
-
onClick: () =>
|
|
16292
|
+
onClick: (e) => {
|
|
16293
|
+
e.stopPropagation();
|
|
16294
|
+
handleDismiss();
|
|
16295
|
+
},
|
|
14807
16296
|
"aria-label": "Mark as read and archive"
|
|
14808
16297
|
}
|
|
14809
16298
|
)
|
|
@@ -14826,11 +16315,16 @@ var NotificationsContent = ({ setCurrentContent }) => {
|
|
|
14826
16315
|
getArchivedNotifications()
|
|
14827
16316
|
);
|
|
14828
16317
|
const handleClearAll = () => {
|
|
16318
|
+
Analytics.notifications.cleared(void 0, notifications.length);
|
|
14829
16319
|
clearAllNotifications();
|
|
14830
16320
|
setArchivedNotifications([...archivedNotifications, ...notifications]);
|
|
14831
16321
|
setNotifications([]);
|
|
14832
16322
|
};
|
|
14833
16323
|
const handleMarkAsRead = (id) => {
|
|
16324
|
+
const notification = notifications.find((n) => n.id === id);
|
|
16325
|
+
if (notification) {
|
|
16326
|
+
Analytics.notifications.archived(notification.status);
|
|
16327
|
+
}
|
|
14834
16328
|
markAsRead(id);
|
|
14835
16329
|
const notificationToArchive = notifications.find((n) => n.id === id);
|
|
14836
16330
|
setNotifications(notifications.filter((n) => n.id !== id));
|
|
@@ -14841,6 +16335,12 @@ var NotificationsContent = ({ setCurrentContent }) => {
|
|
|
14841
16335
|
]);
|
|
14842
16336
|
}
|
|
14843
16337
|
};
|
|
16338
|
+
const handleToggleView = () => {
|
|
16339
|
+
Analytics.notifications.toggleView(
|
|
16340
|
+
isArchiveView ? "current" : "archived"
|
|
16341
|
+
);
|
|
16342
|
+
setIsArchiveView(!isArchiveView);
|
|
16343
|
+
};
|
|
14844
16344
|
const currentNotifications = isArchiveView ? archivedNotifications : notifications;
|
|
14845
16345
|
const sortedNotifications = [...currentNotifications].sort((a, b) => {
|
|
14846
16346
|
if (a.id === "welcome") return -1;
|
|
@@ -14876,7 +16376,7 @@ var NotificationsContent = ({ setCurrentContent }) => {
|
|
|
14876
16376
|
}
|
|
14877
16377
|
),
|
|
14878
16378
|
size: "sm",
|
|
14879
|
-
onClick:
|
|
16379
|
+
onClick: handleToggleView,
|
|
14880
16380
|
children: isArchiveView ? t("Current") : t("Archived")
|
|
14881
16381
|
}
|
|
14882
16382
|
),
|
|
@@ -14950,6 +16450,21 @@ var AppComponent = ({ xApp, setCurrentContent }) => {
|
|
|
14950
16450
|
const { data: logo, isLoading: isLogoLoading } = useIpfsImage(
|
|
14951
16451
|
appMetadata?.logo
|
|
14952
16452
|
);
|
|
16453
|
+
const handleAppClick = () => {
|
|
16454
|
+
if (appMetadata?.name) {
|
|
16455
|
+
Analytics.ecosystem.appSelected(appMetadata.name);
|
|
16456
|
+
setCurrentContent({
|
|
16457
|
+
type: "app-overview",
|
|
16458
|
+
props: {
|
|
16459
|
+
name: appMetadata.name,
|
|
16460
|
+
image: logo?.image ?? "",
|
|
16461
|
+
url: appMetadata?.external_url ?? "",
|
|
16462
|
+
description: appMetadata?.description ?? "",
|
|
16463
|
+
setCurrentContent
|
|
16464
|
+
}
|
|
16465
|
+
});
|
|
16466
|
+
}
|
|
16467
|
+
};
|
|
14953
16468
|
return /* @__PURE__ */ jsx(
|
|
14954
16469
|
Skeleton,
|
|
14955
16470
|
{
|
|
@@ -14962,18 +16477,7 @@ var AppComponent = ({ xApp, setCurrentContent }) => {
|
|
|
14962
16477
|
name: appMetadata?.name ?? "",
|
|
14963
16478
|
imageUrl: logo?.image ?? "",
|
|
14964
16479
|
linkUrl: appMetadata?.external_url ?? "",
|
|
14965
|
-
onClick:
|
|
14966
|
-
setCurrentContent({
|
|
14967
|
-
type: "app-overview",
|
|
14968
|
-
props: {
|
|
14969
|
-
name: appMetadata?.name ?? "",
|
|
14970
|
-
image: logo?.image ?? "",
|
|
14971
|
-
url: appMetadata?.external_url ?? "",
|
|
14972
|
-
description: appMetadata?.description ?? "",
|
|
14973
|
-
setCurrentContent
|
|
14974
|
-
}
|
|
14975
|
-
});
|
|
14976
|
-
}
|
|
16480
|
+
onClick: handleAppClick
|
|
14977
16481
|
}
|
|
14978
16482
|
)
|
|
14979
16483
|
}
|
|
@@ -14987,22 +16491,27 @@ var CustomAppComponent = ({
|
|
|
14987
16491
|
logoComponent,
|
|
14988
16492
|
setCurrentContent
|
|
14989
16493
|
}) => {
|
|
16494
|
+
const handleAppClick = () => {
|
|
16495
|
+
Analytics.ecosystem.appSelected(name);
|
|
16496
|
+
setCurrentContent({
|
|
16497
|
+
type: "app-overview",
|
|
16498
|
+
props: {
|
|
16499
|
+
name,
|
|
16500
|
+
image,
|
|
16501
|
+
url,
|
|
16502
|
+
description,
|
|
16503
|
+
logoComponent,
|
|
16504
|
+
setCurrentContent
|
|
16505
|
+
}
|
|
16506
|
+
});
|
|
16507
|
+
};
|
|
14990
16508
|
return /* @__PURE__ */ jsx(
|
|
14991
16509
|
SharedAppCard,
|
|
14992
16510
|
{
|
|
14993
16511
|
name,
|
|
14994
16512
|
imageUrl: image,
|
|
14995
16513
|
linkUrl: url,
|
|
14996
|
-
onClick:
|
|
14997
|
-
type: "app-overview",
|
|
14998
|
-
props: {
|
|
14999
|
-
name,
|
|
15000
|
-
image,
|
|
15001
|
-
url,
|
|
15002
|
-
description,
|
|
15003
|
-
logoComponent
|
|
15004
|
-
}
|
|
15005
|
-
}),
|
|
16514
|
+
onClick: handleAppClick,
|
|
15006
16515
|
...logoComponent && { logoComponent }
|
|
15007
16516
|
}
|
|
15008
16517
|
);
|
|
@@ -15103,6 +16612,16 @@ var ExploreEcosystemContent = ({ setCurrentContent }) => {
|
|
|
15103
16612
|
return dapp;
|
|
15104
16613
|
});
|
|
15105
16614
|
const { shortcuts } = useEcosystemShortcuts();
|
|
16615
|
+
const handleSearchChange = (e) => {
|
|
16616
|
+
const query = e.target.value;
|
|
16617
|
+
setSearchQuery(query);
|
|
16618
|
+
if (query) {
|
|
16619
|
+
Analytics.ecosystem.searchPerformed(
|
|
16620
|
+
query,
|
|
16621
|
+
filteredDefaultApps.length + filteredDapps.length
|
|
16622
|
+
);
|
|
16623
|
+
}
|
|
16624
|
+
};
|
|
15106
16625
|
return /* @__PURE__ */ jsxs(Box, { children: [
|
|
15107
16626
|
/* @__PURE__ */ jsxs(StickyHeaderContainer, { children: [
|
|
15108
16627
|
/* @__PURE__ */ jsx(ModalHeader, { children: t("Ecosystem") }),
|
|
@@ -15127,7 +16646,7 @@ var ExploreEcosystemContent = ({ setCurrentContent }) => {
|
|
|
15127
16646
|
{
|
|
15128
16647
|
placeholder: t("Search Apps"),
|
|
15129
16648
|
value: searchQuery,
|
|
15130
|
-
onChange:
|
|
16649
|
+
onChange: handleSearchChange,
|
|
15131
16650
|
bg: isDark ? "#00000038" : "gray.50",
|
|
15132
16651
|
borderRadius: "xl",
|
|
15133
16652
|
height: "56px",
|
|
@@ -15171,6 +16690,14 @@ var ShortcutButton = ({ name, image, url, description }) => {
|
|
|
15171
16690
|
const { t } = useTranslation();
|
|
15172
16691
|
const { isShortcut, addShortcut, removeShortcut } = useEcosystemShortcuts();
|
|
15173
16692
|
const hasShortcut = isShortcut(url);
|
|
16693
|
+
const handleShortcutClick = () => {
|
|
16694
|
+
if (hasShortcut) {
|
|
16695
|
+
removeShortcut(url);
|
|
16696
|
+
} else {
|
|
16697
|
+
Analytics.ecosystem.addAppToShortcuts(name);
|
|
16698
|
+
addShortcut({ name, image, url, description });
|
|
16699
|
+
}
|
|
16700
|
+
};
|
|
15174
16701
|
return /* @__PURE__ */ jsx(
|
|
15175
16702
|
Button,
|
|
15176
16703
|
{
|
|
@@ -15179,13 +16706,7 @@ var ShortcutButton = ({ name, image, url, description }) => {
|
|
|
15179
16706
|
height: "45px",
|
|
15180
16707
|
variant: "vechainKitSecondary",
|
|
15181
16708
|
borderRadius: "xl",
|
|
15182
|
-
onClick:
|
|
15183
|
-
if (hasShortcut) {
|
|
15184
|
-
removeShortcut(url);
|
|
15185
|
-
} else {
|
|
15186
|
-
addShortcut({ name, image, url, description });
|
|
15187
|
-
}
|
|
15188
|
-
},
|
|
16709
|
+
onClick: handleShortcutClick,
|
|
15189
16710
|
leftIcon: /* @__PURE__ */ jsx(Icon, { as: hasShortcut ? BsBookmarkFill : BsBookmark }),
|
|
15190
16711
|
children: hasShortcut ? t("Remove from shortcuts") : t("Add to shortcuts")
|
|
15191
16712
|
}
|
|
@@ -15200,6 +16721,10 @@ var AppOverviewContent = ({
|
|
|
15200
16721
|
logoComponent
|
|
15201
16722
|
}) => {
|
|
15202
16723
|
const { t } = useTranslation();
|
|
16724
|
+
const handleLaunchApp = () => {
|
|
16725
|
+
Analytics.ecosystem.launchApp(name);
|
|
16726
|
+
window.open(url, "_blank");
|
|
16727
|
+
};
|
|
15203
16728
|
return /* @__PURE__ */ jsxs(Box, { children: [
|
|
15204
16729
|
/* @__PURE__ */ jsxs(StickyHeaderContainer, { children: [
|
|
15205
16730
|
/* @__PURE__ */ jsx(ModalHeader, { children: name }),
|
|
@@ -15234,9 +16759,7 @@ var AppOverviewContent = ({
|
|
|
15234
16759
|
Button,
|
|
15235
16760
|
{
|
|
15236
16761
|
variant: "vechainKitSecondary",
|
|
15237
|
-
onClick:
|
|
15238
|
-
window.open(url, "_blank");
|
|
15239
|
-
},
|
|
16762
|
+
onClick: handleLaunchApp,
|
|
15240
16763
|
children: [
|
|
15241
16764
|
t("Launch {{name}}", { name }),
|
|
15242
16765
|
/* @__PURE__ */ jsx(Icon, { as: FaExternalLinkAlt, ml: 2 })
|
|
@@ -15613,7 +17136,7 @@ var SuccessfulOperationContent = ({
|
|
|
15613
17136
|
justifyContent: "center",
|
|
15614
17137
|
children: [
|
|
15615
17138
|
/* @__PURE__ */ jsx(Text, { children: t("View transaction on the explorer") }),
|
|
15616
|
-
/* @__PURE__ */ jsx(Icon, { size:
|
|
17139
|
+
/* @__PURE__ */ jsx(Icon, { size: 16, as: GoLinkExternal })
|
|
15617
17140
|
]
|
|
15618
17141
|
}
|
|
15619
17142
|
)
|
|
@@ -15636,6 +17159,7 @@ var AccountModal = ({
|
|
|
15636
17159
|
useEffect(() => {
|
|
15637
17160
|
if (isOpen && initialContent) {
|
|
15638
17161
|
setCurrentContent(initialContent);
|
|
17162
|
+
Analytics.wallet.opened(!!account);
|
|
15639
17163
|
}
|
|
15640
17164
|
}, [isOpen, initialContent, setCurrentContent]);
|
|
15641
17165
|
const renderContent = () => {
|
|
@@ -15681,6 +17205,14 @@ var AccountModal = ({
|
|
|
15681
17205
|
return /* @__PURE__ */ jsx(UpgradeSmartAccountContent, { ...currentContent.props });
|
|
15682
17206
|
case "faq":
|
|
15683
17207
|
return /* @__PURE__ */ jsx(FAQContent, { ...currentContent.props });
|
|
17208
|
+
case "account-customization":
|
|
17209
|
+
return /* @__PURE__ */ jsx(
|
|
17210
|
+
CustomizationContent,
|
|
17211
|
+
{
|
|
17212
|
+
...currentContent.props,
|
|
17213
|
+
setCurrentContent
|
|
17214
|
+
}
|
|
17215
|
+
);
|
|
15684
17216
|
}
|
|
15685
17217
|
}
|
|
15686
17218
|
switch (currentContent) {
|
|
@@ -15698,7 +17230,10 @@ var AccountModal = ({
|
|
|
15698
17230
|
SettingsContent,
|
|
15699
17231
|
{
|
|
15700
17232
|
setCurrentContent,
|
|
15701
|
-
onLogoutSuccess:
|
|
17233
|
+
onLogoutSuccess: () => {
|
|
17234
|
+
Analytics.auth.logoutCompleted();
|
|
17235
|
+
onClose();
|
|
17236
|
+
}
|
|
15702
17237
|
}
|
|
15703
17238
|
);
|
|
15704
17239
|
case "profile":
|
|
@@ -15706,7 +17241,10 @@ var AccountModal = ({
|
|
|
15706
17241
|
ProfileContent,
|
|
15707
17242
|
{
|
|
15708
17243
|
setCurrentContent,
|
|
15709
|
-
onLogoutSuccess:
|
|
17244
|
+
onLogoutSuccess: () => {
|
|
17245
|
+
Analytics.auth.logoutCompleted();
|
|
17246
|
+
onClose();
|
|
17247
|
+
}
|
|
15710
17248
|
}
|
|
15711
17249
|
);
|
|
15712
17250
|
case "assets":
|
|
@@ -15757,13 +17295,6 @@ var AccountModal = ({
|
|
|
15757
17295
|
setCurrentContent
|
|
15758
17296
|
}
|
|
15759
17297
|
);
|
|
15760
|
-
case "account-customization":
|
|
15761
|
-
return /* @__PURE__ */ jsx(
|
|
15762
|
-
CustomizationContent,
|
|
15763
|
-
{
|
|
15764
|
-
setCurrentContent
|
|
15765
|
-
}
|
|
15766
|
-
);
|
|
15767
17298
|
case "embedded-wallet":
|
|
15768
17299
|
return /* @__PURE__ */ jsx(
|
|
15769
17300
|
EmbeddedWalletContent,
|
|
@@ -15830,7 +17361,8 @@ var ConnectionButton = ({
|
|
|
15830
17361
|
customIcon,
|
|
15831
17362
|
rightIcon,
|
|
15832
17363
|
style,
|
|
15833
|
-
variant = "loginIn"
|
|
17364
|
+
variant = "loginIn",
|
|
17365
|
+
iconWidth = "25px"
|
|
15834
17366
|
}) => {
|
|
15835
17367
|
if (!text) {
|
|
15836
17368
|
return /* @__PURE__ */ jsx(Button, { ...style, variant, w: "full", onClick, children: customIcon ? customIcon : /* @__PURE__ */ jsx(Icon, { as: icon, w: "20px", h: "20px" }) });
|
|
@@ -15838,7 +17370,7 @@ var ConnectionButton = ({
|
|
|
15838
17370
|
if (text) {
|
|
15839
17371
|
return /* @__PURE__ */ jsxs(Button, { ...style, variant, w: "full", onClick, children: [
|
|
15840
17372
|
/* @__PURE__ */ jsxs(HStack, { w: "full", justify: "flex-start", gap: 2, children: [
|
|
15841
|
-
customIcon ? customIcon : /* @__PURE__ */ jsx(Icon, { as: icon, w:
|
|
17373
|
+
customIcon ? customIcon : /* @__PURE__ */ jsx(Icon, { as: icon, w: iconWidth, h: iconWidth }),
|
|
15842
17374
|
/* @__PURE__ */ jsx(Text, { opacity: 0.9, children: text })
|
|
15843
17375
|
] }),
|
|
15844
17376
|
rightIcon
|
|
@@ -15851,6 +17383,15 @@ var ConnectPopover = ({
|
|
|
15851
17383
|
buttonStyle
|
|
15852
17384
|
}) => {
|
|
15853
17385
|
const { t } = useTranslation();
|
|
17386
|
+
const {
|
|
17387
|
+
loginMethods,
|
|
17388
|
+
darkMode: isDark,
|
|
17389
|
+
privyEcosystemAppIDS
|
|
17390
|
+
} = useVeChainKitConfig();
|
|
17391
|
+
const showEcosystemButton = loginMethods?.some(
|
|
17392
|
+
({ method: method35 }) => method35 === "ecosystem"
|
|
17393
|
+
);
|
|
17394
|
+
const { data: appsInfo, isLoading: isEcosystemAppsLoading } = useFetchAppInfo(privyEcosystemAppIDS);
|
|
15854
17395
|
return /* @__PURE__ */ jsx(
|
|
15855
17396
|
Popover,
|
|
15856
17397
|
{
|
|
@@ -15879,7 +17420,17 @@ var ConnectPopover = ({
|
|
|
15879
17420
|
]
|
|
15880
17421
|
}
|
|
15881
17422
|
) }),
|
|
15882
|
-
/* @__PURE__ */
|
|
17423
|
+
/* @__PURE__ */ jsxs(PopoverContent, { children: [
|
|
17424
|
+
/* @__PURE__ */ jsx(PopoverBody, { children: /* @__PURE__ */ jsx(ConnectionOptionsStack, {}) }),
|
|
17425
|
+
/* @__PURE__ */ jsx(PopoverFooter, { borderTop: "none", pb: "15px", children: showEcosystemButton && /* @__PURE__ */ jsx(HStack, { justify: "center", w: "full", children: /* @__PURE__ */ jsx(
|
|
17426
|
+
EcosystemButton,
|
|
17427
|
+
{
|
|
17428
|
+
isDark,
|
|
17429
|
+
appsInfo: Object.values(appsInfo || {}),
|
|
17430
|
+
isLoading: isEcosystemAppsLoading
|
|
17431
|
+
}
|
|
17432
|
+
) }) })
|
|
17433
|
+
] })
|
|
15883
17434
|
] })
|
|
15884
17435
|
}
|
|
15885
17436
|
);
|
|
@@ -15967,16 +17518,20 @@ var WalletButton = ({
|
|
|
15967
17518
|
connectionVariant = "modal"
|
|
15968
17519
|
}) => {
|
|
15969
17520
|
const { t } = useTranslation();
|
|
15970
|
-
const { darkMode } = useVeChainKitConfig();
|
|
17521
|
+
const { darkMode, loginMethods } = useVeChainKitConfig();
|
|
17522
|
+
const hasOnlyDappKit = loginMethods?.length === 1 && loginMethods[0].method === "dappkit";
|
|
15971
17523
|
const { connection, account } = useWallet();
|
|
15972
17524
|
const { setSource, connect } = useWallet$1();
|
|
15973
17525
|
const [isMobile3] = useMediaQuery("(max-width: 768px)");
|
|
15974
17526
|
const connectModal = useDisclosure();
|
|
15975
17527
|
const accountModal = useDisclosure();
|
|
17528
|
+
const { open: openDappKit } = useWalletModal();
|
|
15976
17529
|
const handleConnect = () => {
|
|
15977
17530
|
if (connection.isInAppBrowser) {
|
|
15978
17531
|
setSource("veworld");
|
|
15979
17532
|
connect();
|
|
17533
|
+
} else if (hasOnlyDappKit) {
|
|
17534
|
+
openDappKit();
|
|
15980
17535
|
} else {
|
|
15981
17536
|
connectModal.onOpen();
|
|
15982
17537
|
}
|
|
@@ -16378,6 +17933,7 @@ var EcosystemContent = ({ onClose, appsInfo, isLoading }) => {
|
|
|
16378
17933
|
const [loginError, setLoginError] = useState();
|
|
16379
17934
|
const [selectedApp, setSelectedApp] = useState();
|
|
16380
17935
|
const loginLoadingModal = useDisclosure();
|
|
17936
|
+
const { user } = usePrivy();
|
|
16381
17937
|
const { setConnectionCache } = useCrossAppConnectionCache();
|
|
16382
17938
|
const { login: loginWithCrossApp } = usePrivyCrossAppSdk();
|
|
16383
17939
|
const connectWithVebetterDaoApps = async (appId, appName) => {
|
|
@@ -16387,6 +17943,9 @@ var EcosystemContent = ({ onClose, appsInfo, isLoading }) => {
|
|
|
16387
17943
|
setSelectedApp(appName);
|
|
16388
17944
|
try {
|
|
16389
17945
|
await loginWithCrossApp(appId);
|
|
17946
|
+
Analytics.auth.trackAuth("connect_initiated", {
|
|
17947
|
+
totalConnections: appsInfo.length
|
|
17948
|
+
});
|
|
16390
17949
|
loginLoadingModal.onClose();
|
|
16391
17950
|
setConnectionCache({
|
|
16392
17951
|
name: appName,
|
|
@@ -16394,10 +17953,17 @@ var EcosystemContent = ({ onClose, appsInfo, isLoading }) => {
|
|
|
16394
17953
|
appId,
|
|
16395
17954
|
website: appsInfo.find((app) => app.id === appId)?.website
|
|
16396
17955
|
});
|
|
17956
|
+
Analytics.auth.completed({
|
|
17957
|
+
userId: user?.id,
|
|
17958
|
+
loginMethod: "ecosystem" /* ECOSYSTEM */
|
|
17959
|
+
});
|
|
16397
17960
|
onClose();
|
|
16398
17961
|
} catch (error) {
|
|
16399
17962
|
const errorMsg = error?.message;
|
|
16400
|
-
if (errorMsg
|
|
17963
|
+
if (errorMsg && isRejectionError(errorMsg)) {
|
|
17964
|
+
Analytics.auth.dropOff("ecosystem-app-connect", {
|
|
17965
|
+
...appName && { appName }
|
|
17966
|
+
});
|
|
16401
17967
|
return new Error("Login request was cancelled.");
|
|
16402
17968
|
}
|
|
16403
17969
|
const errorToShow = error instanceof Error ? error : new Error(
|
|
@@ -16414,30 +17980,26 @@ var EcosystemContent = ({ onClose, appsInfo, isLoading }) => {
|
|
|
16414
17980
|
};
|
|
16415
17981
|
const handleTryAgain = () => {
|
|
16416
17982
|
if (selectedApp) {
|
|
17983
|
+
Analytics.auth.tryAgain("ecosystem" /* ECOSYSTEM */, selectedApp);
|
|
16417
17984
|
const app = appsInfo.find((app2) => app2.name === selectedApp);
|
|
16418
17985
|
if (app) {
|
|
16419
17986
|
connectWithVebetterDaoApps(app.id, app.name);
|
|
16420
17987
|
}
|
|
16421
17988
|
}
|
|
16422
17989
|
};
|
|
17990
|
+
const handleClose = () => {
|
|
17991
|
+
Analytics.auth.dropOff("ecosystem-view", {
|
|
17992
|
+
...selectedApp && { appName: selectedApp }
|
|
17993
|
+
});
|
|
17994
|
+
onClose();
|
|
17995
|
+
};
|
|
16423
17996
|
return /* @__PURE__ */ jsxs(Box, { children: [
|
|
16424
17997
|
/* @__PURE__ */ jsxs(Fragment, { children: [
|
|
16425
17998
|
/* @__PURE__ */ jsx(StickyHeaderContainer, { children: /* @__PURE__ */ jsxs(ModalHeader, { children: [
|
|
16426
|
-
t("Already have an app
|
|
16427
|
-
/* @__PURE__ */ jsx(ModalCloseButton, {})
|
|
17999
|
+
t("Already have an x2earn app wallet?"),
|
|
18000
|
+
/* @__PURE__ */ jsx(ModalCloseButton, { onClick: handleClose })
|
|
16428
18001
|
] }) }),
|
|
16429
18002
|
/* @__PURE__ */ jsxs(ModalBody, { children: [
|
|
16430
|
-
/* @__PURE__ */ jsx(
|
|
16431
|
-
Text,
|
|
16432
|
-
{
|
|
16433
|
-
fontSize: "12px",
|
|
16434
|
-
fontWeight: "400",
|
|
16435
|
-
opacity: 0.5,
|
|
16436
|
-
mb: 4,
|
|
16437
|
-
textAlign: "center",
|
|
16438
|
-
children: t("Sign in with a wallet from other x2earn apps.")
|
|
16439
|
-
}
|
|
16440
|
-
),
|
|
16441
18003
|
isLoading && /* @__PURE__ */ jsx(
|
|
16442
18004
|
VStack,
|
|
16443
18005
|
{
|
|
@@ -16537,14 +18099,11 @@ var ProfileCard = ({
|
|
|
16537
18099
|
}) => {
|
|
16538
18100
|
const { t } = useTranslation();
|
|
16539
18101
|
const { account } = useWallet();
|
|
16540
|
-
const
|
|
16541
|
-
const
|
|
16542
|
-
const activeAccountTextRecords = useGetTextRecords(
|
|
16543
|
-
activeAccountDomain?.data?.domain
|
|
16544
|
-
);
|
|
18102
|
+
const { network } = useVeChainKitConfig();
|
|
18103
|
+
const metadata = useWalletMetadata(address, network.type);
|
|
16545
18104
|
const headerImageSvg = getPicassoImage(address);
|
|
16546
18105
|
const isConnectedAccount = address === account?.address;
|
|
16547
|
-
const hasLinks =
|
|
18106
|
+
const hasLinks = metadata?.records?.url || metadata?.records?.["com.x"] || metadata?.records?.email;
|
|
16548
18107
|
return /* @__PURE__ */ jsxs(Card, { variant: "vechainKitBase", ...style?.card, children: [
|
|
16549
18108
|
/* @__PURE__ */ jsx(
|
|
16550
18109
|
Box,
|
|
@@ -16571,14 +18130,14 @@ var ProfileCard = ({
|
|
|
16571
18130
|
{
|
|
16572
18131
|
wallet: {
|
|
16573
18132
|
address,
|
|
16574
|
-
domain:
|
|
16575
|
-
image:
|
|
16576
|
-
isLoadingMetadata:
|
|
16577
|
-
metadata:
|
|
18133
|
+
domain: metadata?.domain,
|
|
18134
|
+
image: metadata?.image,
|
|
18135
|
+
isLoadingMetadata: metadata?.isLoading,
|
|
18136
|
+
metadata: metadata?.records
|
|
16578
18137
|
},
|
|
16579
18138
|
props: {
|
|
16580
|
-
width: "
|
|
16581
|
-
height: "
|
|
18139
|
+
width: "120px",
|
|
18140
|
+
height: "120px"
|
|
16582
18141
|
// boxShadow: '0px 0px 3px 2px #00000024',
|
|
16583
18142
|
}
|
|
16584
18143
|
}
|
|
@@ -16588,12 +18147,12 @@ var ProfileCard = ({
|
|
|
16588
18147
|
/* @__PURE__ */ jsx(
|
|
16589
18148
|
CardBody,
|
|
16590
18149
|
{
|
|
16591
|
-
mt:
|
|
18150
|
+
mt: "60px",
|
|
16592
18151
|
backgroundColor: "none",
|
|
16593
18152
|
border: "none",
|
|
16594
18153
|
...style?.body,
|
|
16595
18154
|
children: /* @__PURE__ */ jsxs(VStack, { w: "full", spacing: 2, children: [
|
|
16596
|
-
showDisplayName &&
|
|
18155
|
+
showDisplayName && metadata?.records?.display && /* @__PURE__ */ jsx(
|
|
16597
18156
|
Text,
|
|
16598
18157
|
{
|
|
16599
18158
|
fontSize: "xl",
|
|
@@ -16601,10 +18160,19 @@ var ProfileCard = ({
|
|
|
16601
18160
|
w: "full",
|
|
16602
18161
|
textAlign: "center",
|
|
16603
18162
|
mt: 2,
|
|
16604
|
-
children:
|
|
18163
|
+
children: metadata?.records?.display
|
|
18164
|
+
}
|
|
18165
|
+
),
|
|
18166
|
+
showDescription && metadata?.records?.description && /* @__PURE__ */ jsx(
|
|
18167
|
+
Text,
|
|
18168
|
+
{
|
|
18169
|
+
fontSize: "sm",
|
|
18170
|
+
opacity: 0.7,
|
|
18171
|
+
w: "full",
|
|
18172
|
+
textAlign: "center",
|
|
18173
|
+
children: metadata?.records?.description
|
|
16605
18174
|
}
|
|
16606
18175
|
),
|
|
16607
|
-
showDescription && activeAccountTextRecords?.data?.description && /* @__PURE__ */ jsx(Text, { fontSize: "sm", opacity: 0.7, children: activeAccountTextRecords?.data?.description }),
|
|
16608
18176
|
showLinks && hasLinks && /* @__PURE__ */ jsxs(
|
|
16609
18177
|
HStack,
|
|
16610
18178
|
{
|
|
@@ -16613,26 +18181,26 @@ var ProfileCard = ({
|
|
|
16613
18181
|
spacing: 5,
|
|
16614
18182
|
mt: 4,
|
|
16615
18183
|
children: [
|
|
16616
|
-
|
|
18184
|
+
metadata?.records?.email && /* @__PURE__ */ jsx(
|
|
16617
18185
|
Link,
|
|
16618
18186
|
{
|
|
16619
|
-
href: `mailto:${
|
|
18187
|
+
href: `mailto:${metadata?.records?.email}`,
|
|
16620
18188
|
target: "_blank",
|
|
16621
18189
|
children: /* @__PURE__ */ jsx(Icon, { as: FaEnvelope })
|
|
16622
18190
|
}
|
|
16623
18191
|
),
|
|
16624
|
-
|
|
18192
|
+
metadata?.records?.url && /* @__PURE__ */ jsx(
|
|
16625
18193
|
Link,
|
|
16626
18194
|
{
|
|
16627
|
-
href:
|
|
18195
|
+
href: metadata?.records?.url,
|
|
16628
18196
|
target: "_blank",
|
|
16629
18197
|
children: /* @__PURE__ */ jsx(Icon, { as: FaGlobe })
|
|
16630
18198
|
}
|
|
16631
18199
|
),
|
|
16632
|
-
|
|
18200
|
+
metadata?.records?.["com.x"] && /* @__PURE__ */ jsx(
|
|
16633
18201
|
Link,
|
|
16634
18202
|
{
|
|
16635
|
-
href: `https://x.com/${
|
|
18203
|
+
href: `https://x.com/${metadata?.records?.["com.x"]}`,
|
|
16636
18204
|
target: "_blank",
|
|
16637
18205
|
children: /* @__PURE__ */ jsx(Icon, { as: FaXTwitter })
|
|
16638
18206
|
}
|
|
@@ -16645,12 +18213,13 @@ var ProfileCard = ({
|
|
|
16645
18213
|
{
|
|
16646
18214
|
wallet: {
|
|
16647
18215
|
address,
|
|
16648
|
-
domain:
|
|
16649
|
-
image:
|
|
16650
|
-
isLoadingMetadata:
|
|
16651
|
-
metadata:
|
|
18216
|
+
domain: metadata?.domain,
|
|
18217
|
+
image: metadata?.image,
|
|
18218
|
+
isLoadingMetadata: metadata?.isLoading,
|
|
18219
|
+
metadata: metadata?.records
|
|
16652
18220
|
},
|
|
16653
|
-
style: { mt: 4 }
|
|
18221
|
+
style: { mt: 4 },
|
|
18222
|
+
fromScreen: "profile"
|
|
16654
18223
|
}
|
|
16655
18224
|
)
|
|
16656
18225
|
] })
|
|
@@ -16765,7 +18334,7 @@ var SuccessfulOperationContent2 = ({
|
|
|
16765
18334
|
justifyContent: "center",
|
|
16766
18335
|
children: [
|
|
16767
18336
|
/* @__PURE__ */ jsx(Text, { children: t("View transaction on the explorer") }),
|
|
16768
|
-
/* @__PURE__ */ jsx(Icon, { size:
|
|
18337
|
+
/* @__PURE__ */ jsx(Icon, { size: 16, as: GoLinkExternal })
|
|
16769
18338
|
]
|
|
16770
18339
|
}
|
|
16771
18340
|
)
|
|
@@ -17091,12 +18660,15 @@ var ModalProvider = ({ children }) => {
|
|
|
17091
18660
|
);
|
|
17092
18661
|
};
|
|
17093
18662
|
var useConnectModal = () => {
|
|
17094
|
-
const {
|
|
17095
|
-
|
|
17096
|
-
|
|
17097
|
-
|
|
17098
|
-
|
|
17099
|
-
|
|
18663
|
+
const { loginMethods } = useVeChainKitConfig();
|
|
18664
|
+
const hasOnlyDappKit = loginMethods?.length === 1 && loginMethods[0].method === "dappkit";
|
|
18665
|
+
const { openConnectModal, closeConnectModal, isConnectModalOpen } = useModal();
|
|
18666
|
+
const { open: openDappKit, close: closeDappKit } = useWalletModal();
|
|
18667
|
+
return {
|
|
18668
|
+
open: hasOnlyDappKit ? openDappKit : openConnectModal,
|
|
18669
|
+
close: hasOnlyDappKit ? closeDappKit : closeConnectModal,
|
|
18670
|
+
isOpen: hasOnlyDappKit ? false : isConnectModalOpen
|
|
18671
|
+
};
|
|
17100
18672
|
};
|
|
17101
18673
|
var ConnectModalProvider = ({ children }) => /* @__PURE__ */ jsx(Fragment, { children });
|
|
17102
18674
|
var useAccountModal = () => {
|
|
@@ -17290,9 +18862,19 @@ var useFAQModal = () => {
|
|
|
17290
18862
|
};
|
|
17291
18863
|
var FAQModalProvider = ({ children }) => /* @__PURE__ */ jsx(Fragment, { children });
|
|
17292
18864
|
var useAccountCustomizationModal = () => {
|
|
17293
|
-
const {
|
|
18865
|
+
const {
|
|
18866
|
+
openAccountModal,
|
|
18867
|
+
closeAccountModal,
|
|
18868
|
+
isAccountModalOpen,
|
|
18869
|
+
setAccountModalContent
|
|
18870
|
+
} = useModal();
|
|
17294
18871
|
const open = () => {
|
|
17295
|
-
openAccountModal(
|
|
18872
|
+
openAccountModal({
|
|
18873
|
+
type: "account-customization",
|
|
18874
|
+
props: {
|
|
18875
|
+
setCurrentContent: setAccountModalContent
|
|
18876
|
+
}
|
|
18877
|
+
});
|
|
17296
18878
|
};
|
|
17297
18879
|
const close = () => {
|
|
17298
18880
|
closeAccountModal();
|
|
@@ -17458,8 +19040,8 @@ var useTransferERC20 = ({
|
|
|
17458
19040
|
buttonText: "Sign to continue"
|
|
17459
19041
|
},
|
|
17460
19042
|
onTxConfirmed: handleOnSuccess,
|
|
17461
|
-
onTxFailedOrCancelled: async () => {
|
|
17462
|
-
onError?.();
|
|
19043
|
+
onTxFailedOrCancelled: async (error) => {
|
|
19044
|
+
onError?.(error instanceof Error ? error.message : String(error));
|
|
17463
19045
|
}
|
|
17464
19046
|
});
|
|
17465
19047
|
return {
|
|
@@ -17511,8 +19093,8 @@ var useTransferVET = ({
|
|
|
17511
19093
|
refresh();
|
|
17512
19094
|
onSuccess?.();
|
|
17513
19095
|
},
|
|
17514
|
-
onTxFailedOrCancelled: async () => {
|
|
17515
|
-
onError?.();
|
|
19096
|
+
onTxFailedOrCancelled: async (error) => {
|
|
19097
|
+
onError?.(error instanceof Error ? error.message : String(error));
|
|
17516
19098
|
}
|
|
17517
19099
|
});
|
|
17518
19100
|
return {
|
|
@@ -17580,7 +19162,7 @@ var useSignTypedData2 = () => {
|
|
|
17580
19162
|
const privyWalletProvider = usePrivyWalletProvider();
|
|
17581
19163
|
const { signTypedData: signTypedDataDappKit } = useWallet$1();
|
|
17582
19164
|
const signTypedData = useCallback(
|
|
17583
|
-
async (data) => {
|
|
19165
|
+
async (data, options) => {
|
|
17584
19166
|
setIsSigningPending(true);
|
|
17585
19167
|
setError(null);
|
|
17586
19168
|
setSignature(null);
|
|
@@ -17594,7 +19176,8 @@ var useSignTypedData2 = () => {
|
|
|
17594
19176
|
sig = await signTypedDataDappKit(
|
|
17595
19177
|
domain,
|
|
17596
19178
|
data.types,
|
|
17597
|
-
data.message
|
|
19179
|
+
data.message,
|
|
19180
|
+
options
|
|
17598
19181
|
);
|
|
17599
19182
|
} else {
|
|
17600
19183
|
sig = await privyWalletProvider.signTypedData(data);
|
|
@@ -17602,7 +19185,16 @@ var useSignTypedData2 = () => {
|
|
|
17602
19185
|
setSignature(sig);
|
|
17603
19186
|
return sig;
|
|
17604
19187
|
} catch (err) {
|
|
17605
|
-
|
|
19188
|
+
if (err && typeof err === "object" && "statusCode" in err && err.statusCode === 4001) {
|
|
19189
|
+
const userRejectionError = new Error(
|
|
19190
|
+
"User denied signature request"
|
|
19191
|
+
);
|
|
19192
|
+
setError(userRejectionError);
|
|
19193
|
+
throw userRejectionError;
|
|
19194
|
+
}
|
|
19195
|
+
const error2 = err instanceof Error ? err : new Error(
|
|
19196
|
+
typeof err === "object" ? JSON.stringify(err) : String(err)
|
|
19197
|
+
);
|
|
17606
19198
|
setError(error2);
|
|
17607
19199
|
throw error2;
|
|
17608
19200
|
} finally {
|
|
@@ -17626,23 +19218,62 @@ var useSignTypedData2 = () => {
|
|
|
17626
19218
|
};
|
|
17627
19219
|
var useLoginWithPasskey = () => {
|
|
17628
19220
|
const { loginWithPasskey: privyLoginWithPasskey } = useLoginWithPasskey$1();
|
|
19221
|
+
const { user } = usePrivy();
|
|
17629
19222
|
const loginWithPasskey = async () => {
|
|
17630
19223
|
try {
|
|
19224
|
+
Analytics.auth.flowStarted("passkey" /* PASSKEY */);
|
|
19225
|
+
Analytics.auth.methodSelected("passkey" /* PASSKEY */);
|
|
17631
19226
|
await privyLoginWithPasskey();
|
|
19227
|
+
Analytics.auth.completed({
|
|
19228
|
+
userId: user?.id,
|
|
19229
|
+
loginMethod: "passkey" /* PASSKEY */
|
|
19230
|
+
});
|
|
17632
19231
|
} catch (error) {
|
|
17633
|
-
|
|
19232
|
+
Analytics.auth.failed(
|
|
19233
|
+
"passkey" /* PASSKEY */,
|
|
19234
|
+
error instanceof Error ? error.message : "Unknown error"
|
|
19235
|
+
);
|
|
17634
19236
|
throw error;
|
|
17635
19237
|
}
|
|
17636
19238
|
};
|
|
17637
19239
|
return { loginWithPasskey };
|
|
17638
19240
|
};
|
|
19241
|
+
var providerToLoginMethod = {
|
|
19242
|
+
google: "google" /* GOOGLE */,
|
|
19243
|
+
twitter: "email" /* EMAIL */,
|
|
19244
|
+
apple: "email" /* EMAIL */,
|
|
19245
|
+
discord: "email" /* EMAIL */
|
|
19246
|
+
};
|
|
19247
|
+
var providerToSocialMethod = {
|
|
19248
|
+
google: "email" /* EMAIL */,
|
|
19249
|
+
twitter: "X" /* X */,
|
|
19250
|
+
apple: "email" /* EMAIL */,
|
|
19251
|
+
discord: "Discord" /* DISCORD */
|
|
19252
|
+
};
|
|
17639
19253
|
var useLoginWithOAuth2 = () => {
|
|
17640
19254
|
const { initOAuth: privyInitOAuth } = useLoginWithOAuth();
|
|
19255
|
+
const { user } = usePrivy();
|
|
17641
19256
|
const initOAuth = async ({ provider }) => {
|
|
19257
|
+
const loginMethod = providerToLoginMethod[provider];
|
|
19258
|
+
const socialMethod = providerToSocialMethod[provider];
|
|
17642
19259
|
try {
|
|
19260
|
+
Analytics.auth.flowStarted(loginMethod);
|
|
19261
|
+
Analytics.auth.methodSelected(loginMethod);
|
|
17643
19262
|
await privyInitOAuth({ provider });
|
|
19263
|
+
Analytics.auth.completed({
|
|
19264
|
+
userId: user?.id,
|
|
19265
|
+
loginMethod,
|
|
19266
|
+
platform: socialMethod
|
|
19267
|
+
});
|
|
17644
19268
|
} catch (error) {
|
|
17645
|
-
|
|
19269
|
+
const errorMsg = error instanceof Error ? error.message : "Unknown error";
|
|
19270
|
+
if (isRejectionError(errorMsg)) {
|
|
19271
|
+
Analytics.auth.dropOff("oauth", {
|
|
19272
|
+
...provider && { provider }
|
|
19273
|
+
});
|
|
19274
|
+
} else {
|
|
19275
|
+
Analytics.auth.failed(loginMethod, errorMsg);
|
|
19276
|
+
}
|
|
17646
19277
|
throw error;
|
|
17647
19278
|
}
|
|
17648
19279
|
};
|
|
@@ -17680,8 +19311,10 @@ var useLoginWithVeChain = () => {
|
|
|
17680
19311
|
const { login: loginWithVeChain } = usePrivyCrossAppSdk();
|
|
17681
19312
|
const { setConnectionCache } = useCrossAppConnectionCache();
|
|
17682
19313
|
const { data: appsInfo } = useFetchAppInfo([VECHAIN_PRIVY_APP_ID]);
|
|
19314
|
+
const { user } = usePrivy();
|
|
17683
19315
|
const login = async () => {
|
|
17684
19316
|
try {
|
|
19317
|
+
Analytics.auth.methodSelected("vechain" /* VECHAIN */);
|
|
17685
19318
|
await loginWithVeChain(VECHAIN_PRIVY_APP_ID);
|
|
17686
19319
|
setConnectionCache({
|
|
17687
19320
|
name: "VeChain",
|
|
@@ -17689,7 +19322,17 @@ var useLoginWithVeChain = () => {
|
|
|
17689
19322
|
appId: VECHAIN_PRIVY_APP_ID,
|
|
17690
19323
|
website: "https://governance.vebetterdao.org"
|
|
17691
19324
|
});
|
|
19325
|
+
Analytics.auth.completed({
|
|
19326
|
+
userId: user?.id,
|
|
19327
|
+
loginMethod: "vechain" /* VECHAIN */
|
|
19328
|
+
});
|
|
17692
19329
|
} catch (error) {
|
|
19330
|
+
const errorMsg = error instanceof Error ? error.message : "Unknown error";
|
|
19331
|
+
if (isRejectionError(errorMsg)) {
|
|
19332
|
+
Analytics.auth.dropOff("vechain-approval");
|
|
19333
|
+
} else {
|
|
19334
|
+
Analytics.auth.failed("vechain" /* VECHAIN */, errorMsg);
|
|
19335
|
+
}
|
|
17693
19336
|
throw handlePopupError({
|
|
17694
19337
|
error,
|
|
17695
19338
|
mobileBrowserPopupMessage: "Your mobile browser blocked the login window. Please click 'Try again' to open the login window or change your browser settings.",
|
|
@@ -18281,6 +19924,9 @@ var VeChainKitProvider = (props) => {
|
|
|
18281
19924
|
});
|
|
18282
19925
|
}
|
|
18283
19926
|
}, [language, i18nConfig]);
|
|
19927
|
+
useEffect(() => {
|
|
19928
|
+
localStorage.setItem(VECHAIN_KIT_STORAGE_KEYS.NETWORK, network.type);
|
|
19929
|
+
}, [network]);
|
|
18284
19930
|
return /* @__PURE__ */ jsxs(EnsureQueryClient, { children: [
|
|
18285
19931
|
/* @__PURE__ */ jsx(ReactQueryDevtools, { initialIsOpen: false }),
|
|
18286
19932
|
/* @__PURE__ */ jsx(PrivyCrossAppProvider, { privyEcosystemAppIDS: allowedEcosystemApps, children: /* @__PURE__ */ jsx(
|
|
@@ -18703,6 +20349,6 @@ var VechainKitThemeProvider = ({
|
|
|
18703
20349
|
] });
|
|
18704
20350
|
};
|
|
18705
20351
|
|
|
18706
|
-
export { APP_SECURITY_LEVELS, AccessAndSecurityContent, AccessAndSecurityModalProvider, AccountAvatar, AccountCustomizationModalProvider, AccountDetailsButton, AccountMainContent, AccountModal, AccountModalProvider, AccountSelector, ActionButton, AddressDisplay, AddressDisplayCard, AssetButton, AssetsContent, AssetsSection, BalanceSection, BaseModal, BridgeContent, ChooseNameContent, ChooseNameModalProvider, ChooseNameSearchContent, ChooseNameSummaryContent, ConnectModal, ConnectModalProvider, ConnectPopover, ConnectionButton, CrossAppConnectionSecurityCard, CustomizationContent, CustomizationSummaryContent, DappKitButton, DomainRequiredAlert, ENS_TEXT_RECORDS, EcosystemButton, EcosystemModal, EmailLoginButton, EmbeddedWalletContent, ExchangeWarningAlert, ExploreEcosystemModalProvider, FAQContent, FAQModalProvider, FadeInView, FadeInViewFromBottom, FadeInViewFromLeft, FadeInViewFromRight, FeatureAnnouncementCard, LoginLoadingModal, LoginWithGoogleButton, MAX_IMAGE_SIZE, MainContent, ManageCustomTokenContent, ModalBackButton, ModalFAQButton, NFTMediaType, NotificationsModalProvider, PRICE_FEED_IDS, PasskeyLoginButton, PrivyButton, PrivyWalletProvider, ProfileCard, ProfileContent, ProfileModalProvider, QuickActionsSection, ReceiveModalProvider, ReceiveTokenContent, RoundState, ScrollToTopWrapper, SecurityLevel, SelectTokenContent, SendTokenContent, SendTokenModalProvider, SendTokenSummaryContent, SettingsContent, ShareButtons, SocialIcons, StickyFooterContainer, StickyHeaderContainer, SwapTokenContent, TransactionButtonAndStatus, TransactionModal, TransactionModalContent, TransactionModalProvider, TransactionToast, TransactionToastProvider, UpgradeSmartAccountContent, UpgradeSmartAccountModal, UpgradeSmartAccountModalProvider, VeChainKitContext, VeChainKitProvider, VeChainLoginButton, VeChainWithPrivyLoginButton, VePassportUserStatus, VechainKitThemeProvider, VersionFooter, WalletButton, WalletModalProvider, buildClaimRewardsTx, buildClaimRoundReward, compressImages, currentBlockQueryKey, decodeFunctionSignature, fetchPrivyAppInfo, fetchPrivyStatus, fetchVechainDomain, getAccountAddress, getAccountAddressQueryKey, getAccountBalance, getAccountBalanceQueryKey, getAccountImplementationAddress, getAccountImplementationAddressQueryKey, getAccountVersion, getAccountVersionQueryKey, getAllEvents, getAllocationAmount, getAllocationAmountQueryKey, getAllocationsRoundState, getAllocationsRoundStateQueryKey, getAllocationsRoundsEvents, getAllocationsRoundsEventsQueryKey, getAppAdmin, getAppAdminQueryKey, getAppBalance, getAppBalanceQueryKey, getAppExistsQueryKey, getAppSecurityLevelQueryKey, getAppsEligibleInNextRound, getAppsEligibleInNextRoundQueryKey, getAppsShareClauses, getAvatar, getAvatarOfAddressQueryKey, getAvatarQueryKey, getB3trBalance, getB3trBalanceQueryKey, getB3trDonatedQueryKey, getB3trToUpgradeQueryKey, getBalanceOf, getCallKey, getChainId, getChainIdQueryKey, getCurrentAccountImplementationVersion, getCurrentAccountImplementationVersionQueryKey, getCurrentAllocationsRoundId, getCurrentAllocationsRoundIdQueryKey, getCustomTokenBalance, getCustomTokenBalanceQueryKey, getCustomTokenInfo, getDelegateeQueryKey, getDelegatorQueryKey, getDomainsOfAddress, getDomainsOfAddressQueryKey, getEnsRecordExistsQueryKey, getEntitiesLinkedToPassportQueryKey, getErc20Balance, getErc20BalanceQueryKey, getEvents, getGMBaseUriQueryKey, getGMLevel, getGMbalanceQueryKey, getGetCumulativeScoreWithDecayQueryKey, getHasV1SmartAccount, getHasV1SmartAccountQueryKey, getHasVotedInRound, getHasVotedInRoundQueryKey, getIpfsImage, getIpfsImageQueryKey, getIpfsMetadata, getIpfsMetadataQueryKey, getIsBlacklistedQueryKey, getIsDeployed, getIsDeployedQueryKey, getIsDomainProtectedQueryKey, getIsEntityQueryKey, getIsNodeHolder, getIsNodeHolderQueryKey, getIsPassportQueryKey, getIsPersonAtTimepointQueryKey, getIsPersonQueryKey, getIsWhitelistedQueryKey, getLevelGradient, getLevelMultiplierQueryKey, getLevelOfTokenQueryKey, getNFTMetadataUri, getNFTMetadataUriQueryKey, getNodeCheckCooldownQueryKey, getNodeManagerQueryKey, getParticipatedInGovernance, getParticipatedInGovernanceQueryKey, getParticipationScoreThresholdQueryKey, getPassportForEntityQueryKey, getPassportToggleQueryKey, getPendingDelegationsQueryKeyDelegateePOV, getPendingDelegationsQueryKeyDelegatorPOV, getPendingLinkingsQueryKey, getPrivyAppInfoQueryKey, getResolverAddress, getResolverAddressQueryKey, getRoundReward, getRoundRewardQueryKey, getRoundXApps, getRoundXAppsQueryKey, getSecurityMultiplierQueryKey, getSmartAccount, getSmartAccountQueryKey, getTextRecords, getTextRecordsQueryKey, getThresholdParticipationScoreAtTimepointQueryKey, getThresholdParticipationScoreQueryKey, getTokenIdByAccount, getTokenIdByAccountQueryKey, getTokenInfo, getTokenUsdPrice, getTokenUsdPriceQueryKey, getTokensInfoByOwnerQueryKey, getUpgradeRequired, getUpgradeRequiredForAccount, getUpgradeRequiredForAccountQueryKey, getUpgradeRequiredQueryKey, getUserBotSignalsQueryKey, getUserNodesQueryKey, getUserRoundScoreQueryKey, getUserVotesInRound, getUserVotesInRoundQueryKey, getUserXNodes, getUserXNodesQueryKey, getVeDelegateBalance, getVeDelegateBalanceQueryKey, getVechainDomainQueryKey, getVersion, getVersionQueryKey, getVot3Balance, getVot3BalanceQueryKey, getVotesInRoundQueryKey, getXAppMetadata, getXAppMetadataQueryKey, getXAppRoundEarnings, getXAppRoundEarningsQueryKey, getXAppTotalEarningsClauses, getXAppTotalEarningsQueryKey, getXAppVotes, getXAppVotesQf, getXAppVotesQfQueryKey, getXAppVotesQueryKey, getXApps, getXAppsMetadataBaseUri, getXAppsMetadataBaseUriQueryKey, getXAppsQueryKey, getXAppsSharesQueryKey, imageCompressionOptions, pollForReceipt, useAccessAndSecurityModal, useAccountBalance, useAccountCustomizationModal, useAccountImplementationAddress, useAccountLinking, useAccountModal, useAllocationAmount, useAllocationsRound, useAllocationsRoundState, useAllocationsRoundsEvents, useAppAdmin, useAppBalance, useAppExists, useAppSecurityLevel, useAppsEligibleInNextRound, useB3trDonated, useB3trToUpgrade, useBalances, useCall, useChooseNameModal, useClaimVeWorldSubdomain, useConnectModal, useCrossAppConnectionCache, useCurrentAccountImplementationVersion, useCurrentAllocationsRound, useCurrentAllocationsRoundId, useCurrentBlock, useDecodeFunctionSignature, useEcosystemShortcuts, useEnsRecordExists, useExploreEcosystemModal, useFAQModal, useFeatureAnnouncement, useFetchAppInfo, useFetchPrivyStatus, useGMBaseUri, useGMbalance, useGetAccountAddress, useGetAccountVersion, useGetAvatar, useGetAvatarOfAddress, useGetB3trBalance, useGetChainId, useGetCumulativeScoreWithDecay, useGetCustomTokenBalances, useGetCustomTokenInfo, useGetDelegatee, useGetDelegator, useGetDomainsOfAddress, useGetEntitiesLinkedToPassport, useGetErc20Balance, useGetNodeManager, useGetNodeUrl, useGetPassportForEntity, useGetPendingDelegationsDelegateePOV, useGetPendingDelegationsDelegatorPOV, useGetPendingLinkings, useGetResolverAddress, useGetTextRecords, useGetTokenUsdPrice, useGetTokensInfoByOwner, useGetUserEntitiesLinkedToPassport, useGetUserNode, useGetUserNodes, useGetUserPassportForEntity, useGetUserPendingLinkings, useGetVeDelegateBalance, useGetVot3Balance, useHasV1SmartAccount, useHasVotedInRound, useIpfsImage, useIpfsImageList, useIpfsMetadata, useIpfsMetadatas, useIsBlacklisted, useIsDomainProtected, useIsEntity, useIsGMclaimable, useIsNodeHolder, useIsPWA, useIsPassport, useIsPassportCheckEnabled, useIsPerson, useIsPersonAtTimepoint, useIsSmartAccountDeployed, useIsUserEntity, useIsUserPassport, useIsUserPerson, useIsWhitelisted, useLevelMultiplier, useLevelOfToken, useLocalStorage, useLoginModalContent, useLoginWithOAuth2 as useLoginWithOAuth, useLoginWithPasskey, useLoginWithVeChain, useMostVotedAppsInRound, useMultipleXAppRoundEarnings, useNFTImage, useNFTMetadataUri, useNotificationAlerts, useNotifications, useNotificationsModal, useParticipatedInGovernance, useParticipationScoreThreshold, usePassportChecks, usePrivyWalletProvider, useProfileModal, useReceiveModal, useRefreshBalances, useRefreshMetadata, useRoundEarnings, useRoundReward, useRoundXApps, useScrollToTop, useSecurityMultiplier, useSelectedGmNft, useSendTokenModal, useSendTransaction, useSignMessage2 as useSignMessage, useSignTypedData2 as useSignTypedData, useSingleImageUpload, useSmartAccount, useSmartAccountVersion, useThresholdParticipationScore, useThresholdParticipationScoreAtTimepoint, useTokenIdByAccount, useTransactionModal, useTransactionToast, useTransferERC20, useTransferVET, useTxReceipt, useUpdateTextRecord, useUpgradeRequired, useUpgradeRequiredForAccount, useUpgradeSmartAccount, useUpgradeSmartAccountModal, useUploadImages, useUserBotSignals, useUserDelegation, useUserRoundScore, useUserStatus, useUserTopVotedApps, useUserVotesInAllRounds, useUserVotesInRound, useVeChainKitConfig, useVechainDomain, useVotesInRound, useVotingRewards, useWallet, useWalletMetadata, useWalletModal2 as useWalletModal, useXApp, useXAppMetadata, useXAppRoundEarnings, useXAppTotalEarnings, useXAppVotes, useXAppVotesQf, useXApps, useXAppsMetadataBaseUri, useXAppsShares, useXNode, useXNodeCheckCooldown, useXNodes };
|
|
20352
|
+
export { APP_SECURITY_LEVELS, AccessAndSecurityContent, AccessAndSecurityModalProvider, AccountAvatar, AccountCustomizationModalProvider, AccountDetailsButton, AccountMainContent, AccountModal, AccountModalProvider, AccountSelector, ActionButton, AddressDisplay, AddressDisplayCard, AssetButton, AssetsContent, AssetsSection, BalanceSection, BaseModal, BridgeContent, ChooseNameContent, ChooseNameModalProvider, ChooseNameSearchContent, ChooseNameSummaryContent, ConnectModal, ConnectModalProvider, ConnectPopover, ConnectionButton, CrossAppConnectionSecurityCard, CustomizationContent, CustomizationSummaryContent, DappKitButton, DomainRequiredAlert, ENS_TEXT_RECORDS, EcosystemButton, EcosystemModal, EmailLoginButton, EmbeddedWalletContent, ExchangeWarningAlert, ExploreEcosystemModalProvider, FAQContent, FAQModalProvider, FadeInView, FadeInViewFromBottom, FadeInViewFromLeft, FadeInViewFromRight, FeatureAnnouncementCard, LoginLoadingModal, LoginWithGoogleButton, MAX_IMAGE_SIZE, MainContent, ManageCustomTokenContent, ModalBackButton, ModalFAQButton, NFTMediaType, NotificationsModalProvider, PRICE_FEED_IDS, PasskeyLoginButton, PrivyButton, PrivyWalletProvider, ProfileCard, ProfileContent, ProfileModalProvider, QuickActionsSection, ReceiveModalProvider, ReceiveTokenContent, RoundState, ScrollToTopWrapper, SecurityLevel, SelectTokenContent, SendTokenContent, SendTokenModalProvider, SendTokenSummaryContent, SettingsContent, ShareButtons, SocialIcons, StickyFooterContainer, StickyHeaderContainer, SwapTokenContent, TransactionButtonAndStatus, TransactionModal, TransactionModalContent, TransactionModalProvider, TransactionToast, TransactionToastProvider, UpgradeSmartAccountContent, UpgradeSmartAccountModal, UpgradeSmartAccountModalProvider, VeChainKitContext, VeChainKitProvider, VeChainLoginButton, VeChainWithPrivyLoginButton, VePassportUserStatus, VechainKitThemeProvider, VersionFooter, WalletButton, WalletModalProvider, buildClaimRewardsTx, buildClaimRoundReward, compressImages, currentBlockQueryKey, decodeFunctionSignature, fetchPrivyAppInfo, fetchPrivyStatus, fetchVechainDomain, getAccountAddress, getAccountAddressQueryKey, getAccountBalance, getAccountBalanceQueryKey, getAccountImplementationAddress, getAccountImplementationAddressQueryKey, getAccountVersion, getAccountVersionQueryKey, getAllEvents, getAllocationAmount, getAllocationAmountQueryKey, getAllocationsRoundState, getAllocationsRoundStateQueryKey, getAllocationsRoundsEvents, getAllocationsRoundsEventsQueryKey, getAppAdmin, getAppAdminQueryKey, getAppBalance, getAppBalanceQueryKey, getAppExistsQueryKey, getAppSecurityLevelQueryKey, getAppsEligibleInNextRound, getAppsEligibleInNextRoundQueryKey, getAppsShareClauses, getAvatar, getAvatarLegacy, getAvatarLegacyQueryKey, getAvatarOfAddressQueryKey, getAvatarQueryKey, getB3trBalance, getB3trBalanceQueryKey, getB3trDonatedQueryKey, getB3trToUpgradeQueryKey, getBalanceOf, getCallKey, getChainId, getChainIdQueryKey, getCurrentAccountImplementationVersion, getCurrentAccountImplementationVersionQueryKey, getCurrentAllocationsRoundId, getCurrentAllocationsRoundIdQueryKey, getCustomTokenBalance, getCustomTokenBalanceQueryKey, getCustomTokenInfo, getDelegateeQueryKey, getDelegatorQueryKey, getDomainsOfAddress, getDomainsOfAddressQueryKey, getEnsRecordExistsQueryKey, getEntitiesLinkedToPassportQueryKey, getErc20Balance, getErc20BalanceQueryKey, getEvents, getGMBaseUriQueryKey, getGMLevel, getGMbalanceQueryKey, getGetCumulativeScoreWithDecayQueryKey, getHasV1SmartAccount, getHasV1SmartAccountQueryKey, getHasVotedInRound, getHasVotedInRoundQueryKey, getIpfsImage, getIpfsImageQueryKey, getIpfsMetadata, getIpfsMetadataQueryKey, getIsBlacklistedQueryKey, getIsDeployed, getIsDeployedQueryKey, getIsDomainProtectedQueryKey, getIsEntityQueryKey, getIsNodeHolder, getIsNodeHolderQueryKey, getIsPassportQueryKey, getIsPersonAtTimepointQueryKey, getIsPersonQueryKey, getIsWhitelistedQueryKey, getLevelGradient, getLevelMultiplierQueryKey, getLevelOfTokenQueryKey, getNFTMetadataUri, getNFTMetadataUriQueryKey, getNodeCheckCooldownQueryKey, getNodeManagerQueryKey, getParticipatedInGovernance, getParticipatedInGovernanceQueryKey, getParticipationScoreThresholdQueryKey, getPassportForEntityQueryKey, getPassportToggleQueryKey, getPendingDelegationsQueryKeyDelegateePOV, getPendingDelegationsQueryKeyDelegatorPOV, getPendingLinkingsQueryKey, getPrivyAppInfoQueryKey, getResolverAddress, getResolverAddressQueryKey, getRoundReward, getRoundRewardQueryKey, getRoundXApps, getRoundXAppsQueryKey, getSecurityMultiplierQueryKey, getSmartAccount, getSmartAccountQueryKey, getTextRecords, getTextRecordsQueryKey, getThresholdParticipationScoreAtTimepointQueryKey, getThresholdParticipationScoreQueryKey, getTokenIdByAccount, getTokenIdByAccountQueryKey, getTokenInfo, getTokenUsdPrice, getTokenUsdPriceQueryKey, getTokensInfoByOwnerQueryKey, getUpgradeRequired, getUpgradeRequiredForAccount, getUpgradeRequiredForAccountQueryKey, getUpgradeRequiredQueryKey, getUserBotSignalsQueryKey, getUserNodesQueryKey, getUserRoundScoreQueryKey, getUserVotesInRound, getUserVotesInRoundQueryKey, getUserXNodes, getUserXNodesQueryKey, getVeDelegateBalance, getVeDelegateBalanceQueryKey, getVechainDomainQueryKey, getVersion, getVersionQueryKey, getVot3Balance, getVot3BalanceQueryKey, getVotesInRoundQueryKey, getXAppMetadata, getXAppMetadataQueryKey, getXAppRoundEarnings, getXAppRoundEarningsQueryKey, getXAppTotalEarningsClauses, getXAppTotalEarningsQueryKey, getXAppVotes, getXAppVotesQf, getXAppVotesQfQueryKey, getXAppVotesQueryKey, getXApps, getXAppsMetadataBaseUri, getXAppsMetadataBaseUriQueryKey, getXAppsQueryKey, getXAppsSharesQueryKey, imageCompressionOptions, pollForReceipt, useAccessAndSecurityModal, useAccountBalance, useAccountCustomizationModal, useAccountImplementationAddress, useAccountLinking, useAccountModal, useAllocationAmount, useAllocationsRound, useAllocationsRoundState, useAllocationsRoundsEvents, useAppAdmin, useAppBalance, useAppExists, useAppSecurityLevel, useAppsEligibleInNextRound, useB3trDonated, useB3trToUpgrade, useBalances, useCall, useChooseNameModal, useClaimVeWorldSubdomain, useClaimVetDomain, useConnectModal, useCrossAppConnectionCache, useCurrentAccountImplementationVersion, useCurrentAllocationsRound, useCurrentAllocationsRoundId, useCurrentBlock, useDecodeFunctionSignature, useEcosystemShortcuts, useEnsRecordExists, useExploreEcosystemModal, useFAQModal, useFeatureAnnouncement, useFetchAppInfo, useFetchPrivyStatus, useGMBaseUri, useGMbalance, useGetAccountAddress, useGetAccountVersion, useGetAvatar, useGetAvatarLegacy, useGetAvatarOfAddress, useGetB3trBalance, useGetChainId, useGetCumulativeScoreWithDecay, useGetCustomTokenBalances, useGetCustomTokenInfo, useGetDelegatee, useGetDelegator, useGetDomainsOfAddress, useGetEntitiesLinkedToPassport, useGetErc20Balance, useGetNodeManager, useGetNodeUrl, useGetPassportForEntity, useGetPendingDelegationsDelegateePOV, useGetPendingDelegationsDelegatorPOV, useGetPendingLinkings, useGetResolverAddress, useGetTextRecords, useGetTokenUsdPrice, useGetTokensInfoByOwner, useGetUserEntitiesLinkedToPassport, useGetUserNode, useGetUserNodes, useGetUserPassportForEntity, useGetUserPendingLinkings, useGetVeDelegateBalance, useGetVot3Balance, useHasV1SmartAccount, useHasVotedInRound, useIpfsImage, useIpfsImageList, useIpfsMetadata, useIpfsMetadatas, useIsBlacklisted, useIsDomainProtected, useIsEntity, useIsGMclaimable, useIsNodeHolder, useIsPWA, useIsPassport, useIsPassportCheckEnabled, useIsPerson, useIsPersonAtTimepoint, useIsSmartAccountDeployed, useIsUserEntity, useIsUserPassport, useIsUserPerson, useIsWhitelisted, useLevelMultiplier, useLevelOfToken, useLocalStorage, useLoginModalContent, useLoginWithOAuth2 as useLoginWithOAuth, useLoginWithPasskey, useLoginWithVeChain, useMostVotedAppsInRound, useMultipleXAppRoundEarnings, useNFTImage, useNFTMetadataUri, useNotificationAlerts, useNotifications, useNotificationsModal, useParticipatedInGovernance, useParticipationScoreThreshold, usePassportChecks, usePrivyWalletProvider, useProfileModal, useReceiveModal, useRefreshBalances, useRefreshMetadata, useRoundEarnings, useRoundReward, useRoundXApps, useScrollToTop, useSecurityMultiplier, useSelectedGmNft, useSendTokenModal, useSendTransaction, useSignMessage2 as useSignMessage, useSignTypedData2 as useSignTypedData, useSingleImageUpload, useSmartAccount, useSmartAccountVersion, useThresholdParticipationScore, useThresholdParticipationScoreAtTimepoint, useTokenIdByAccount, useTransactionModal, useTransactionToast, useTransferERC20, useTransferVET, useTxReceipt, useUnsetDomain, useUpdateTextRecord, useUpgradeRequired, useUpgradeRequiredForAccount, useUpgradeSmartAccount, useUpgradeSmartAccountModal, useUploadImages, useUserBotSignals, useUserDelegation, useUserRoundScore, useUserStatus, useUserTopVotedApps, useUserVotesInAllRounds, useUserVotesInRound, useVeChainKitConfig, useVechainDomain, useVotesInRound, useVotingRewards, useWallet, useWalletMetadata, useWalletModal2 as useWalletModal, useXApp, useXAppMetadata, useXAppRoundEarnings, useXAppTotalEarnings, useXAppVotes, useXAppVotesQf, useXApps, useXAppsMetadataBaseUri, useXAppsShares, useXNode, useXNodeCheckCooldown, useXNodes };
|
|
18707
20353
|
//# sourceMappingURL=index.js.map
|
|
18708
20354
|
//# sourceMappingURL=index.js.map
|