@taskon/widget-react 0.0.1-beta.4 → 0.0.1-beta.6
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/README.md +13 -4
- package/dist/CommunityTaskList.css +119 -111
- package/dist/EligibilityInfo.css +114 -110
- package/dist/LeaderboardWidget.css +73 -71
- package/dist/PageBuilder.css +5 -0
- package/dist/Quest.css +259 -255
- package/dist/TaskOnProvider.css +2 -0
- package/dist/UserCenterWidget.css +6 -6
- package/dist/UserCenterWidget2.css +1626 -1601
- package/dist/{dynamic-import-helper.css → WidgetShell.css} +2 -2
- package/dist/chunks/{CommunityTaskList-C9Gv8KOF.js → CommunityTaskList-Hde2OKHH.js} +1070 -580
- package/dist/chunks/{EligibilityInfo-D-Fuy9GE.js → EligibilityInfo-BV0Z2TgY.js} +1972 -1028
- package/dist/chunks/{LeaderboardWidget-BV2D2q1N.js → LeaderboardWidget-BNGRD5Bu.js} +270 -249
- package/dist/chunks/{PageBuilder-DQoU4Mwf.js → PageBuilder-C5DSHiW9.js} +5 -5
- package/dist/chunks/{Quest-B5NyVr3o.js → Quest-DG9zfXJo.js} +723 -513
- package/dist/chunks/{TaskOnProvider-93UxARFo.js → TaskOnProvider-BhamHIyY.js} +98 -68
- package/dist/chunks/{ThemeProvider-CPI_roeh.js → ThemeProvider-mXLdLSkq.js} +107 -20
- package/dist/chunks/{UserCenterWidget-cADBSVg7.js → UserCenterWidget-D5ttw4hO.js} +1328 -1337
- package/dist/chunks/{UserCenterWidget-BRtigY_S.js → UserCenterWidget-jDO5zTN1.js} +358 -254
- package/dist/chunks/{dynamic-import-helper-DwXlQC0S.js → WidgetShell-D7yC894Y.js} +447 -457
- package/dist/chunks/communitytask-es-CBNnS4o2.js +521 -0
- package/dist/chunks/communitytask-ja-GRf9cbdx.js +521 -0
- package/dist/chunks/communitytask-ko-Bf24PQKI.js +521 -0
- package/dist/chunks/communitytask-ru-CZm2CPoV.js +521 -0
- package/dist/chunks/leaderboardwidget-es-vKjrjQaz.js +146 -0
- package/dist/chunks/leaderboardwidget-ja-Q6u0HxKG.js +146 -0
- package/dist/chunks/leaderboardwidget-ko-CG6SWgxf.js +146 -0
- package/dist/chunks/leaderboardwidget-ru-DCcHcJGz.js +146 -0
- package/dist/chunks/quest-es-Dyyy0zaw.js +863 -0
- package/dist/chunks/quest-ja-Depog33y.js +863 -0
- package/dist/chunks/quest-ko-BMu3uRQJ.js +863 -0
- package/dist/chunks/quest-ru-xne814Rw.js +863 -0
- package/dist/chunks/taskwidget-es-Do9b3Mqw.js +245 -0
- package/dist/chunks/taskwidget-ja-CqSu-yWA.js +245 -0
- package/dist/chunks/taskwidget-ko-EHgXFV4B.js +245 -0
- package/dist/chunks/taskwidget-ru-CMbLQDK4.js +245 -0
- package/dist/chunks/usercenter-es-Dz3Wp2vV.js +512 -0
- package/dist/chunks/usercenter-ja-CKE4DJC6.js +512 -0
- package/dist/chunks/usercenter-ko-Dtpkn2qb.js +512 -0
- package/dist/chunks/usercenter-ru-DnBGee45.js +512 -0
- package/dist/community-task.d.ts +0 -390
- package/dist/community-task.js +2 -7
- package/dist/core.d.ts +46 -10
- package/dist/core.js +11 -11
- package/dist/index.d.ts +46 -667
- package/dist/index.js +19 -28
- package/dist/leaderboard.d.ts +0 -498
- package/dist/leaderboard.js +2 -16
- package/dist/page-builder.js +1 -1
- package/dist/quest.d.ts +0 -289
- package/dist/quest.js +2 -5
- package/dist/user-center.d.ts +0 -1608
- package/dist/user-center.js +2 -494
- package/package.json +5 -2
- package/dist/chunks/leaderboardwidget-ja-Bj6gz6y1.js +0 -119
- package/dist/chunks/leaderboardwidget-ko-f1cLO9ic.js +0 -119
- package/dist/chunks/usercenter-ja-B2465c1O.js +0 -326
- package/dist/chunks/usercenter-ko-xAEYxqLg.js +0 -326
|
@@ -2,171 +2,14 @@ import '../UserCenterWidget2.css';var __defProp = Object.defineProperty;
|
|
|
2
2
|
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
3
3
|
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
4
4
|
import * as React from "react";
|
|
5
|
-
import React__default, {
|
|
6
|
-
import { createUserApi, createNftClaimApi, NftClaimError, NftClaimErrorType, getNftChainName, generatePendingKey, getPendingHash, NftClaimType, WithdrawNft, ClaimMintedNft, ClaimCapNft, setPendingHash, clearPendingHash, RewardType, isNftClaimed, isNftClaimable, getNftClaimType, ChainType, DEFAULT_ERROR_MESSAGES, openInNewTab, toWei, formatTokenAmount as formatTokenAmount$1,
|
|
7
|
-
import {
|
|
5
|
+
import React__default, { useContext, useState, useRef, useMemo, useCallback, useEffect, forwardRef, useImperativeHandle, useLayoutEffect, createContext } from "react";
|
|
6
|
+
import { createUserApi, createNftClaimApi, NftClaimError, NftClaimErrorType, getNftChainName, generatePendingKey, getPendingHash, NftClaimType, WithdrawNft, ClaimMintedNft, ClaimCapNft, setPendingHash, clearPendingHash, RewardType, isNftClaimed, isNftClaimable, getNftClaimType, ChainType, DEFAULT_ERROR_MESSAGES, openInNewTab, toWei, USER_CENTER_REWARD_CARD_TYPES, formatTokenAmount as formatTokenAmount$1, RouletteRewardType, USER_CENTER_PAGE_SIZE, createUserCenterApi, getTxExplorerUrl } from "@taskon/core";
|
|
7
|
+
import { v as TaskOnContext, h as useTaskOnContext, P as Primitive, s as useLayoutEffect2, j as createContextScope, k as useComposedRefs, q as useCallbackRef, m as useControllableState, o as composeEventHandlers, n as Presence, r as Portal$1, l as createSlot, D as DismissableLayer, x as useTaskOnPortalContainer, c as useTranslation, e as createLocaleLoader } from "./ThemeProvider-mXLdLSkq.js";
|
|
8
8
|
import { d as useToast, u as useWallet, e as createEthereumAdapterFromProvider } from "./useToast-CaRkylKe.js";
|
|
9
9
|
import { jsx, jsxs, Fragment } from "react/jsx-runtime";
|
|
10
|
-
import { D as Dialog, b as useId, h as hideOthers, R as ReactRemoveScroll, d as useFocusGuards, F as FocusScope, P as Pagination$1, B as Button, T as Table,
|
|
10
|
+
import { D as Dialog, b as useId, h as hideOthers, R as ReactRemoveScroll, d as useFocusGuards, F as FocusScope, P as Pagination$1, B as Button, T as Table, a as usePagination } from "./WidgetShell-D7yC894Y.js";
|
|
11
11
|
import * as ReactDOM from "react-dom";
|
|
12
12
|
import { createPortal } from "react-dom";
|
|
13
|
-
const Input = forwardRef(
|
|
14
|
-
function Input2({
|
|
15
|
-
value,
|
|
16
|
-
onChange,
|
|
17
|
-
type = "text",
|
|
18
|
-
inputMode,
|
|
19
|
-
maxLength,
|
|
20
|
-
disabled = false,
|
|
21
|
-
placeholder,
|
|
22
|
-
hasError = false,
|
|
23
|
-
error: error2,
|
|
24
|
-
className,
|
|
25
|
-
autoFocus = false,
|
|
26
|
-
onBlur,
|
|
27
|
-
onFocus,
|
|
28
|
-
onEnter,
|
|
29
|
-
rightSlot,
|
|
30
|
-
formatValue
|
|
31
|
-
}, ref) {
|
|
32
|
-
const inputRef = useRef(null);
|
|
33
|
-
const isError = hasError || !!error2;
|
|
34
|
-
const focus = useCallback(() => {
|
|
35
|
-
var _a;
|
|
36
|
-
(_a = inputRef.current) == null ? void 0 : _a.focus();
|
|
37
|
-
}, []);
|
|
38
|
-
const blur = useCallback(() => {
|
|
39
|
-
var _a;
|
|
40
|
-
(_a = inputRef.current) == null ? void 0 : _a.blur();
|
|
41
|
-
}, []);
|
|
42
|
-
const getElement = useCallback(() => {
|
|
43
|
-
return inputRef.current;
|
|
44
|
-
}, []);
|
|
45
|
-
useImperativeHandle(
|
|
46
|
-
ref,
|
|
47
|
-
() => ({
|
|
48
|
-
focus,
|
|
49
|
-
blur,
|
|
50
|
-
getElement
|
|
51
|
-
}),
|
|
52
|
-
[focus, blur, getElement]
|
|
53
|
-
);
|
|
54
|
-
useEffect(() => {
|
|
55
|
-
var _a;
|
|
56
|
-
if (autoFocus) {
|
|
57
|
-
(_a = inputRef.current) == null ? void 0 : _a.focus();
|
|
58
|
-
}
|
|
59
|
-
}, [autoFocus]);
|
|
60
|
-
const handleChange = useCallback(
|
|
61
|
-
(e) => {
|
|
62
|
-
let newValue = e.target.value;
|
|
63
|
-
if (formatValue) {
|
|
64
|
-
newValue = formatValue(newValue);
|
|
65
|
-
}
|
|
66
|
-
onChange(newValue);
|
|
67
|
-
},
|
|
68
|
-
[onChange, formatValue]
|
|
69
|
-
);
|
|
70
|
-
const handleKeyDown = useCallback(
|
|
71
|
-
(e) => {
|
|
72
|
-
if (e.key === "Enter" && onEnter) {
|
|
73
|
-
onEnter(e);
|
|
74
|
-
}
|
|
75
|
-
},
|
|
76
|
-
[onEnter]
|
|
77
|
-
);
|
|
78
|
-
const needWrapper = rightSlot || error2;
|
|
79
|
-
const inputElement = /* @__PURE__ */ jsx(
|
|
80
|
-
"input",
|
|
81
|
-
{
|
|
82
|
-
ref: inputRef,
|
|
83
|
-
className: `taskon-input ${isError ? "taskon-input--error" : ""} ${!needWrapper ? className || "" : ""}`,
|
|
84
|
-
type,
|
|
85
|
-
inputMode,
|
|
86
|
-
value,
|
|
87
|
-
onChange: handleChange,
|
|
88
|
-
maxLength,
|
|
89
|
-
disabled,
|
|
90
|
-
placeholder,
|
|
91
|
-
onBlur,
|
|
92
|
-
onFocus,
|
|
93
|
-
onKeyDown: handleKeyDown
|
|
94
|
-
}
|
|
95
|
-
);
|
|
96
|
-
if (!needWrapper) {
|
|
97
|
-
return inputElement;
|
|
98
|
-
}
|
|
99
|
-
return /* @__PURE__ */ jsxs("div", { className: `taskon-input-wrapper ${className || ""}`, children: [
|
|
100
|
-
/* @__PURE__ */ jsxs("div", { className: `taskon-input-container ${isError ? "taskon-input-container--error" : ""}`, children: [
|
|
101
|
-
/* @__PURE__ */ jsx(
|
|
102
|
-
"input",
|
|
103
|
-
{
|
|
104
|
-
ref: inputRef,
|
|
105
|
-
className: "taskon-input taskon-input--in-container",
|
|
106
|
-
type,
|
|
107
|
-
inputMode,
|
|
108
|
-
value,
|
|
109
|
-
onChange: handleChange,
|
|
110
|
-
maxLength,
|
|
111
|
-
disabled,
|
|
112
|
-
placeholder,
|
|
113
|
-
onBlur,
|
|
114
|
-
onFocus,
|
|
115
|
-
onKeyDown: handleKeyDown
|
|
116
|
-
}
|
|
117
|
-
),
|
|
118
|
-
rightSlot && /* @__PURE__ */ jsx("div", { className: "taskon-input-slot", children: rightSlot })
|
|
119
|
-
] }),
|
|
120
|
-
error2 && /* @__PURE__ */ jsx("p", { className: "taskon-input-error", children: error2 })
|
|
121
|
-
] });
|
|
122
|
-
}
|
|
123
|
-
);
|
|
124
|
-
const MetaMaskIcon = new URL("data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%3e%3crect%20width='24'%20height='24'%20rx='8'%20fill='white'/%3e%3crect%20width='24'%20height='24'%20fill='url(%23pattern0)'/%3e%3cdefs%3e%3cpattern%20id='pattern0'%20patternContentUnits='objectBoundingBox'%20width='1'%20height='1'%3e%3cuse%20xlink:href='%23image0_1936_8376'%20transform='scale(0.00227273)'/%3e%3c/pattern%3e%3cimage%20id='image0_1936_8376'%20width='440'%20height='440'%20xlink:href='data:image/png;base64,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l53inR274nedqvKqqtptvHtZNVotr+7aM27P5b3BextqnGq21urXlu4D++T7XuzP2H/jQOSBloPMgzW/Wv+64RD9UEkdUjetrqdeWN/RkNbQfjjicEujb+OhI85Hdh41P1pxTO/YsuOU4wuO9zcVNfU2S5q7T2SfeNwyseXuydST107FnWo7HXn63JnQMyfPss42nfM7d/S8z/nDF5gX6i96Xqxr9Wg99JvHb4faPNvqLnldarjsfbmxfXT78SsBV05cDb565hrn2sXr0dfbbyTduHVz3M2OW/xbz2/n3X59p/BO39059wj3Su5r3S97YPyg8nf732s7PDuOPQx+2Poo4dHdx7zHL5/InnzuXPCU9rTsmdmzqueuz492hXZdfjH2RedLycu+7uI/tP/Y8Mru1a9/Bv7Z2pPa0/la+rr/zZK3hm93/uX+V0tvbO+Dd/nv+t6XfDD8sOsj8+PZTymfnvVN+Uz6XP7F/kvj18iv9/rz+/slXCl34FMAgwPNygLgzU4AaGkA0GHfRhmr7AUHBFH2rwMI/Ces7BcHxBOAGvj9HtcNv25uArBvO2y/IL8m7FVjaQAkegPUzW1oqESW5eaq5KLCPoXwoL//LezZSKsA+LK8v7+vsr//yzYYLOwdm8XKHlQhRNgzbIn+kpmfCf6NKPvT73L88QwUEbiDH8//AlB8kNc164p8AAAAOGVYSWZNTQAqAAAACAABh2kABAAAAAEAAAAaAAAAAAACoAIABAAAAAEAAAG4oAMABAAAAAEAAAG4AAAAAAH7VFcAAEAASURBVHgB7L0HnBzHdSZe3TOzEbsLgNgFsABIgAQBZgWKpEQCTGKQqESKQZKDJNuyrL/P9sm2CMr++fzH+SSKAChZ54vSna1gi0qWxCCREqlAIVDMIikxIRCBCJuAxeYwM133vZ7p3dnZnpmeme6erppX5GJmOlS9+qrqvXqvXr0SghMjwAgwAowAI8AIMAKMACPACDACjAAjwAgwAowAI8AIMAKMACPACDACjAAjwAgwAowAI8AIMAKMACPACDACjAAjwAgwAowAI8AIMAKMACPACDACjAAjwAgwAowAI8AIMAKMACPACDACjAAjwAgwAowAI8AIMAKMACPACDACjAAjwAgwAowAI8AIMAKMACPACDACjAAjwAgwAowAI8AIMAKMACPACDACjAAjwAgwAowAI8AIMAKMACPACDACjAAjwAgwAowAI8AIMAKMACPACDACjAAjwAgwAowAI8AIMAKMACPACDACjAAjwAgwAowAI8AIMAKMACPACDACjAAjwAgwAowAI8AIMAKMACPACDACjAAjwAgwAowAI8AIMAKMACPACDACjAAjwAgwAowAI8AIMAKMACPACDACjAAjwAgwAowAI8AIMAKMACPACDACjAAjwAgwAowAI8AIMAKMACPACDACjAAjwAgwAowAI8AIMAKMACPACDACjAAjwAgwAowAI8AIMAKMACPACDACjAAjwAgwAowAI8AIMAKMACPACDACjAAjwAgwAowAI8AIMAKMACPACDACjAAjwAgwAowAI8AIMAKMACPACDACjAAjwAgwAowAI8AIMAKMACPACDACjAAjwAgwAowAI8AIMAKMACPACDACjAAjwAgwAowAI8AIMAKMACPACDACjAAjwAgwAowAI8AIMAKMACPACDACjAAjwAgwAowAI8AIMAKMACPACDACjAAjwAhEHQEj6gT6Td89t3ZdOzJl3P2WlYn//Oauw/cam4XldxmcHyPACDACUUDgxc3nNgy8fvIPXhpI/8WipsR7P/jt1/dFga6waIiHVVBUytl7wvjw6LS8oGds+ntp2X388B3Glwwpv75i69FXo0Ij08EIMAKMQDUIHPz08guFND6y79CJP/z5a1brdFqK/obJDyDPO6vJV7V360qD2yyEOb6x6xgaqcswhMSncekqU7x5RUwAiOelNL4Ss6xvdH/+6IBqDcn0MgKMQH0jsP/21ctMkfoAeNnH0kKet+uAJX7TkwYoEsmQwhRPbt3e97Z6QqmuBNztV3RuNCxje24DEwDd7YZ45/qY1RIz0AtECh3hXsi+r6x87fDDxncF9RBOjAAjwAhEDoE9f762saFp4r2mIf4AvOs6InBkSpgP7U4Z/aPSnsXnEA0xF1+9ZefRQznXtP5aVwLujo1L/wlN/gm0aCK3VdE5RENMiOvXxcVpHQSJkcSsJ4GJzwA0vXtIs1u57chzue/wd0aAEWAEaoXAwTtOPdeUqd+Xwvg4aFgErpWCgIvvO2GJn+61RMoirY0MUznJwGRdGp/auqP3izlXtf46FwCNq7o5xzzpWk2YLKG+GWSufNupJpS4mZTCt7g0xG488S/xWOpfln+up3/mLn9hBBgB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Rqgqv49VlnCuOBiixLFo0IPFiNWIIbNba86Gv0jh5tiiZsYyEOAILgMUfuV8AhdjzSnEmnPqAhRDbNs+0jq+rn7NA+86v1SZQxIYSoAjuKE8eOQSAovXPvB6RTR+HUZzLzk0y7KQ5McVserrKdwcWsLMVk4CHMHlRMQTnE7gSEvzdVGf6XdSPiG4e269u/H/nJQn5oUESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAEiiDw/21fUQrhhQi0AAAAAElFTkSuQmCC'/%3e%3c/defs%3e%3c/svg%3e", import.meta.url).href;
|
|
125
|
-
const WalletConnectIcon = new URL("data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3crect%20width='24'%20height='24'%20rx='8'%20fill='%23216DFF'/%3e%3cpath%20d='M7.82421%2018.1965C7.54878%2018.1956%207.36404%2018.0185%207.18434%2017.8404C5.61069%2016.2668%204.03201%2014.6965%202.46507%2013.1145C1.83528%2012.4771%201.84871%2012.289%202.48355%2011.6256C3.5584%2010.5046%203.57687%2010.4836%204.71722%2011.5626C5.61741%2012.4141%206.47561%2013.3135%207.32457%2014.2179C7.6739%2014.589%207.91154%2014.5722%208.27682%2014.2229C9.29286%2013.2589%2010.2813%2012.2662%2011.2411%2011.2461C11.8986%2010.5407%2012.1035%2010.5491%2012.803%2011.2385C13.7653%2012.1874%2014.6428%2013.2236%2015.6563%2014.1263C16.1148%2014.5344%2016.3684%2014.6041%2016.8126%2014.1288C17.801%2013.0741%2018.8565%2012.0833%2019.8667%2011.047C20.2488%2010.6557%2020.5679%2010.6389%2020.9727%2011.0168C22.3632%2012.3134%2022.333%2012.4158%2020.9374%2013.7258C19.6005%2014.9812%2018.3435%2016.3264%2017.0553%2017.6355C16.3214%2018.3821%2016.2156%2018.3426%2015.4422%2017.68C14.3573%2016.7496%2013.4731%2015.6244%2012.4696%2014.6167C12.1371%2014.2825%2011.9162%2014.2556%2011.5803%2014.61C10.5684%2015.6739%209.61535%2016.8%208.50187%2017.7607C8.29446%2017.9395%208.11812%2018.1621%207.82421%2018.1973'%20fill='white'/%3e%3cpath%20d='M11.9418%205C14.3342%205.17298%2016.515%205.89179%2018.2373%207.88026C18.6697%208.37906%2018.6823%208.79725%2018.2675%209.27421C18.2028%209.34811%2018.1407%209.42452%2018.0743%209.49758C17.0474%2010.643%2017.0474%2010.643%2015.954%209.58659C13.6666%207.37559%2010.3027%207.39826%208.03205%209.64033C7.87586%209.79484%207.72051%209.95019%207.5702%2010.1106C7.18225%2010.5262%206.86483%2010.5178%206.45084%2010.0711C5.0485%208.5596%205.02247%208.5638%206.51634%207.17237C8.07908%205.71713%209.95167%205.17214%2011.9418%205Z'%20fill='white'/%3e%3c/svg%3e", import.meta.url).href;
|
|
126
|
-
const OntoIcon = new URL("data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3crect%20width='24'%20height='24'%20rx='8'%20fill='white'/%3e%3cpath%20d='M4%203L6.79044%205.78909C7.92085%204.88432%209.28103%204.31246%2010.7184%204.1377C12.1557%203.96293%2013.6133%204.19216%2014.9276%204.79967C16.2418%205.40718%2017.3608%206.36893%2018.159%207.577C18.9571%208.78507%2019.4028%2010.1917%2019.446%2011.6389V11.8645V21L16.6556%2018.2116C15.5251%2019.1154%2014.1652%2019.6864%2012.7284%2019.8606C11.2917%2020.0349%209.83473%2019.8054%208.52103%2019.198C7.20733%2018.5906%206.08879%2017.6293%205.29085%2016.4218C4.4929%2015.2143%204.04708%2013.8084%204.00339%2012.3618L4%2012.1355V3ZM5.90839%207.6067V12.1355C5.90923%2013.2008%206.19949%2014.2459%206.74817%2015.1591C7.29684%2016.0722%208.08331%2016.8192%209.02353%2017.3201C9.96376%2017.821%2011.0224%2018.057%2012.0864%2018.0029C13.1503%2017.9489%2014.1796%2017.6068%2015.0642%2017.0132L15.2153%2016.9082L6.28099%207.9793L5.90839%207.6067ZM8.38178%206.98683L8.23071%207.09183L17.165%2016.0214L17.5376%2016.394V11.8645C17.5368%2010.7992%2017.2465%209.7541%2016.6978%208.84093C16.1491%207.92777%2015.3627%207.18083%2014.4225%206.67993C13.4822%206.17903%2012.4236%205.943%2011.3596%205.99706C10.2957%206.05111%209.2664%206.39322%208.38178%206.98683Z'%20fill='black'/%3e%3c/svg%3e", import.meta.url).href;
|
|
127
|
-
const BitgetIcon = new URL("data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20clip-path='url(%23clip0_2600_5842)'%3e%3cpath%20d='M16%200H8C3.58172%200%200%203.58172%200%208V16C0%2020.4183%203.58172%2024%208%2024H16C20.4183%2024%2024%2020.4183%2024%2016V8C24%203.58172%2020.4183%200%2016%200Z'%20fill='white'/%3e%3cmask%20id='mask0_2600_5842'%20style='mask-type:alpha'%20maskUnits='userSpaceOnUse'%20x='0'%20y='0'%20width='24'%20height='24'%3e%3cpath%20d='M16%200H8C3.58172%200%200%203.58172%200%208V16C0%2020.4183%203.58172%2024%208%2024H16C20.4183%2024%2024%2020.4183%2024%2016V8C24%203.58172%2020.4183%200%2016%200Z'%20fill='white'/%3e%3c/mask%3e%3cg%20mask='url(%23mask0_2600_5842)'%3e%3cg%20filter='url(%23filter0_f_2600_5842)'%3e%3cpath%20d='M26.0859%20-6.75C26.0859%204.56321%2016.9148%2013.7344%205.60156%2013.7344C-5.71165%2013.7344%20-14.8828%204.56321%20-14.8828%20-6.75C-14.8828%20-18.0632%20-5.71165%20-27.2344%205.60156%20-27.2344C16.9148%20-27.2344%2026.0859%20-18.0632%2026.0859%20-6.75Z'%20fill='%2333FFF3'/%3e%3c/g%3e%3cg%20filter='url(%23filter1_f_2600_5842)'%3e%3cpath%20d='M9.5625%2022.957C9.5625%2027.4423%205.92657%2031.0781%201.44141%2031.0781C-3.04376%2031.0781%20-6.67969%2027.4423%20-6.67969%2022.957C-6.67969%2018.4719%20-3.04376%2014.8359%201.44141%2014.8359C5.92657%2014.8359%209.5625%2018.4719%209.5625%2022.957Z'%20fill='url(%23paint0_linear_2600_5842)'%20fill-opacity='0.87'/%3e%3c/g%3e%3cg%20filter='url(%23filter2_f_2600_5842)'%3e%3cpath%20d='M49.5%2042.2578C49.5%2053.5711%2040.3289%2062.7422%2029.0156%2062.7422C17.7024%2062.7422%208.53125%2053.5711%208.53125%2042.2578C8.53125%2030.9445%2017.7024%2021.7734%2029.0156%2021.7734C40.3289%2021.7734%2049.5%2030.9445%2049.5%2042.2578Z'%20fill='%2333FFF3'/%3e%3c/g%3e%3cg%20filter='url(%23filter3_f_2600_5842)'%3e%3cpath%20d='M26.0391%20-1.66406C26.0391%201.92147%2023.1324%204.82812%2019.5469%204.82812C15.9613%204.82812%2013.0547%201.92147%2013.0547%20-1.66406C13.0547%20-5.2496%2015.9613%20-8.15625%2019.5469%20-8.15625C23.1324%20-8.15625%2026.0391%20-5.2496%2026.0391%20-1.66406Z'%20fill='%2353C0FB'/%3e%3c/g%3e%3c/g%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M14.1111%203.63526C14.1335%203.61077%2014.1559%203.58628%2014.1786%203.56211L14.1789%203.56139C14.175%203.55316%2014.1707%203.54493%2014.1664%203.53668L14.1664%203.53664C14.1549%203.53544%2014.1434%203.53387%2014.1319%203.53228C14.1088%203.52909%2014.0856%203.52588%2014.0626%203.52588C13.6357%203.5256%2013.2085%203.52196%2012.781%203.51833C11.8354%203.51027%2010.889%203.50221%209.94501%203.53054C9.8897%203.53197%209.82326%203.56389%209.78301%203.60336C9.56315%203.81772%209.34682%204.03562%209.1304%204.25361C9.07987%204.3045%209.02934%204.3554%208.97876%204.40626C8.79524%204.59078%208.61182%204.77547%208.42837%204.96018C8.13468%205.25594%207.84091%205.55175%207.54663%205.84699C7.36675%206.02713%207.18642%206.2068%207.00609%206.3865C6.79569%206.59614%206.5853%206.80579%206.37562%207.01617C6.16108%207.23182%205.94716%207.4481%205.73325%207.6644C5.55501%207.84461%205.37676%208.02485%205.19815%208.20471C5.07098%208.33277%204.94317%208.46015%204.81537%208.58751C4.63886%208.76341%204.46237%208.93931%204.28758%209.11699C4.07528%209.33261%204.01495%209.68202%204.1755%209.93531C4.28216%2010.1044%204.42867%2010.2506%204.5719%2010.3936L4.58357%2010.4053C4.96429%2010.7855%205.3478%2011.1632%205.73133%2011.5408C5.91733%2011.724%206.10335%2011.9072%206.28905%2012.0907C6.47772%2012.2771%206.66613%2012.4639%206.85459%2012.6506C7.00523%2012.7999%207.15588%2012.9492%207.30668%2013.0984C7.38648%2013.1774%207.46624%2013.2565%207.546%2013.3356C7.888%2013.6746%208.22993%2014.0136%208.57537%2014.349C8.61705%2014.3896%208.69031%2014.4179%208.74888%2014.4179C10.0646%2014.4222%2011.3804%2014.4218%2012.6962%2014.4208C12.7156%2014.4205%2012.735%2014.4121%2012.7544%2014.4036C12.7637%2014.3996%2012.773%2014.3956%2012.7824%2014.3924C12.7779%2014.3843%2012.774%2014.3758%2012.7701%2014.3672C12.7622%2014.3496%2012.7542%2014.332%2012.7414%2014.3192C12.629%2014.2059%2012.516%2014.0929%2012.403%2013.98C12.2901%2013.8671%2012.1771%2013.7542%2012.0647%2013.6408C11.8397%2013.4143%2011.6151%2013.1873%2011.3905%2012.9604C11.1659%2012.7333%2010.9413%2012.5063%2010.7162%2012.2797C10.1131%2011.6724%209.50931%2011.0661%208.90512%2010.4598C8.65907%2010.213%208.41194%209.96688%208.16482%209.72114C8.0653%209.62211%208.0646%209.61494%208.15619%209.52311C8.2033%209.47591%208.25004%209.42835%208.29677%209.38078C8.36303%209.31335%208.42931%209.24589%208.49672%209.17943C8.67972%208.99886%208.86305%208.81849%209.04637%208.63814C9.33983%208.34941%209.63334%208.06066%209.92561%207.77097C10.1823%207.51658%2010.438%207.26123%2010.6937%207.00593C10.9067%206.79316%2011.1198%206.58042%2011.3333%206.36826C11.454%206.2484%2011.5756%206.12941%2011.6972%206.01042C11.8249%205.88538%2011.9526%205.76034%2012.0794%205.63425C12.1843%205.5299%2012.2883%205.42455%2012.3923%205.31917C12.5419%205.16765%2012.6915%205.01613%2012.8438%204.8676C13.0639%204.65282%2013.2862%204.43996%2013.5085%204.2271C13.6612%204.08085%2013.8139%203.9346%2013.9659%203.78777C14.0162%203.73902%2014.0636%203.68715%2014.1111%203.63526ZM9.80814%2020.4998C9.80802%2020.4999%209.80793%2020.5%209.80781%2020.5001V20.4998C9.80793%2020.4998%209.80802%2020.4998%209.80814%2020.4998ZM9.80814%2020.4998C10.3735%2020.4998%2010.9515%2020.5036%2011.5319%2020.5074C12.3677%2020.5129%2013.2084%2020.5184%2014.023%2020.5127C14.0809%2020.5123%2014.1531%2020.4951%2014.1933%2020.4582C14.3316%2020.3316%2014.4637%2020.198%2014.5957%2020.0645C14.619%2020.041%2014.6423%2020.0174%2014.6657%2019.9939C14.9028%2019.7551%2015.1397%2019.516%2015.3766%2019.277C15.7318%2018.9185%2016.087%2018.56%2016.443%2018.2023C16.9423%2017.7007%2017.4421%2017.1996%2017.942%2016.6984C18.2275%2016.412%2018.5131%2016.1257%2018.7986%2015.8393C18.882%2015.7557%2018.9656%2015.6724%2019.0493%2015.5892C19.2722%2015.3672%2019.4952%2015.1452%2019.7128%2014.918C19.9028%2014.7196%2019.9495%2014.4814%2019.8719%2014.2138C19.8247%2014.0512%2019.713%2013.9407%2019.6013%2013.8302C19.589%2013.8181%2019.5767%2013.8059%2019.5645%2013.7937C19.3393%2013.5683%2019.1125%2013.3448%2018.8857%2013.1211C18.7261%2012.9638%2018.5665%2012.8065%2018.4075%2012.6485C18.1675%2012.41%2017.9281%2012.1708%2017.6887%2011.9317C17.4893%2011.7324%2017.2898%2011.533%2017.0899%2011.3341C16.9052%2011.1503%2016.7203%2010.9669%2016.5354%2010.7834C16.1823%2010.4331%2015.8293%2010.0828%2015.4778%209.73082C15.4027%209.65584%2015.3266%209.6196%2015.2181%209.62033C14.6488%209.62375%2014.0793%209.62354%2013.51%209.62331C13.3676%209.62324%2013.2253%209.62319%2013.083%209.62319C12.9198%209.6231%2012.7566%209.62286%2012.5934%209.62265C12.1855%209.62209%2011.7775%209.62155%2011.3696%209.62284C11.338%209.62307%2011.3064%209.63404%2011.275%209.64499C11.2601%209.65019%2011.2452%209.65539%2011.2302%209.65943C11.2378%209.67161%2011.2448%209.68443%2011.2518%209.69723C11.2669%209.7251%2011.2821%209.75294%2011.3035%209.77457C11.4959%209.96906%2011.6894%2010.1626%2011.8828%2010.3562C11.9869%2010.4604%2012.0911%2010.5646%2012.1951%2010.6689C12.6498%2011.1253%2013.1042%2011.5818%2013.5586%2012.0384C13.7104%2012.191%2013.8622%2012.3435%2014.0141%2012.4961L14.0177%2012.4997C14.6286%2013.1131%2015.2398%2013.7267%2015.8507%2014.3404C15.9362%2014.4261%2015.9365%2014.4279%2015.8503%2014.514C15.5288%2014.8342%2015.2069%2015.154%2014.8849%2015.4738C14.8043%2015.5539%2014.7236%2015.6339%2014.643%2015.7141L14.6391%2015.7179C13.8821%2016.4693%2013.1255%2017.2203%2012.3689%2017.972C12.2165%2018.1233%2012.0645%2018.2751%2011.9126%2018.4268C11.6509%2018.6881%2011.3892%2018.9493%2011.1254%2019.2083C10.8876%2019.4419%2010.6473%2019.6732%2010.4071%2019.9045C10.2688%2020.0376%2010.1306%2020.1707%209.9928%2020.3042C9.95322%2020.3428%209.91574%2020.3835%209.87362%2020.4292C9.85316%2020.4514%209.83158%2020.4748%209.80814%2020.4998Z'%20fill='black'/%3e%3c/g%3e%3cdefs%3e%3cfilter%20id='filter0_f_2600_5842'%20x='-28.9453'%20y='-41.2969'%20width='69.0938'%20height='69.0938'%20filterUnits='userSpaceOnUse'%20color-interpolation-filters='sRGB'%3e%3cfeFlood%20flood-opacity='0'%20result='BackgroundImageFix'/%3e%3cfeBlend%20mode='normal'%20in='SourceGraphic'%20in2='BackgroundImageFix'%20result='shape'/%3e%3cfeGaussianBlur%20stdDeviation='7.03125'%20result='effect1_foregroundBlur_2600_5842'/%3e%3c/filter%3e%3cfilter%20id='filter1_f_2600_5842'%20x='-16.0547'%20y='5.46094'%20width='34.9922'%20height='34.9922'%20filterUnits='userSpaceOnUse'%20color-interpolation-filters='sRGB'%3e%3cfeFlood%20flood-opacity='0'%20result='BackgroundImageFix'/%3e%3cfeBlend%20mode='normal'%20in='SourceGraphic'%20in2='BackgroundImageFix'%20result='shape'/%3e%3cfeGaussianBlur%20stdDeviation='4.6875'%20result='effect1_foregroundBlur_2600_5842'/%3e%3c/filter%3e%3cfilter%20id='filter2_f_2600_5842'%20x='-0.84375'%20y='12.3984'%20width='59.7188'%20height='59.7188'%20filterUnits='userSpaceOnUse'%20color-interpolation-filters='sRGB'%3e%3cfeFlood%20flood-opacity='0'%20result='BackgroundImageFix'/%3e%3cfeBlend%20mode='normal'%20in='SourceGraphic'%20in2='BackgroundImageFix'%20result='shape'/%3e%3cfeGaussianBlur%20stdDeviation='4.6875'%20result='effect1_foregroundBlur_2600_5842'/%3e%3c/filter%3e%3cfilter%20id='filter3_f_2600_5842'%20x='6.02344'%20y='-15.1875'%20width='27.0469'%20height='27.0469'%20filterUnits='userSpaceOnUse'%20color-interpolation-filters='sRGB'%3e%3cfeFlood%20flood-opacity='0'%20result='BackgroundImageFix'/%3e%3cfeBlend%20mode='normal'%20in='SourceGraphic'%20in2='BackgroundImageFix'%20result='shape'/%3e%3cfeGaussianBlur%20stdDeviation='3.51562'%20result='effect1_foregroundBlur_2600_5842'/%3e%3c/filter%3e%3clinearGradient%20id='paint0_linear_2600_5842'%20x1='1.01953'%20y1='21.7852'%20x2='8.66016'%20y2='18.457'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.442707'%20stop-color='%239D95FE'/%3e%3cstop%20offset='1'%20stop-color='%23E395FE'/%3e%3c/linearGradient%3e%3cclipPath%20id='clip0_2600_5842'%3e%3crect%20width='24'%20height='24'%20fill='white'/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e", import.meta.url).href;
|
|
128
|
-
const OkxIcon = new URL("data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3crect%20width='24'%20height='24'%20rx='8'%20fill='white'/%3e%3cpath%20d='M5%205H9.66667V9.66667H5V5ZM14.3333%205H19V9.66667H14.3333V5ZM5%2014.3333H9.66667V19H5V14.3333ZM14.3333%2014.3333H19V19H14.3333V14.3333ZM9.66667%209.66667H14.3333V14.3333H9.66667V9.66667Z'%20fill='%23010101'/%3e%3c/svg%3e", import.meta.url).href;
|
|
129
|
-
const EVM_WALLETS = [
|
|
130
|
-
{
|
|
131
|
-
id: "metamask",
|
|
132
|
-
name: "MetaMask",
|
|
133
|
-
icon: MetaMaskIcon,
|
|
134
|
-
downloadUrl: "https://metamask.io/download/",
|
|
135
|
-
checkInstalled: () => typeof window !== "undefined" && Boolean(window.ethereum)
|
|
136
|
-
},
|
|
137
|
-
{
|
|
138
|
-
id: "walletconnect",
|
|
139
|
-
name: "WalletConnect",
|
|
140
|
-
icon: WalletConnectIcon,
|
|
141
|
-
downloadUrl: "https://walletconnect.com/",
|
|
142
|
-
checkInstalled: () => false
|
|
143
|
-
// WalletConnect 不需要安装
|
|
144
|
-
},
|
|
145
|
-
{
|
|
146
|
-
id: "onto",
|
|
147
|
-
name: "ONTO",
|
|
148
|
-
icon: OntoIcon,
|
|
149
|
-
downloadUrl: "https://onto.app/",
|
|
150
|
-
checkInstalled: () => typeof window !== "undefined" && Boolean(window.onto)
|
|
151
|
-
},
|
|
152
|
-
{
|
|
153
|
-
id: "bitget",
|
|
154
|
-
name: "Bitget Wallet",
|
|
155
|
-
icon: BitgetIcon,
|
|
156
|
-
downloadUrl: "https://web3.bitget.com/",
|
|
157
|
-
checkInstalled: () => {
|
|
158
|
-
var _a;
|
|
159
|
-
return typeof window !== "undefined" && Boolean((_a = window.bitkeep) == null ? void 0 : _a.ethereum);
|
|
160
|
-
}
|
|
161
|
-
},
|
|
162
|
-
{
|
|
163
|
-
id: "okx",
|
|
164
|
-
name: "OKX Wallet",
|
|
165
|
-
icon: OkxIcon,
|
|
166
|
-
downloadUrl: "https://www.okx.com/web3",
|
|
167
|
-
checkInstalled: () => typeof window !== "undefined" && Boolean(window.okxwallet)
|
|
168
|
-
}
|
|
169
|
-
];
|
|
170
13
|
const DEFAULT_OAUTH_TOOL_URL = "https://generalauthservice.com";
|
|
171
14
|
const OAUTH_POPUP_CONFIG = {
|
|
172
15
|
/** 窗口宽度 */
|
|
@@ -405,44 +248,315 @@ function useChainMap() {
|
|
|
405
248
|
isLoaded: chains.length > 0
|
|
406
249
|
};
|
|
407
250
|
}
|
|
408
|
-
function getRewardId(item) {
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
}
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
251
|
+
const MetaMaskIcon = new URL("data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%3e%3crect%20width='24'%20height='24'%20rx='8'%20fill='white'/%3e%3crect%20width='24'%20height='24'%20fill='url(%23pattern0)'/%3e%3cdefs%3e%3cpattern%20id='pattern0'%20patternContentUnits='objectBoundingBox'%20width='1'%20height='1'%3e%3cuse%20xlink:href='%23image0_1936_8376'%20transform='scale(0.00227273)'/%3e%3c/pattern%3e%3cimage%20id='image0_1936_8376'%20width='440'%20height='440'%20xlink:href='data:image/png;base64,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l53inR274nedqvKqqtptvHtZNVotr+7aM27P5b3BextqnGq21urXlu4D++T7XuzP2H/jQOSBloPMgzW/Wv+64RD9UEkdUjetrqdeWN/RkNbQfjjicEujb+OhI85Hdh41P1pxTO/YsuOU4wuO9zcVNfU2S5q7T2SfeNwyseXuydST107FnWo7HXn63JnQMyfPss42nfM7d/S8z/nDF5gX6i96Xqxr9Wg99JvHb4faPNvqLnldarjsfbmxfXT78SsBV05cDb565hrn2sXr0dfbbyTduHVz3M2OW/xbz2/n3X59p/BO39059wj3Su5r3S97YPyg8nf732s7PDuOPQx+2Poo4dHdx7zHL5/InnzuXPCU9rTsmdmzqueuz492hXZdfjH2RedLycu+7uI/tP/Y8Mru1a9/Bv7Z2pPa0/la+rr/zZK3hm93/uX+V0tvbO+Dd/nv+t6XfDD8sOsj8+PZTymfnvVN+Uz6XP7F/kvj18iv9/rz+/slXCl34FMAgwPNygLgzU4AaGkA0GHfRhmr7AUHBFH2rwMI/Ces7BcHxBOAGvj9HtcNv25uArBvO2y/IL8m7FVjaQAkegPUzW1oqESW5eaq5KLCPoXwoL//LezZSKsA+LK8v7+vsr//yzYYLOwdm8XKHlQhRNgzbIn+kpmfCf6NKPvT73L88QwUEbiDH8//AlB8kNc164p8AAAAOGVYSWZNTQAqAAAACAABh2kABAAAAAEAAAAaAAAAAAACoAIABAAAAAEAAAG4oAMABAAAAAEAAAG4AAAAAAH7VFcAAEAASURBVHgB7L0HnBzHdSZe3TOzEbsLgNgFsABIgAQBZgWKpEQCTGKQqESKQZKDJNuyrL/P9sm2CMr++fzH+SSKAChZ54vSna1gi0qWxCCREqlAIVDMIikxIRCBCJuAxeYwM133vZ7p3dnZnpmeme6erppX5GJmOlS9+qrqvXqvXr0SghMjwAgwAowAI8AIMAKMACPACDACjAAjwAgwAowAI8AIMAKMACPACDACjAAjwAgwAowAI8AIMAKMACPACDACjAAjwAgwAowAI8AIMAKMACPACDACjAAjwAgwAowAI8AIMAKMACPACDACjAAjwAgwAowAI8AIMAKMACPACDACjAAjwAgwAowAI8AIMAKMACPACDACjAAjwAgwAowAI8AIMAKMACPACDACjAAjwAgwAowAI8AIMAKMACPACDACjAAjwAgwAowAI8AIMAKMACPACDACjAAjwAgwAowAI8AIMAKMACPACDACjAAjwAgwAowAI8AIMAKMACPACDACjAAjwAgwAowAI8AIMAKMACPACDACjAAjwAgwAowAI8AIMAKMACPACDACjAAjwAgwAowAI8AIMAKMACPACDACjAAjwAgwAowAI8AIMAKMACPACDACjAAjwAgwAowAI8AIMAKMACPACDACjAAjwAgwAowAI8AIMAKMACPACDACjAAjwAgwAowAI8AIMAKMACPACDACjAAjwAgwAowAI8AIMAKMACPACDACjAAjwAgwAowAI8AIMAKMACPACDACjAAjwAgwAowAI8AIMAKMACPACDACjAAjwAgwAowAI8AIMAKMACPACDACjAAjwAgwAowAI8AIMAKMACPACDACjAAjwAgwAowAI8AIMAKMACPACDACjAAjwAgwAowAI8AIMAKMACPACDACjAAjwAgwAowAI8AIMAKMACPACDACjAAjwAhEHQEj6gT6Td89t3ZdOzJl3P2WlYn//Oauw/cam4XldxmcHyPACDACUUDgxc3nNgy8fvIPXhpI/8WipsR7P/jt1/dFga6waIiHVVBUytl7wvjw6LS8oGds+ntp2X388B3Glwwpv75i69FXo0Ij08EIMAKMQDUIHPz08guFND6y79CJP/z5a1brdFqK/obJDyDPO6vJV7V360qD2yyEOb6x6xgaqcswhMSncekqU7x5RUwAiOelNL4Ss6xvdH/+6IBqDcn0MgKMQH0jsP/21ctMkfoAeNnH0kKet+uAJX7TkwYoEsmQwhRPbt3e97Z6QqmuBNztV3RuNCxje24DEwDd7YZ45/qY1RIz0AtECh3hXsi+r6x87fDDxncF9RBOjAAjwAhEDoE9f762saFp4r2mIf4AvOs6InBkSpgP7U4Z/aPSnsXnEA0xF1+9ZefRQznXtP5aVwLujo1L/wlN/gm0aCK3VdE5RENMiOvXxcVpHQSJkcSsJ4GJzwA0vXtIs1u57chzue/wd0aAEWAEaoXAwTtOPdeUqd+Xwvg4aFgErpWCgIvvO2GJn+61RMoirY0MUznJwGRdGp/auqP3izlXtf46FwCNq7o5xzzpWk2YLKG+GWSufNupJpS4mZTCt7g0xG488S/xWOpfln+up3/mLn9hBBgB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Rqgqv49VlnCuOBiixLFo0IPFiNWIIbNba86Gv0jh5tiiZsYyEOAILgMUfuV8AhdjzSnEmnPqAhRDbNs+0jq+rn7NA+86v1SZQxIYSoAjuKE8eOQSAovXPvB6RTR+HUZzLzk0y7KQ5McVserrKdwcWsLMVk4CHMHlRMQTnE7gSEvzdVGf6XdSPiG4e269u/H/nJQn5oUESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAEiiDw/21fUQrhhQi0AAAAAElFTkSuQmCC'/%3e%3c/defs%3e%3c/svg%3e", import.meta.url).href;
|
|
252
|
+
const WalletConnectIcon = new URL("data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3crect%20width='24'%20height='24'%20rx='8'%20fill='%23216DFF'/%3e%3cpath%20d='M7.82421%2018.1965C7.54878%2018.1956%207.36404%2018.0185%207.18434%2017.8404C5.61069%2016.2668%204.03201%2014.6965%202.46507%2013.1145C1.83528%2012.4771%201.84871%2012.289%202.48355%2011.6256C3.5584%2010.5046%203.57687%2010.4836%204.71722%2011.5626C5.61741%2012.4141%206.47561%2013.3135%207.32457%2014.2179C7.6739%2014.589%207.91154%2014.5722%208.27682%2014.2229C9.29286%2013.2589%2010.2813%2012.2662%2011.2411%2011.2461C11.8986%2010.5407%2012.1035%2010.5491%2012.803%2011.2385C13.7653%2012.1874%2014.6428%2013.2236%2015.6563%2014.1263C16.1148%2014.5344%2016.3684%2014.6041%2016.8126%2014.1288C17.801%2013.0741%2018.8565%2012.0833%2019.8667%2011.047C20.2488%2010.6557%2020.5679%2010.6389%2020.9727%2011.0168C22.3632%2012.3134%2022.333%2012.4158%2020.9374%2013.7258C19.6005%2014.9812%2018.3435%2016.3264%2017.0553%2017.6355C16.3214%2018.3821%2016.2156%2018.3426%2015.4422%2017.68C14.3573%2016.7496%2013.4731%2015.6244%2012.4696%2014.6167C12.1371%2014.2825%2011.9162%2014.2556%2011.5803%2014.61C10.5684%2015.6739%209.61535%2016.8%208.50187%2017.7607C8.29446%2017.9395%208.11812%2018.1621%207.82421%2018.1973'%20fill='white'/%3e%3cpath%20d='M11.9418%205C14.3342%205.17298%2016.515%205.89179%2018.2373%207.88026C18.6697%208.37906%2018.6823%208.79725%2018.2675%209.27421C18.2028%209.34811%2018.1407%209.42452%2018.0743%209.49758C17.0474%2010.643%2017.0474%2010.643%2015.954%209.58659C13.6666%207.37559%2010.3027%207.39826%208.03205%209.64033C7.87586%209.79484%207.72051%209.95019%207.5702%2010.1106C7.18225%2010.5262%206.86483%2010.5178%206.45084%2010.0711C5.0485%208.5596%205.02247%208.5638%206.51634%207.17237C8.07908%205.71713%209.95167%205.17214%2011.9418%205Z'%20fill='white'/%3e%3c/svg%3e", import.meta.url).href;
|
|
253
|
+
const OntoIcon = new URL("data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3crect%20width='24'%20height='24'%20rx='8'%20fill='white'/%3e%3cpath%20d='M4%203L6.79044%205.78909C7.92085%204.88432%209.28103%204.31246%2010.7184%204.1377C12.1557%203.96293%2013.6133%204.19216%2014.9276%204.79967C16.2418%205.40718%2017.3608%206.36893%2018.159%207.577C18.9571%208.78507%2019.4028%2010.1917%2019.446%2011.6389V11.8645V21L16.6556%2018.2116C15.5251%2019.1154%2014.1652%2019.6864%2012.7284%2019.8606C11.2917%2020.0349%209.83473%2019.8054%208.52103%2019.198C7.20733%2018.5906%206.08879%2017.6293%205.29085%2016.4218C4.4929%2015.2143%204.04708%2013.8084%204.00339%2012.3618L4%2012.1355V3ZM5.90839%207.6067V12.1355C5.90923%2013.2008%206.19949%2014.2459%206.74817%2015.1591C7.29684%2016.0722%208.08331%2016.8192%209.02353%2017.3201C9.96376%2017.821%2011.0224%2018.057%2012.0864%2018.0029C13.1503%2017.9489%2014.1796%2017.6068%2015.0642%2017.0132L15.2153%2016.9082L6.28099%207.9793L5.90839%207.6067ZM8.38178%206.98683L8.23071%207.09183L17.165%2016.0214L17.5376%2016.394V11.8645C17.5368%2010.7992%2017.2465%209.7541%2016.6978%208.84093C16.1491%207.92777%2015.3627%207.18083%2014.4225%206.67993C13.4822%206.17903%2012.4236%205.943%2011.3596%205.99706C10.2957%206.05111%209.2664%206.39322%208.38178%206.98683Z'%20fill='black'/%3e%3c/svg%3e", import.meta.url).href;
|
|
254
|
+
const BitgetIcon = new URL("data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20clip-path='url(%23clip0_2600_5842)'%3e%3cpath%20d='M16%200H8C3.58172%200%200%203.58172%200%208V16C0%2020.4183%203.58172%2024%208%2024H16C20.4183%2024%2024%2020.4183%2024%2016V8C24%203.58172%2020.4183%200%2016%200Z'%20fill='white'/%3e%3cmask%20id='mask0_2600_5842'%20style='mask-type:alpha'%20maskUnits='userSpaceOnUse'%20x='0'%20y='0'%20width='24'%20height='24'%3e%3cpath%20d='M16%200H8C3.58172%200%200%203.58172%200%208V16C0%2020.4183%203.58172%2024%208%2024H16C20.4183%2024%2024%2020.4183%2024%2016V8C24%203.58172%2020.4183%200%2016%200Z'%20fill='white'/%3e%3c/mask%3e%3cg%20mask='url(%23mask0_2600_5842)'%3e%3cg%20filter='url(%23filter0_f_2600_5842)'%3e%3cpath%20d='M26.0859%20-6.75C26.0859%204.56321%2016.9148%2013.7344%205.60156%2013.7344C-5.71165%2013.7344%20-14.8828%204.56321%20-14.8828%20-6.75C-14.8828%20-18.0632%20-5.71165%20-27.2344%205.60156%20-27.2344C16.9148%20-27.2344%2026.0859%20-18.0632%2026.0859%20-6.75Z'%20fill='%2333FFF3'/%3e%3c/g%3e%3cg%20filter='url(%23filter1_f_2600_5842)'%3e%3cpath%20d='M9.5625%2022.957C9.5625%2027.4423%205.92657%2031.0781%201.44141%2031.0781C-3.04376%2031.0781%20-6.67969%2027.4423%20-6.67969%2022.957C-6.67969%2018.4719%20-3.04376%2014.8359%201.44141%2014.8359C5.92657%2014.8359%209.5625%2018.4719%209.5625%2022.957Z'%20fill='url(%23paint0_linear_2600_5842)'%20fill-opacity='0.87'/%3e%3c/g%3e%3cg%20filter='url(%23filter2_f_2600_5842)'%3e%3cpath%20d='M49.5%2042.2578C49.5%2053.5711%2040.3289%2062.7422%2029.0156%2062.7422C17.7024%2062.7422%208.53125%2053.5711%208.53125%2042.2578C8.53125%2030.9445%2017.7024%2021.7734%2029.0156%2021.7734C40.3289%2021.7734%2049.5%2030.9445%2049.5%2042.2578Z'%20fill='%2333FFF3'/%3e%3c/g%3e%3cg%20filter='url(%23filter3_f_2600_5842)'%3e%3cpath%20d='M26.0391%20-1.66406C26.0391%201.92147%2023.1324%204.82812%2019.5469%204.82812C15.9613%204.82812%2013.0547%201.92147%2013.0547%20-1.66406C13.0547%20-5.2496%2015.9613%20-8.15625%2019.5469%20-8.15625C23.1324%20-8.15625%2026.0391%20-5.2496%2026.0391%20-1.66406Z'%20fill='%2353C0FB'/%3e%3c/g%3e%3c/g%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M14.1111%203.63526C14.1335%203.61077%2014.1559%203.58628%2014.1786%203.56211L14.1789%203.56139C14.175%203.55316%2014.1707%203.54493%2014.1664%203.53668L14.1664%203.53664C14.1549%203.53544%2014.1434%203.53387%2014.1319%203.53228C14.1088%203.52909%2014.0856%203.52588%2014.0626%203.52588C13.6357%203.5256%2013.2085%203.52196%2012.781%203.51833C11.8354%203.51027%2010.889%203.50221%209.94501%203.53054C9.8897%203.53197%209.82326%203.56389%209.78301%203.60336C9.56315%203.81772%209.34682%204.03562%209.1304%204.25361C9.07987%204.3045%209.02934%204.3554%208.97876%204.40626C8.79524%204.59078%208.61182%204.77547%208.42837%204.96018C8.13468%205.25594%207.84091%205.55175%207.54663%205.84699C7.36675%206.02713%207.18642%206.2068%207.00609%206.3865C6.79569%206.59614%206.5853%206.80579%206.37562%207.01617C6.16108%207.23182%205.94716%207.4481%205.73325%207.6644C5.55501%207.84461%205.37676%208.02485%205.19815%208.20471C5.07098%208.33277%204.94317%208.46015%204.81537%208.58751C4.63886%208.76341%204.46237%208.93931%204.28758%209.11699C4.07528%209.33261%204.01495%209.68202%204.1755%209.93531C4.28216%2010.1044%204.42867%2010.2506%204.5719%2010.3936L4.58357%2010.4053C4.96429%2010.7855%205.3478%2011.1632%205.73133%2011.5408C5.91733%2011.724%206.10335%2011.9072%206.28905%2012.0907C6.47772%2012.2771%206.66613%2012.4639%206.85459%2012.6506C7.00523%2012.7999%207.15588%2012.9492%207.30668%2013.0984C7.38648%2013.1774%207.46624%2013.2565%207.546%2013.3356C7.888%2013.6746%208.22993%2014.0136%208.57537%2014.349C8.61705%2014.3896%208.69031%2014.4179%208.74888%2014.4179C10.0646%2014.4222%2011.3804%2014.4218%2012.6962%2014.4208C12.7156%2014.4205%2012.735%2014.4121%2012.7544%2014.4036C12.7637%2014.3996%2012.773%2014.3956%2012.7824%2014.3924C12.7779%2014.3843%2012.774%2014.3758%2012.7701%2014.3672C12.7622%2014.3496%2012.7542%2014.332%2012.7414%2014.3192C12.629%2014.2059%2012.516%2014.0929%2012.403%2013.98C12.2901%2013.8671%2012.1771%2013.7542%2012.0647%2013.6408C11.8397%2013.4143%2011.6151%2013.1873%2011.3905%2012.9604C11.1659%2012.7333%2010.9413%2012.5063%2010.7162%2012.2797C10.1131%2011.6724%209.50931%2011.0661%208.90512%2010.4598C8.65907%2010.213%208.41194%209.96688%208.16482%209.72114C8.0653%209.62211%208.0646%209.61494%208.15619%209.52311C8.2033%209.47591%208.25004%209.42835%208.29677%209.38078C8.36303%209.31335%208.42931%209.24589%208.49672%209.17943C8.67972%208.99886%208.86305%208.81849%209.04637%208.63814C9.33983%208.34941%209.63334%208.06066%209.92561%207.77097C10.1823%207.51658%2010.438%207.26123%2010.6937%207.00593C10.9067%206.79316%2011.1198%206.58042%2011.3333%206.36826C11.454%206.2484%2011.5756%206.12941%2011.6972%206.01042C11.8249%205.88538%2011.9526%205.76034%2012.0794%205.63425C12.1843%205.5299%2012.2883%205.42455%2012.3923%205.31917C12.5419%205.16765%2012.6915%205.01613%2012.8438%204.8676C13.0639%204.65282%2013.2862%204.43996%2013.5085%204.2271C13.6612%204.08085%2013.8139%203.9346%2013.9659%203.78777C14.0162%203.73902%2014.0636%203.68715%2014.1111%203.63526ZM9.80814%2020.4998C9.80802%2020.4999%209.80793%2020.5%209.80781%2020.5001V20.4998C9.80793%2020.4998%209.80802%2020.4998%209.80814%2020.4998ZM9.80814%2020.4998C10.3735%2020.4998%2010.9515%2020.5036%2011.5319%2020.5074C12.3677%2020.5129%2013.2084%2020.5184%2014.023%2020.5127C14.0809%2020.5123%2014.1531%2020.4951%2014.1933%2020.4582C14.3316%2020.3316%2014.4637%2020.198%2014.5957%2020.0645C14.619%2020.041%2014.6423%2020.0174%2014.6657%2019.9939C14.9028%2019.7551%2015.1397%2019.516%2015.3766%2019.277C15.7318%2018.9185%2016.087%2018.56%2016.443%2018.2023C16.9423%2017.7007%2017.4421%2017.1996%2017.942%2016.6984C18.2275%2016.412%2018.5131%2016.1257%2018.7986%2015.8393C18.882%2015.7557%2018.9656%2015.6724%2019.0493%2015.5892C19.2722%2015.3672%2019.4952%2015.1452%2019.7128%2014.918C19.9028%2014.7196%2019.9495%2014.4814%2019.8719%2014.2138C19.8247%2014.0512%2019.713%2013.9407%2019.6013%2013.8302C19.589%2013.8181%2019.5767%2013.8059%2019.5645%2013.7937C19.3393%2013.5683%2019.1125%2013.3448%2018.8857%2013.1211C18.7261%2012.9638%2018.5665%2012.8065%2018.4075%2012.6485C18.1675%2012.41%2017.9281%2012.1708%2017.6887%2011.9317C17.4893%2011.7324%2017.2898%2011.533%2017.0899%2011.3341C16.9052%2011.1503%2016.7203%2010.9669%2016.5354%2010.7834C16.1823%2010.4331%2015.8293%2010.0828%2015.4778%209.73082C15.4027%209.65584%2015.3266%209.6196%2015.2181%209.62033C14.6488%209.62375%2014.0793%209.62354%2013.51%209.62331C13.3676%209.62324%2013.2253%209.62319%2013.083%209.62319C12.9198%209.6231%2012.7566%209.62286%2012.5934%209.62265C12.1855%209.62209%2011.7775%209.62155%2011.3696%209.62284C11.338%209.62307%2011.3064%209.63404%2011.275%209.64499C11.2601%209.65019%2011.2452%209.65539%2011.2302%209.65943C11.2378%209.67161%2011.2448%209.68443%2011.2518%209.69723C11.2669%209.7251%2011.2821%209.75294%2011.3035%209.77457C11.4959%209.96906%2011.6894%2010.1626%2011.8828%2010.3562C11.9869%2010.4604%2012.0911%2010.5646%2012.1951%2010.6689C12.6498%2011.1253%2013.1042%2011.5818%2013.5586%2012.0384C13.7104%2012.191%2013.8622%2012.3435%2014.0141%2012.4961L14.0177%2012.4997C14.6286%2013.1131%2015.2398%2013.7267%2015.8507%2014.3404C15.9362%2014.4261%2015.9365%2014.4279%2015.8503%2014.514C15.5288%2014.8342%2015.2069%2015.154%2014.8849%2015.4738C14.8043%2015.5539%2014.7236%2015.6339%2014.643%2015.7141L14.6391%2015.7179C13.8821%2016.4693%2013.1255%2017.2203%2012.3689%2017.972C12.2165%2018.1233%2012.0645%2018.2751%2011.9126%2018.4268C11.6509%2018.6881%2011.3892%2018.9493%2011.1254%2019.2083C10.8876%2019.4419%2010.6473%2019.6732%2010.4071%2019.9045C10.2688%2020.0376%2010.1306%2020.1707%209.9928%2020.3042C9.95322%2020.3428%209.91574%2020.3835%209.87362%2020.4292C9.85316%2020.4514%209.83158%2020.4748%209.80814%2020.4998Z'%20fill='black'/%3e%3c/g%3e%3cdefs%3e%3cfilter%20id='filter0_f_2600_5842'%20x='-28.9453'%20y='-41.2969'%20width='69.0938'%20height='69.0938'%20filterUnits='userSpaceOnUse'%20color-interpolation-filters='sRGB'%3e%3cfeFlood%20flood-opacity='0'%20result='BackgroundImageFix'/%3e%3cfeBlend%20mode='normal'%20in='SourceGraphic'%20in2='BackgroundImageFix'%20result='shape'/%3e%3cfeGaussianBlur%20stdDeviation='7.03125'%20result='effect1_foregroundBlur_2600_5842'/%3e%3c/filter%3e%3cfilter%20id='filter1_f_2600_5842'%20x='-16.0547'%20y='5.46094'%20width='34.9922'%20height='34.9922'%20filterUnits='userSpaceOnUse'%20color-interpolation-filters='sRGB'%3e%3cfeFlood%20flood-opacity='0'%20result='BackgroundImageFix'/%3e%3cfeBlend%20mode='normal'%20in='SourceGraphic'%20in2='BackgroundImageFix'%20result='shape'/%3e%3cfeGaussianBlur%20stdDeviation='4.6875'%20result='effect1_foregroundBlur_2600_5842'/%3e%3c/filter%3e%3cfilter%20id='filter2_f_2600_5842'%20x='-0.84375'%20y='12.3984'%20width='59.7188'%20height='59.7188'%20filterUnits='userSpaceOnUse'%20color-interpolation-filters='sRGB'%3e%3cfeFlood%20flood-opacity='0'%20result='BackgroundImageFix'/%3e%3cfeBlend%20mode='normal'%20in='SourceGraphic'%20in2='BackgroundImageFix'%20result='shape'/%3e%3cfeGaussianBlur%20stdDeviation='4.6875'%20result='effect1_foregroundBlur_2600_5842'/%3e%3c/filter%3e%3cfilter%20id='filter3_f_2600_5842'%20x='6.02344'%20y='-15.1875'%20width='27.0469'%20height='27.0469'%20filterUnits='userSpaceOnUse'%20color-interpolation-filters='sRGB'%3e%3cfeFlood%20flood-opacity='0'%20result='BackgroundImageFix'/%3e%3cfeBlend%20mode='normal'%20in='SourceGraphic'%20in2='BackgroundImageFix'%20result='shape'/%3e%3cfeGaussianBlur%20stdDeviation='3.51562'%20result='effect1_foregroundBlur_2600_5842'/%3e%3c/filter%3e%3clinearGradient%20id='paint0_linear_2600_5842'%20x1='1.01953'%20y1='21.7852'%20x2='8.66016'%20y2='18.457'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.442707'%20stop-color='%239D95FE'/%3e%3cstop%20offset='1'%20stop-color='%23E395FE'/%3e%3c/linearGradient%3e%3cclipPath%20id='clip0_2600_5842'%3e%3crect%20width='24'%20height='24'%20fill='white'/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e", import.meta.url).href;
|
|
255
|
+
const OkxIcon = new URL("data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3crect%20width='24'%20height='24'%20rx='8'%20fill='white'/%3e%3cpath%20d='M5%205H9.66667V9.66667H5V5ZM14.3333%205H19V9.66667H14.3333V5ZM5%2014.3333H9.66667V19H5V14.3333ZM14.3333%2014.3333H19V19H14.3333V14.3333ZM9.66667%209.66667H14.3333V14.3333H9.66667V9.66667Z'%20fill='%23010101'/%3e%3c/svg%3e", import.meta.url).href;
|
|
256
|
+
const EVM_WALLETS = [
|
|
257
|
+
{
|
|
258
|
+
id: "metamask",
|
|
259
|
+
name: "MetaMask",
|
|
260
|
+
icon: MetaMaskIcon,
|
|
261
|
+
downloadUrl: "https://metamask.io/download/",
|
|
262
|
+
checkInstalled: () => typeof window !== "undefined" && Boolean(window.ethereum)
|
|
263
|
+
},
|
|
264
|
+
{
|
|
265
|
+
id: "walletconnect",
|
|
266
|
+
name: "WalletConnect",
|
|
267
|
+
icon: WalletConnectIcon,
|
|
268
|
+
downloadUrl: "https://walletconnect.com/",
|
|
269
|
+
checkInstalled: () => false
|
|
270
|
+
// WalletConnect 不需要安装
|
|
271
|
+
},
|
|
272
|
+
{
|
|
273
|
+
id: "onto",
|
|
274
|
+
name: "ONTO",
|
|
275
|
+
icon: OntoIcon,
|
|
276
|
+
downloadUrl: "https://onto.app/",
|
|
277
|
+
checkInstalled: () => typeof window !== "undefined" && Boolean(window.onto)
|
|
278
|
+
},
|
|
279
|
+
{
|
|
280
|
+
id: "bitget",
|
|
281
|
+
name: "Bitget Wallet",
|
|
282
|
+
icon: BitgetIcon,
|
|
283
|
+
downloadUrl: "https://web3.bitget.com/",
|
|
284
|
+
checkInstalled: () => {
|
|
285
|
+
var _a;
|
|
286
|
+
return typeof window !== "undefined" && Boolean((_a = window.bitkeep) == null ? void 0 : _a.ethereum);
|
|
287
|
+
}
|
|
288
|
+
},
|
|
289
|
+
{
|
|
290
|
+
id: "okx",
|
|
291
|
+
name: "OKX Wallet",
|
|
292
|
+
icon: OkxIcon,
|
|
293
|
+
downloadUrl: "https://www.okx.com/web3",
|
|
294
|
+
checkInstalled: () => typeof window !== "undefined" && Boolean(window.okxwallet)
|
|
417
295
|
}
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
296
|
+
];
|
|
297
|
+
const DEFAULT_WALLET_CONNECT_PROJECT_ID = "c6e5e73fe203ffc84514a1ad09fe570a";
|
|
298
|
+
function getWalletProvider(walletId) {
|
|
299
|
+
var _a;
|
|
300
|
+
if (typeof window === "undefined") return null;
|
|
301
|
+
switch (walletId) {
|
|
302
|
+
case "metamask":
|
|
303
|
+
return window.ethereum;
|
|
304
|
+
case "onto":
|
|
305
|
+
return window.onto;
|
|
306
|
+
case "bitget":
|
|
307
|
+
return (_a = window.bitkeep) == null ? void 0 : _a.ethereum;
|
|
308
|
+
case "okx":
|
|
309
|
+
return window.okxwallet;
|
|
310
|
+
default:
|
|
311
|
+
return null;
|
|
421
312
|
}
|
|
422
|
-
return "campaign";
|
|
423
313
|
}
|
|
424
|
-
function
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
return
|
|
430
|
-
}
|
|
431
|
-
if (item.reward_type === RewardType.Cap) {
|
|
432
|
-
return NftClaimType.Cap;
|
|
314
|
+
async function checkWalletConnectAvailable() {
|
|
315
|
+
try {
|
|
316
|
+
await import("@walletconnect/ethereum-provider");
|
|
317
|
+
return true;
|
|
318
|
+
} catch {
|
|
319
|
+
return false;
|
|
433
320
|
}
|
|
434
|
-
|
|
435
|
-
}
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
321
|
+
}
|
|
322
|
+
function ConnectLoading({ walletName }) {
|
|
323
|
+
return /* @__PURE__ */ jsxs("div", { className: "taskon-bind-wallet-loading-overlay", children: [
|
|
324
|
+
/* @__PURE__ */ jsx("svg", { className: "taskon-bind-wallet-loading-spinner", viewBox: "0 0 50 50", children: /* @__PURE__ */ jsx(
|
|
325
|
+
"circle",
|
|
326
|
+
{
|
|
327
|
+
cx: "25",
|
|
328
|
+
cy: "25",
|
|
329
|
+
r: "20",
|
|
330
|
+
fill: "none",
|
|
331
|
+
stroke: "currentColor",
|
|
332
|
+
strokeWidth: "4",
|
|
333
|
+
strokeLinecap: "round",
|
|
334
|
+
strokeDasharray: "80 60"
|
|
335
|
+
}
|
|
336
|
+
) }),
|
|
337
|
+
/* @__PURE__ */ jsxs("p", { className: "taskon-bind-wallet-loading-text", children: [
|
|
338
|
+
"Please log in to ",
|
|
339
|
+
walletName,
|
|
340
|
+
" and sign message to proceed"
|
|
341
|
+
] })
|
|
342
|
+
] });
|
|
343
|
+
}
|
|
344
|
+
function WalletItem({
|
|
345
|
+
wallet,
|
|
346
|
+
isInstalled,
|
|
347
|
+
isConnecting,
|
|
348
|
+
isDisabled,
|
|
349
|
+
disabledReason,
|
|
350
|
+
onClick
|
|
351
|
+
}) {
|
|
352
|
+
return /* @__PURE__ */ jsxs(
|
|
353
|
+
"button",
|
|
354
|
+
{
|
|
355
|
+
type: "button",
|
|
356
|
+
className: `taskon-bind-wallet-item ${isConnecting ? "taskon-bind-wallet-item--connecting" : ""} ${isDisabled ? "taskon-bind-wallet-item--disabled" : ""}`,
|
|
357
|
+
onClick,
|
|
358
|
+
disabled: isConnecting || isDisabled,
|
|
359
|
+
title: disabledReason,
|
|
360
|
+
children: [
|
|
361
|
+
/* @__PURE__ */ jsx(
|
|
362
|
+
"img",
|
|
363
|
+
{
|
|
364
|
+
className: "taskon-bind-wallet-item-icon",
|
|
365
|
+
src: wallet.icon,
|
|
366
|
+
alt: wallet.name
|
|
367
|
+
}
|
|
368
|
+
),
|
|
369
|
+
/* @__PURE__ */ jsx("span", { className: "taskon-bind-wallet-item-name", children: wallet.name }),
|
|
370
|
+
isConnecting ? /* @__PURE__ */ jsx("span", { className: "taskon-bind-wallet-item-connecting", children: /* @__PURE__ */ jsx("svg", { className: "taskon-bind-wallet-spinner", viewBox: "0 0 24 24", fill: "none", children: /* @__PURE__ */ jsx("circle", { cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "3", strokeLinecap: "round", strokeDasharray: "31.4 31.4" }) }) }) : isDisabled ? /* @__PURE__ */ jsx("span", { className: "taskon-bind-wallet-item-unavailable", children: "N/A" }) : isInstalled ? /* @__PURE__ */ jsx("span", { className: "taskon-bind-wallet-item-installed", children: "INSTALLED" }) : null
|
|
371
|
+
]
|
|
372
|
+
}
|
|
373
|
+
);
|
|
374
|
+
}
|
|
375
|
+
function BindWalletDialog({
|
|
376
|
+
open,
|
|
377
|
+
onOpenChange,
|
|
378
|
+
onConnect,
|
|
379
|
+
onError
|
|
380
|
+
}) {
|
|
381
|
+
var _a, _b;
|
|
382
|
+
const isMobile = useIsMobile();
|
|
383
|
+
const context = useContext(TaskOnContext);
|
|
384
|
+
const configuredProjectId = (_b = (_a = context == null ? void 0 : context.config) == null ? void 0 : _a.walletConnectProjectId) == null ? void 0 : _b.trim();
|
|
385
|
+
const walletConnectProjectId = configuredProjectId || DEFAULT_WALLET_CONNECT_PROJECT_ID;
|
|
386
|
+
const [connectingWalletId, setConnectingWalletId] = useState(null);
|
|
387
|
+
const [connectingWalletName, setConnectingWalletName] = useState("");
|
|
388
|
+
const [wcAvailable, setWcAvailable] = useState(null);
|
|
389
|
+
const wcProviderRef = useRef(null);
|
|
390
|
+
React__default.useEffect(() => {
|
|
391
|
+
checkWalletConnectAvailable().then(setWcAvailable);
|
|
392
|
+
}, []);
|
|
393
|
+
const isWalletConnectEnabled = useMemo(() => {
|
|
394
|
+
return wcAvailable === true;
|
|
395
|
+
}, [wcAvailable]);
|
|
396
|
+
const wcDisabledReason = useMemo(() => {
|
|
397
|
+
if (wcAvailable === false) {
|
|
398
|
+
return "WalletConnect SDK not installed. Please install @walletconnect/ethereum-provider";
|
|
399
|
+
}
|
|
400
|
+
return void 0;
|
|
401
|
+
}, [wcAvailable]);
|
|
402
|
+
const walletsWithStatus = useMemo(() => {
|
|
403
|
+
const walletList = isMobile ? EVM_WALLETS.filter((w) => w.id === "walletconnect") : EVM_WALLETS;
|
|
404
|
+
return walletList.map((wallet) => ({
|
|
405
|
+
wallet,
|
|
406
|
+
isInstalled: wallet.id === "walletconnect" ? isWalletConnectEnabled : wallet.checkInstalled(),
|
|
407
|
+
isDisabled: wallet.id === "walletconnect" && !isWalletConnectEnabled,
|
|
408
|
+
disabledReason: wallet.id === "walletconnect" ? wcDisabledReason : void 0
|
|
409
|
+
}));
|
|
410
|
+
}, [isMobile, isWalletConnectEnabled, wcDisabledReason]);
|
|
411
|
+
const connectWalletConnect = useCallback(async () => {
|
|
412
|
+
var _a2, _b2, _c;
|
|
413
|
+
setConnectingWalletId("walletconnect");
|
|
414
|
+
setConnectingWalletName("WalletConnect");
|
|
415
|
+
try {
|
|
416
|
+
const { EthereumProvider } = await import("@walletconnect/ethereum-provider");
|
|
417
|
+
const provider = await EthereumProvider.init({
|
|
418
|
+
projectId: walletConnectProjectId,
|
|
419
|
+
chains: [1],
|
|
420
|
+
// Ethereum mainnet
|
|
421
|
+
optionalChains: [56, 137, 42161, 10, 8453],
|
|
422
|
+
// BSC, Polygon, Arbitrum, Optimism, Base
|
|
423
|
+
showQrModal: true,
|
|
424
|
+
qrModalOptions: {
|
|
425
|
+
themeMode: "dark"
|
|
426
|
+
}
|
|
427
|
+
});
|
|
428
|
+
wcProviderRef.current = provider;
|
|
429
|
+
await provider.connect();
|
|
430
|
+
const accounts = provider.accounts;
|
|
431
|
+
const address = accounts[0];
|
|
432
|
+
if (!address) {
|
|
433
|
+
onError == null ? void 0 : onError("No account found");
|
|
434
|
+
setConnectingWalletId(null);
|
|
435
|
+
return;
|
|
436
|
+
}
|
|
437
|
+
await (onConnect == null ? void 0 : onConnect(address, provider));
|
|
438
|
+
} catch (e) {
|
|
439
|
+
const error2 = e;
|
|
440
|
+
if (((_a2 = error2.message) == null ? void 0 : _a2.includes("rejected")) || ((_b2 = error2.message) == null ? void 0 : _b2.includes("denied")) || ((_c = error2.message) == null ? void 0 : _c.includes("User closed"))) {
|
|
441
|
+
onError == null ? void 0 : onError("User rejected the connection");
|
|
442
|
+
} else {
|
|
443
|
+
onError == null ? void 0 : onError(error2.message || "Failed to connect WalletConnect");
|
|
444
|
+
}
|
|
445
|
+
} finally {
|
|
446
|
+
setConnectingWalletId(null);
|
|
447
|
+
}
|
|
448
|
+
}, [walletConnectProjectId, onConnect, onError]);
|
|
449
|
+
const connectWallet = useCallback(async (wallet) => {
|
|
450
|
+
var _a2, _b2;
|
|
451
|
+
const provider = getWalletProvider(wallet.id);
|
|
452
|
+
if (!provider) {
|
|
453
|
+
onError == null ? void 0 : onError(`${wallet.name} provider not found`);
|
|
454
|
+
return;
|
|
455
|
+
}
|
|
456
|
+
setConnectingWalletId(wallet.id);
|
|
457
|
+
setConnectingWalletName(wallet.name);
|
|
458
|
+
try {
|
|
459
|
+
const accounts = await provider.request({
|
|
460
|
+
method: "eth_requestAccounts"
|
|
461
|
+
});
|
|
462
|
+
const address = accounts[0];
|
|
463
|
+
if (!address) {
|
|
464
|
+
onError == null ? void 0 : onError("No account found");
|
|
465
|
+
setConnectingWalletId(null);
|
|
466
|
+
return;
|
|
467
|
+
}
|
|
468
|
+
await (onConnect == null ? void 0 : onConnect(address, provider));
|
|
469
|
+
} catch (e) {
|
|
470
|
+
const error2 = e;
|
|
471
|
+
if (((_a2 = error2.message) == null ? void 0 : _a2.includes("rejected")) || ((_b2 = error2.message) == null ? void 0 : _b2.includes("denied"))) {
|
|
472
|
+
onError == null ? void 0 : onError("User rejected the connection");
|
|
473
|
+
} else {
|
|
474
|
+
onError == null ? void 0 : onError(error2.message || "Failed to connect wallet");
|
|
475
|
+
}
|
|
476
|
+
} finally {
|
|
477
|
+
setConnectingWalletId(null);
|
|
478
|
+
}
|
|
479
|
+
}, [onConnect, onError]);
|
|
480
|
+
const handleWalletClick = useCallback((wallet, isInstalled, isDisabled) => {
|
|
481
|
+
if (isDisabled) {
|
|
482
|
+
return;
|
|
483
|
+
}
|
|
484
|
+
if (wallet.id === "walletconnect") {
|
|
485
|
+
connectWalletConnect();
|
|
486
|
+
return;
|
|
487
|
+
}
|
|
488
|
+
if (isInstalled) {
|
|
489
|
+
connectWallet(wallet);
|
|
490
|
+
} else {
|
|
491
|
+
window.open(wallet.downloadUrl, "_blank", "noopener,noreferrer");
|
|
492
|
+
}
|
|
493
|
+
}, [connectWallet, connectWalletConnect]);
|
|
494
|
+
return /* @__PURE__ */ jsx(
|
|
495
|
+
Dialog,
|
|
496
|
+
{
|
|
497
|
+
open,
|
|
498
|
+
onOpenChange,
|
|
499
|
+
title: "Connect Wallet",
|
|
500
|
+
showCloseButton: true,
|
|
501
|
+
maxWidth: 510,
|
|
502
|
+
children: /* @__PURE__ */ jsxs("div", { className: "taskon-bind-wallet-dialog", children: [
|
|
503
|
+
/* @__PURE__ */ jsx("h2", { className: "taskon-bind-wallet-dialog-title", children: "Please connect wallet" }),
|
|
504
|
+
/* @__PURE__ */ jsx("div", { className: "taskon-bind-wallet-dialog-chain-label", children: "EVM Chain" }),
|
|
505
|
+
/* @__PURE__ */ jsx("div", { className: "taskon-bind-wallet-dialog-grid", children: walletsWithStatus.map(({ wallet, isInstalled, isDisabled, disabledReason }) => /* @__PURE__ */ jsx(
|
|
506
|
+
WalletItem,
|
|
507
|
+
{
|
|
508
|
+
wallet,
|
|
509
|
+
isInstalled,
|
|
510
|
+
isConnecting: connectingWalletId === wallet.id,
|
|
511
|
+
isDisabled,
|
|
512
|
+
disabledReason,
|
|
513
|
+
onClick: () => handleWalletClick(wallet, isInstalled, isDisabled)
|
|
514
|
+
},
|
|
515
|
+
wallet.id
|
|
516
|
+
)) }),
|
|
517
|
+
connectingWalletId && /* @__PURE__ */ jsx(ConnectLoading, { walletName: connectingWalletName })
|
|
518
|
+
] })
|
|
519
|
+
}
|
|
520
|
+
);
|
|
521
|
+
}
|
|
522
|
+
function getRewardId(item) {
|
|
523
|
+
if (typeof item.reward_id === "number") {
|
|
524
|
+
return item.reward_id;
|
|
525
|
+
}
|
|
526
|
+
return void 0;
|
|
527
|
+
}
|
|
528
|
+
function getTargetType(item) {
|
|
529
|
+
if (item.target_type === "campaign" || item.target_type === "event") {
|
|
530
|
+
return item.target_type;
|
|
531
|
+
}
|
|
532
|
+
const campaignType = item.campaign_type;
|
|
533
|
+
if (typeof campaignType === "string" && campaignType.toLowerCase() === "event") {
|
|
534
|
+
return "event";
|
|
535
|
+
}
|
|
536
|
+
return "campaign";
|
|
537
|
+
}
|
|
538
|
+
function getClaimType(item, rewardValue) {
|
|
539
|
+
if (item.reward_type === RewardType.Nft) {
|
|
540
|
+
return NftClaimType.Standard;
|
|
541
|
+
}
|
|
542
|
+
if (item.reward_type === RewardType.BMintedNft) {
|
|
543
|
+
return NftClaimType.Minted;
|
|
544
|
+
}
|
|
545
|
+
if (item.reward_type === RewardType.Cap) {
|
|
546
|
+
return NftClaimType.Cap;
|
|
547
|
+
}
|
|
548
|
+
return getNftClaimType(rewardValue);
|
|
549
|
+
}
|
|
550
|
+
const BIND_TEXT = "Confirm to BIND this wallet address.";
|
|
551
|
+
const BIND_NOTE = "This signature is for confirmation only.";
|
|
552
|
+
function getBindSignText(address, nonce) {
|
|
553
|
+
return `${BIND_TEXT}
|
|
554
|
+
Address:${address}
|
|
555
|
+
Nonce:${nonce}
|
|
556
|
+
Note:${BIND_NOTE}`;
|
|
557
|
+
}
|
|
558
|
+
function isSameAddress$1(left, right) {
|
|
559
|
+
return left.trim().toLowerCase() === right.trim().toLowerCase();
|
|
446
560
|
}
|
|
447
561
|
function getPrimaryBoundAddress(userInfo, chainType) {
|
|
448
562
|
var _a;
|
|
@@ -758,7 +872,7 @@ function useNftClaim(options = {}) {
|
|
|
758
872
|
const [status, setStatus] = useState("idle");
|
|
759
873
|
const [error2, setError] = useState(null);
|
|
760
874
|
const [txHash, setTxHash] = useState(null);
|
|
761
|
-
const [
|
|
875
|
+
const [claimingNft, setClaimingNft] = useState(null);
|
|
762
876
|
const api = useMemo(() => {
|
|
763
877
|
if (!client) return null;
|
|
764
878
|
return createNftClaimApi(client);
|
|
@@ -767,7 +881,7 @@ function useNftClaim(options = {}) {
|
|
|
767
881
|
if (!client) return null;
|
|
768
882
|
return createUserApi(client);
|
|
769
883
|
}, [client]);
|
|
770
|
-
const
|
|
884
|
+
const claimNft = useCallback(
|
|
771
885
|
async (item, adapterOverride) => {
|
|
772
886
|
var _a;
|
|
773
887
|
if (!api) {
|
|
@@ -1018,506 +1132,123 @@ function useNftClaim(options = {}) {
|
|
|
1018
1132
|
status,
|
|
1019
1133
|
error: error2,
|
|
1020
1134
|
txHash,
|
|
1021
|
-
claimingNft
|
|
1022
|
-
claimNft
|
|
1135
|
+
claimingNft,
|
|
1136
|
+
claimNft,
|
|
1023
1137
|
reset,
|
|
1024
1138
|
clearPending
|
|
1025
1139
|
};
|
|
1026
1140
|
}
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
}
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
case "checking":
|
|
1080
|
-
return (messages == null ? void 0 : messages.claimingNft) ?? "Claiming NFT...";
|
|
1081
|
-
case "connecting":
|
|
1082
|
-
return (messages == null ? void 0 : messages.claimConnectingWallet) ?? "Connecting wallet...";
|
|
1083
|
-
case "switching":
|
|
1084
|
-
return (messages == null ? void 0 : messages.claimSwitchingNetwork) ?? "Switching network...";
|
|
1085
|
-
case "signing":
|
|
1086
|
-
return (messages == null ? void 0 : messages.claimGettingSignature) ?? "Getting signature...";
|
|
1087
|
-
case "confirming":
|
|
1088
|
-
return (messages == null ? void 0 : messages.claimConfirmInWallet) ?? "Please confirm in your wallet";
|
|
1089
|
-
case "pending":
|
|
1090
|
-
return (messages == null ? void 0 : messages.claimTransactionPending) ?? "Transaction pending...";
|
|
1091
|
-
case "success":
|
|
1092
|
-
return (messages == null ? void 0 : messages.claimSuccess) ?? "Claim successful!";
|
|
1093
|
-
case "error":
|
|
1094
|
-
return (messages == null ? void 0 : messages.claimFailed) ?? "Claim failed";
|
|
1095
|
-
default:
|
|
1096
|
-
return "";
|
|
1097
|
-
}
|
|
1098
|
-
}
|
|
1099
|
-
function getErrorMessage(error2, messages) {
|
|
1100
|
-
if (error2.isUserCancelled()) {
|
|
1101
|
-
return (messages == null ? void 0 : messages.claimCanceled) ?? DEFAULT_ERROR_MESSAGES[NftClaimErrorType.WalletRejected];
|
|
1102
|
-
}
|
|
1103
|
-
const readableMessage = typeof error2.message === "string" ? error2.message.trim() : "";
|
|
1104
|
-
if (readableMessage && readableMessage !== "[object Object]") {
|
|
1105
|
-
return readableMessage;
|
|
1106
|
-
}
|
|
1107
|
-
return (messages == null ? void 0 : messages.claimFailed) ?? DEFAULT_ERROR_MESSAGES[error2.type] ?? DEFAULT_ERROR_MESSAGES[NftClaimErrorType.Unknown];
|
|
1108
|
-
}
|
|
1109
|
-
function formatTxHash$1(hash) {
|
|
1110
|
-
if (hash.length <= 16) return hash;
|
|
1111
|
-
return `${hash.slice(0, 10)}...${hash.slice(-6)}`;
|
|
1112
|
-
}
|
|
1113
|
-
function ClaimNftDialog({
|
|
1114
|
-
open,
|
|
1115
|
-
onClose,
|
|
1116
|
-
status,
|
|
1117
|
-
error: error2,
|
|
1118
|
-
txHash,
|
|
1119
|
-
claimingNft: claimingNft2,
|
|
1120
|
-
explorerUrl,
|
|
1121
|
-
messages,
|
|
1122
|
-
onRetry
|
|
1123
|
-
}) {
|
|
1124
|
-
const isLoading = [
|
|
1125
|
-
"checking",
|
|
1126
|
-
"connecting",
|
|
1127
|
-
"switching",
|
|
1128
|
-
"signing",
|
|
1129
|
-
"confirming",
|
|
1130
|
-
"pending"
|
|
1131
|
-
].includes(status);
|
|
1132
|
-
const canClose = status === "success" || status === "error" || status === "idle";
|
|
1133
|
-
const handleClose = () => {
|
|
1134
|
-
if (canClose) {
|
|
1135
|
-
onClose();
|
|
1136
|
-
}
|
|
1137
|
-
};
|
|
1138
|
-
const handleViewTx = () => {
|
|
1139
|
-
if (explorerUrl) {
|
|
1140
|
-
window.open(explorerUrl, "_blank", "noopener,noreferrer");
|
|
1141
|
-
}
|
|
1142
|
-
};
|
|
1143
|
-
return /* @__PURE__ */ jsx(
|
|
1144
|
-
Dialog,
|
|
1145
|
-
{
|
|
1146
|
-
open,
|
|
1147
|
-
onOpenChange: (isOpen) => {
|
|
1148
|
-
if (!isOpen && canClose) {
|
|
1149
|
-
onClose();
|
|
1141
|
+
const Input = forwardRef(
|
|
1142
|
+
function Input2({
|
|
1143
|
+
value,
|
|
1144
|
+
onChange,
|
|
1145
|
+
type = "text",
|
|
1146
|
+
inputMode,
|
|
1147
|
+
maxLength,
|
|
1148
|
+
disabled = false,
|
|
1149
|
+
placeholder,
|
|
1150
|
+
hasError = false,
|
|
1151
|
+
error: error2,
|
|
1152
|
+
className,
|
|
1153
|
+
autoFocus = false,
|
|
1154
|
+
onBlur,
|
|
1155
|
+
onFocus,
|
|
1156
|
+
onEnter,
|
|
1157
|
+
rightSlot,
|
|
1158
|
+
formatValue
|
|
1159
|
+
}, ref) {
|
|
1160
|
+
const inputRef = useRef(null);
|
|
1161
|
+
const isError = hasError || !!error2;
|
|
1162
|
+
const focus = useCallback(() => {
|
|
1163
|
+
var _a;
|
|
1164
|
+
(_a = inputRef.current) == null ? void 0 : _a.focus();
|
|
1165
|
+
}, []);
|
|
1166
|
+
const blur = useCallback(() => {
|
|
1167
|
+
var _a;
|
|
1168
|
+
(_a = inputRef.current) == null ? void 0 : _a.blur();
|
|
1169
|
+
}, []);
|
|
1170
|
+
const getElement = useCallback(() => {
|
|
1171
|
+
return inputRef.current;
|
|
1172
|
+
}, []);
|
|
1173
|
+
useImperativeHandle(
|
|
1174
|
+
ref,
|
|
1175
|
+
() => ({
|
|
1176
|
+
focus,
|
|
1177
|
+
blur,
|
|
1178
|
+
getElement
|
|
1179
|
+
}),
|
|
1180
|
+
[focus, blur, getElement]
|
|
1181
|
+
);
|
|
1182
|
+
useEffect(() => {
|
|
1183
|
+
var _a;
|
|
1184
|
+
if (autoFocus) {
|
|
1185
|
+
(_a = inputRef.current) == null ? void 0 : _a.focus();
|
|
1186
|
+
}
|
|
1187
|
+
}, [autoFocus]);
|
|
1188
|
+
const handleChange = useCallback(
|
|
1189
|
+
(e) => {
|
|
1190
|
+
let newValue = e.target.value;
|
|
1191
|
+
if (formatValue) {
|
|
1192
|
+
newValue = formatValue(newValue);
|
|
1150
1193
|
}
|
|
1194
|
+
onChange(newValue);
|
|
1151
1195
|
},
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
"img",
|
|
1159
|
-
{
|
|
1160
|
-
src: claimingNft2.item.reward_value.collection_image,
|
|
1161
|
-
alt: "NFT",
|
|
1162
|
-
className: "taskon-claim-dialog-nft__image"
|
|
1163
|
-
}
|
|
1164
|
-
) }),
|
|
1165
|
-
/* @__PURE__ */ jsxs("div", { className: "taskon-claim-dialog-status", children: [
|
|
1166
|
-
isLoading && /* @__PURE__ */ jsx(LoadingSpinner, {}),
|
|
1167
|
-
status === "success" && /* @__PURE__ */ jsx(SuccessIcon, {}),
|
|
1168
|
-
status === "error" && /* @__PURE__ */ jsx(ErrorIcon, {})
|
|
1169
|
-
] }),
|
|
1170
|
-
/* @__PURE__ */ jsx("p", { className: "taskon-claim-dialog-message", children: status === "error" && error2 ? getErrorMessage(error2, messages) : getStatusMessage(status, messages) }),
|
|
1171
|
-
txHash && (status === "pending" || status === "success") && /* @__PURE__ */ jsxs("div", { className: "taskon-claim-dialog-tx", children: [
|
|
1172
|
-
/* @__PURE__ */ jsx("span", { className: "taskon-claim-dialog-tx__label", children: "Tx:" }),
|
|
1173
|
-
/* @__PURE__ */ jsx("span", { className: "taskon-claim-dialog-tx__hash", children: formatTxHash$1(txHash) })
|
|
1174
|
-
] }),
|
|
1175
|
-
/* @__PURE__ */ jsxs("div", { className: "taskon-claim-dialog-actions", children: [
|
|
1176
|
-
txHash && explorerUrl && /* @__PURE__ */ jsx(
|
|
1177
|
-
"button",
|
|
1178
|
-
{
|
|
1179
|
-
type: "button",
|
|
1180
|
-
className: "taskon-claim-dialog-btn taskon-claim-dialog-btn--secondary",
|
|
1181
|
-
onClick: handleViewTx,
|
|
1182
|
-
children: (messages == null ? void 0 : messages.viewOnExplorer) ?? "View on Explorer"
|
|
1183
|
-
}
|
|
1184
|
-
),
|
|
1185
|
-
status === "error" && onRetry && /* @__PURE__ */ jsx(
|
|
1186
|
-
"button",
|
|
1187
|
-
{
|
|
1188
|
-
type: "button",
|
|
1189
|
-
className: "taskon-claim-dialog-btn taskon-claim-dialog-btn--primary",
|
|
1190
|
-
onClick: onRetry,
|
|
1191
|
-
children: (messages == null ? void 0 : messages.retry) ?? "Retry"
|
|
1192
|
-
}
|
|
1193
|
-
),
|
|
1194
|
-
canClose && /* @__PURE__ */ jsx(
|
|
1195
|
-
"button",
|
|
1196
|
-
{
|
|
1197
|
-
type: "button",
|
|
1198
|
-
className: "taskon-claim-dialog-btn taskon-claim-dialog-btn--primary",
|
|
1199
|
-
onClick: handleClose,
|
|
1200
|
-
children: (messages == null ? void 0 : messages.close) ?? "Close"
|
|
1201
|
-
}
|
|
1202
|
-
)
|
|
1203
|
-
] })
|
|
1204
|
-
] })
|
|
1205
|
-
}
|
|
1206
|
-
);
|
|
1207
|
-
}
|
|
1208
|
-
function formatTxHash(hash) {
|
|
1209
|
-
if (hash.length <= 16) return hash;
|
|
1210
|
-
return `${hash.slice(0, 10)}...${hash.slice(-6)}`;
|
|
1211
|
-
}
|
|
1212
|
-
function PendingTxDialog({
|
|
1213
|
-
open,
|
|
1214
|
-
onClose,
|
|
1215
|
-
onClaimAgain,
|
|
1216
|
-
onContinueWaiting,
|
|
1217
|
-
txHash,
|
|
1218
|
-
explorerUrl,
|
|
1219
|
-
receiveAddress: receiveAddress2,
|
|
1220
|
-
messages
|
|
1221
|
-
}) {
|
|
1222
|
-
const title = (messages == null ? void 0 : messages.claimPendingTitle) ?? "You have already claimed this NFT, please wait for this transaction to be confirmed.";
|
|
1223
|
-
const checkExplorerText = (messages == null ? void 0 : messages.claimPendingCheckExplorer) ?? "You can check this transaction on explorer:";
|
|
1224
|
-
const hashLabel = (messages == null ? void 0 : messages.claimPendingHashLabel) ?? "Transaction hash:";
|
|
1225
|
-
const claimAgainWarn = (messages == null ? void 0 : messages.claimPendingClaimAgainWarn) ?? '"Claim Again" will send a new transaction it is only recommended when you are sure there is something wrong with the current transaction.';
|
|
1226
|
-
const receiveAddressNoChange = (messages == null ? void 0 : messages.claimPendingReceiveAddressNoChange) ?? "This receive address can’t be changed:";
|
|
1227
|
-
const handleViewTx = () => {
|
|
1228
|
-
if (explorerUrl) {
|
|
1229
|
-
openInNewTab(explorerUrl);
|
|
1230
|
-
}
|
|
1231
|
-
};
|
|
1232
|
-
return /* @__PURE__ */ jsx(
|
|
1233
|
-
Dialog,
|
|
1234
|
-
{
|
|
1235
|
-
open,
|
|
1236
|
-
onOpenChange: (isOpen) => {
|
|
1237
|
-
if (!isOpen) {
|
|
1238
|
-
onClose();
|
|
1196
|
+
[onChange, formatValue]
|
|
1197
|
+
);
|
|
1198
|
+
const handleKeyDown = useCallback(
|
|
1199
|
+
(e) => {
|
|
1200
|
+
if (e.key === "Enter" && onEnter) {
|
|
1201
|
+
onEnter(e);
|
|
1239
1202
|
}
|
|
1240
1203
|
},
|
|
1241
|
-
|
|
1242
|
-
|
|
1243
|
-
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
/* @__PURE__ */ jsx("p", { className: "taskon-pending-dialog-title", children: title }),
|
|
1247
|
-
txHash && /* @__PURE__ */ jsx("p", { className: "taskon-pending-dialog-desc", children: checkExplorerText }),
|
|
1248
|
-
txHash && /* @__PURE__ */ jsxs("div", { className: "taskon-pending-dialog-hash-wrap", children: [
|
|
1249
|
-
/* @__PURE__ */ jsx("span", { className: "taskon-pending-dialog-hash-label", children: hashLabel }),
|
|
1250
|
-
explorerUrl ? /* @__PURE__ */ jsx(
|
|
1251
|
-
"button",
|
|
1252
|
-
{
|
|
1253
|
-
type: "button",
|
|
1254
|
-
className: "taskon-pending-dialog-hash-link",
|
|
1255
|
-
onClick: handleViewTx,
|
|
1256
|
-
children: formatTxHash(txHash)
|
|
1257
|
-
}
|
|
1258
|
-
) : /* @__PURE__ */ jsx("span", { className: "taskon-pending-dialog-hash-value", children: formatTxHash(txHash) })
|
|
1259
|
-
] }),
|
|
1260
|
-
/* @__PURE__ */ jsxs("ul", { className: "taskon-pending-dialog-notice-list", children: [
|
|
1261
|
-
/* @__PURE__ */ jsx("li", { className: "taskon-pending-dialog-notice-item", children: claimAgainWarn }),
|
|
1262
|
-
receiveAddress2 && /* @__PURE__ */ jsxs("li", { className: "taskon-pending-dialog-notice-item", children: [
|
|
1263
|
-
/* @__PURE__ */ jsx("div", { children: receiveAddressNoChange }),
|
|
1264
|
-
/* @__PURE__ */ jsx("div", { className: "taskon-pending-dialog-receive-address", children: receiveAddress2 })
|
|
1265
|
-
] })
|
|
1266
|
-
] }),
|
|
1267
|
-
/* @__PURE__ */ jsxs("div", { className: "taskon-pending-dialog-actions", children: [
|
|
1268
|
-
/* @__PURE__ */ jsx(
|
|
1269
|
-
"button",
|
|
1270
|
-
{
|
|
1271
|
-
type: "button",
|
|
1272
|
-
className: "taskon-pending-dialog-btn taskon-pending-dialog-btn--secondary",
|
|
1273
|
-
onClick: onClaimAgain,
|
|
1274
|
-
children: (messages == null ? void 0 : messages.claimAgain) ?? "Claim Again"
|
|
1275
|
-
}
|
|
1276
|
-
),
|
|
1277
|
-
/* @__PURE__ */ jsx(
|
|
1278
|
-
"button",
|
|
1279
|
-
{
|
|
1280
|
-
type: "button",
|
|
1281
|
-
className: "taskon-pending-dialog-btn taskon-pending-dialog-btn--primary",
|
|
1282
|
-
onClick: onContinueWaiting,
|
|
1283
|
-
children: (messages == null ? void 0 : messages.continueWaiting) ?? "Continue Waiting"
|
|
1284
|
-
}
|
|
1285
|
-
)
|
|
1286
|
-
] })
|
|
1287
|
-
] })
|
|
1288
|
-
}
|
|
1289
|
-
);
|
|
1290
|
-
}
|
|
1291
|
-
function getWalletProvider(walletId) {
|
|
1292
|
-
var _a;
|
|
1293
|
-
if (typeof window === "undefined") return null;
|
|
1294
|
-
switch (walletId) {
|
|
1295
|
-
case "metamask":
|
|
1296
|
-
return window.ethereum;
|
|
1297
|
-
case "onto":
|
|
1298
|
-
return window.onto;
|
|
1299
|
-
case "bitget":
|
|
1300
|
-
return (_a = window.bitkeep) == null ? void 0 : _a.ethereum;
|
|
1301
|
-
case "okx":
|
|
1302
|
-
return window.okxwallet;
|
|
1303
|
-
default:
|
|
1304
|
-
return null;
|
|
1305
|
-
}
|
|
1306
|
-
}
|
|
1307
|
-
async function checkWalletConnectAvailable() {
|
|
1308
|
-
try {
|
|
1309
|
-
await import("@walletconnect/ethereum-provider");
|
|
1310
|
-
return true;
|
|
1311
|
-
} catch {
|
|
1312
|
-
return false;
|
|
1313
|
-
}
|
|
1314
|
-
}
|
|
1315
|
-
function ConnectLoading({ walletName }) {
|
|
1316
|
-
return /* @__PURE__ */ jsxs("div", { className: "taskon-bind-wallet-loading-overlay", children: [
|
|
1317
|
-
/* @__PURE__ */ jsx("svg", { className: "taskon-bind-wallet-loading-spinner", viewBox: "0 0 50 50", children: /* @__PURE__ */ jsx(
|
|
1318
|
-
"circle",
|
|
1204
|
+
[onEnter]
|
|
1205
|
+
);
|
|
1206
|
+
const needWrapper = rightSlot || error2;
|
|
1207
|
+
const inputElement = /* @__PURE__ */ jsx(
|
|
1208
|
+
"input",
|
|
1319
1209
|
{
|
|
1320
|
-
|
|
1321
|
-
|
|
1322
|
-
|
|
1323
|
-
|
|
1324
|
-
|
|
1325
|
-
|
|
1326
|
-
|
|
1327
|
-
|
|
1328
|
-
|
|
1329
|
-
|
|
1330
|
-
|
|
1331
|
-
|
|
1332
|
-
walletName,
|
|
1333
|
-
" and sign message to proceed"
|
|
1334
|
-
] })
|
|
1335
|
-
] });
|
|
1336
|
-
}
|
|
1337
|
-
function WalletItem({
|
|
1338
|
-
wallet,
|
|
1339
|
-
isInstalled,
|
|
1340
|
-
isConnecting,
|
|
1341
|
-
isDisabled,
|
|
1342
|
-
disabledReason,
|
|
1343
|
-
onClick
|
|
1344
|
-
}) {
|
|
1345
|
-
return /* @__PURE__ */ jsxs(
|
|
1346
|
-
"button",
|
|
1347
|
-
{
|
|
1348
|
-
type: "button",
|
|
1349
|
-
className: `taskon-bind-wallet-item ${isConnecting ? "taskon-bind-wallet-item--connecting" : ""} ${isDisabled ? "taskon-bind-wallet-item--disabled" : ""}`,
|
|
1350
|
-
onClick,
|
|
1351
|
-
disabled: isConnecting || isDisabled,
|
|
1352
|
-
title: disabledReason,
|
|
1353
|
-
children: [
|
|
1354
|
-
/* @__PURE__ */ jsx(
|
|
1355
|
-
"img",
|
|
1356
|
-
{
|
|
1357
|
-
className: "taskon-bind-wallet-item-icon",
|
|
1358
|
-
src: wallet.icon,
|
|
1359
|
-
alt: wallet.name
|
|
1360
|
-
}
|
|
1361
|
-
),
|
|
1362
|
-
/* @__PURE__ */ jsx("span", { className: "taskon-bind-wallet-item-name", children: wallet.name }),
|
|
1363
|
-
isConnecting ? /* @__PURE__ */ jsx("span", { className: "taskon-bind-wallet-item-connecting", children: /* @__PURE__ */ jsx("svg", { className: "taskon-bind-wallet-spinner", viewBox: "0 0 24 24", fill: "none", children: /* @__PURE__ */ jsx("circle", { cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "3", strokeLinecap: "round", strokeDasharray: "31.4 31.4" }) }) }) : isDisabled ? /* @__PURE__ */ jsx("span", { className: "taskon-bind-wallet-item-unavailable", children: "N/A" }) : isInstalled ? /* @__PURE__ */ jsx("span", { className: "taskon-bind-wallet-item-installed", children: "INSTALLED" }) : null
|
|
1364
|
-
]
|
|
1365
|
-
}
|
|
1366
|
-
);
|
|
1367
|
-
}
|
|
1368
|
-
function BindWalletDialog({
|
|
1369
|
-
open,
|
|
1370
|
-
onOpenChange,
|
|
1371
|
-
onConnect,
|
|
1372
|
-
onError
|
|
1373
|
-
}) {
|
|
1374
|
-
var _a;
|
|
1375
|
-
const isMobile = useIsMobile();
|
|
1376
|
-
const context = useContext(TaskOnContext);
|
|
1377
|
-
const walletConnectProjectId = (_a = context == null ? void 0 : context.config) == null ? void 0 : _a.walletConnectProjectId;
|
|
1378
|
-
const [connectingWalletId, setConnectingWalletId] = useState(null);
|
|
1379
|
-
const [connectingWalletName, setConnectingWalletName] = useState("");
|
|
1380
|
-
const [wcAvailable, setWcAvailable] = useState(null);
|
|
1381
|
-
const wcProviderRef = useRef(null);
|
|
1382
|
-
React__default.useEffect(() => {
|
|
1383
|
-
checkWalletConnectAvailable().then(setWcAvailable);
|
|
1384
|
-
}, []);
|
|
1385
|
-
const isWalletConnectEnabled = useMemo(() => {
|
|
1386
|
-
return Boolean(walletConnectProjectId) && wcAvailable === true;
|
|
1387
|
-
}, [walletConnectProjectId, wcAvailable]);
|
|
1388
|
-
const wcDisabledReason = useMemo(() => {
|
|
1389
|
-
if (!walletConnectProjectId) {
|
|
1390
|
-
return "WalletConnect requires walletConnectProjectId configuration";
|
|
1391
|
-
}
|
|
1392
|
-
if (wcAvailable === false) {
|
|
1393
|
-
return "WalletConnect SDK not installed. Please install @walletconnect/ethereum-provider";
|
|
1394
|
-
}
|
|
1395
|
-
return void 0;
|
|
1396
|
-
}, [walletConnectProjectId, wcAvailable]);
|
|
1397
|
-
const walletsWithStatus = useMemo(() => {
|
|
1398
|
-
const walletList = isMobile ? EVM_WALLETS.filter((w) => w.id === "walletconnect") : EVM_WALLETS;
|
|
1399
|
-
return walletList.map((wallet) => ({
|
|
1400
|
-
wallet,
|
|
1401
|
-
isInstalled: wallet.id === "walletconnect" ? isWalletConnectEnabled : wallet.checkInstalled(),
|
|
1402
|
-
isDisabled: wallet.id === "walletconnect" && !isWalletConnectEnabled,
|
|
1403
|
-
disabledReason: wallet.id === "walletconnect" ? wcDisabledReason : void 0
|
|
1404
|
-
}));
|
|
1405
|
-
}, [isMobile, isWalletConnectEnabled, wcDisabledReason]);
|
|
1406
|
-
const connectWalletConnect = useCallback(async () => {
|
|
1407
|
-
var _a2, _b, _c;
|
|
1408
|
-
if (!walletConnectProjectId) {
|
|
1409
|
-
onError == null ? void 0 : onError("WalletConnect projectId not configured");
|
|
1410
|
-
return;
|
|
1411
|
-
}
|
|
1412
|
-
setConnectingWalletId("walletconnect");
|
|
1413
|
-
setConnectingWalletName("WalletConnect");
|
|
1414
|
-
try {
|
|
1415
|
-
const { EthereumProvider } = await import("@walletconnect/ethereum-provider");
|
|
1416
|
-
const provider = await EthereumProvider.init({
|
|
1417
|
-
projectId: walletConnectProjectId,
|
|
1418
|
-
chains: [1],
|
|
1419
|
-
// Ethereum mainnet
|
|
1420
|
-
optionalChains: [56, 137, 42161, 10, 8453],
|
|
1421
|
-
// BSC, Polygon, Arbitrum, Optimism, Base
|
|
1422
|
-
showQrModal: true,
|
|
1423
|
-
qrModalOptions: {
|
|
1424
|
-
themeMode: "dark"
|
|
1425
|
-
}
|
|
1426
|
-
});
|
|
1427
|
-
wcProviderRef.current = provider;
|
|
1428
|
-
await provider.connect();
|
|
1429
|
-
const accounts = provider.accounts;
|
|
1430
|
-
const address = accounts[0];
|
|
1431
|
-
if (!address) {
|
|
1432
|
-
onError == null ? void 0 : onError("No account found");
|
|
1433
|
-
setConnectingWalletId(null);
|
|
1434
|
-
return;
|
|
1435
|
-
}
|
|
1436
|
-
await (onConnect == null ? void 0 : onConnect(address, provider));
|
|
1437
|
-
} catch (e) {
|
|
1438
|
-
const error2 = e;
|
|
1439
|
-
if (((_a2 = error2.message) == null ? void 0 : _a2.includes("rejected")) || ((_b = error2.message) == null ? void 0 : _b.includes("denied")) || ((_c = error2.message) == null ? void 0 : _c.includes("User closed"))) {
|
|
1440
|
-
onError == null ? void 0 : onError("User rejected the connection");
|
|
1441
|
-
} else {
|
|
1442
|
-
onError == null ? void 0 : onError(error2.message || "Failed to connect WalletConnect");
|
|
1443
|
-
}
|
|
1444
|
-
} finally {
|
|
1445
|
-
setConnectingWalletId(null);
|
|
1446
|
-
}
|
|
1447
|
-
}, [walletConnectProjectId, onConnect, onError]);
|
|
1448
|
-
const connectWallet2 = useCallback(async (wallet) => {
|
|
1449
|
-
var _a2, _b;
|
|
1450
|
-
const provider = getWalletProvider(wallet.id);
|
|
1451
|
-
if (!provider) {
|
|
1452
|
-
onError == null ? void 0 : onError(`${wallet.name} provider not found`);
|
|
1453
|
-
return;
|
|
1454
|
-
}
|
|
1455
|
-
setConnectingWalletId(wallet.id);
|
|
1456
|
-
setConnectingWalletName(wallet.name);
|
|
1457
|
-
try {
|
|
1458
|
-
const accounts = await provider.request({
|
|
1459
|
-
method: "eth_requestAccounts"
|
|
1460
|
-
});
|
|
1461
|
-
const address = accounts[0];
|
|
1462
|
-
if (!address) {
|
|
1463
|
-
onError == null ? void 0 : onError("No account found");
|
|
1464
|
-
setConnectingWalletId(null);
|
|
1465
|
-
return;
|
|
1466
|
-
}
|
|
1467
|
-
await (onConnect == null ? void 0 : onConnect(address, provider));
|
|
1468
|
-
} catch (e) {
|
|
1469
|
-
const error2 = e;
|
|
1470
|
-
if (((_a2 = error2.message) == null ? void 0 : _a2.includes("rejected")) || ((_b = error2.message) == null ? void 0 : _b.includes("denied"))) {
|
|
1471
|
-
onError == null ? void 0 : onError("User rejected the connection");
|
|
1472
|
-
} else {
|
|
1473
|
-
onError == null ? void 0 : onError(error2.message || "Failed to connect wallet");
|
|
1210
|
+
ref: inputRef,
|
|
1211
|
+
className: `taskon-input ${isError ? "taskon-input--error" : ""} ${!needWrapper ? className || "" : ""}`,
|
|
1212
|
+
type,
|
|
1213
|
+
inputMode,
|
|
1214
|
+
value,
|
|
1215
|
+
onChange: handleChange,
|
|
1216
|
+
maxLength,
|
|
1217
|
+
disabled,
|
|
1218
|
+
placeholder,
|
|
1219
|
+
onBlur,
|
|
1220
|
+
onFocus,
|
|
1221
|
+
onKeyDown: handleKeyDown
|
|
1474
1222
|
}
|
|
1475
|
-
|
|
1476
|
-
|
|
1477
|
-
|
|
1478
|
-
}, [onConnect, onError]);
|
|
1479
|
-
const handleWalletClick = useCallback((wallet, isInstalled, isDisabled) => {
|
|
1480
|
-
if (isDisabled) {
|
|
1481
|
-
return;
|
|
1482
|
-
}
|
|
1483
|
-
if (wallet.id === "walletconnect") {
|
|
1484
|
-
connectWalletConnect();
|
|
1485
|
-
return;
|
|
1486
|
-
}
|
|
1487
|
-
if (isInstalled) {
|
|
1488
|
-
connectWallet2(wallet);
|
|
1489
|
-
} else {
|
|
1490
|
-
window.open(wallet.downloadUrl, "_blank", "noopener,noreferrer");
|
|
1223
|
+
);
|
|
1224
|
+
if (!needWrapper) {
|
|
1225
|
+
return inputElement;
|
|
1491
1226
|
}
|
|
1492
|
-
|
|
1493
|
-
|
|
1494
|
-
|
|
1495
|
-
|
|
1496
|
-
open,
|
|
1497
|
-
onOpenChange,
|
|
1498
|
-
title: "Connect Wallet",
|
|
1499
|
-
showCloseButton: true,
|
|
1500
|
-
maxWidth: 510,
|
|
1501
|
-
children: /* @__PURE__ */ jsxs("div", { className: "taskon-bind-wallet-dialog", children: [
|
|
1502
|
-
/* @__PURE__ */ jsx("h2", { className: "taskon-bind-wallet-dialog-title", children: "Please connect wallet" }),
|
|
1503
|
-
/* @__PURE__ */ jsx("div", { className: "taskon-bind-wallet-dialog-chain-label", children: "EVM Chain" }),
|
|
1504
|
-
/* @__PURE__ */ jsx("div", { className: "taskon-bind-wallet-dialog-grid", children: walletsWithStatus.map(({ wallet, isInstalled, isDisabled, disabledReason }) => /* @__PURE__ */ jsx(
|
|
1505
|
-
WalletItem,
|
|
1227
|
+
return /* @__PURE__ */ jsxs("div", { className: `taskon-input-wrapper ${className || ""}`, children: [
|
|
1228
|
+
/* @__PURE__ */ jsxs("div", { className: `taskon-input-container ${isError ? "taskon-input-container--error" : ""}`, children: [
|
|
1229
|
+
/* @__PURE__ */ jsx(
|
|
1230
|
+
"input",
|
|
1506
1231
|
{
|
|
1507
|
-
|
|
1508
|
-
|
|
1509
|
-
|
|
1510
|
-
|
|
1511
|
-
|
|
1512
|
-
|
|
1513
|
-
|
|
1514
|
-
|
|
1515
|
-
|
|
1516
|
-
|
|
1517
|
-
|
|
1518
|
-
|
|
1519
|
-
|
|
1520
|
-
|
|
1232
|
+
ref: inputRef,
|
|
1233
|
+
className: "taskon-input taskon-input--in-container",
|
|
1234
|
+
type,
|
|
1235
|
+
inputMode,
|
|
1236
|
+
value,
|
|
1237
|
+
onChange: handleChange,
|
|
1238
|
+
maxLength,
|
|
1239
|
+
disabled,
|
|
1240
|
+
placeholder,
|
|
1241
|
+
onBlur,
|
|
1242
|
+
onFocus,
|
|
1243
|
+
onKeyDown: handleKeyDown
|
|
1244
|
+
}
|
|
1245
|
+
),
|
|
1246
|
+
rightSlot && /* @__PURE__ */ jsx("div", { className: "taskon-input-slot", children: rightSlot })
|
|
1247
|
+
] }),
|
|
1248
|
+
error2 && /* @__PURE__ */ jsx("p", { className: "taskon-input-error", children: error2 })
|
|
1249
|
+
] });
|
|
1250
|
+
}
|
|
1251
|
+
);
|
|
1521
1252
|
const sides = ["top", "right", "bottom", "left"];
|
|
1522
1253
|
const min = Math.min;
|
|
1523
1254
|
const max$1 = Math.max;
|
|
@@ -4695,453 +4426,667 @@ function Switch({
|
|
|
4695
4426
|
}
|
|
4696
4427
|
);
|
|
4697
4428
|
}
|
|
4698
|
-
const
|
|
4699
|
-
const
|
|
4700
|
-
const
|
|
4701
|
-
const
|
|
4702
|
-
const
|
|
4703
|
-
const
|
|
4704
|
-
const
|
|
4705
|
-
const
|
|
4706
|
-
const
|
|
4707
|
-
const
|
|
4708
|
-
const
|
|
4709
|
-
const
|
|
4710
|
-
const
|
|
4711
|
-
const
|
|
4712
|
-
const withdraw = "Withdraw";
|
|
4713
|
-
const
|
|
4714
|
-
const
|
|
4715
|
-
const resend = "Resend";
|
|
4716
|
-
const
|
|
4717
|
-
const
|
|
4718
|
-
const
|
|
4719
|
-
const
|
|
4720
|
-
const
|
|
4721
|
-
const
|
|
4722
|
-
const
|
|
4723
|
-
const
|
|
4724
|
-
const
|
|
4725
|
-
const
|
|
4726
|
-
const
|
|
4727
|
-
const
|
|
4728
|
-
const
|
|
4729
|
-
const
|
|
4730
|
-
const
|
|
4731
|
-
const
|
|
4732
|
-
const
|
|
4733
|
-
const
|
|
4734
|
-
const
|
|
4735
|
-
const
|
|
4736
|
-
const
|
|
4737
|
-
const
|
|
4738
|
-
const
|
|
4739
|
-
const
|
|
4740
|
-
const
|
|
4741
|
-
const
|
|
4742
|
-
const
|
|
4743
|
-
const
|
|
4744
|
-
const
|
|
4745
|
-
const
|
|
4746
|
-
const
|
|
4747
|
-
const
|
|
4748
|
-
const
|
|
4749
|
-
const
|
|
4750
|
-
const
|
|
4751
|
-
const
|
|
4752
|
-
const
|
|
4753
|
-
const
|
|
4754
|
-
const
|
|
4755
|
-
const
|
|
4756
|
-
const
|
|
4757
|
-
const
|
|
4758
|
-
const
|
|
4759
|
-
const
|
|
4760
|
-
const
|
|
4761
|
-
const
|
|
4762
|
-
const
|
|
4763
|
-
const
|
|
4764
|
-
const
|
|
4765
|
-
const
|
|
4766
|
-
const
|
|
4767
|
-
const
|
|
4768
|
-
const
|
|
4769
|
-
const
|
|
4770
|
-
const
|
|
4771
|
-
const
|
|
4772
|
-
const
|
|
4773
|
-
const
|
|
4774
|
-
const
|
|
4775
|
-
const
|
|
4776
|
-
const
|
|
4777
|
-
const
|
|
4778
|
-
const
|
|
4779
|
-
const
|
|
4780
|
-
const
|
|
4781
|
-
const
|
|
4782
|
-
const
|
|
4783
|
-
const
|
|
4784
|
-
const
|
|
4785
|
-
const
|
|
4786
|
-
const
|
|
4787
|
-
const
|
|
4788
|
-
const
|
|
4789
|
-
const
|
|
4790
|
-
const
|
|
4791
|
-
const
|
|
4792
|
-
const
|
|
4793
|
-
const
|
|
4794
|
-
const
|
|
4795
|
-
const
|
|
4796
|
-
const
|
|
4797
|
-
const
|
|
4798
|
-
const
|
|
4799
|
-
const
|
|
4800
|
-
const
|
|
4801
|
-
const
|
|
4802
|
-
const
|
|
4803
|
-
const
|
|
4804
|
-
const
|
|
4805
|
-
const
|
|
4806
|
-
const
|
|
4807
|
-
const
|
|
4808
|
-
const
|
|
4809
|
-
const
|
|
4810
|
-
const
|
|
4811
|
-
const
|
|
4812
|
-
const
|
|
4813
|
-
const
|
|
4814
|
-
const
|
|
4815
|
-
const
|
|
4816
|
-
const
|
|
4817
|
-
const
|
|
4818
|
-
const
|
|
4819
|
-
const
|
|
4820
|
-
const
|
|
4821
|
-
const
|
|
4822
|
-
const
|
|
4823
|
-
const
|
|
4824
|
-
const
|
|
4825
|
-
const
|
|
4826
|
-
const
|
|
4827
|
-
const
|
|
4828
|
-
const
|
|
4829
|
-
const
|
|
4830
|
-
const
|
|
4831
|
-
const
|
|
4832
|
-
const
|
|
4833
|
-
const
|
|
4834
|
-
const
|
|
4835
|
-
const
|
|
4836
|
-
const
|
|
4837
|
-
const
|
|
4838
|
-
const
|
|
4839
|
-
const
|
|
4840
|
-
const
|
|
4841
|
-
const
|
|
4842
|
-
const
|
|
4843
|
-
const
|
|
4844
|
-
const
|
|
4845
|
-
const
|
|
4846
|
-
|
|
4847
|
-
|
|
4848
|
-
|
|
4849
|
-
|
|
4850
|
-
|
|
4851
|
-
|
|
4852
|
-
|
|
4853
|
-
|
|
4854
|
-
|
|
4855
|
-
|
|
4856
|
-
|
|
4857
|
-
|
|
4858
|
-
|
|
4859
|
-
|
|
4860
|
-
|
|
4861
|
-
|
|
4862
|
-
|
|
4863
|
-
|
|
4864
|
-
|
|
4865
|
-
|
|
4866
|
-
|
|
4867
|
-
|
|
4868
|
-
|
|
4869
|
-
|
|
4870
|
-
|
|
4871
|
-
|
|
4872
|
-
|
|
4873
|
-
|
|
4874
|
-
|
|
4875
|
-
|
|
4876
|
-
|
|
4877
|
-
|
|
4878
|
-
|
|
4879
|
-
|
|
4880
|
-
|
|
4881
|
-
|
|
4882
|
-
|
|
4883
|
-
|
|
4884
|
-
|
|
4885
|
-
|
|
4886
|
-
|
|
4887
|
-
|
|
4888
|
-
|
|
4889
|
-
|
|
4890
|
-
|
|
4891
|
-
|
|
4892
|
-
|
|
4893
|
-
|
|
4894
|
-
|
|
4895
|
-
|
|
4896
|
-
|
|
4897
|
-
|
|
4898
|
-
|
|
4899
|
-
|
|
4900
|
-
|
|
4901
|
-
|
|
4902
|
-
|
|
4903
|
-
|
|
4904
|
-
|
|
4905
|
-
|
|
4906
|
-
|
|
4907
|
-
|
|
4908
|
-
|
|
4909
|
-
|
|
4910
|
-
|
|
4911
|
-
|
|
4912
|
-
|
|
4913
|
-
|
|
4914
|
-
|
|
4915
|
-
|
|
4916
|
-
|
|
4917
|
-
|
|
4918
|
-
|
|
4919
|
-
|
|
4920
|
-
|
|
4921
|
-
|
|
4922
|
-
|
|
4923
|
-
|
|
4924
|
-
|
|
4925
|
-
|
|
4926
|
-
|
|
4927
|
-
|
|
4928
|
-
|
|
4929
|
-
|
|
4930
|
-
|
|
4931
|
-
|
|
4932
|
-
|
|
4933
|
-
|
|
4934
|
-
|
|
4935
|
-
|
|
4936
|
-
|
|
4937
|
-
|
|
4938
|
-
|
|
4939
|
-
|
|
4940
|
-
|
|
4941
|
-
|
|
4942
|
-
|
|
4943
|
-
|
|
4944
|
-
|
|
4945
|
-
|
|
4946
|
-
|
|
4947
|
-
|
|
4948
|
-
|
|
4949
|
-
|
|
4950
|
-
|
|
4951
|
-
|
|
4952
|
-
|
|
4953
|
-
|
|
4954
|
-
|
|
4955
|
-
|
|
4956
|
-
|
|
4957
|
-
|
|
4958
|
-
|
|
4959
|
-
|
|
4960
|
-
|
|
4961
|
-
|
|
4962
|
-
|
|
4963
|
-
|
|
4964
|
-
|
|
4965
|
-
|
|
4966
|
-
|
|
4967
|
-
|
|
4968
|
-
|
|
4969
|
-
|
|
4970
|
-
|
|
4971
|
-
|
|
4972
|
-
|
|
4973
|
-
|
|
4974
|
-
|
|
4975
|
-
|
|
4976
|
-
|
|
4977
|
-
|
|
4978
|
-
|
|
4979
|
-
|
|
4980
|
-
|
|
4981
|
-
|
|
4982
|
-
|
|
4983
|
-
|
|
4984
|
-
|
|
4985
|
-
|
|
4986
|
-
|
|
4987
|
-
|
|
4988
|
-
|
|
4989
|
-
|
|
4990
|
-
|
|
4991
|
-
|
|
4992
|
-
|
|
4429
|
+
const tab_my_rewards = "My Rewards";
|
|
4430
|
+
const tab_identity = "Identity";
|
|
4431
|
+
const tab_activity_history = "Activity History";
|
|
4432
|
+
const tab_rewards = "Rewards";
|
|
4433
|
+
const tab_sprint_odyssey_history = "Sprint & Odyssey History";
|
|
4434
|
+
const section_you_have_earned = "You have earned";
|
|
4435
|
+
const reward_token = "Token";
|
|
4436
|
+
const reward_xp_level = "XP & Level";
|
|
4437
|
+
const reward_nft = "NFT";
|
|
4438
|
+
const reward_whitelist = "Whitelist";
|
|
4439
|
+
const reward_discord_role = "Discord Role";
|
|
4440
|
+
const reward_points = "Points";
|
|
4441
|
+
const withdrawable_assets = "Withdrawable Assets";
|
|
4442
|
+
const token_history = "Token History";
|
|
4443
|
+
const withdraw = "Withdraw";
|
|
4444
|
+
const batch_withdraw = "Batch Withdraw";
|
|
4445
|
+
const frozen_assets = "Frozen Assets";
|
|
4446
|
+
const resend = "Resend";
|
|
4447
|
+
const pending_withdrawals = "You have {count} pending withdrawals";
|
|
4448
|
+
const pending_withdrawals_text = "pending withdrawals";
|
|
4449
|
+
const pending_withdrawals_count_label = "Number of pending withdrawals";
|
|
4450
|
+
const withdraw_confirm = "Confirm Withdrawal";
|
|
4451
|
+
const withdraw_success = "Withdrawal Successful";
|
|
4452
|
+
const withdraw_canceled = "Withdrawal Canceled";
|
|
4453
|
+
const gas_not_enough = "Insufficient Gas";
|
|
4454
|
+
const gas_not_enough_description = "Please ensure you have enough gas to complete this transaction.";
|
|
4455
|
+
const gas_not_enough_description_with_chain = "Please ensure you have enough {chain} gas to complete this transaction.";
|
|
4456
|
+
const retry = "Retry";
|
|
4457
|
+
const confirm_withdraw = "Confirm withdrawal";
|
|
4458
|
+
const withdrawing = "Processing withdrawal...";
|
|
4459
|
+
const confirm = "Confirm";
|
|
4460
|
+
const cancel = "Cancel";
|
|
4461
|
+
const close = "Close";
|
|
4462
|
+
const column_detail = "Detail";
|
|
4463
|
+
const column_duration = "Duration";
|
|
4464
|
+
const activity_name = "Activity Name";
|
|
4465
|
+
const activity_time = "Activity Time";
|
|
4466
|
+
const level = "Level";
|
|
4467
|
+
const total_xp = "Total XP";
|
|
4468
|
+
const default_xp_points_name = "XP";
|
|
4469
|
+
const xp_to_next_level = "XP to next level";
|
|
4470
|
+
const xp_history = "XP History";
|
|
4471
|
+
const total_points = "Total";
|
|
4472
|
+
const empty_points = "No points history yet";
|
|
4473
|
+
const points_history = "Points History";
|
|
4474
|
+
const page = "Page";
|
|
4475
|
+
const of = "of";
|
|
4476
|
+
const previous = "Previous";
|
|
4477
|
+
const next = "Next";
|
|
4478
|
+
const load_more = "Load More";
|
|
4479
|
+
const showing = "Showing {start}-{end} of {total}";
|
|
4480
|
+
const social_accounts = "Social Media Accounts";
|
|
4481
|
+
const wallet_addresses = "Network List";
|
|
4482
|
+
const evm_chain = "EVM Chain";
|
|
4483
|
+
const primary_address = "Primary Address";
|
|
4484
|
+
const secondary_address = "Secondary Address";
|
|
4485
|
+
const email_address = "Email Address";
|
|
4486
|
+
const bind = "Bind";
|
|
4487
|
+
const unbind = "Unbind";
|
|
4488
|
+
const connect_wallet = "Connect Wallet";
|
|
4489
|
+
const binding = "Binding...";
|
|
4490
|
+
const unbinding = "Unbinding...";
|
|
4491
|
+
const bind_social_todo = "OAuth binding will be available soon";
|
|
4492
|
+
const confirm_unbind = "Confirm Unbind";
|
|
4493
|
+
const unbind_warning = "Are you sure you want to unbind this account?";
|
|
4494
|
+
const kyc_warning = "This address has been KYC verified. After unbinding, you will need to re-verify KYC if you bind it again.";
|
|
4495
|
+
const unbind_cooldown = "Cannot unbind within 24 hours of binding";
|
|
4496
|
+
const last_login_method = "Cannot unbind the last login method";
|
|
4497
|
+
const unbind_success = "Unbind successful";
|
|
4498
|
+
const unbind_failed = "Unbind failed";
|
|
4499
|
+
const bind_success = "Bind successful";
|
|
4500
|
+
const bind_failed = "Bind failed";
|
|
4501
|
+
const connecting_wallet = "Connecting wallet...";
|
|
4502
|
+
const signing_message = "Signing message...";
|
|
4503
|
+
const empty_identity = "No identity options configured";
|
|
4504
|
+
const link_email_account = "Link Email Account";
|
|
4505
|
+
const please_enter_email = "Please enter email address";
|
|
4506
|
+
const please_enter_valid_email = "Please enter a valid email address";
|
|
4507
|
+
const verification_code = "Verification Code";
|
|
4508
|
+
const please_enter_code = "Please enter verification code";
|
|
4509
|
+
const please_enter_valid_code = "Please enter a valid verification code";
|
|
4510
|
+
const send_verification_code = "Send Verification Code";
|
|
4511
|
+
const resend_code = "Resend";
|
|
4512
|
+
const email_already_linked = "This email is already linked to another account";
|
|
4513
|
+
const send_code_success = "Verification code sent";
|
|
4514
|
+
const send_code_failed = "Failed to send verification code";
|
|
4515
|
+
const column_token_symbol = "Token Symbol";
|
|
4516
|
+
const column_network = "Network";
|
|
4517
|
+
const column_withdrawable = "Withdrawable";
|
|
4518
|
+
const column_action = "Action";
|
|
4519
|
+
const chain_label = "Chain";
|
|
4520
|
+
const ok = "OK";
|
|
4521
|
+
const copy = "Copy";
|
|
4522
|
+
const copied = "Copied!";
|
|
4523
|
+
const claim_nft = "Claim NFT";
|
|
4524
|
+
const linked = "Linked";
|
|
4525
|
+
const link_platform_account = "Link {platform} Account";
|
|
4526
|
+
const withdraw_canceled_message = "Your withdrawal was canceled. You can retry the transaction.";
|
|
4527
|
+
const missing_resend_payload = "Missing resend payload";
|
|
4528
|
+
const no_tokens_for_resend = "No tokens available for resend";
|
|
4529
|
+
const failed_load_resend_details = "Failed to load resend details";
|
|
4530
|
+
const frozen_type_campaign = "Campaign Locked";
|
|
4531
|
+
const frozen_type_withdraw = "Pending Withdrawal";
|
|
4532
|
+
const frozen_type_referral = "Referral Locked";
|
|
4533
|
+
const frozen_type_benefit = "Benefit Locked";
|
|
4534
|
+
const frozen_type_tg_mini_app = "TG Mini App";
|
|
4535
|
+
const frozen_type_milestone = "Milestone Locked";
|
|
4536
|
+
const loading = "Loading...";
|
|
4537
|
+
const error = "Something went wrong";
|
|
4538
|
+
const empty_rewards = "No rewards yet";
|
|
4539
|
+
const empty_activity_history = "No activity history";
|
|
4540
|
+
const empty_token = "No tokens yet";
|
|
4541
|
+
const empty_nft = "No NFTs yet";
|
|
4542
|
+
const no_data = "No data";
|
|
4543
|
+
const claim = "Claim";
|
|
4544
|
+
const claimed_txn = "Claimed (Txn)";
|
|
4545
|
+
const manual_drop = "Manual Drop";
|
|
4546
|
+
const column_nft = "NFT";
|
|
4547
|
+
const column_whitelist = "Whitelist";
|
|
4548
|
+
const column_discord_role = "Discord Role";
|
|
4549
|
+
const column_time = "Time";
|
|
4550
|
+
const column_status = "Status";
|
|
4551
|
+
const column_amount = "Amount";
|
|
4552
|
+
const deposited = "Deposited";
|
|
4553
|
+
const distributed_by = "Distributed by";
|
|
4554
|
+
const token_history_telegram_spin = "Telegram Spin";
|
|
4555
|
+
const token_history_telegram_spin_bonus = "Telegram Spin Bonus";
|
|
4556
|
+
const column_token_type = "Type";
|
|
4557
|
+
const column_amount_withdrawable = "Amount Withdrawable";
|
|
4558
|
+
const column_withdraw_amount = "Withdraw Amount";
|
|
4559
|
+
const select_token = "Select Token";
|
|
4560
|
+
const token_amount = "Token Amount";
|
|
4561
|
+
const receive_address = "Receive Address";
|
|
4562
|
+
const max = "MAX";
|
|
4563
|
+
const available_balance = "Available";
|
|
4564
|
+
const please_select_token = "Please select a token";
|
|
4565
|
+
const please_enter_amount = "Please enter an amount";
|
|
4566
|
+
const please_enter_valid_amount = "Please enter a valid amount";
|
|
4567
|
+
const amount_exceeds_balance = "Amount exceeds available balance";
|
|
4568
|
+
const token_not_supported = "Token not supported";
|
|
4569
|
+
const withdrawing_tip = "Please wait while your withdrawal is being processed...";
|
|
4570
|
+
const claiming_nft = "Claiming NFT...";
|
|
4571
|
+
const claim_connecting_wallet = "Connecting wallet...";
|
|
4572
|
+
const claim_switching_network = "Switching network...";
|
|
4573
|
+
const claim_getting_signature = "Getting signature...";
|
|
4574
|
+
const claim_confirm_in_wallet = "Please confirm in your wallet";
|
|
4575
|
+
const claim_transaction_pending = "Transaction pending...";
|
|
4576
|
+
const claim_success = "Claim successful!";
|
|
4577
|
+
const claim_failed = "Claim failed";
|
|
4578
|
+
const claim_canceled = "Transaction was rejected by user.";
|
|
4579
|
+
const view_on_explorer = "View on Explorer";
|
|
4580
|
+
const pending_transaction = "Pending Transaction";
|
|
4581
|
+
const pending_tx_message = "You have a pending transaction";
|
|
4582
|
+
const claim_pending_title = "You have already claimed this NFT, please wait for this transaction to be confirmed.";
|
|
4583
|
+
const claim_pending_check_explorer = "You can check this transaction on explorer:";
|
|
4584
|
+
const claim_pending_hash_label = "Transaction hash:";
|
|
4585
|
+
const claim_pending_claim_again_warn = '"Claim Again" will send a new transaction it is only recommended when you are sure there is something wrong with the current transaction.';
|
|
4586
|
+
const claim_pending_receive_address_no_change = "This receive address can’t be changed:";
|
|
4587
|
+
const continue_waiting = "Continue Waiting";
|
|
4588
|
+
const claim_again = "Claim Again";
|
|
4589
|
+
const error_no_wallet = "No wallet found. Please install a wallet extension.";
|
|
4590
|
+
const error_address_mismatch = "Connected wallet address does not match.";
|
|
4591
|
+
const error_network_switch = "Failed to switch network. Please switch manually.";
|
|
4592
|
+
const error_insufficient_gas = "Insufficient gas. Please add more funds to your wallet.";
|
|
4593
|
+
const wallet_not_bind = "Please bind wallet before withdraw";
|
|
4594
|
+
const failed_connect_wallet = "Failed to connect wallet";
|
|
4595
|
+
const confirm_wallet_retry = "Please confirm in your wallet and retry.";
|
|
4596
|
+
const withdraw_failed = "Withdrawal failed";
|
|
4597
|
+
const not_configured = "Not configured";
|
|
4598
|
+
const enMessages = {
|
|
4599
|
+
tab_my_rewards,
|
|
4600
|
+
tab_identity,
|
|
4601
|
+
tab_activity_history,
|
|
4602
|
+
tab_rewards,
|
|
4603
|
+
tab_sprint_odyssey_history,
|
|
4604
|
+
section_you_have_earned,
|
|
4605
|
+
reward_token,
|
|
4606
|
+
reward_xp_level,
|
|
4607
|
+
reward_nft,
|
|
4608
|
+
reward_whitelist,
|
|
4609
|
+
reward_discord_role,
|
|
4610
|
+
reward_points,
|
|
4611
|
+
withdrawable_assets,
|
|
4612
|
+
token_history,
|
|
4613
|
+
withdraw,
|
|
4614
|
+
batch_withdraw,
|
|
4615
|
+
frozen_assets,
|
|
4616
|
+
resend,
|
|
4617
|
+
pending_withdrawals,
|
|
4618
|
+
pending_withdrawals_text,
|
|
4619
|
+
pending_withdrawals_count_label,
|
|
4620
|
+
withdraw_confirm,
|
|
4621
|
+
withdraw_success,
|
|
4622
|
+
withdraw_canceled,
|
|
4623
|
+
gas_not_enough,
|
|
4624
|
+
gas_not_enough_description,
|
|
4625
|
+
gas_not_enough_description_with_chain,
|
|
4626
|
+
retry,
|
|
4627
|
+
confirm_withdraw,
|
|
4628
|
+
withdrawing,
|
|
4629
|
+
confirm,
|
|
4630
|
+
cancel,
|
|
4631
|
+
close,
|
|
4632
|
+
column_detail,
|
|
4633
|
+
column_duration,
|
|
4634
|
+
activity_name,
|
|
4635
|
+
activity_time,
|
|
4636
|
+
level,
|
|
4637
|
+
total_xp,
|
|
4638
|
+
default_xp_points_name,
|
|
4639
|
+
xp_to_next_level,
|
|
4640
|
+
xp_history,
|
|
4641
|
+
total_points,
|
|
4642
|
+
empty_points,
|
|
4643
|
+
points_history,
|
|
4644
|
+
page,
|
|
4645
|
+
of,
|
|
4646
|
+
previous,
|
|
4647
|
+
next,
|
|
4648
|
+
load_more,
|
|
4649
|
+
showing,
|
|
4650
|
+
social_accounts,
|
|
4651
|
+
wallet_addresses,
|
|
4652
|
+
evm_chain,
|
|
4653
|
+
primary_address,
|
|
4654
|
+
secondary_address,
|
|
4655
|
+
email_address,
|
|
4656
|
+
bind,
|
|
4657
|
+
unbind,
|
|
4658
|
+
connect_wallet,
|
|
4659
|
+
binding,
|
|
4660
|
+
unbinding,
|
|
4661
|
+
bind_social_todo,
|
|
4662
|
+
confirm_unbind,
|
|
4663
|
+
unbind_warning,
|
|
4664
|
+
kyc_warning,
|
|
4665
|
+
unbind_cooldown,
|
|
4666
|
+
last_login_method,
|
|
4667
|
+
unbind_success,
|
|
4668
|
+
unbind_failed,
|
|
4669
|
+
bind_success,
|
|
4670
|
+
bind_failed,
|
|
4671
|
+
connecting_wallet,
|
|
4672
|
+
signing_message,
|
|
4673
|
+
empty_identity,
|
|
4674
|
+
link_email_account,
|
|
4675
|
+
please_enter_email,
|
|
4676
|
+
please_enter_valid_email,
|
|
4677
|
+
verification_code,
|
|
4678
|
+
please_enter_code,
|
|
4679
|
+
please_enter_valid_code,
|
|
4680
|
+
send_verification_code,
|
|
4681
|
+
resend_code,
|
|
4682
|
+
email_already_linked,
|
|
4683
|
+
send_code_success,
|
|
4684
|
+
send_code_failed,
|
|
4685
|
+
column_token_symbol,
|
|
4686
|
+
column_network,
|
|
4687
|
+
column_withdrawable,
|
|
4688
|
+
column_action,
|
|
4689
|
+
chain_label,
|
|
4690
|
+
ok,
|
|
4691
|
+
copy,
|
|
4692
|
+
copied,
|
|
4693
|
+
claim_nft,
|
|
4694
|
+
linked,
|
|
4695
|
+
link_platform_account,
|
|
4696
|
+
withdraw_canceled_message,
|
|
4697
|
+
missing_resend_payload,
|
|
4698
|
+
no_tokens_for_resend,
|
|
4699
|
+
failed_load_resend_details,
|
|
4700
|
+
frozen_type_campaign,
|
|
4701
|
+
frozen_type_withdraw,
|
|
4702
|
+
frozen_type_referral,
|
|
4703
|
+
frozen_type_benefit,
|
|
4704
|
+
frozen_type_tg_mini_app,
|
|
4705
|
+
frozen_type_milestone,
|
|
4706
|
+
loading,
|
|
4707
|
+
error,
|
|
4708
|
+
empty_rewards,
|
|
4709
|
+
empty_activity_history,
|
|
4710
|
+
empty_token,
|
|
4711
|
+
empty_nft,
|
|
4712
|
+
no_data,
|
|
4713
|
+
claim,
|
|
4714
|
+
claimed_txn,
|
|
4715
|
+
manual_drop,
|
|
4716
|
+
column_nft,
|
|
4717
|
+
column_whitelist,
|
|
4718
|
+
column_discord_role,
|
|
4719
|
+
column_time,
|
|
4720
|
+
column_status,
|
|
4721
|
+
column_amount,
|
|
4722
|
+
deposited,
|
|
4723
|
+
distributed_by,
|
|
4724
|
+
token_history_telegram_spin,
|
|
4725
|
+
token_history_telegram_spin_bonus,
|
|
4726
|
+
column_token_type,
|
|
4727
|
+
column_amount_withdrawable,
|
|
4728
|
+
column_withdraw_amount,
|
|
4729
|
+
select_token,
|
|
4730
|
+
token_amount,
|
|
4731
|
+
receive_address,
|
|
4732
|
+
max,
|
|
4733
|
+
available_balance,
|
|
4734
|
+
please_select_token,
|
|
4735
|
+
please_enter_amount,
|
|
4736
|
+
please_enter_valid_amount,
|
|
4737
|
+
amount_exceeds_balance,
|
|
4738
|
+
token_not_supported,
|
|
4739
|
+
withdrawing_tip,
|
|
4740
|
+
claiming_nft,
|
|
4741
|
+
claim_connecting_wallet,
|
|
4742
|
+
claim_switching_network,
|
|
4743
|
+
claim_getting_signature,
|
|
4744
|
+
claim_confirm_in_wallet,
|
|
4745
|
+
claim_transaction_pending,
|
|
4746
|
+
claim_success,
|
|
4747
|
+
claim_failed,
|
|
4748
|
+
claim_canceled,
|
|
4749
|
+
view_on_explorer,
|
|
4750
|
+
pending_transaction,
|
|
4751
|
+
pending_tx_message,
|
|
4752
|
+
claim_pending_title,
|
|
4753
|
+
claim_pending_check_explorer,
|
|
4754
|
+
claim_pending_hash_label,
|
|
4755
|
+
claim_pending_claim_again_warn,
|
|
4756
|
+
claim_pending_receive_address_no_change,
|
|
4757
|
+
continue_waiting,
|
|
4758
|
+
claim_again,
|
|
4759
|
+
error_no_wallet,
|
|
4760
|
+
error_address_mismatch,
|
|
4761
|
+
error_network_switch,
|
|
4762
|
+
error_insufficient_gas,
|
|
4763
|
+
wallet_not_bind,
|
|
4764
|
+
failed_connect_wallet,
|
|
4765
|
+
confirm_wallet_retry,
|
|
4766
|
+
withdraw_failed,
|
|
4767
|
+
not_configured
|
|
4768
|
+
};
|
|
4769
|
+
const DEFAULT_CLAIM_MESSAGES = {
|
|
4770
|
+
claimNft: enMessages.claim_nft,
|
|
4771
|
+
claimingNft: enMessages.claiming_nft,
|
|
4772
|
+
claimConnectingWallet: enMessages.claim_connecting_wallet,
|
|
4773
|
+
claimSwitchingNetwork: enMessages.claim_switching_network,
|
|
4774
|
+
claimGettingSignature: enMessages.claim_getting_signature,
|
|
4775
|
+
claimConfirmInWallet: enMessages.claim_confirm_in_wallet,
|
|
4776
|
+
claimTransactionPending: enMessages.claim_transaction_pending,
|
|
4777
|
+
claimSuccess: enMessages.claim_success,
|
|
4778
|
+
claimFailed: enMessages.claim_failed,
|
|
4779
|
+
claimCanceled: enMessages.claim_canceled,
|
|
4780
|
+
viewOnExplorer: enMessages.view_on_explorer,
|
|
4781
|
+
retry: enMessages.retry,
|
|
4782
|
+
close: enMessages.close
|
|
4783
|
+
};
|
|
4784
|
+
function LoadingSpinner() {
|
|
4785
|
+
return /* @__PURE__ */ jsx("div", { className: "taskon-claim-dialog-spinner", children: /* @__PURE__ */ jsx("div", { className: "taskon-claim-dialog-spinner__circle" }) });
|
|
4786
|
+
}
|
|
4787
|
+
function SuccessIcon() {
|
|
4788
|
+
return /* @__PURE__ */ jsxs(
|
|
4789
|
+
"svg",
|
|
4790
|
+
{
|
|
4791
|
+
className: "taskon-claim-dialog-icon taskon-claim-dialog-icon--success",
|
|
4792
|
+
viewBox: "0 0 24 24",
|
|
4793
|
+
fill: "none",
|
|
4794
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
4795
|
+
children: [
|
|
4796
|
+
/* @__PURE__ */ jsx("circle", { cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "2" }),
|
|
4797
|
+
/* @__PURE__ */ jsx(
|
|
4798
|
+
"path",
|
|
4799
|
+
{
|
|
4800
|
+
d: "M8 12L11 15L16 9",
|
|
4801
|
+
stroke: "currentColor",
|
|
4802
|
+
strokeWidth: "2",
|
|
4803
|
+
strokeLinecap: "round",
|
|
4804
|
+
strokeLinejoin: "round"
|
|
4805
|
+
}
|
|
4806
|
+
)
|
|
4807
|
+
]
|
|
4808
|
+
}
|
|
4809
|
+
);
|
|
4810
|
+
}
|
|
4811
|
+
function ErrorIcon() {
|
|
4812
|
+
return /* @__PURE__ */ jsxs(
|
|
4813
|
+
"svg",
|
|
4814
|
+
{
|
|
4815
|
+
className: "taskon-claim-dialog-icon taskon-claim-dialog-icon--error",
|
|
4816
|
+
viewBox: "0 0 24 24",
|
|
4817
|
+
fill: "none",
|
|
4818
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
4819
|
+
children: [
|
|
4820
|
+
/* @__PURE__ */ jsx("circle", { cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "2" }),
|
|
4821
|
+
/* @__PURE__ */ jsx(
|
|
4822
|
+
"path",
|
|
4823
|
+
{
|
|
4824
|
+
d: "M15 9L9 15M9 9L15 15",
|
|
4825
|
+
stroke: "currentColor",
|
|
4826
|
+
strokeWidth: "2",
|
|
4827
|
+
strokeLinecap: "round"
|
|
4828
|
+
}
|
|
4829
|
+
)
|
|
4830
|
+
]
|
|
4831
|
+
}
|
|
4832
|
+
);
|
|
4833
|
+
}
|
|
4834
|
+
function getStatusMessage(status, messages) {
|
|
4835
|
+
switch (status) {
|
|
4836
|
+
case "checking":
|
|
4837
|
+
return messages.claimingNft;
|
|
4838
|
+
case "connecting":
|
|
4839
|
+
return messages.claimConnectingWallet;
|
|
4840
|
+
case "switching":
|
|
4841
|
+
return messages.claimSwitchingNetwork;
|
|
4842
|
+
case "signing":
|
|
4843
|
+
return messages.claimGettingSignature;
|
|
4844
|
+
case "confirming":
|
|
4845
|
+
return messages.claimConfirmInWallet;
|
|
4846
|
+
case "pending":
|
|
4847
|
+
return messages.claimTransactionPending;
|
|
4848
|
+
case "success":
|
|
4849
|
+
return messages.claimSuccess;
|
|
4850
|
+
case "error":
|
|
4851
|
+
return messages.claimFailed;
|
|
4852
|
+
default:
|
|
4853
|
+
return "";
|
|
4854
|
+
}
|
|
4855
|
+
}
|
|
4856
|
+
function getErrorMessage(error2, messages) {
|
|
4857
|
+
if (error2.isUserCancelled()) {
|
|
4858
|
+
return messages.claimCanceled;
|
|
4859
|
+
}
|
|
4860
|
+
const readableMessage = typeof error2.message === "string" ? error2.message.trim() : "";
|
|
4861
|
+
if (readableMessage && readableMessage !== "[object Object]") {
|
|
4862
|
+
return readableMessage;
|
|
4863
|
+
}
|
|
4864
|
+
return messages.claimFailed || DEFAULT_ERROR_MESSAGES[error2.type] || DEFAULT_ERROR_MESSAGES[NftClaimErrorType.Unknown];
|
|
4865
|
+
}
|
|
4866
|
+
function formatTxHash$1(hash) {
|
|
4867
|
+
if (hash.length <= 16) return hash;
|
|
4868
|
+
return `${hash.slice(0, 10)}...${hash.slice(-6)}`;
|
|
4869
|
+
}
|
|
4870
|
+
function ClaimNftDialog({
|
|
4871
|
+
open,
|
|
4872
|
+
onClose,
|
|
4873
|
+
status,
|
|
4874
|
+
error: error2,
|
|
4875
|
+
txHash,
|
|
4876
|
+
claimingNft,
|
|
4877
|
+
explorerUrl,
|
|
4878
|
+
messages,
|
|
4879
|
+
onRetry
|
|
4880
|
+
}) {
|
|
4881
|
+
const resolvedMessages = {
|
|
4882
|
+
...DEFAULT_CLAIM_MESSAGES,
|
|
4883
|
+
...messages
|
|
4884
|
+
};
|
|
4885
|
+
const isLoading = [
|
|
4886
|
+
"checking",
|
|
4887
|
+
"connecting",
|
|
4888
|
+
"switching",
|
|
4889
|
+
"signing",
|
|
4890
|
+
"confirming",
|
|
4891
|
+
"pending"
|
|
4892
|
+
].includes(status);
|
|
4893
|
+
const canClose = status === "success" || status === "error" || status === "idle";
|
|
4894
|
+
const handleClose = () => {
|
|
4895
|
+
if (canClose) {
|
|
4896
|
+
onClose();
|
|
4897
|
+
}
|
|
4898
|
+
};
|
|
4899
|
+
const handleViewTx = () => {
|
|
4900
|
+
if (explorerUrl) {
|
|
4901
|
+
window.open(explorerUrl, "_blank", "noopener,noreferrer");
|
|
4902
|
+
}
|
|
4903
|
+
};
|
|
4904
|
+
return /* @__PURE__ */ jsx(
|
|
4905
|
+
Dialog,
|
|
4906
|
+
{
|
|
4907
|
+
open,
|
|
4908
|
+
onOpenChange: (isOpen) => {
|
|
4909
|
+
if (!isOpen && canClose) {
|
|
4910
|
+
onClose();
|
|
4911
|
+
}
|
|
4912
|
+
},
|
|
4913
|
+
title: resolvedMessages.claimNft,
|
|
4914
|
+
showCloseButton: canClose,
|
|
4915
|
+
contentClassName: "taskon-claim-dialog",
|
|
4916
|
+
maxWidth: 400,
|
|
4917
|
+
children: /* @__PURE__ */ jsxs("div", { className: "taskon-claim-dialog-content", children: [
|
|
4918
|
+
claimingNft && /* @__PURE__ */ jsx("div", { className: "taskon-claim-dialog-nft", children: claimingNft.item.reward_value.collection_image && /* @__PURE__ */ jsx(
|
|
4919
|
+
"img",
|
|
4920
|
+
{
|
|
4921
|
+
src: claimingNft.item.reward_value.collection_image,
|
|
4922
|
+
alt: "NFT",
|
|
4923
|
+
className: "taskon-claim-dialog-nft__image"
|
|
4924
|
+
}
|
|
4925
|
+
) }),
|
|
4926
|
+
/* @__PURE__ */ jsxs("div", { className: "taskon-claim-dialog-status", children: [
|
|
4927
|
+
isLoading && /* @__PURE__ */ jsx(LoadingSpinner, {}),
|
|
4928
|
+
status === "success" && /* @__PURE__ */ jsx(SuccessIcon, {}),
|
|
4929
|
+
status === "error" && /* @__PURE__ */ jsx(ErrorIcon, {})
|
|
4930
|
+
] }),
|
|
4931
|
+
/* @__PURE__ */ jsx("p", { className: "taskon-claim-dialog-message", children: status === "error" && error2 ? getErrorMessage(error2, resolvedMessages) : getStatusMessage(status, resolvedMessages) }),
|
|
4932
|
+
txHash && (status === "pending" || status === "success") && /* @__PURE__ */ jsxs("div", { className: "taskon-claim-dialog-tx", children: [
|
|
4933
|
+
/* @__PURE__ */ jsx("span", { className: "taskon-claim-dialog-tx__label", children: "Tx:" }),
|
|
4934
|
+
/* @__PURE__ */ jsx("span", { className: "taskon-claim-dialog-tx__hash", children: formatTxHash$1(txHash) })
|
|
4935
|
+
] }),
|
|
4936
|
+
/* @__PURE__ */ jsxs("div", { className: "taskon-claim-dialog-actions", children: [
|
|
4937
|
+
txHash && explorerUrl && /* @__PURE__ */ jsx(
|
|
4938
|
+
"button",
|
|
4939
|
+
{
|
|
4940
|
+
type: "button",
|
|
4941
|
+
className: "taskon-claim-dialog-btn taskon-claim-dialog-btn--secondary",
|
|
4942
|
+
onClick: handleViewTx,
|
|
4943
|
+
children: resolvedMessages.viewOnExplorer
|
|
4944
|
+
}
|
|
4945
|
+
),
|
|
4946
|
+
status === "error" && onRetry && /* @__PURE__ */ jsx(
|
|
4947
|
+
"button",
|
|
4948
|
+
{
|
|
4949
|
+
type: "button",
|
|
4950
|
+
className: "taskon-claim-dialog-btn taskon-claim-dialog-btn--primary",
|
|
4951
|
+
onClick: onRetry,
|
|
4952
|
+
children: resolvedMessages.retry
|
|
4953
|
+
}
|
|
4954
|
+
),
|
|
4955
|
+
canClose && /* @__PURE__ */ jsx(
|
|
4956
|
+
"button",
|
|
4957
|
+
{
|
|
4958
|
+
type: "button",
|
|
4959
|
+
className: "taskon-claim-dialog-btn taskon-claim-dialog-btn--primary",
|
|
4960
|
+
onClick: handleClose,
|
|
4961
|
+
children: resolvedMessages.close
|
|
4962
|
+
}
|
|
4963
|
+
)
|
|
4964
|
+
] })
|
|
4965
|
+
] })
|
|
4966
|
+
}
|
|
4967
|
+
);
|
|
4968
|
+
}
|
|
4969
|
+
const DEFAULT_PENDING_MESSAGES = {
|
|
4970
|
+
pendingTransaction: enMessages.pending_transaction,
|
|
4971
|
+
claimPendingTitle: enMessages.claim_pending_title,
|
|
4972
|
+
claimPendingCheckExplorer: enMessages.claim_pending_check_explorer,
|
|
4973
|
+
claimPendingHashLabel: enMessages.claim_pending_hash_label,
|
|
4974
|
+
claimPendingClaimAgainWarn: enMessages.claim_pending_claim_again_warn,
|
|
4975
|
+
claimPendingReceiveAddressNoChange: enMessages.claim_pending_receive_address_no_change,
|
|
4976
|
+
claimAgain: enMessages.claim_again,
|
|
4977
|
+
continueWaiting: enMessages.continue_waiting
|
|
4993
4978
|
};
|
|
4994
|
-
|
|
4995
|
-
|
|
4996
|
-
|
|
4997
|
-
|
|
4998
|
-
|
|
4999
|
-
|
|
5000
|
-
|
|
5001
|
-
|
|
5002
|
-
|
|
5003
|
-
|
|
5004
|
-
|
|
5005
|
-
binding,
|
|
5006
|
-
cancel,
|
|
5007
|
-
claim,
|
|
5008
|
-
claimAgain,
|
|
5009
|
-
claimCanceled,
|
|
5010
|
-
claimConfirmInWallet,
|
|
5011
|
-
claimConnectingWallet,
|
|
5012
|
-
claimFailed,
|
|
5013
|
-
claimGettingSignature,
|
|
5014
|
-
claimNft,
|
|
5015
|
-
claimPendingCheckExplorer,
|
|
5016
|
-
claimPendingClaimAgainWarn,
|
|
5017
|
-
claimPendingHashLabel,
|
|
5018
|
-
claimPendingReceiveAddressNoChange,
|
|
5019
|
-
claimPendingTitle,
|
|
5020
|
-
claimSuccess,
|
|
5021
|
-
claimSwitchingNetwork,
|
|
5022
|
-
claimTransactionPending,
|
|
5023
|
-
claimedTxn,
|
|
5024
|
-
claimingNft,
|
|
5025
|
-
close,
|
|
5026
|
-
columnAction,
|
|
5027
|
-
columnAmount,
|
|
5028
|
-
columnAmountWithdrawable,
|
|
5029
|
-
columnDetail,
|
|
5030
|
-
columnDiscordRole,
|
|
5031
|
-
columnDuration,
|
|
5032
|
-
columnNetwork,
|
|
5033
|
-
columnNft,
|
|
5034
|
-
columnStatus,
|
|
5035
|
-
columnTime,
|
|
5036
|
-
columnTokenSymbol,
|
|
5037
|
-
columnTokenType,
|
|
5038
|
-
columnWhitelist,
|
|
5039
|
-
columnWithdrawAmount,
|
|
5040
|
-
columnWithdrawable,
|
|
5041
|
-
confirm,
|
|
5042
|
-
confirmUnbind,
|
|
5043
|
-
confirmWithdraw,
|
|
5044
|
-
connectWallet,
|
|
5045
|
-
connectingWallet,
|
|
5046
|
-
continueWaiting,
|
|
5047
|
-
default: enMessages,
|
|
5048
|
-
deposited,
|
|
5049
|
-
distributedBy,
|
|
5050
|
-
emailAddress,
|
|
5051
|
-
emailAlreadyLinked,
|
|
5052
|
-
emptyActivityHistory,
|
|
5053
|
-
emptyIdentity,
|
|
5054
|
-
emptyNft,
|
|
5055
|
-
emptyPoints,
|
|
5056
|
-
emptyRewards,
|
|
5057
|
-
emptyToken,
|
|
5058
|
-
error,
|
|
5059
|
-
errorAddressMismatch,
|
|
5060
|
-
errorInsufficientGas,
|
|
5061
|
-
errorNetworkSwitch,
|
|
5062
|
-
errorNoWallet,
|
|
5063
|
-
frozenAssets,
|
|
5064
|
-
frozenTypeBenefit,
|
|
5065
|
-
frozenTypeCampaign,
|
|
5066
|
-
frozenTypeMilestone,
|
|
5067
|
-
frozenTypeReferral,
|
|
5068
|
-
frozenTypeTgMiniApp,
|
|
5069
|
-
frozenTypeWithdraw,
|
|
5070
|
-
gasNotEnough,
|
|
5071
|
-
kycWarning,
|
|
5072
|
-
lastLoginMethod,
|
|
5073
|
-
level,
|
|
5074
|
-
linkEmailAccount,
|
|
5075
|
-
linkPlatformAccount,
|
|
5076
|
-
linked,
|
|
5077
|
-
loadMore,
|
|
5078
|
-
loading,
|
|
5079
|
-
manualDrop,
|
|
5080
|
-
max,
|
|
5081
|
-
next,
|
|
5082
|
-
noData,
|
|
5083
|
-
of,
|
|
5084
|
-
ok,
|
|
5085
|
-
page,
|
|
5086
|
-
pendingTransaction,
|
|
5087
|
-
pendingTxMessage,
|
|
5088
|
-
pendingWithdrawals,
|
|
5089
|
-
pleaseEnterCode,
|
|
5090
|
-
pleaseEnterEmail,
|
|
5091
|
-
pleaseEnterValidAmount,
|
|
5092
|
-
pleaseEnterValidCode,
|
|
5093
|
-
pleaseEnterValidEmail,
|
|
5094
|
-
pleaseSelectToken,
|
|
5095
|
-
pointsHistory,
|
|
5096
|
-
previous,
|
|
4979
|
+
function formatTxHash(hash) {
|
|
4980
|
+
if (hash.length <= 16) return hash;
|
|
4981
|
+
return `${hash.slice(0, 10)}...${hash.slice(-6)}`;
|
|
4982
|
+
}
|
|
4983
|
+
function PendingTxDialog({
|
|
4984
|
+
open,
|
|
4985
|
+
onClose,
|
|
4986
|
+
onClaimAgain,
|
|
4987
|
+
onContinueWaiting,
|
|
4988
|
+
txHash,
|
|
4989
|
+
explorerUrl,
|
|
5097
4990
|
receiveAddress,
|
|
5098
|
-
|
|
5099
|
-
|
|
5100
|
-
|
|
5101
|
-
|
|
5102
|
-
|
|
5103
|
-
|
|
5104
|
-
|
|
5105
|
-
|
|
5106
|
-
|
|
5107
|
-
|
|
5108
|
-
|
|
5109
|
-
|
|
5110
|
-
|
|
5111
|
-
|
|
5112
|
-
|
|
5113
|
-
|
|
5114
|
-
|
|
5115
|
-
|
|
5116
|
-
|
|
5117
|
-
|
|
5118
|
-
|
|
5119
|
-
|
|
5120
|
-
|
|
5121
|
-
|
|
5122
|
-
|
|
5123
|
-
|
|
5124
|
-
|
|
5125
|
-
|
|
5126
|
-
|
|
5127
|
-
|
|
5128
|
-
|
|
5129
|
-
|
|
5130
|
-
|
|
5131
|
-
|
|
5132
|
-
|
|
5133
|
-
|
|
5134
|
-
|
|
5135
|
-
|
|
5136
|
-
|
|
5137
|
-
|
|
5138
|
-
|
|
5139
|
-
|
|
5140
|
-
|
|
5141
|
-
|
|
5142
|
-
|
|
5143
|
-
|
|
5144
|
-
|
|
4991
|
+
messages
|
|
4992
|
+
}) {
|
|
4993
|
+
const resolvedMessages = {
|
|
4994
|
+
...DEFAULT_PENDING_MESSAGES,
|
|
4995
|
+
...messages
|
|
4996
|
+
};
|
|
4997
|
+
const title = resolvedMessages.claimPendingTitle;
|
|
4998
|
+
const checkExplorerText = resolvedMessages.claimPendingCheckExplorer;
|
|
4999
|
+
const hashLabel = resolvedMessages.claimPendingHashLabel;
|
|
5000
|
+
const claimAgainWarn = resolvedMessages.claimPendingClaimAgainWarn;
|
|
5001
|
+
const receiveAddressNoChange = resolvedMessages.claimPendingReceiveAddressNoChange;
|
|
5002
|
+
const handleViewTx = () => {
|
|
5003
|
+
if (explorerUrl) {
|
|
5004
|
+
openInNewTab(explorerUrl);
|
|
5005
|
+
}
|
|
5006
|
+
};
|
|
5007
|
+
return /* @__PURE__ */ jsx(
|
|
5008
|
+
Dialog,
|
|
5009
|
+
{
|
|
5010
|
+
open,
|
|
5011
|
+
onOpenChange: (isOpen) => {
|
|
5012
|
+
if (!isOpen) {
|
|
5013
|
+
onClose();
|
|
5014
|
+
}
|
|
5015
|
+
},
|
|
5016
|
+
title: resolvedMessages.pendingTransaction,
|
|
5017
|
+
showCloseButton: true,
|
|
5018
|
+
contentClassName: "taskon-pending-dialog",
|
|
5019
|
+
maxWidth: 460,
|
|
5020
|
+
children: /* @__PURE__ */ jsxs("div", { className: "taskon-pending-dialog-content", children: [
|
|
5021
|
+
/* @__PURE__ */ jsx("p", { className: "taskon-pending-dialog-title", children: title }),
|
|
5022
|
+
txHash && /* @__PURE__ */ jsx("p", { className: "taskon-pending-dialog-desc", children: checkExplorerText }),
|
|
5023
|
+
txHash && /* @__PURE__ */ jsxs("div", { className: "taskon-pending-dialog-hash-wrap", children: [
|
|
5024
|
+
/* @__PURE__ */ jsx("span", { className: "taskon-pending-dialog-hash-label", children: hashLabel }),
|
|
5025
|
+
explorerUrl ? /* @__PURE__ */ jsx(
|
|
5026
|
+
"button",
|
|
5027
|
+
{
|
|
5028
|
+
type: "button",
|
|
5029
|
+
className: "taskon-pending-dialog-hash-link",
|
|
5030
|
+
onClick: handleViewTx,
|
|
5031
|
+
children: formatTxHash(txHash)
|
|
5032
|
+
}
|
|
5033
|
+
) : /* @__PURE__ */ jsx("span", { className: "taskon-pending-dialog-hash-value", children: formatTxHash(txHash) })
|
|
5034
|
+
] }),
|
|
5035
|
+
/* @__PURE__ */ jsxs("ul", { className: "taskon-pending-dialog-notice-list", children: [
|
|
5036
|
+
/* @__PURE__ */ jsx("li", { className: "taskon-pending-dialog-notice-item", children: claimAgainWarn }),
|
|
5037
|
+
receiveAddress && /* @__PURE__ */ jsxs("li", { className: "taskon-pending-dialog-notice-item", children: [
|
|
5038
|
+
/* @__PURE__ */ jsx("div", { children: receiveAddressNoChange }),
|
|
5039
|
+
/* @__PURE__ */ jsx("div", { className: "taskon-pending-dialog-receive-address", children: receiveAddress })
|
|
5040
|
+
] })
|
|
5041
|
+
] }),
|
|
5042
|
+
/* @__PURE__ */ jsxs("div", { className: "taskon-pending-dialog-actions", children: [
|
|
5043
|
+
/* @__PURE__ */ jsx(
|
|
5044
|
+
"button",
|
|
5045
|
+
{
|
|
5046
|
+
type: "button",
|
|
5047
|
+
className: "taskon-pending-dialog-btn taskon-pending-dialog-btn--secondary",
|
|
5048
|
+
onClick: onClaimAgain,
|
|
5049
|
+
children: resolvedMessages.claimAgain
|
|
5050
|
+
}
|
|
5051
|
+
),
|
|
5052
|
+
/* @__PURE__ */ jsx(
|
|
5053
|
+
"button",
|
|
5054
|
+
{
|
|
5055
|
+
type: "button",
|
|
5056
|
+
className: "taskon-pending-dialog-btn taskon-pending-dialog-btn--primary",
|
|
5057
|
+
onClick: onContinueWaiting,
|
|
5058
|
+
children: resolvedMessages.continueWaiting
|
|
5059
|
+
}
|
|
5060
|
+
)
|
|
5061
|
+
] })
|
|
5062
|
+
] })
|
|
5063
|
+
}
|
|
5064
|
+
);
|
|
5065
|
+
}
|
|
5066
|
+
const loadMessages = createLocaleLoader(
|
|
5067
|
+
enMessages,
|
|
5068
|
+
{
|
|
5069
|
+
ko: () => import("./usercenter-ko-Dtpkn2qb.js").then((module) => ({
|
|
5070
|
+
default: module.default
|
|
5071
|
+
})),
|
|
5072
|
+
ja: () => import("./usercenter-ja-CKE4DJC6.js").then((module) => ({
|
|
5073
|
+
default: module.default
|
|
5074
|
+
})),
|
|
5075
|
+
ru: () => import("./usercenter-ru-DnBGee45.js").then((module) => ({
|
|
5076
|
+
default: module.default
|
|
5077
|
+
})),
|
|
5078
|
+
es: () => import("./usercenter-es-Dz3Wp2vV.js").then((module) => ({
|
|
5079
|
+
default: module.default
|
|
5080
|
+
}))
|
|
5081
|
+
}
|
|
5082
|
+
);
|
|
5083
|
+
function useUserCenterLocale() {
|
|
5084
|
+
return useTranslation({
|
|
5085
|
+
widgetId: "UserCenterWidget",
|
|
5086
|
+
defaultMessages: enMessages,
|
|
5087
|
+
loadMessages
|
|
5088
|
+
});
|
|
5089
|
+
}
|
|
5145
5090
|
function EmptyState({
|
|
5146
5091
|
message,
|
|
5147
5092
|
icon,
|
|
@@ -5153,7 +5098,7 @@ function EmptyState({
|
|
|
5153
5098
|
] });
|
|
5154
5099
|
}
|
|
5155
5100
|
function LoadingState({
|
|
5156
|
-
message
|
|
5101
|
+
message,
|
|
5157
5102
|
className = ""
|
|
5158
5103
|
}) {
|
|
5159
5104
|
return /* @__PURE__ */ jsxs("div", { className: `taskon-user-center-loading ${className}`, children: [
|
|
@@ -5168,10 +5113,10 @@ function Pagination({
|
|
|
5168
5113
|
hasNext,
|
|
5169
5114
|
onPrevious,
|
|
5170
5115
|
onNext,
|
|
5171
|
-
messages,
|
|
5172
5116
|
className = "",
|
|
5173
5117
|
showRange
|
|
5174
5118
|
}) {
|
|
5119
|
+
const { messages } = useUserCenterLocale();
|
|
5175
5120
|
if (totalPages === 0) {
|
|
5176
5121
|
return null;
|
|
5177
5122
|
}
|
|
@@ -5202,6 +5147,7 @@ function Pagination({
|
|
|
5202
5147
|
function WithdrawPending({
|
|
5203
5148
|
count,
|
|
5204
5149
|
text,
|
|
5150
|
+
countAriaLabel,
|
|
5205
5151
|
onClick
|
|
5206
5152
|
}) {
|
|
5207
5153
|
if (count <= 0) {
|
|
@@ -5226,7 +5172,7 @@ function WithdrawPending({
|
|
|
5226
5172
|
"span",
|
|
5227
5173
|
{
|
|
5228
5174
|
className: "taskon-withdraw-pending__count",
|
|
5229
|
-
"aria-label":
|
|
5175
|
+
"aria-label": countAriaLabel,
|
|
5230
5176
|
children: count
|
|
5231
5177
|
}
|
|
5232
5178
|
),
|
|
@@ -5266,12 +5212,17 @@ function formatBalance$2(balance) {
|
|
|
5266
5212
|
if (num >= 1e3) return `${(num / 1e3).toFixed(2)}K`;
|
|
5267
5213
|
return num.toLocaleString(void 0, { maximumFractionDigits: 5 });
|
|
5268
5214
|
}
|
|
5215
|
+
function normalizeImageSrc(src) {
|
|
5216
|
+
if (typeof src !== "string") return null;
|
|
5217
|
+
const trimmed = src.trim();
|
|
5218
|
+
return trimmed.length > 0 ? trimmed : null;
|
|
5219
|
+
}
|
|
5269
5220
|
function TokenAssetList({
|
|
5270
5221
|
data,
|
|
5271
5222
|
loading: loading2,
|
|
5272
5223
|
error: error2,
|
|
5273
5224
|
messages,
|
|
5274
|
-
pendingWithdrawals
|
|
5225
|
+
pendingWithdrawals,
|
|
5275
5226
|
onWithdraw,
|
|
5276
5227
|
onViewFrozen
|
|
5277
5228
|
}) {
|
|
@@ -5282,50 +5233,56 @@ function TokenAssetList({
|
|
|
5282
5233
|
return /* @__PURE__ */ jsx("div", { className: "taskon-user-center-error", children: /* @__PURE__ */ jsx("p", { className: "taskon-user-center-error__message", children: error2.message }) });
|
|
5283
5234
|
}
|
|
5284
5235
|
if (!loading2 && data.length === 0) {
|
|
5285
|
-
return /* @__PURE__ */ jsx(EmptyState, { message: messages.
|
|
5236
|
+
return /* @__PURE__ */ jsx(EmptyState, { message: messages.empty_token });
|
|
5286
5237
|
}
|
|
5287
5238
|
const columns = [
|
|
5288
5239
|
{
|
|
5289
5240
|
key: "token_symbol",
|
|
5290
|
-
title: messages.
|
|
5241
|
+
title: messages.column_token_symbol,
|
|
5291
5242
|
width: 120,
|
|
5292
|
-
render: (_, row) =>
|
|
5293
|
-
|
|
5294
|
-
|
|
5295
|
-
|
|
5296
|
-
|
|
5297
|
-
|
|
5298
|
-
|
|
5299
|
-
|
|
5300
|
-
|
|
5301
|
-
|
|
5302
|
-
|
|
5243
|
+
render: (_, row) => {
|
|
5244
|
+
const tokenIconSrc = normalizeImageSrc(row.token_icon);
|
|
5245
|
+
return /* @__PURE__ */ jsxs("div", { className: "taskon-token-assets__symbol-cell", children: [
|
|
5246
|
+
tokenIconSrc && /* @__PURE__ */ jsx(
|
|
5247
|
+
"img",
|
|
5248
|
+
{
|
|
5249
|
+
src: tokenIconSrc,
|
|
5250
|
+
alt: row.token_symbol,
|
|
5251
|
+
className: "taskon-token-assets__token-icon"
|
|
5252
|
+
}
|
|
5253
|
+
),
|
|
5254
|
+
/* @__PURE__ */ jsx("span", { className: "taskon-token-assets__symbol", children: row.token_symbol })
|
|
5255
|
+
] });
|
|
5256
|
+
}
|
|
5303
5257
|
},
|
|
5304
5258
|
{
|
|
5305
5259
|
key: "chain",
|
|
5306
|
-
title: messages.
|
|
5260
|
+
title: messages.column_network,
|
|
5307
5261
|
width: 164,
|
|
5308
|
-
render: (_, row) =>
|
|
5309
|
-
|
|
5310
|
-
|
|
5311
|
-
|
|
5312
|
-
|
|
5313
|
-
|
|
5314
|
-
|
|
5315
|
-
|
|
5316
|
-
|
|
5317
|
-
|
|
5318
|
-
|
|
5262
|
+
render: (_, row) => {
|
|
5263
|
+
const chainIconSrc = normalizeImageSrc(row.chain_icon);
|
|
5264
|
+
return /* @__PURE__ */ jsxs("div", { className: "taskon-token-assets__network-cell", children: [
|
|
5265
|
+
chainIconSrc && /* @__PURE__ */ jsx(
|
|
5266
|
+
"img",
|
|
5267
|
+
{
|
|
5268
|
+
src: chainIconSrc,
|
|
5269
|
+
alt: row.chain_label,
|
|
5270
|
+
className: "taskon-token-assets__chain-icon"
|
|
5271
|
+
}
|
|
5272
|
+
),
|
|
5273
|
+
/* @__PURE__ */ jsx("span", { className: "taskon-token-assets__chain", children: row.chain_label })
|
|
5274
|
+
] });
|
|
5275
|
+
}
|
|
5319
5276
|
},
|
|
5320
5277
|
{
|
|
5321
5278
|
key: "withdrawable_avail_balance",
|
|
5322
|
-
title: messages.
|
|
5279
|
+
title: messages.column_withdrawable,
|
|
5323
5280
|
width: 142,
|
|
5324
5281
|
render: (_, row) => /* @__PURE__ */ jsx("span", { className: "taskon-token-assets__balance", children: formatBalance$2(row.withdrawable_avail_balance) })
|
|
5325
5282
|
},
|
|
5326
5283
|
{
|
|
5327
5284
|
key: "frozen_balance",
|
|
5328
|
-
title: messages.
|
|
5285
|
+
title: messages.frozen_assets,
|
|
5329
5286
|
width: 142,
|
|
5330
5287
|
render: (_, row) => {
|
|
5331
5288
|
const frozenAmount = formatBalance$2(row.frozen_balance || "0");
|
|
@@ -5346,7 +5303,7 @@ function TokenAssetList({
|
|
|
5346
5303
|
},
|
|
5347
5304
|
{
|
|
5348
5305
|
key: "action",
|
|
5349
|
-
title: messages.
|
|
5306
|
+
title: messages.column_action,
|
|
5350
5307
|
align: "right",
|
|
5351
5308
|
render: (_, row) => {
|
|
5352
5309
|
const isDisabled = !row.can_withdraw;
|
|
@@ -5368,8 +5325,9 @@ function TokenAssetList({
|
|
|
5368
5325
|
/* @__PURE__ */ jsx(
|
|
5369
5326
|
WithdrawPending,
|
|
5370
5327
|
{
|
|
5371
|
-
count:
|
|
5372
|
-
text: messages.
|
|
5328
|
+
count: pendingWithdrawals ?? 0,
|
|
5329
|
+
text: messages.pending_withdrawals_text,
|
|
5330
|
+
countAriaLabel: messages.pending_withdrawals_count_label
|
|
5373
5331
|
}
|
|
5374
5332
|
),
|
|
5375
5333
|
/* @__PURE__ */ jsx(
|
|
@@ -5385,7 +5343,7 @@ function TokenAssetList({
|
|
|
5385
5343
|
loading: loading2 && data.length > 0,
|
|
5386
5344
|
loadingText: messages.loading,
|
|
5387
5345
|
empty: {
|
|
5388
|
-
title: messages.
|
|
5346
|
+
title: messages.empty_token
|
|
5389
5347
|
}
|
|
5390
5348
|
}
|
|
5391
5349
|
)
|
|
@@ -5393,7 +5351,7 @@ function TokenAssetList({
|
|
|
5393
5351
|
}
|
|
5394
5352
|
function formatTime(timestamp) {
|
|
5395
5353
|
const date = new Date(timestamp);
|
|
5396
|
-
return date.toLocaleDateString(
|
|
5354
|
+
return date.toLocaleDateString("en-US", {
|
|
5397
5355
|
year: "numeric",
|
|
5398
5356
|
month: "short",
|
|
5399
5357
|
day: "numeric",
|
|
@@ -5409,17 +5367,17 @@ function formatAmount$1(amount) {
|
|
|
5409
5367
|
function getLockedTypeLabel(type, messages) {
|
|
5410
5368
|
switch (type) {
|
|
5411
5369
|
case "Campaign":
|
|
5412
|
-
return messages.
|
|
5370
|
+
return messages.frozen_type_campaign;
|
|
5413
5371
|
case "Withdraw":
|
|
5414
|
-
return messages.
|
|
5372
|
+
return messages.frozen_type_withdraw;
|
|
5415
5373
|
case "ReferralReward":
|
|
5416
|
-
return messages.
|
|
5374
|
+
return messages.frozen_type_referral;
|
|
5417
5375
|
case "Benefit":
|
|
5418
|
-
return messages.
|
|
5376
|
+
return messages.frozen_type_benefit;
|
|
5419
5377
|
case "TgMiniApp":
|
|
5420
|
-
return messages.
|
|
5378
|
+
return messages.frozen_type_tg_mini_app;
|
|
5421
5379
|
case "CommunityMilestone":
|
|
5422
|
-
return messages.
|
|
5380
|
+
return messages.frozen_type_milestone;
|
|
5423
5381
|
default:
|
|
5424
5382
|
return type;
|
|
5425
5383
|
}
|
|
@@ -5441,18 +5399,18 @@ function FrozenAssetList({
|
|
|
5441
5399
|
return /* @__PURE__ */ jsx("div", { className: "taskon-user-center-error", children: /* @__PURE__ */ jsx("p", { className: "taskon-user-center-error__message", children: error2.message }) });
|
|
5442
5400
|
}
|
|
5443
5401
|
if (!loading2 && data.length === 0) {
|
|
5444
|
-
return /* @__PURE__ */ jsx(EmptyState, { message: messages.
|
|
5402
|
+
return /* @__PURE__ */ jsx(EmptyState, { message: messages.no_data });
|
|
5445
5403
|
}
|
|
5446
5404
|
const columns = [
|
|
5447
5405
|
{
|
|
5448
5406
|
key: "locked_amount",
|
|
5449
|
-
title: messages.
|
|
5407
|
+
title: messages.column_amount,
|
|
5450
5408
|
width: 120,
|
|
5451
5409
|
render: (_, row) => /* @__PURE__ */ jsx("span", { className: "taskon-frozen-assets__amount", children: formatAmount$1(row.locked_amount) })
|
|
5452
5410
|
},
|
|
5453
5411
|
{
|
|
5454
5412
|
key: "type",
|
|
5455
|
-
title: messages.
|
|
5413
|
+
title: messages.column_detail,
|
|
5456
5414
|
render: (_, row) => /* @__PURE__ */ jsxs("div", { className: "taskon-frozen-assets__detail-cell", children: [
|
|
5457
5415
|
/* @__PURE__ */ jsx("span", { className: "taskon-frozen-assets__type", children: getLockedTypeLabel(row.type, messages) }),
|
|
5458
5416
|
row.campaign_name && /* @__PURE__ */ jsx("span", { className: "taskon-frozen-assets__campaign", children: row.campaign_name })
|
|
@@ -5460,13 +5418,13 @@ function FrozenAssetList({
|
|
|
5460
5418
|
},
|
|
5461
5419
|
{
|
|
5462
5420
|
key: "lock_time",
|
|
5463
|
-
title: messages.
|
|
5421
|
+
title: messages.column_time,
|
|
5464
5422
|
width: 160,
|
|
5465
5423
|
render: (_, row) => /* @__PURE__ */ jsx("span", { className: "taskon-frozen-assets__time", children: formatTime(row.lock_time) })
|
|
5466
5424
|
},
|
|
5467
5425
|
{
|
|
5468
5426
|
key: "action",
|
|
5469
|
-
title: messages.
|
|
5427
|
+
title: messages.column_action,
|
|
5470
5428
|
width: 100,
|
|
5471
5429
|
align: "right",
|
|
5472
5430
|
render: (_, row) => {
|
|
@@ -5486,14 +5444,14 @@ function FrozenAssetList({
|
|
|
5486
5444
|
];
|
|
5487
5445
|
return /* @__PURE__ */ jsxs("div", { className: "taskon-frozen-assets", children: [
|
|
5488
5446
|
/* @__PURE__ */ jsxs("div", { className: "taskon-frozen-assets__header", children: [
|
|
5489
|
-
/* @__PURE__ */ jsx("h3", { className: "taskon-frozen-assets__title", children: messages.
|
|
5447
|
+
/* @__PURE__ */ jsx("h3", { className: "taskon-frozen-assets__title", children: messages.frozen_assets }),
|
|
5490
5448
|
onClose && /* @__PURE__ */ jsx(
|
|
5491
5449
|
"button",
|
|
5492
5450
|
{
|
|
5493
5451
|
type: "button",
|
|
5494
5452
|
className: "taskon-frozen-assets__close",
|
|
5495
5453
|
onClick: onClose,
|
|
5496
|
-
"aria-label":
|
|
5454
|
+
"aria-label": messages.close,
|
|
5497
5455
|
children: /* @__PURE__ */ jsx("svg", { viewBox: "0 0 24 24", fill: "currentColor", width: "20", height: "20", children: /* @__PURE__ */ jsx("path", { d: "M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z" }) })
|
|
5498
5456
|
}
|
|
5499
5457
|
)
|
|
@@ -5510,7 +5468,7 @@ function FrozenAssetList({
|
|
|
5510
5468
|
loading: loading2 && data.length > 0,
|
|
5511
5469
|
loadingText: messages.loading,
|
|
5512
5470
|
empty: {
|
|
5513
|
-
title: messages.
|
|
5471
|
+
title: messages.no_data
|
|
5514
5472
|
}
|
|
5515
5473
|
}
|
|
5516
5474
|
),
|
|
@@ -5522,8 +5480,7 @@ function FrozenAssetList({
|
|
|
5522
5480
|
onPrevious: pagination.goToPrevious,
|
|
5523
5481
|
onNext: pagination.goToNext,
|
|
5524
5482
|
hasPrevious: pagination.hasPrevious,
|
|
5525
|
-
hasNext: pagination.hasNext
|
|
5526
|
-
messages
|
|
5483
|
+
hasNext: pagination.hasNext
|
|
5527
5484
|
}
|
|
5528
5485
|
)
|
|
5529
5486
|
] });
|
|
@@ -5664,9 +5621,9 @@ function PointsList({
|
|
|
5664
5621
|
loading: loading2,
|
|
5665
5622
|
error: error2,
|
|
5666
5623
|
pagination,
|
|
5667
|
-
messages,
|
|
5668
5624
|
className = ""
|
|
5669
5625
|
}) {
|
|
5626
|
+
const { messages } = useUserCenterLocale();
|
|
5670
5627
|
if (loading2 && data.length === 0) {
|
|
5671
5628
|
return /* @__PURE__ */ jsx(LoadingState, { message: messages.loading });
|
|
5672
5629
|
}
|
|
@@ -5674,23 +5631,23 @@ function PointsList({
|
|
|
5674
5631
|
return /* @__PURE__ */ jsx("div", { className: "taskon-user-center-error", children: /* @__PURE__ */ jsx("p", { className: "taskon-user-center-error__message", children: error2.message }) });
|
|
5675
5632
|
}
|
|
5676
5633
|
if (!loading2 && data.length === 0) {
|
|
5677
|
-
return /* @__PURE__ */ jsx(EmptyState, { message: messages.
|
|
5634
|
+
return /* @__PURE__ */ jsx(EmptyState, { message: messages.empty_points });
|
|
5678
5635
|
}
|
|
5679
5636
|
const columns = [
|
|
5680
5637
|
{
|
|
5681
5638
|
key: "detail",
|
|
5682
|
-
title: messages.
|
|
5639
|
+
title: messages.column_detail,
|
|
5683
5640
|
render: (_, row) => /* @__PURE__ */ jsx("span", { className: "taskon-points-list__name", children: row.name })
|
|
5684
5641
|
},
|
|
5685
5642
|
{
|
|
5686
5643
|
key: "time",
|
|
5687
|
-
title: messages.
|
|
5644
|
+
title: messages.column_time,
|
|
5688
5645
|
width: 160,
|
|
5689
5646
|
render: (_, row) => /* @__PURE__ */ jsx("span", { className: "taskon-points-list__time", children: formatDateTime(row.receive_time) })
|
|
5690
5647
|
},
|
|
5691
5648
|
{
|
|
5692
5649
|
key: "amount",
|
|
5693
|
-
title: `${messages.
|
|
5650
|
+
title: `${messages.column_amount} (${pointsInfo.points_name || messages.reward_points})`,
|
|
5694
5651
|
width: 160,
|
|
5695
5652
|
align: "right",
|
|
5696
5653
|
render: (_, row) => {
|
|
@@ -5731,7 +5688,7 @@ function PointsList({
|
|
|
5731
5688
|
/* @__PURE__ */ jsx("h3", { className: "taskon-points-list__title", children: pointsInfo.points_name }),
|
|
5732
5689
|
/* @__PURE__ */ jsxs("div", { className: "taskon-points-list__total", children: [
|
|
5733
5690
|
/* @__PURE__ */ jsx("span", { className: "taskon-points-list__total-value", children: formatNumber(pointsInfo.amount) }),
|
|
5734
|
-
/* @__PURE__ */ jsx("span", { className: "taskon-points-list__total-label", children: messages.
|
|
5691
|
+
/* @__PURE__ */ jsx("span", { className: "taskon-points-list__total-label", children: messages.total_points })
|
|
5735
5692
|
] })
|
|
5736
5693
|
] }),
|
|
5737
5694
|
/* @__PURE__ */ jsx("div", { className: "taskon-points-list__table-wrap", children: /* @__PURE__ */ jsx(
|
|
@@ -5745,7 +5702,7 @@ function PointsList({
|
|
|
5745
5702
|
loading: loading2 && data.length > 0,
|
|
5746
5703
|
loadingText: messages.loading,
|
|
5747
5704
|
empty: {
|
|
5748
|
-
title: messages.
|
|
5705
|
+
title: messages.empty_points
|
|
5749
5706
|
}
|
|
5750
5707
|
}
|
|
5751
5708
|
) }),
|
|
@@ -5757,8 +5714,7 @@ function PointsList({
|
|
|
5757
5714
|
onPrevious: pagination.goToPrevious,
|
|
5758
5715
|
onNext: pagination.goToNext,
|
|
5759
5716
|
hasPrevious: pagination.hasPrevious,
|
|
5760
|
-
hasNext: pagination.hasNext
|
|
5761
|
-
messages
|
|
5717
|
+
hasNext: pagination.hasNext
|
|
5762
5718
|
}
|
|
5763
5719
|
)
|
|
5764
5720
|
] });
|
|
@@ -5817,7 +5773,7 @@ function NftTable({
|
|
|
5817
5773
|
return /* @__PURE__ */ jsx("div", { className: "taskon-user-center-error", children: /* @__PURE__ */ jsx("p", { className: "taskon-user-center-error__message", children: error2.message }) });
|
|
5818
5774
|
}
|
|
5819
5775
|
if (!loading2 && data.length === 0) {
|
|
5820
|
-
return /* @__PURE__ */ jsx(EmptyState, { message: messages.
|
|
5776
|
+
return /* @__PURE__ */ jsx(EmptyState, { message: messages.empty_nft });
|
|
5821
5777
|
}
|
|
5822
5778
|
const renderStatus = (item) => {
|
|
5823
5779
|
const nftValue = item.reward_value;
|
|
@@ -5832,7 +5788,7 @@ function NftTable({
|
|
|
5832
5788
|
onTxClick == null ? void 0 : onTxClick(item);
|
|
5833
5789
|
},
|
|
5834
5790
|
title: nftValue.tx_hash,
|
|
5835
|
-
children: messages.
|
|
5791
|
+
children: messages.claimed_txn
|
|
5836
5792
|
}
|
|
5837
5793
|
);
|
|
5838
5794
|
}
|
|
@@ -5850,12 +5806,12 @@ function NftTable({
|
|
|
5850
5806
|
}
|
|
5851
5807
|
);
|
|
5852
5808
|
}
|
|
5853
|
-
return /* @__PURE__ */ jsx("span", { className: "taskon-reward-table__manual-drop", children: messages.
|
|
5809
|
+
return /* @__PURE__ */ jsx("span", { className: "taskon-reward-table__manual-drop", children: messages.manual_drop });
|
|
5854
5810
|
};
|
|
5855
5811
|
const columns = [
|
|
5856
5812
|
{
|
|
5857
5813
|
key: "nft",
|
|
5858
|
-
title: messages.
|
|
5814
|
+
title: messages.column_nft,
|
|
5859
5815
|
width: 100,
|
|
5860
5816
|
render: (_, row) => {
|
|
5861
5817
|
const nftValue = row.reward_value;
|
|
@@ -5872,18 +5828,18 @@ function NftTable({
|
|
|
5872
5828
|
},
|
|
5873
5829
|
{
|
|
5874
5830
|
key: "detail",
|
|
5875
|
-
title: messages.
|
|
5831
|
+
title: messages.column_detail,
|
|
5876
5832
|
render: (_, row) => /* @__PURE__ */ jsx("span", { className: "taskon-reward-table__campaign-name", children: row.campaign_name })
|
|
5877
5833
|
},
|
|
5878
5834
|
{
|
|
5879
5835
|
key: "time",
|
|
5880
|
-
title: messages.
|
|
5836
|
+
title: messages.column_time,
|
|
5881
5837
|
width: 160,
|
|
5882
5838
|
render: (_, row) => /* @__PURE__ */ jsx("span", { className: "taskon-reward-table__time", children: formatDateTime(row.reward_time) })
|
|
5883
5839
|
},
|
|
5884
5840
|
{
|
|
5885
5841
|
key: "status",
|
|
5886
|
-
title: messages.
|
|
5842
|
+
title: messages.column_status,
|
|
5887
5843
|
width: 120,
|
|
5888
5844
|
align: "right",
|
|
5889
5845
|
render: (_, row) => renderStatus(row)
|
|
@@ -5901,7 +5857,7 @@ function NftTable({
|
|
|
5901
5857
|
loading: loading2 && data.length > 0,
|
|
5902
5858
|
loadingText: messages.loading,
|
|
5903
5859
|
empty: {
|
|
5904
|
-
title: messages.
|
|
5860
|
+
title: messages.empty_nft
|
|
5905
5861
|
}
|
|
5906
5862
|
}
|
|
5907
5863
|
),
|
|
@@ -5913,18 +5869,17 @@ function NftTable({
|
|
|
5913
5869
|
onPrevious: pagination.goToPrevious,
|
|
5914
5870
|
onNext: pagination.goToNext,
|
|
5915
5871
|
hasPrevious: pagination.hasPrevious,
|
|
5916
|
-
hasNext: pagination.hasNext
|
|
5917
|
-
messages
|
|
5872
|
+
hasNext: pagination.hasNext
|
|
5918
5873
|
}
|
|
5919
5874
|
)
|
|
5920
5875
|
] });
|
|
5921
5876
|
}
|
|
5922
|
-
function getDetailName(item,
|
|
5877
|
+
function getDetailName(item, messages) {
|
|
5923
5878
|
if (item.roulette_reward_type === RouletteRewardType.Spin) {
|
|
5924
|
-
return
|
|
5879
|
+
return messages.token_history_telegram_spin;
|
|
5925
5880
|
}
|
|
5926
5881
|
if (item.roulette_reward_type === RouletteRewardType.Bonus) {
|
|
5927
|
-
return
|
|
5882
|
+
return messages.token_history_telegram_spin_bonus;
|
|
5928
5883
|
}
|
|
5929
5884
|
return item.task_name || item.campaign_name || item.milestone_name || "";
|
|
5930
5885
|
}
|
|
@@ -5942,7 +5897,7 @@ function TokenHistoryTable({
|
|
|
5942
5897
|
return /* @__PURE__ */ jsx("div", { className: "taskon-user-center-error", children: /* @__PURE__ */ jsx("p", { className: "taskon-user-center-error__message", children: error2.message }) });
|
|
5943
5898
|
}
|
|
5944
5899
|
if (!loading2 && data.length === 0) {
|
|
5945
|
-
return /* @__PURE__ */ jsx(EmptyState, { message: messages.
|
|
5900
|
+
return /* @__PURE__ */ jsx(EmptyState, { message: messages.empty_token });
|
|
5946
5901
|
}
|
|
5947
5902
|
const renderAmount = (item) => {
|
|
5948
5903
|
var _a;
|
|
@@ -5968,7 +5923,7 @@ function TokenHistoryTable({
|
|
|
5968
5923
|
)
|
|
5969
5924
|
] }),
|
|
5970
5925
|
/* @__PURE__ */ jsx("div", { className: "taskon-token-history__distribute", children: isDeposited ? /* @__PURE__ */ jsx("span", { className: "taskon-token-history__deposited", children: messages.deposited }) : /* @__PURE__ */ jsxs("div", { className: "taskon-token-history__distributed-by", children: [
|
|
5971
|
-
/* @__PURE__ */ jsx("span", { className: "taskon-token-history__distributed-label", children: messages.
|
|
5926
|
+
/* @__PURE__ */ jsx("span", { className: "taskon-token-history__distributed-label", children: messages.distributed_by }),
|
|
5972
5927
|
(communityInfo == null ? void 0 : communityInfo.community_avatar) && /* @__PURE__ */ jsx(
|
|
5973
5928
|
"img",
|
|
5974
5929
|
{
|
|
@@ -5984,18 +5939,18 @@ function TokenHistoryTable({
|
|
|
5984
5939
|
const columns = [
|
|
5985
5940
|
{
|
|
5986
5941
|
key: "detail",
|
|
5987
|
-
title: messages.
|
|
5988
|
-
render: (_, row) => /* @__PURE__ */ jsx("span", { className: "taskon-reward-table__campaign-name", children: getDetailName(row) })
|
|
5942
|
+
title: messages.column_detail,
|
|
5943
|
+
render: (_, row) => /* @__PURE__ */ jsx("span", { className: "taskon-reward-table__campaign-name", children: getDetailName(row, messages) })
|
|
5989
5944
|
},
|
|
5990
5945
|
{
|
|
5991
5946
|
key: "time",
|
|
5992
|
-
title: messages.
|
|
5947
|
+
title: messages.column_time,
|
|
5993
5948
|
width: 160,
|
|
5994
5949
|
render: (_, row) => /* @__PURE__ */ jsx("span", { className: "taskon-reward-table__time", children: formatDateTime(row.reward_time) })
|
|
5995
5950
|
},
|
|
5996
5951
|
{
|
|
5997
5952
|
key: "amount",
|
|
5998
|
-
title: messages.
|
|
5953
|
+
title: messages.column_amount,
|
|
5999
5954
|
width: 200,
|
|
6000
5955
|
align: "right",
|
|
6001
5956
|
render: (_, row) => renderAmount(row)
|
|
@@ -6013,7 +5968,7 @@ function TokenHistoryTable({
|
|
|
6013
5968
|
loading: loading2 && data.length > 0,
|
|
6014
5969
|
loadingText: messages.loading,
|
|
6015
5970
|
empty: {
|
|
6016
|
-
title: messages.
|
|
5971
|
+
title: messages.empty_token
|
|
6017
5972
|
}
|
|
6018
5973
|
}
|
|
6019
5974
|
),
|
|
@@ -6025,8 +5980,7 @@ function TokenHistoryTable({
|
|
|
6025
5980
|
onPrevious: pagination.goToPrevious,
|
|
6026
5981
|
onNext: pagination.goToNext,
|
|
6027
5982
|
hasPrevious: pagination.hasPrevious,
|
|
6028
|
-
hasNext: pagination.hasNext
|
|
6029
|
-
messages
|
|
5983
|
+
hasNext: pagination.hasNext
|
|
6030
5984
|
}
|
|
6031
5985
|
)
|
|
6032
5986
|
] });
|
|
@@ -6050,7 +6004,7 @@ function useRewardDetails(options) {
|
|
|
6050
6004
|
const pagination = usePagination({
|
|
6051
6005
|
total,
|
|
6052
6006
|
pageSize,
|
|
6053
|
-
initialPage:
|
|
6007
|
+
initialPage: 0,
|
|
6054
6008
|
mode
|
|
6055
6009
|
});
|
|
6056
6010
|
const fetchData = useCallback(
|
|
@@ -6065,7 +6019,7 @@ function useRewardDetails(options) {
|
|
|
6065
6019
|
const response = await api.listMyCommunityRewardDetails({
|
|
6066
6020
|
reward_type: rewardType,
|
|
6067
6021
|
page: {
|
|
6068
|
-
page_no: pageNo
|
|
6022
|
+
page_no: pageNo,
|
|
6069
6023
|
// API 使用 0-based 索引
|
|
6070
6024
|
size: pageSize
|
|
6071
6025
|
}
|
|
@@ -6087,20 +6041,23 @@ function useRewardDetails(options) {
|
|
|
6087
6041
|
[api, rewardType, pageSize]
|
|
6088
6042
|
);
|
|
6089
6043
|
const refresh = useCallback(async () => {
|
|
6090
|
-
pagination.goToPage(1);
|
|
6091
6044
|
setData([]);
|
|
6092
|
-
|
|
6045
|
+
if (pagination.page === 0) {
|
|
6046
|
+
await fetchData(0, false);
|
|
6047
|
+
return;
|
|
6048
|
+
}
|
|
6049
|
+
pagination.goToPage(0);
|
|
6093
6050
|
}, [fetchData, pagination]);
|
|
6094
6051
|
useEffect(() => {
|
|
6095
|
-
if (autoLoad) {
|
|
6096
|
-
|
|
6052
|
+
if (!autoLoad) {
|
|
6053
|
+
return;
|
|
6097
6054
|
}
|
|
6098
|
-
|
|
6099
|
-
useEffect(() => {
|
|
6100
|
-
if (mode === "pagination" && pagination.page > 1) {
|
|
6055
|
+
if (mode === "pagination") {
|
|
6101
6056
|
fetchData(pagination.page, false);
|
|
6057
|
+
return;
|
|
6102
6058
|
}
|
|
6103
|
-
|
|
6059
|
+
fetchData(pagination.page, pagination.page > 0);
|
|
6060
|
+
}, [autoLoad, mode, pagination.page, fetchData]);
|
|
6104
6061
|
return {
|
|
6105
6062
|
data,
|
|
6106
6063
|
loading: loading2,
|
|
@@ -6121,7 +6078,7 @@ function useTokenAssets(options = {}) {
|
|
|
6121
6078
|
const { client } = useTaskOnContext();
|
|
6122
6079
|
const [data, setData] = useState([]);
|
|
6123
6080
|
const [total, setTotal] = useState(0);
|
|
6124
|
-
const [
|
|
6081
|
+
const [pendingWithdrawals, setPendingWithdrawals] = useState(0);
|
|
6125
6082
|
const [loading2, setLoading] = useState(false);
|
|
6126
6083
|
const [error2, setError] = useState(null);
|
|
6127
6084
|
const api = useMemo(() => {
|
|
@@ -6196,7 +6153,7 @@ function useTokenAssets(options = {}) {
|
|
|
6196
6153
|
loading: loading2,
|
|
6197
6154
|
error: error2,
|
|
6198
6155
|
total,
|
|
6199
|
-
pendingWithdrawals
|
|
6156
|
+
pendingWithdrawals,
|
|
6200
6157
|
pagination,
|
|
6201
6158
|
refresh
|
|
6202
6159
|
};
|
|
@@ -6527,7 +6484,7 @@ function useTokenWithdraw(options = {}) {
|
|
|
6527
6484
|
evmAdapter,
|
|
6528
6485
|
onError
|
|
6529
6486
|
]);
|
|
6530
|
-
const
|
|
6487
|
+
const confirmWithdraw = useCallback(async () => {
|
|
6531
6488
|
if (!api) {
|
|
6532
6489
|
setError(new Error("TaskOn client not initialized"));
|
|
6533
6490
|
return;
|
|
@@ -6662,7 +6619,7 @@ function useTokenWithdraw(options = {}) {
|
|
|
6662
6619
|
initBatchWithdraw,
|
|
6663
6620
|
initWithdrawTokens,
|
|
6664
6621
|
checkAndConnect,
|
|
6665
|
-
confirmWithdraw
|
|
6622
|
+
confirmWithdraw,
|
|
6666
6623
|
cancelWithdraw,
|
|
6667
6624
|
reset
|
|
6668
6625
|
};
|
|
@@ -6742,7 +6699,13 @@ function usePointsHistory(options) {
|
|
|
6742
6699
|
};
|
|
6743
6700
|
}
|
|
6744
6701
|
function useWithdrawForm(options) {
|
|
6745
|
-
const {
|
|
6702
|
+
const {
|
|
6703
|
+
tokenAssets,
|
|
6704
|
+
initialTokenId,
|
|
6705
|
+
initialChain,
|
|
6706
|
+
getDecimals,
|
|
6707
|
+
messages
|
|
6708
|
+
} = options;
|
|
6746
6709
|
const resolveDecimals = useCallback(
|
|
6747
6710
|
(tokenAddress) => {
|
|
6748
6711
|
if (getDecimals) {
|
|
@@ -6768,23 +6731,23 @@ function useWithdrawForm(options) {
|
|
|
6768
6731
|
const validation = useMemo(() => {
|
|
6769
6732
|
const errors = {};
|
|
6770
6733
|
if (!selectedToken) {
|
|
6771
|
-
errors.token =
|
|
6734
|
+
errors.token = messages.please_select_token;
|
|
6772
6735
|
}
|
|
6773
6736
|
if (!withdrawAmount || withdrawAmount === "") {
|
|
6774
|
-
errors.amount =
|
|
6737
|
+
errors.amount = messages.please_enter_amount;
|
|
6775
6738
|
} else {
|
|
6776
6739
|
const amount = parseFloat(withdrawAmount);
|
|
6777
6740
|
if (isNaN(amount) || amount <= 0) {
|
|
6778
|
-
errors.amount =
|
|
6741
|
+
errors.amount = messages.please_enter_valid_amount;
|
|
6779
6742
|
} else if (selectedToken && amount > parseFloat(selectedToken.withdrawable_avail_balance)) {
|
|
6780
|
-
errors.amount =
|
|
6743
|
+
errors.amount = messages.amount_exceeds_balance;
|
|
6781
6744
|
}
|
|
6782
6745
|
}
|
|
6783
6746
|
return {
|
|
6784
6747
|
isValid: Object.keys(errors).length === 0,
|
|
6785
6748
|
errors
|
|
6786
6749
|
};
|
|
6787
|
-
}, [selectedToken, withdrawAmount]);
|
|
6750
|
+
}, [selectedToken, withdrawAmount, messages]);
|
|
6788
6751
|
useEffect(() => {
|
|
6789
6752
|
if (tokenAssets.length === 0) return;
|
|
6790
6753
|
if (initialTokenId) {
|
|
@@ -6960,17 +6923,16 @@ function TokenRewardContent({
|
|
|
6960
6923
|
tokenAssets,
|
|
6961
6924
|
tokenAssetsLoading,
|
|
6962
6925
|
tokenAssetsError,
|
|
6963
|
-
pendingWithdrawals
|
|
6964
|
-
tokenHistory
|
|
6926
|
+
pendingWithdrawals,
|
|
6927
|
+
tokenHistory,
|
|
6965
6928
|
tokenHistoryLoading,
|
|
6966
6929
|
tokenHistoryError,
|
|
6967
6930
|
tokenHistoryPagination,
|
|
6968
|
-
messages,
|
|
6969
6931
|
onWithdraw,
|
|
6970
6932
|
onBatchWithdraw,
|
|
6971
6933
|
showFrozenAssets = false,
|
|
6972
6934
|
onViewFrozen,
|
|
6973
|
-
frozenAssets
|
|
6935
|
+
frozenAssets = [],
|
|
6974
6936
|
frozenAssetsLoading = false,
|
|
6975
6937
|
frozenAssetsError = null,
|
|
6976
6938
|
frozenAssetsPagination,
|
|
@@ -6978,6 +6940,7 @@ function TokenRewardContent({
|
|
|
6978
6940
|
onResendFrozenAsset,
|
|
6979
6941
|
onCloseFrozenAssets
|
|
6980
6942
|
}) {
|
|
6943
|
+
const { messages } = useUserCenterLocale();
|
|
6981
6944
|
return /* @__PURE__ */ jsxs("div", { className: "taskon-my-rewards", children: [
|
|
6982
6945
|
/* @__PURE__ */ jsx("div", { className: "taskon-my-rewards__section", children: /* @__PURE__ */ jsx(
|
|
6983
6946
|
TokenAssetList,
|
|
@@ -6986,7 +6949,7 @@ function TokenRewardContent({
|
|
|
6986
6949
|
loading: tokenAssetsLoading,
|
|
6987
6950
|
error: tokenAssetsError,
|
|
6988
6951
|
messages,
|
|
6989
|
-
pendingWithdrawals
|
|
6952
|
+
pendingWithdrawals,
|
|
6990
6953
|
onWithdraw,
|
|
6991
6954
|
onBatchWithdraw,
|
|
6992
6955
|
onViewFrozen
|
|
@@ -6995,7 +6958,7 @@ function TokenRewardContent({
|
|
|
6995
6958
|
showFrozenAssets && frozenAssetsPagination && /* @__PURE__ */ jsx("div", { className: "taskon-my-rewards__section", children: /* @__PURE__ */ jsx(
|
|
6996
6959
|
FrozenAssetList,
|
|
6997
6960
|
{
|
|
6998
|
-
data:
|
|
6961
|
+
data: frozenAssets,
|
|
6999
6962
|
loading: frozenAssetsLoading,
|
|
7000
6963
|
error: frozenAssetsError,
|
|
7001
6964
|
pagination: frozenAssetsPagination,
|
|
@@ -7006,11 +6969,11 @@ function TokenRewardContent({
|
|
|
7006
6969
|
}
|
|
7007
6970
|
) }),
|
|
7008
6971
|
/* @__PURE__ */ jsxs("div", { className: "taskon-my-rewards__section", children: [
|
|
7009
|
-
/* @__PURE__ */ jsx("h3", { className: "taskon-my-rewards__section-title", children: messages.
|
|
6972
|
+
/* @__PURE__ */ jsx("h3", { className: "taskon-my-rewards__section-title", children: messages.token_history }),
|
|
7010
6973
|
/* @__PURE__ */ jsx(
|
|
7011
6974
|
TokenHistoryTable,
|
|
7012
6975
|
{
|
|
7013
|
-
data:
|
|
6976
|
+
data: tokenHistory,
|
|
7014
6977
|
loading: tokenHistoryLoading,
|
|
7015
6978
|
error: tokenHistoryError,
|
|
7016
6979
|
pagination: tokenHistoryPagination,
|
|
@@ -7025,12 +6988,12 @@ function NftRewardContent({
|
|
|
7025
6988
|
loading: loading2,
|
|
7026
6989
|
error: error2,
|
|
7027
6990
|
pagination,
|
|
7028
|
-
messages,
|
|
7029
6991
|
onClaim: customOnClaim,
|
|
7030
6992
|
onTxClick: customOnTxClick,
|
|
7031
6993
|
onClaimSuccess,
|
|
7032
6994
|
onClaimError
|
|
7033
6995
|
}) {
|
|
6996
|
+
const { messages } = useUserCenterLocale();
|
|
7034
6997
|
const { chainMap } = useChainMap();
|
|
7035
6998
|
const [isClaimDialogOpen, setIsClaimDialogOpen] = useState(false);
|
|
7036
6999
|
const [isWalletDialogOpen, setIsWalletDialogOpen] = useState(false);
|
|
@@ -7038,11 +7001,11 @@ function NftRewardContent({
|
|
|
7038
7001
|
const [pendingTxDialogState, setPendingTxDialogState] = useState(null);
|
|
7039
7002
|
const [pendingWalletClaimItem, setPendingWalletClaimItem] = useState(null);
|
|
7040
7003
|
const pendingDecisionResolverRef = useRef(null);
|
|
7041
|
-
const resolvePendingDecision = useCallback((
|
|
7004
|
+
const resolvePendingDecision = useCallback((claimAgain) => {
|
|
7042
7005
|
const resolver = pendingDecisionResolverRef.current;
|
|
7043
7006
|
if (resolver) {
|
|
7044
7007
|
pendingDecisionResolverRef.current = null;
|
|
7045
|
-
resolver(
|
|
7008
|
+
resolver(claimAgain);
|
|
7046
7009
|
}
|
|
7047
7010
|
}, []);
|
|
7048
7011
|
useEffect(() => {
|
|
@@ -7054,8 +7017,8 @@ function NftRewardContent({
|
|
|
7054
7017
|
status: claimStatus,
|
|
7055
7018
|
error: claimError,
|
|
7056
7019
|
txHash: claimTxHash,
|
|
7057
|
-
claimingNft
|
|
7058
|
-
claimNft
|
|
7020
|
+
claimingNft,
|
|
7021
|
+
claimNft,
|
|
7059
7022
|
reset: resetClaim
|
|
7060
7023
|
} = useNftClaim({
|
|
7061
7024
|
onSuccess: (txHash, item) => {
|
|
@@ -7066,14 +7029,14 @@ function NftRewardContent({
|
|
|
7066
7029
|
},
|
|
7067
7030
|
onPendingFound: async (pendingKey, txHash, chainName, item) => {
|
|
7068
7031
|
const rewardValue = item.reward_value;
|
|
7069
|
-
const
|
|
7032
|
+
const receiveAddress = typeof rewardValue.receiver_address === "string" ? rewardValue.receiver_address : void 0;
|
|
7070
7033
|
resolvePendingDecision(false);
|
|
7071
7034
|
setIsClaimDialogOpen(false);
|
|
7072
7035
|
setPendingTxDialogState({
|
|
7073
7036
|
pendingKey,
|
|
7074
7037
|
txHash,
|
|
7075
7038
|
chainName,
|
|
7076
|
-
receiveAddress
|
|
7039
|
+
receiveAddress
|
|
7077
7040
|
});
|
|
7078
7041
|
setIsPendingDialogOpen(true);
|
|
7079
7042
|
return new Promise((resolve) => {
|
|
@@ -7086,18 +7049,49 @@ function NftRewardContent({
|
|
|
7086
7049
|
}
|
|
7087
7050
|
});
|
|
7088
7051
|
const explorerUrl = useMemo(() => {
|
|
7089
|
-
if (!claimTxHash || !
|
|
7090
|
-
const chainName =
|
|
7052
|
+
if (!claimTxHash || !claimingNft) return void 0;
|
|
7053
|
+
const chainName = claimingNft.chainName;
|
|
7091
7054
|
const chainInfo = chainMap[chainName.toLowerCase()];
|
|
7092
7055
|
if (!chainInfo) return void 0;
|
|
7093
7056
|
return getTxExplorerUrl(chainInfo, claimTxHash);
|
|
7094
|
-
}, [claimTxHash,
|
|
7057
|
+
}, [claimTxHash, claimingNft, chainMap]);
|
|
7095
7058
|
const pendingExplorerUrl = useMemo(() => {
|
|
7096
7059
|
if (!(pendingTxDialogState == null ? void 0 : pendingTxDialogState.txHash)) return void 0;
|
|
7097
7060
|
const chainInfo = chainMap[pendingTxDialogState.chainName.toLowerCase()];
|
|
7098
7061
|
if (!chainInfo) return void 0;
|
|
7099
7062
|
return getTxExplorerUrl(chainInfo, pendingTxDialogState.txHash);
|
|
7100
7063
|
}, [pendingTxDialogState, chainMap]);
|
|
7064
|
+
const claimDialogMessages = useMemo(
|
|
7065
|
+
() => ({
|
|
7066
|
+
claimNft: messages.claim_nft,
|
|
7067
|
+
claimingNft: messages.claiming_nft,
|
|
7068
|
+
claimConnectingWallet: messages.claim_connecting_wallet,
|
|
7069
|
+
claimSwitchingNetwork: messages.claim_switching_network,
|
|
7070
|
+
claimGettingSignature: messages.claim_getting_signature,
|
|
7071
|
+
claimConfirmInWallet: messages.claim_confirm_in_wallet,
|
|
7072
|
+
claimTransactionPending: messages.claim_transaction_pending,
|
|
7073
|
+
claimSuccess: messages.claim_success,
|
|
7074
|
+
claimFailed: messages.claim_failed,
|
|
7075
|
+
claimCanceled: messages.claim_canceled,
|
|
7076
|
+
viewOnExplorer: messages.view_on_explorer,
|
|
7077
|
+
retry: messages.retry,
|
|
7078
|
+
close: messages.close
|
|
7079
|
+
}),
|
|
7080
|
+
[messages]
|
|
7081
|
+
);
|
|
7082
|
+
const pendingDialogMessages = useMemo(
|
|
7083
|
+
() => ({
|
|
7084
|
+
pendingTransaction: messages.pending_transaction,
|
|
7085
|
+
claimPendingTitle: messages.claim_pending_title,
|
|
7086
|
+
claimPendingCheckExplorer: messages.claim_pending_check_explorer,
|
|
7087
|
+
claimPendingHashLabel: messages.claim_pending_hash_label,
|
|
7088
|
+
claimPendingClaimAgainWarn: messages.claim_pending_claim_again_warn,
|
|
7089
|
+
claimPendingReceiveAddressNoChange: messages.claim_pending_receive_address_no_change,
|
|
7090
|
+
claimAgain: messages.claim_again,
|
|
7091
|
+
continueWaiting: messages.continue_waiting
|
|
7092
|
+
}),
|
|
7093
|
+
[messages]
|
|
7094
|
+
);
|
|
7101
7095
|
const handleNftClaim = useCallback(
|
|
7102
7096
|
(item) => {
|
|
7103
7097
|
if (customOnClaim) {
|
|
@@ -7106,9 +7100,9 @@ function NftRewardContent({
|
|
|
7106
7100
|
}
|
|
7107
7101
|
setPendingWalletClaimItem(item);
|
|
7108
7102
|
setIsClaimDialogOpen(true);
|
|
7109
|
-
void
|
|
7103
|
+
void claimNft(item);
|
|
7110
7104
|
},
|
|
7111
|
-
[customOnClaim,
|
|
7105
|
+
[customOnClaim, claimNft]
|
|
7112
7106
|
);
|
|
7113
7107
|
const handleNftTxClick = useCallback(
|
|
7114
7108
|
(item) => {
|
|
@@ -7138,7 +7132,7 @@ function NftRewardContent({
|
|
|
7138
7132
|
);
|
|
7139
7133
|
const handleWalletConnect = useCallback(
|
|
7140
7134
|
async (address, provider) => {
|
|
7141
|
-
const targetItem = pendingWalletClaimItem ?? (
|
|
7135
|
+
const targetItem = pendingWalletClaimItem ?? (claimingNft == null ? void 0 : claimingNft.item);
|
|
7142
7136
|
if (!targetItem) {
|
|
7143
7137
|
throw new Error("No pending NFT claim target found");
|
|
7144
7138
|
}
|
|
@@ -7154,9 +7148,9 @@ function NftRewardContent({
|
|
|
7154
7148
|
);
|
|
7155
7149
|
setIsWalletDialogOpen(false);
|
|
7156
7150
|
setIsClaimDialogOpen(true);
|
|
7157
|
-
await
|
|
7151
|
+
await claimNft(targetItem, popupAdapter);
|
|
7158
7152
|
},
|
|
7159
|
-
[pendingWalletClaimItem,
|
|
7153
|
+
[pendingWalletClaimItem, claimingNft, claimNft]
|
|
7160
7154
|
);
|
|
7161
7155
|
const handleWalletError = useCallback((errorMessage) => {
|
|
7162
7156
|
console.warn("Wallet dialog connect failed:", errorMessage);
|
|
@@ -7182,12 +7176,12 @@ function NftRewardContent({
|
|
|
7182
7176
|
}, 200);
|
|
7183
7177
|
}, [resetClaim]);
|
|
7184
7178
|
const handleRetry = useCallback(() => {
|
|
7185
|
-
if (
|
|
7179
|
+
if (claimingNft) {
|
|
7186
7180
|
resetClaim();
|
|
7187
|
-
setPendingWalletClaimItem(
|
|
7188
|
-
void
|
|
7181
|
+
setPendingWalletClaimItem(claimingNft.item);
|
|
7182
|
+
void claimNft(claimingNft.item);
|
|
7189
7183
|
}
|
|
7190
|
-
}, [
|
|
7184
|
+
}, [claimingNft, resetClaim, claimNft]);
|
|
7191
7185
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
7192
7186
|
/* @__PURE__ */ jsx(
|
|
7193
7187
|
NftTable,
|
|
@@ -7209,9 +7203,9 @@ function NftRewardContent({
|
|
|
7209
7203
|
status: claimStatus,
|
|
7210
7204
|
error: claimError,
|
|
7211
7205
|
txHash: claimTxHash,
|
|
7212
|
-
claimingNft
|
|
7206
|
+
claimingNft,
|
|
7213
7207
|
explorerUrl,
|
|
7214
|
-
messages,
|
|
7208
|
+
messages: claimDialogMessages,
|
|
7215
7209
|
onRetry: handleRetry
|
|
7216
7210
|
}
|
|
7217
7211
|
),
|
|
@@ -7225,7 +7219,7 @@ function NftRewardContent({
|
|
|
7225
7219
|
txHash: pendingTxDialogState == null ? void 0 : pendingTxDialogState.txHash,
|
|
7226
7220
|
explorerUrl: pendingExplorerUrl,
|
|
7227
7221
|
receiveAddress: pendingTxDialogState == null ? void 0 : pendingTxDialogState.receiveAddress,
|
|
7228
|
-
messages
|
|
7222
|
+
messages: pendingDialogMessages
|
|
7229
7223
|
}
|
|
7230
7224
|
),
|
|
7231
7225
|
/* @__PURE__ */ jsx(
|
|
@@ -7245,14 +7239,17 @@ function formatBalance$1(balance) {
|
|
|
7245
7239
|
return num.toLocaleString(void 0, { maximumFractionDigits: 6 });
|
|
7246
7240
|
}
|
|
7247
7241
|
function TokenSelect({
|
|
7242
|
+
messages,
|
|
7248
7243
|
tokens,
|
|
7249
7244
|
value,
|
|
7250
|
-
placeholder
|
|
7245
|
+
placeholder,
|
|
7251
7246
|
disabled = false,
|
|
7252
7247
|
hasError = false,
|
|
7253
|
-
notSupportText
|
|
7248
|
+
notSupportText,
|
|
7254
7249
|
onChange
|
|
7255
7250
|
}) {
|
|
7251
|
+
const placeholderText = placeholder ?? messages.select_token;
|
|
7252
|
+
const notSupportLabel = notSupportText ?? messages.token_not_supported;
|
|
7256
7253
|
const tokenOptions = useMemo(() => {
|
|
7257
7254
|
return tokens.map((token) => ({
|
|
7258
7255
|
label: token.token_symbol,
|
|
@@ -7305,18 +7302,18 @@ function TokenSelect({
|
|
|
7305
7302
|
canWithdraw: tokenOption.can_withdraw,
|
|
7306
7303
|
active,
|
|
7307
7304
|
disabled: tokenOption.disabled,
|
|
7308
|
-
notSupportText
|
|
7305
|
+
notSupportText: notSupportLabel
|
|
7309
7306
|
}
|
|
7310
7307
|
);
|
|
7311
7308
|
},
|
|
7312
|
-
[
|
|
7309
|
+
[notSupportLabel]
|
|
7313
7310
|
);
|
|
7314
7311
|
return /* @__PURE__ */ jsx(
|
|
7315
7312
|
Select,
|
|
7316
7313
|
{
|
|
7317
7314
|
options: tokenOptions,
|
|
7318
7315
|
value,
|
|
7319
|
-
placeholder,
|
|
7316
|
+
placeholder: placeholderText,
|
|
7320
7317
|
disabled,
|
|
7321
7318
|
hasError,
|
|
7322
7319
|
showCheckedIcon: false,
|
|
@@ -7386,6 +7383,7 @@ function formatAddress(address, prefixLen = 6, suffixLen = 4) {
|
|
|
7386
7383
|
return `${address.slice(0, prefixLen)}...${address.slice(-suffixLen)}`;
|
|
7387
7384
|
}
|
|
7388
7385
|
function ReceiverAddress({
|
|
7386
|
+
messages,
|
|
7389
7387
|
chainIcon,
|
|
7390
7388
|
chainLabel,
|
|
7391
7389
|
address
|
|
@@ -7396,13 +7394,13 @@ function ReceiverAddress({
|
|
|
7396
7394
|
"img",
|
|
7397
7395
|
{
|
|
7398
7396
|
src: chainIcon,
|
|
7399
|
-
alt: chainLabel ||
|
|
7397
|
+
alt: chainLabel || messages.chain_label,
|
|
7400
7398
|
className: "taskon-receiver-address__chain-icon"
|
|
7401
7399
|
}
|
|
7402
7400
|
),
|
|
7403
|
-
/* @__PURE__ */ jsx("span", { className: "taskon-receiver-address__chain-label", children: chainLabel ||
|
|
7401
|
+
/* @__PURE__ */ jsx("span", { className: "taskon-receiver-address__chain-label", children: chainLabel || messages.no_data })
|
|
7404
7402
|
] }),
|
|
7405
|
-
/* @__PURE__ */ jsx("div", { className: "taskon-receiver-address__address", children: address ? formatAddress(address) :
|
|
7403
|
+
/* @__PURE__ */ jsx("div", { className: "taskon-receiver-address__address", children: address ? formatAddress(address) : messages.no_data })
|
|
7406
7404
|
] });
|
|
7407
7405
|
}
|
|
7408
7406
|
const PAGE_SIZE = 5;
|
|
@@ -7662,7 +7660,7 @@ function BatchTokenTable({
|
|
|
7662
7660
|
// Token 类型列
|
|
7663
7661
|
{
|
|
7664
7662
|
key: "token_symbol",
|
|
7665
|
-
title: messages.
|
|
7663
|
+
title: messages.column_token_type,
|
|
7666
7664
|
width: 105,
|
|
7667
7665
|
align: "center",
|
|
7668
7666
|
render: (_, row) => /* @__PURE__ */ jsxs("div", { className: "taskon-batch-token-table__token-cell", children: [
|
|
@@ -7680,7 +7678,7 @@ function BatchTokenTable({
|
|
|
7680
7678
|
// 可提现金额列
|
|
7681
7679
|
{
|
|
7682
7680
|
key: "withdrawable_avail_balance",
|
|
7683
|
-
title: messages.
|
|
7681
|
+
title: messages.column_amount_withdrawable,
|
|
7684
7682
|
width: 120,
|
|
7685
7683
|
align: "center",
|
|
7686
7684
|
render: (_, row) => formatBalance(row.withdrawable_avail_balance)
|
|
@@ -7688,7 +7686,7 @@ function BatchTokenTable({
|
|
|
7688
7686
|
// 提现金额输入列
|
|
7689
7687
|
{
|
|
7690
7688
|
key: "amount",
|
|
7691
|
-
title: messages.
|
|
7689
|
+
title: messages.column_withdraw_amount,
|
|
7692
7690
|
width: 120,
|
|
7693
7691
|
align: "center",
|
|
7694
7692
|
render: (_, row) => {
|
|
@@ -7773,18 +7771,18 @@ function WithdrawFormInit({
|
|
|
7773
7771
|
return /* @__PURE__ */ jsxs("div", { className: "taskon-withdraw-form-init", children: [
|
|
7774
7772
|
/* @__PURE__ */ jsx("h2", { className: "taskon-withdraw-form-init__title", children: messages.withdraw }),
|
|
7775
7773
|
/* @__PURE__ */ jsxs("div", { className: "taskon-withdraw-form-init__content", children: [
|
|
7776
|
-
/* @__PURE__ */ jsx(FormItem, { label:
|
|
7774
|
+
/* @__PURE__ */ jsx(FormItem, { label: messages.select_token, type: "dialog", error: validationErrors.token, children: /* @__PURE__ */ jsx(
|
|
7777
7775
|
TokenSelect,
|
|
7778
7776
|
{
|
|
7777
|
+
messages,
|
|
7779
7778
|
tokens: withdrawableTokens,
|
|
7780
7779
|
value: selectedTokenId,
|
|
7781
|
-
placeholder: "Select Token",
|
|
7782
7780
|
disabled: tokenAssetsLoading || submitting,
|
|
7783
7781
|
hasError: !!validationErrors.token,
|
|
7784
7782
|
onChange: onTokenChange
|
|
7785
7783
|
}
|
|
7786
7784
|
) }),
|
|
7787
|
-
/* @__PURE__ */ jsx(FormItem, { label:
|
|
7785
|
+
/* @__PURE__ */ jsx(FormItem, { label: messages.token_amount, type: "dialog", error: validationErrors.amount, children: /* @__PURE__ */ jsx(
|
|
7788
7786
|
AmountInput,
|
|
7789
7787
|
{
|
|
7790
7788
|
value: withdrawAmount,
|
|
@@ -7796,9 +7794,10 @@ function WithdrawFormInit({
|
|
|
7796
7794
|
onChange: onAmountChange
|
|
7797
7795
|
}
|
|
7798
7796
|
) }),
|
|
7799
|
-
/* @__PURE__ */ jsx(FormItem, { label:
|
|
7797
|
+
/* @__PURE__ */ jsx(FormItem, { label: messages.receive_address, type: "dialog", children: /* @__PURE__ */ jsx(
|
|
7800
7798
|
ReceiverAddress,
|
|
7801
7799
|
{
|
|
7800
|
+
messages,
|
|
7802
7801
|
chainIcon: selectedToken == null ? void 0 : selectedToken.chain_icon,
|
|
7803
7802
|
chainLabel: selectedToken == null ? void 0 : selectedToken.chain_label,
|
|
7804
7803
|
address: userAddress
|
|
@@ -7809,7 +7808,7 @@ function WithdrawFormInit({
|
|
|
7809
7808
|
{
|
|
7810
7809
|
checked: batchEnabled,
|
|
7811
7810
|
onChange: onBatchEnabledChange,
|
|
7812
|
-
label: messages.
|
|
7811
|
+
label: messages.batch_withdraw,
|
|
7813
7812
|
disabled: submitting
|
|
7814
7813
|
}
|
|
7815
7814
|
) }) }),
|
|
@@ -7854,7 +7853,7 @@ function WithdrawConfirm({
|
|
|
7854
7853
|
onCancel
|
|
7855
7854
|
}) {
|
|
7856
7855
|
return /* @__PURE__ */ jsxs("div", { className: "taskon-withdraw-confirm", children: [
|
|
7857
|
-
/* @__PURE__ */ jsx("div", { className: "taskon-withdraw-confirm__header", children: /* @__PURE__ */ jsx("h3", { className: "taskon-withdraw-confirm__title", children: messages.
|
|
7856
|
+
/* @__PURE__ */ jsx("div", { className: "taskon-withdraw-confirm__header", children: /* @__PURE__ */ jsx("h3", { className: "taskon-withdraw-confirm__title", children: messages.withdraw_confirm }) }),
|
|
7858
7857
|
/* @__PURE__ */ jsxs("div", { className: "taskon-withdraw-confirm__content", children: [
|
|
7859
7858
|
/* @__PURE__ */ jsx("div", { className: "taskon-withdraw-confirm__tokens", children: tokens.map((token) => /* @__PURE__ */ jsxs("div", { className: "taskon-withdraw-confirm__token", children: [
|
|
7860
7859
|
/* @__PURE__ */ jsxs("div", { className: "taskon-withdraw-confirm__token-info", children: [
|
|
@@ -7944,7 +7943,7 @@ function WithdrawSuccess({
|
|
|
7944
7943
|
children: /* @__PURE__ */ jsx("path", { d: "M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z" })
|
|
7945
7944
|
}
|
|
7946
7945
|
) }),
|
|
7947
|
-
/* @__PURE__ */ jsx("h3", { className: "taskon-withdraw-success__title", children: messages.
|
|
7946
|
+
/* @__PURE__ */ jsx("h3", { className: "taskon-withdraw-success__title", children: messages.withdraw_success }),
|
|
7948
7947
|
txHash && /* @__PURE__ */ jsxs("p", { className: "taskon-withdraw-success__tx-hash", children: [
|
|
7949
7948
|
"TX: ",
|
|
7950
7949
|
txHash.slice(0, 10),
|
|
@@ -7978,8 +7977,8 @@ function WithdrawCancel({
|
|
|
7978
7977
|
children: /* @__PURE__ */ jsx("path", { d: "M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm5 13.59L15.59 17 12 13.41 8.41 17 7 15.59 10.59 12 7 8.41 8.41 7 12 10.59 15.59 7 17 8.41 13.41 12 17 15.59z" })
|
|
7979
7978
|
}
|
|
7980
7979
|
) }),
|
|
7981
|
-
/* @__PURE__ */ jsx("h3", { className: "taskon-withdraw-cancel__title", children: messages.
|
|
7982
|
-
/* @__PURE__ */ jsx("p", { className: "taskon-withdraw-cancel__message", children: messages.
|
|
7980
|
+
/* @__PURE__ */ jsx("h3", { className: "taskon-withdraw-cancel__title", children: messages.withdraw_canceled }),
|
|
7981
|
+
/* @__PURE__ */ jsx("p", { className: "taskon-withdraw-cancel__message", children: messages.withdraw_canceled_message }),
|
|
7983
7982
|
/* @__PURE__ */ jsxs("div", { className: "taskon-withdraw-cancel__actions", children: [
|
|
7984
7983
|
/* @__PURE__ */ jsx(
|
|
7985
7984
|
Button,
|
|
@@ -8005,6 +8004,7 @@ function WithdrawGasNotEnough({
|
|
|
8005
8004
|
chainLabel,
|
|
8006
8005
|
onClose
|
|
8007
8006
|
}) {
|
|
8007
|
+
const message = chainLabel ? messages.gas_not_enough_description_with_chain.replace("{chain}", chainLabel) : messages.gas_not_enough_description;
|
|
8008
8008
|
return /* @__PURE__ */ jsxs("div", { className: "taskon-withdraw-gas-not-enough", children: [
|
|
8009
8009
|
/* @__PURE__ */ jsx("div", { className: "taskon-withdraw-gas-not-enough__icon", children: /* @__PURE__ */ jsx(
|
|
8010
8010
|
"svg",
|
|
@@ -8016,8 +8016,8 @@ function WithdrawGasNotEnough({
|
|
|
8016
8016
|
children: /* @__PURE__ */ jsx("path", { d: "M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z" })
|
|
8017
8017
|
}
|
|
8018
8018
|
) }),
|
|
8019
|
-
/* @__PURE__ */ jsx("h3", { className: "taskon-withdraw-gas-not-enough__title", children: messages.
|
|
8020
|
-
/* @__PURE__ */ jsx("p", { className: "taskon-withdraw-gas-not-enough__message", children:
|
|
8019
|
+
/* @__PURE__ */ jsx("h3", { className: "taskon-withdraw-gas-not-enough__title", children: messages.gas_not_enough }),
|
|
8020
|
+
/* @__PURE__ */ jsx("p", { className: "taskon-withdraw-gas-not-enough__message", children: message }),
|
|
8021
8021
|
/* @__PURE__ */ jsx(
|
|
8022
8022
|
Button,
|
|
8023
8023
|
{
|
|
@@ -8032,22 +8032,21 @@ function WithdrawGasNotEnough({
|
|
|
8032
8032
|
function getDialogTitle(status, messages) {
|
|
8033
8033
|
switch (status) {
|
|
8034
8034
|
case "confirm":
|
|
8035
|
-
return messages.
|
|
8035
|
+
return messages.withdraw_confirm;
|
|
8036
8036
|
case "loading":
|
|
8037
8037
|
return messages.loading;
|
|
8038
8038
|
case "success":
|
|
8039
|
-
return messages.
|
|
8039
|
+
return messages.withdraw_success;
|
|
8040
8040
|
case "cancel":
|
|
8041
|
-
return messages.
|
|
8041
|
+
return messages.withdraw_canceled;
|
|
8042
8042
|
case "noEnough":
|
|
8043
|
-
return messages.
|
|
8043
|
+
return messages.gas_not_enough;
|
|
8044
8044
|
default:
|
|
8045
8045
|
return messages.withdraw;
|
|
8046
8046
|
}
|
|
8047
8047
|
}
|
|
8048
8048
|
function WithdrawForm({
|
|
8049
8049
|
open,
|
|
8050
|
-
messages,
|
|
8051
8050
|
tokenAssets,
|
|
8052
8051
|
tokenAssetsLoading,
|
|
8053
8052
|
userAddress,
|
|
@@ -8058,10 +8057,13 @@ function WithdrawForm({
|
|
|
8058
8057
|
onClose,
|
|
8059
8058
|
onSuccess
|
|
8060
8059
|
}) {
|
|
8060
|
+
const { messages } = useUserCenterLocale();
|
|
8061
8061
|
const [submitting, setSubmitting] = useState(false);
|
|
8062
8062
|
const { toast } = useToast();
|
|
8063
8063
|
const { userInfo } = useTaskOnContext();
|
|
8064
|
-
const isResendMode = Boolean(
|
|
8064
|
+
const isResendMode = Boolean(
|
|
8065
|
+
resend2 && resendTokenItems && resendTokenItems.length > 0
|
|
8066
|
+
);
|
|
8065
8067
|
const { getDecimals } = useTokenDecimals({
|
|
8066
8068
|
tokenAssets
|
|
8067
8069
|
});
|
|
@@ -8069,8 +8071,9 @@ function WithdrawForm({
|
|
|
8069
8071
|
tokenAssets,
|
|
8070
8072
|
initialTokenId,
|
|
8071
8073
|
initialChain,
|
|
8072
|
-
getDecimals
|
|
8074
|
+
getDecimals,
|
|
8073
8075
|
// 传入精度获取函数
|
|
8076
|
+
messages
|
|
8074
8077
|
});
|
|
8075
8078
|
const resolvedUserAddress = useMemo(() => {
|
|
8076
8079
|
var _a;
|
|
@@ -8089,35 +8092,27 @@ function WithdrawForm({
|
|
|
8089
8092
|
switch (errType) {
|
|
8090
8093
|
case TxErrorType.AccountMismatch: {
|
|
8091
8094
|
if (error2.message === WITHDRAW_WALLET_NOT_BOUND_MESSAGE) {
|
|
8092
|
-
toast.error(
|
|
8093
|
-
messages.walletNotBind ?? "Please bind wallet before withdraw"
|
|
8094
|
-
);
|
|
8095
|
+
toast.error(messages.wallet_not_bind);
|
|
8095
8096
|
} else {
|
|
8096
|
-
toast.error(
|
|
8097
|
-
messages.errorAddressMismatch ?? "Connected wallet address does not match."
|
|
8098
|
-
);
|
|
8097
|
+
toast.error(messages.error_address_mismatch);
|
|
8099
8098
|
}
|
|
8100
8099
|
break;
|
|
8101
8100
|
}
|
|
8102
8101
|
case TxErrorType.ChainMismatch:
|
|
8103
|
-
toast.error(
|
|
8104
|
-
messages.errorNetworkSwitch ?? "Failed to switch network. Please switch manually."
|
|
8105
|
-
);
|
|
8102
|
+
toast.error(messages.error_network_switch);
|
|
8106
8103
|
break;
|
|
8107
8104
|
case TxErrorType.BalanceNotEnough:
|
|
8108
|
-
toast.error(
|
|
8109
|
-
messages.errorInsufficientGas ?? "Insufficient gas. Please add more funds to your wallet."
|
|
8110
|
-
);
|
|
8105
|
+
toast.error(messages.error_insufficient_gas);
|
|
8111
8106
|
break;
|
|
8112
8107
|
case TxErrorType.ConnectFailed:
|
|
8113
|
-
toast.error(
|
|
8108
|
+
toast.error(messages.failed_connect_wallet);
|
|
8114
8109
|
break;
|
|
8115
8110
|
case TxErrorType.Canceled:
|
|
8116
8111
|
case TxErrorType.TransactionFailed:
|
|
8117
|
-
toast.error(
|
|
8112
|
+
toast.error(messages.confirm_wallet_retry);
|
|
8118
8113
|
break;
|
|
8119
8114
|
default:
|
|
8120
|
-
toast.error(
|
|
8115
|
+
toast.error(messages.withdraw_failed);
|
|
8121
8116
|
}
|
|
8122
8117
|
},
|
|
8123
8118
|
[toast, messages]
|
|
@@ -8136,11 +8131,11 @@ function WithdrawForm({
|
|
|
8136
8131
|
});
|
|
8137
8132
|
const handleResendSubmit = useCallback(async () => {
|
|
8138
8133
|
if (!resolvedUserAddress) {
|
|
8139
|
-
toast.error(messages.
|
|
8134
|
+
toast.error(messages.wallet_not_bind);
|
|
8140
8135
|
return;
|
|
8141
8136
|
}
|
|
8142
8137
|
if (!resendTokenItems || resendTokenItems.length === 0) {
|
|
8143
|
-
toast.error(messages.
|
|
8138
|
+
toast.error(messages.no_tokens_for_resend);
|
|
8144
8139
|
return;
|
|
8145
8140
|
}
|
|
8146
8141
|
try {
|
|
@@ -8161,8 +8156,8 @@ function WithdrawForm({
|
|
|
8161
8156
|
resendTokenItems,
|
|
8162
8157
|
withdraw2,
|
|
8163
8158
|
toast,
|
|
8164
|
-
messages.
|
|
8165
|
-
messages.
|
|
8159
|
+
messages.wallet_not_bind,
|
|
8160
|
+
messages.no_tokens_for_resend
|
|
8166
8161
|
]);
|
|
8167
8162
|
const handleSubmit = useCallback(async () => {
|
|
8168
8163
|
if (isResendMode) {
|
|
@@ -8173,7 +8168,7 @@ function WithdrawForm({
|
|
|
8173
8168
|
return;
|
|
8174
8169
|
}
|
|
8175
8170
|
if (!resolvedUserAddress) {
|
|
8176
|
-
toast.error(messages.
|
|
8171
|
+
toast.error(messages.wallet_not_bind);
|
|
8177
8172
|
return;
|
|
8178
8173
|
}
|
|
8179
8174
|
const tokens = form.buildWithdrawTokens();
|
|
@@ -8196,7 +8191,8 @@ function WithdrawForm({
|
|
|
8196
8191
|
withdraw2,
|
|
8197
8192
|
resolvedUserAddress,
|
|
8198
8193
|
toast,
|
|
8199
|
-
messages.
|
|
8194
|
+
messages.wallet_not_bind,
|
|
8195
|
+
messages.no_tokens_for_resend
|
|
8200
8196
|
]);
|
|
8201
8197
|
const handleConfirm = useCallback(async () => {
|
|
8202
8198
|
await withdraw2.confirmWithdraw();
|
|
@@ -8322,37 +8318,32 @@ function WithdrawForm({
|
|
|
8322
8318
|
export {
|
|
8323
8319
|
AssetImage as A,
|
|
8324
8320
|
BindWalletDialog as B,
|
|
8325
|
-
|
|
8321
|
+
Content2 as C,
|
|
8326
8322
|
EmptyState as E,
|
|
8327
|
-
FrozenAssetList as F,
|
|
8328
8323
|
Input as I,
|
|
8329
8324
|
LoadingState as L,
|
|
8330
8325
|
NftRewardContent as N,
|
|
8331
8326
|
Pagination as P,
|
|
8332
8327
|
Root2 as R,
|
|
8333
|
-
|
|
8328
|
+
TokenRewardContent as T,
|
|
8334
8329
|
WithdrawForm as W,
|
|
8335
|
-
|
|
8336
|
-
|
|
8337
|
-
|
|
8338
|
-
|
|
8339
|
-
|
|
8340
|
-
|
|
8341
|
-
|
|
8342
|
-
|
|
8343
|
-
|
|
8344
|
-
|
|
8345
|
-
|
|
8330
|
+
useBindSocialAccount as a,
|
|
8331
|
+
buildRewardCards as b,
|
|
8332
|
+
useTokenAssets as c,
|
|
8333
|
+
useRewardDetails as d,
|
|
8334
|
+
usePointsHistory as e,
|
|
8335
|
+
formatDateTime as f,
|
|
8336
|
+
PointsList as g,
|
|
8337
|
+
useIsMobile as h,
|
|
8338
|
+
Trigger as i,
|
|
8339
|
+
Portal as j,
|
|
8340
|
+
Arrow2 as k,
|
|
8346
8341
|
useChainMap as l,
|
|
8347
8342
|
useNftClaim as m,
|
|
8348
|
-
|
|
8349
|
-
|
|
8350
|
-
|
|
8351
|
-
|
|
8352
|
-
|
|
8353
|
-
|
|
8354
|
-
toWithdrawItem as t,
|
|
8355
|
-
useRewardDetails as u,
|
|
8356
|
-
InfoIcon as v,
|
|
8357
|
-
en as w
|
|
8343
|
+
ClaimNftDialog as n,
|
|
8344
|
+
enMessages as o,
|
|
8345
|
+
PendingTxDialog as p,
|
|
8346
|
+
TipPopover as q,
|
|
8347
|
+
InfoIcon as r,
|
|
8348
|
+
useUserCenterLocale as u
|
|
8358
8349
|
};
|