@taskon/widget-react 0.0.1-beta.5 → 0.0.1-beta.7
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 +61 -47
- package/dist/CommunityTaskList.css +9 -1
- package/dist/EligibilityInfo.css +48 -75
- package/dist/LeaderboardWidget.css +73 -71
- package/dist/PageBuilder.css +5 -0
- package/dist/Quest.css +18 -14
- package/dist/TaskOnProvider.css +289 -0
- package/dist/ThemeProvider.css +227 -0
- package/dist/UserCenterWidget.css +6 -6
- package/dist/UserCenterWidget2.css +1388 -1621
- package/dist/{dynamic-import-helper.css → WidgetShell.css} +0 -227
- package/dist/chunks/{CommunityTaskList-CrMvOB8w.js → CommunityTaskList-D0uVD8wD.js} +393 -208
- package/dist/chunks/{EligibilityInfo-Beww12QX.js → EligibilityInfo-Cf6hx9-a.js} +459 -679
- package/dist/chunks/{LeaderboardWidget-DwuSpVl0.js → LeaderboardWidget-DyoiiNS6.js} +274 -252
- package/dist/chunks/{PageBuilder-DsX6Tv0N.js → PageBuilder-DoAFPm6-.js} +5 -5
- package/dist/chunks/{Quest-CuD2LElS.js → Quest-ySZlYd4u.js} +74 -57
- package/dist/chunks/TaskOnProvider-CxtFIs3n.js +2072 -0
- package/dist/chunks/{dynamic-import-helper-WmIF58Sb.js → ThemeProvider-CulHkqqY.js} +1282 -555
- package/dist/chunks/UserCenterWidget-BJsc_GSZ.js +3246 -0
- package/dist/chunks/{UserCenterWidget-CvU6K4AC.js → UserCenterWidget-STq8kpV4.js} +1174 -1386
- package/dist/chunks/WidgetShell-8xn-Jivw.js +659 -0
- 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-DhySaZL8.js → communitytask-ru-CZm2CPoV.js} +211 -1
- 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-D-b5xcme.js → quest-es-Dyyy0zaw.js} +8 -93
- package/dist/chunks/{quest-ja-Dxd2vqBF.js → quest-ja-Depog33y.js} +8 -93
- package/dist/chunks/{quest-ko-CSmRWgK_.js → quest-ko-BMu3uRQJ.js} +8 -93
- package/dist/chunks/{quest-ru-CkEKv1_F.js → quest-ru-xne814Rw.js} +8 -93
- package/dist/chunks/useIsMobile-D6Ybur-6.js +30 -0
- package/dist/chunks/useToast-BGJhd3BX.js +93 -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 +38 -20
- package/dist/core.js +9 -10
- package/dist/index.d.ts +86 -709
- package/dist/index.js +22 -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 -971
- package/dist/quest.js +2 -7
- package/dist/user-center.d.ts +0 -1610
- package/dist/user-center.js +2 -494
- package/package.json +2 -2
- package/dist/chunks/TaskOnProvider-xUeP2Nro.js +0 -1243
- package/dist/chunks/ThemeProvider-Bt4UZ33y.js +0 -1334
- package/dist/chunks/UserCenterWidget-CB0hnj-L.js +0 -3230
- package/dist/chunks/communitytask-es-1zawvXEX.js +0 -311
- package/dist/chunks/communitytask-ja-CmW6nP-L.js +0 -311
- package/dist/chunks/communitytask-ko-BD0hzQSi.js +0 -311
- package/dist/chunks/createLocaleLoader-BameiEhU.js +0 -65
- package/dist/chunks/leaderboardwidget-ja-Bj6gz6y1.js +0 -119
- package/dist/chunks/leaderboardwidget-ko-f1cLO9ic.js +0 -119
- package/dist/chunks/useToast-CaRkylKe.js +0 -304
- 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
|
|
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 {
|
|
8
|
-
import {
|
|
5
|
+
import { useContext, useState, useRef, useMemo, useCallback, forwardRef, useImperativeHandle, useEffect, 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, UserCenterTabType, filterEnabledCards, formatTokenAmount as formatTokenAmount$1, RouletteRewardType, USER_CENTER_PAGE_SIZE, createUserCenterApi, getTxExplorerUrl } from "@taskon/core";
|
|
7
|
+
import { w as TaskOnContext, h as useTaskOnContext, P as Primitive, v as useLayoutEffect2, k as createContextScope, l as useComposedRefs, r as useCallbackRef, n as useControllableState, x as useId, q as composeEventHandlers, o as Presence, s as Portal$1, y as hideOthers, z as ReactRemoveScroll, m as createSlot, A as useFocusGuards, F as FocusScope, C as DismissableLayer, E as useTaskOnPortalContainer, D as Dialog, c as useTranslation, e as createLocaleLoader } from "./ThemeProvider-CulHkqqY.js";
|
|
8
|
+
import { c as useToast, u as useWallet } from "./useToast-BGJhd3BX.js";
|
|
9
9
|
import { jsx, jsxs, Fragment } from "react/jsx-runtime";
|
|
10
|
-
import {
|
|
10
|
+
import { P as Pagination$1, B as Button, T as Table, a as usePagination } from "./WidgetShell-8xn-Jivw.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
|
/** 窗口宽度 */
|
|
@@ -235,8 +78,11 @@ function useBindSocialAccount({
|
|
|
235
78
|
}, [onSuccess]);
|
|
236
79
|
const handleFailed = useCallback((error2) => {
|
|
237
80
|
var _a2;
|
|
238
|
-
|
|
239
|
-
|
|
81
|
+
if (onFailed) {
|
|
82
|
+
onFailed(error2);
|
|
83
|
+
} else {
|
|
84
|
+
toast.error(error2);
|
|
85
|
+
}
|
|
240
86
|
(_a2 = bindWaitResolveRef.current) == null ? void 0 : _a2.call(bindWaitResolveRef, false);
|
|
241
87
|
bindWaitResolveRef.current = null;
|
|
242
88
|
}, [onFailed, toast]);
|
|
@@ -360,31 +206,6 @@ function useBindSocialAccount({
|
|
|
360
206
|
isBound
|
|
361
207
|
};
|
|
362
208
|
}
|
|
363
|
-
const VIEWPORT_BREAKPOINTS = {
|
|
364
|
-
mobileMax: 750
|
|
365
|
-
};
|
|
366
|
-
const MOBILE_MAX_WIDTH = VIEWPORT_BREAKPOINTS.mobileMax;
|
|
367
|
-
function isMobileViewport(width) {
|
|
368
|
-
return width <= MOBILE_MAX_WIDTH;
|
|
369
|
-
}
|
|
370
|
-
function useIsMobile() {
|
|
371
|
-
const [isMobile, setIsMobile] = useState(() => {
|
|
372
|
-
if (typeof window === "undefined") return false;
|
|
373
|
-
return isMobileViewport(window.innerWidth);
|
|
374
|
-
});
|
|
375
|
-
const handleResize = useCallback(() => {
|
|
376
|
-
setIsMobile(isMobileViewport(window.innerWidth));
|
|
377
|
-
}, []);
|
|
378
|
-
useEffect(() => {
|
|
379
|
-
if (typeof window === "undefined") return;
|
|
380
|
-
handleResize();
|
|
381
|
-
window.addEventListener("resize", handleResize);
|
|
382
|
-
return () => {
|
|
383
|
-
window.removeEventListener("resize", handleResize);
|
|
384
|
-
};
|
|
385
|
-
}, [handleResize]);
|
|
386
|
-
return isMobile;
|
|
387
|
-
}
|
|
388
209
|
function useChainMap() {
|
|
389
210
|
const { chains } = useTaskOnContext();
|
|
390
211
|
const chainMap = useMemo(() => {
|
|
@@ -751,14 +572,14 @@ function parseStandardNftValue(value) {
|
|
|
751
572
|
};
|
|
752
573
|
}
|
|
753
574
|
function useNftClaim(options = {}) {
|
|
754
|
-
const { onSuccess, onError, onPendingFound
|
|
575
|
+
const { onSuccess, onError, onPendingFound } = options;
|
|
755
576
|
const { client, userId, userInfo, refreshUserInfo } = useTaskOnContext();
|
|
756
577
|
const { evmAdapter, evmAddress, evmChainId, isEvmConnected, connectEvm } = useWallet();
|
|
757
578
|
const { chainMap } = useChainMap();
|
|
758
579
|
const [status, setStatus] = useState("idle");
|
|
759
580
|
const [error2, setError] = useState(null);
|
|
760
581
|
const [txHash, setTxHash] = useState(null);
|
|
761
|
-
const [
|
|
582
|
+
const [claimingNft, setClaimingNft] = useState(null);
|
|
762
583
|
const api = useMemo(() => {
|
|
763
584
|
if (!client) return null;
|
|
764
585
|
return createNftClaimApi(client);
|
|
@@ -767,7 +588,7 @@ function useNftClaim(options = {}) {
|
|
|
767
588
|
if (!client) return null;
|
|
768
589
|
return createUserApi(client);
|
|
769
590
|
}, [client]);
|
|
770
|
-
const
|
|
591
|
+
const claimNft = useCallback(
|
|
771
592
|
async (item, adapterOverride) => {
|
|
772
593
|
var _a;
|
|
773
594
|
if (!api) {
|
|
@@ -824,9 +645,10 @@ function useNftClaim(options = {}) {
|
|
|
824
645
|
setStatus("connecting");
|
|
825
646
|
const activeAdapter = adapterOverride ?? evmAdapter;
|
|
826
647
|
if (!(activeAdapter == null ? void 0 : activeAdapter.invokeContract)) {
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
648
|
+
throw new NftClaimError(
|
|
649
|
+
NftClaimErrorType.ApiError,
|
|
650
|
+
"No available wallet adapter"
|
|
651
|
+
);
|
|
830
652
|
}
|
|
831
653
|
let walletAddress = null;
|
|
832
654
|
if (adapterOverride) {
|
|
@@ -994,7 +816,6 @@ function useNftClaim(options = {}) {
|
|
|
994
816
|
evmChainId,
|
|
995
817
|
isEvmConnected,
|
|
996
818
|
connectEvm,
|
|
997
|
-
onNeedWalletDialog,
|
|
998
819
|
onSuccess,
|
|
999
820
|
onError,
|
|
1000
821
|
onPendingFound
|
|
@@ -1018,506 +839,123 @@ function useNftClaim(options = {}) {
|
|
|
1018
839
|
status,
|
|
1019
840
|
error: error2,
|
|
1020
841
|
txHash,
|
|
1021
|
-
claimingNft
|
|
1022
|
-
claimNft
|
|
842
|
+
claimingNft,
|
|
843
|
+
claimNft,
|
|
1023
844
|
reset,
|
|
1024
845
|
clearPending
|
|
1025
846
|
};
|
|
1026
847
|
}
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
848
|
+
const Input = forwardRef(
|
|
849
|
+
function Input2({
|
|
850
|
+
value,
|
|
851
|
+
onChange,
|
|
852
|
+
type = "text",
|
|
853
|
+
inputMode,
|
|
854
|
+
maxLength,
|
|
855
|
+
disabled = false,
|
|
856
|
+
placeholder,
|
|
857
|
+
hasError = false,
|
|
858
|
+
error: error2,
|
|
859
|
+
className,
|
|
860
|
+
autoFocus = false,
|
|
861
|
+
onBlur,
|
|
862
|
+
onFocus,
|
|
863
|
+
onEnter,
|
|
864
|
+
rightSlot,
|
|
865
|
+
formatValue
|
|
866
|
+
}, ref) {
|
|
867
|
+
const inputRef = useRef(null);
|
|
868
|
+
const isError = hasError || !!error2;
|
|
869
|
+
const focus = useCallback(() => {
|
|
870
|
+
var _a;
|
|
871
|
+
(_a = inputRef.current) == null ? void 0 : _a.focus();
|
|
872
|
+
}, []);
|
|
873
|
+
const blur = useCallback(() => {
|
|
874
|
+
var _a;
|
|
875
|
+
(_a = inputRef.current) == null ? void 0 : _a.blur();
|
|
876
|
+
}, []);
|
|
877
|
+
const getElement = useCallback(() => {
|
|
878
|
+
return inputRef.current;
|
|
879
|
+
}, []);
|
|
880
|
+
useImperativeHandle(
|
|
881
|
+
ref,
|
|
882
|
+
() => ({
|
|
883
|
+
focus,
|
|
884
|
+
blur,
|
|
885
|
+
getElement
|
|
886
|
+
}),
|
|
887
|
+
[focus, blur, getElement]
|
|
888
|
+
);
|
|
889
|
+
useEffect(() => {
|
|
890
|
+
var _a;
|
|
891
|
+
if (autoFocus) {
|
|
892
|
+
(_a = inputRef.current) == null ? void 0 : _a.focus();
|
|
893
|
+
}
|
|
894
|
+
}, [autoFocus]);
|
|
895
|
+
const handleChange = useCallback(
|
|
896
|
+
(e) => {
|
|
897
|
+
let newValue = e.target.value;
|
|
898
|
+
if (formatValue) {
|
|
899
|
+
newValue = formatValue(newValue);
|
|
900
|
+
}
|
|
901
|
+
onChange(newValue);
|
|
902
|
+
},
|
|
903
|
+
[onChange, formatValue]
|
|
904
|
+
);
|
|
905
|
+
const handleKeyDown = useCallback(
|
|
906
|
+
(e) => {
|
|
907
|
+
if (e.key === "Enter" && onEnter) {
|
|
908
|
+
onEnter(e);
|
|
909
|
+
}
|
|
910
|
+
},
|
|
911
|
+
[onEnter]
|
|
912
|
+
);
|
|
913
|
+
const needWrapper = rightSlot || error2;
|
|
914
|
+
const inputElement = /* @__PURE__ */ jsx(
|
|
915
|
+
"input",
|
|
916
|
+
{
|
|
917
|
+
ref: inputRef,
|
|
918
|
+
className: `taskon-input ${isError ? "taskon-input--error" : ""} ${!needWrapper ? className || "" : ""}`,
|
|
919
|
+
type,
|
|
920
|
+
inputMode,
|
|
921
|
+
value,
|
|
922
|
+
onChange: handleChange,
|
|
923
|
+
maxLength,
|
|
924
|
+
disabled,
|
|
925
|
+
placeholder,
|
|
926
|
+
onBlur,
|
|
927
|
+
onFocus,
|
|
928
|
+
onKeyDown: handleKeyDown
|
|
929
|
+
}
|
|
930
|
+
);
|
|
931
|
+
if (!needWrapper) {
|
|
932
|
+
return inputElement;
|
|
933
|
+
}
|
|
934
|
+
return /* @__PURE__ */ jsxs("div", { className: `taskon-input-wrapper ${className || ""}`, children: [
|
|
935
|
+
/* @__PURE__ */ jsxs("div", { className: `taskon-input-container ${isError ? "taskon-input-container--error" : ""}`, children: [
|
|
1040
936
|
/* @__PURE__ */ jsx(
|
|
1041
|
-
"
|
|
937
|
+
"input",
|
|
1042
938
|
{
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
return /* @__PURE__ */ jsxs(
|
|
1056
|
-
"svg",
|
|
1057
|
-
{
|
|
1058
|
-
className: "taskon-claim-dialog-icon taskon-claim-dialog-icon--error",
|
|
1059
|
-
viewBox: "0 0 24 24",
|
|
1060
|
-
fill: "none",
|
|
1061
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
1062
|
-
children: [
|
|
1063
|
-
/* @__PURE__ */ jsx("circle", { cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "2" }),
|
|
1064
|
-
/* @__PURE__ */ jsx(
|
|
1065
|
-
"path",
|
|
1066
|
-
{
|
|
1067
|
-
d: "M15 9L9 15M9 9L15 15",
|
|
1068
|
-
stroke: "currentColor",
|
|
1069
|
-
strokeWidth: "2",
|
|
1070
|
-
strokeLinecap: "round"
|
|
1071
|
-
}
|
|
1072
|
-
)
|
|
1073
|
-
]
|
|
1074
|
-
}
|
|
1075
|
-
);
|
|
1076
|
-
}
|
|
1077
|
-
function getStatusMessage(status, messages) {
|
|
1078
|
-
switch (status) {
|
|
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();
|
|
1150
|
-
}
|
|
1151
|
-
},
|
|
1152
|
-
title: (messages == null ? void 0 : messages.claimNft) ?? "Claim NFT",
|
|
1153
|
-
showCloseButton: canClose,
|
|
1154
|
-
contentClassName: "taskon-claim-dialog",
|
|
1155
|
-
maxWidth: 400,
|
|
1156
|
-
children: /* @__PURE__ */ jsxs("div", { className: "taskon-claim-dialog-content", children: [
|
|
1157
|
-
claimingNft2 && /* @__PURE__ */ jsx("div", { className: "taskon-claim-dialog-nft", children: claimingNft2.item.reward_value.collection_image && /* @__PURE__ */ jsx(
|
|
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();
|
|
1239
|
-
}
|
|
1240
|
-
},
|
|
1241
|
-
title: (messages == null ? void 0 : messages.pendingTransaction) ?? "Pending Transaction",
|
|
1242
|
-
showCloseButton: true,
|
|
1243
|
-
contentClassName: "taskon-pending-dialog",
|
|
1244
|
-
maxWidth: 460,
|
|
1245
|
-
children: /* @__PURE__ */ jsxs("div", { className: "taskon-pending-dialog-content", children: [
|
|
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",
|
|
1319
|
-
{
|
|
1320
|
-
cx: "25",
|
|
1321
|
-
cy: "25",
|
|
1322
|
-
r: "20",
|
|
1323
|
-
fill: "none",
|
|
1324
|
-
stroke: "currentColor",
|
|
1325
|
-
strokeWidth: "4",
|
|
1326
|
-
strokeLinecap: "round",
|
|
1327
|
-
strokeDasharray: "80 60"
|
|
1328
|
-
}
|
|
1329
|
-
) }),
|
|
1330
|
-
/* @__PURE__ */ jsxs("p", { className: "taskon-bind-wallet-loading-text", children: [
|
|
1331
|
-
"Please log in to ",
|
|
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
|
|
939
|
+
ref: inputRef,
|
|
940
|
+
className: "taskon-input taskon-input--in-container",
|
|
941
|
+
type,
|
|
942
|
+
inputMode,
|
|
943
|
+
value,
|
|
944
|
+
onChange: handleChange,
|
|
945
|
+
maxLength,
|
|
946
|
+
disabled,
|
|
947
|
+
placeholder,
|
|
948
|
+
onBlur,
|
|
949
|
+
onFocus,
|
|
950
|
+
onKeyDown: handleKeyDown
|
|
1360
951
|
}
|
|
1361
952
|
),
|
|
1362
|
-
/* @__PURE__ */ jsx("
|
|
1363
|
-
|
|
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");
|
|
1474
|
-
}
|
|
1475
|
-
} finally {
|
|
1476
|
-
setConnectingWalletId(null);
|
|
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");
|
|
1491
|
-
}
|
|
1492
|
-
}, [connectWallet2, connectWalletConnect]);
|
|
1493
|
-
return /* @__PURE__ */ jsx(
|
|
1494
|
-
Dialog,
|
|
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,
|
|
1506
|
-
{
|
|
1507
|
-
wallet,
|
|
1508
|
-
isInstalled,
|
|
1509
|
-
isConnecting: connectingWalletId === wallet.id,
|
|
1510
|
-
isDisabled,
|
|
1511
|
-
disabledReason,
|
|
1512
|
-
onClick: () => handleWalletClick(wallet, isInstalled, isDisabled)
|
|
1513
|
-
},
|
|
1514
|
-
wallet.id
|
|
1515
|
-
)) }),
|
|
1516
|
-
connectingWalletId && /* @__PURE__ */ jsx(ConnectLoading, { walletName: connectingWalletName })
|
|
1517
|
-
] })
|
|
1518
|
-
}
|
|
1519
|
-
);
|
|
1520
|
-
}
|
|
953
|
+
rightSlot && /* @__PURE__ */ jsx("div", { className: "taskon-input-slot", children: rightSlot })
|
|
954
|
+
] }),
|
|
955
|
+
error2 && /* @__PURE__ */ jsx("p", { className: "taskon-input-error", children: error2 })
|
|
956
|
+
] });
|
|
957
|
+
}
|
|
958
|
+
);
|
|
1521
959
|
const sides = ["top", "right", "bottom", "left"];
|
|
1522
960
|
const min = Math.min;
|
|
1523
961
|
const max$1 = Math.max;
|
|
@@ -4695,453 +4133,667 @@ function Switch({
|
|
|
4695
4133
|
}
|
|
4696
4134
|
);
|
|
4697
4135
|
}
|
|
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
|
-
|
|
4993
|
-
|
|
4994
|
-
|
|
4995
|
-
|
|
4996
|
-
|
|
4997
|
-
|
|
4998
|
-
|
|
4999
|
-
|
|
5000
|
-
|
|
5001
|
-
|
|
5002
|
-
|
|
5003
|
-
|
|
5004
|
-
|
|
5005
|
-
|
|
5006
|
-
|
|
5007
|
-
|
|
5008
|
-
|
|
5009
|
-
|
|
5010
|
-
|
|
5011
|
-
|
|
5012
|
-
|
|
5013
|
-
|
|
5014
|
-
|
|
5015
|
-
|
|
5016
|
-
|
|
5017
|
-
|
|
5018
|
-
|
|
5019
|
-
|
|
5020
|
-
|
|
5021
|
-
|
|
5022
|
-
|
|
5023
|
-
|
|
5024
|
-
|
|
5025
|
-
|
|
5026
|
-
|
|
5027
|
-
|
|
5028
|
-
|
|
5029
|
-
|
|
5030
|
-
|
|
5031
|
-
|
|
5032
|
-
|
|
5033
|
-
|
|
5034
|
-
|
|
5035
|
-
|
|
5036
|
-
|
|
5037
|
-
|
|
5038
|
-
|
|
5039
|
-
|
|
5040
|
-
|
|
5041
|
-
|
|
5042
|
-
|
|
5043
|
-
|
|
5044
|
-
|
|
5045
|
-
|
|
5046
|
-
|
|
5047
|
-
|
|
5048
|
-
|
|
5049
|
-
|
|
5050
|
-
|
|
5051
|
-
|
|
5052
|
-
|
|
5053
|
-
|
|
5054
|
-
|
|
5055
|
-
|
|
5056
|
-
|
|
5057
|
-
|
|
5058
|
-
|
|
5059
|
-
|
|
5060
|
-
|
|
5061
|
-
|
|
5062
|
-
|
|
5063
|
-
|
|
5064
|
-
|
|
5065
|
-
|
|
5066
|
-
|
|
5067
|
-
|
|
5068
|
-
|
|
5069
|
-
|
|
5070
|
-
|
|
5071
|
-
|
|
5072
|
-
|
|
5073
|
-
|
|
5074
|
-
|
|
5075
|
-
|
|
5076
|
-
|
|
5077
|
-
|
|
5078
|
-
|
|
5079
|
-
|
|
5080
|
-
|
|
5081
|
-
|
|
5082
|
-
|
|
5083
|
-
|
|
5084
|
-
|
|
5085
|
-
|
|
5086
|
-
|
|
5087
|
-
|
|
5088
|
-
|
|
5089
|
-
|
|
5090
|
-
|
|
5091
|
-
|
|
5092
|
-
|
|
5093
|
-
|
|
5094
|
-
|
|
5095
|
-
|
|
5096
|
-
|
|
5097
|
-
|
|
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
|
-
|
|
4136
|
+
const tab_my_rewards = "My Rewards";
|
|
4137
|
+
const tab_identity = "Identity";
|
|
4138
|
+
const tab_activity_history = "Activity History";
|
|
4139
|
+
const tab_rewards = "Rewards";
|
|
4140
|
+
const tab_sprint_odyssey_history = "Sprint & Odyssey History";
|
|
4141
|
+
const section_you_have_earned = "You have earned";
|
|
4142
|
+
const reward_token = "Token";
|
|
4143
|
+
const reward_xp_level = "XP & Level";
|
|
4144
|
+
const reward_nft = "NFT";
|
|
4145
|
+
const reward_whitelist = "Whitelist";
|
|
4146
|
+
const reward_discord_role = "Discord Role";
|
|
4147
|
+
const reward_points = "Points";
|
|
4148
|
+
const withdrawable_assets = "Withdrawable Assets";
|
|
4149
|
+
const token_history = "Token History";
|
|
4150
|
+
const withdraw = "Withdraw";
|
|
4151
|
+
const batch_withdraw = "Batch Withdraw";
|
|
4152
|
+
const frozen_assets = "Frozen Assets";
|
|
4153
|
+
const resend = "Resend";
|
|
4154
|
+
const pending_withdrawals = "You have {count} pending withdrawals";
|
|
4155
|
+
const pending_withdrawals_text = "pending withdrawals";
|
|
4156
|
+
const pending_withdrawals_count_label = "Number of pending withdrawals";
|
|
4157
|
+
const withdraw_confirm = "Confirm Withdrawal";
|
|
4158
|
+
const withdraw_success = "Withdrawal Successful";
|
|
4159
|
+
const withdraw_canceled = "Withdrawal Canceled";
|
|
4160
|
+
const gas_not_enough = "Insufficient Gas";
|
|
4161
|
+
const gas_not_enough_description = "Please ensure you have enough gas to complete this transaction.";
|
|
4162
|
+
const gas_not_enough_description_with_chain = "Please ensure you have enough {chain} gas to complete this transaction.";
|
|
4163
|
+
const retry = "Retry";
|
|
4164
|
+
const confirm_withdraw = "Confirm withdrawal";
|
|
4165
|
+
const withdrawing = "Processing withdrawal...";
|
|
4166
|
+
const confirm = "Confirm";
|
|
4167
|
+
const cancel = "Cancel";
|
|
4168
|
+
const close = "Close";
|
|
4169
|
+
const column_detail = "Detail";
|
|
4170
|
+
const column_duration = "Duration";
|
|
4171
|
+
const activity_name = "Activity Name";
|
|
4172
|
+
const activity_time = "Activity Time";
|
|
4173
|
+
const level = "Level";
|
|
4174
|
+
const total_xp = "Total XP";
|
|
4175
|
+
const default_xp_points_name = "XP";
|
|
4176
|
+
const xp_to_next_level = "XP to next level";
|
|
4177
|
+
const xp_history = "XP History";
|
|
4178
|
+
const total_points = "Total";
|
|
4179
|
+
const empty_points = "No points history yet";
|
|
4180
|
+
const points_history = "Points History";
|
|
4181
|
+
const page = "Page";
|
|
4182
|
+
const of = "of";
|
|
4183
|
+
const previous = "Previous";
|
|
4184
|
+
const next = "Next";
|
|
4185
|
+
const load_more = "Load More";
|
|
4186
|
+
const showing = "Showing {start}-{end} of {total}";
|
|
4187
|
+
const social_accounts = "Social Media Accounts";
|
|
4188
|
+
const wallet_addresses = "Network List";
|
|
4189
|
+
const evm_chain = "EVM Chain";
|
|
4190
|
+
const primary_address = "Primary Address";
|
|
4191
|
+
const secondary_address = "Secondary Address";
|
|
4192
|
+
const email_address = "Email Address";
|
|
4193
|
+
const bind = "Bind";
|
|
4194
|
+
const unbind = "Unbind";
|
|
4195
|
+
const connect_wallet = "Connect Wallet";
|
|
4196
|
+
const binding = "Binding...";
|
|
4197
|
+
const unbinding = "Unbinding...";
|
|
4198
|
+
const bind_social_todo = "OAuth binding will be available soon";
|
|
4199
|
+
const confirm_unbind = "Confirm Unbind";
|
|
4200
|
+
const unbind_warning = "Are you sure you want to unbind this account?";
|
|
4201
|
+
const kyc_warning = "This address has been KYC verified. After unbinding, you will need to re-verify KYC if you bind it again.";
|
|
4202
|
+
const unbind_cooldown = "Cannot unbind within 24 hours of binding";
|
|
4203
|
+
const last_login_method = "Cannot unbind the last login method";
|
|
4204
|
+
const unbind_success = "Unbind successful";
|
|
4205
|
+
const unbind_failed = "Unbind failed";
|
|
4206
|
+
const bind_success = "Bind successful";
|
|
4207
|
+
const bind_failed = "Bind failed";
|
|
4208
|
+
const connecting_wallet = "Connecting wallet...";
|
|
4209
|
+
const signing_message = "Signing message...";
|
|
4210
|
+
const empty_identity = "No identity options configured";
|
|
4211
|
+
const link_email_account = "Link Email Account";
|
|
4212
|
+
const please_enter_email = "Please enter email address";
|
|
4213
|
+
const please_enter_valid_email = "Please enter a valid email address";
|
|
4214
|
+
const verification_code = "Verification Code";
|
|
4215
|
+
const please_enter_code = "Please enter verification code";
|
|
4216
|
+
const please_enter_valid_code = "Please enter a valid verification code";
|
|
4217
|
+
const send_verification_code = "Send Verification Code";
|
|
4218
|
+
const resend_code = "Resend";
|
|
4219
|
+
const email_already_linked = "This email is already linked to another account";
|
|
4220
|
+
const send_code_success = "Verification code sent";
|
|
4221
|
+
const send_code_failed = "Failed to send verification code";
|
|
4222
|
+
const column_token_symbol = "Token Symbol";
|
|
4223
|
+
const column_network = "Network";
|
|
4224
|
+
const column_withdrawable = "Withdrawable";
|
|
4225
|
+
const column_action = "Action";
|
|
4226
|
+
const chain_label = "Chain";
|
|
4227
|
+
const ok = "OK";
|
|
4228
|
+
const copy = "Copy";
|
|
4229
|
+
const copied = "Copied!";
|
|
4230
|
+
const claim_nft = "Claim NFT";
|
|
4231
|
+
const linked = "Linked";
|
|
4232
|
+
const link_platform_account = "Link {platform} Account";
|
|
4233
|
+
const withdraw_canceled_message = "Your withdrawal was canceled. You can retry the transaction.";
|
|
4234
|
+
const missing_resend_payload = "Missing resend payload";
|
|
4235
|
+
const no_tokens_for_resend = "No tokens available for resend";
|
|
4236
|
+
const failed_load_resend_details = "Failed to load resend details";
|
|
4237
|
+
const frozen_type_campaign = "Campaign Locked";
|
|
4238
|
+
const frozen_type_withdraw = "Pending Withdrawal";
|
|
4239
|
+
const frozen_type_referral = "Referral Locked";
|
|
4240
|
+
const frozen_type_benefit = "Benefit Locked";
|
|
4241
|
+
const frozen_type_tg_mini_app = "TG Mini App";
|
|
4242
|
+
const frozen_type_milestone = "Milestone Locked";
|
|
4243
|
+
const loading = "Loading...";
|
|
4244
|
+
const error = "Something went wrong";
|
|
4245
|
+
const empty_rewards = "No rewards yet";
|
|
4246
|
+
const empty_activity_history = "No activity history";
|
|
4247
|
+
const empty_token = "No tokens yet";
|
|
4248
|
+
const empty_nft = "No NFTs yet";
|
|
4249
|
+
const no_data = "No data";
|
|
4250
|
+
const claim = "Claim";
|
|
4251
|
+
const claimed_txn = "Claimed (Txn)";
|
|
4252
|
+
const manual_drop = "Manual Drop";
|
|
4253
|
+
const column_nft = "NFT";
|
|
4254
|
+
const column_whitelist = "Whitelist";
|
|
4255
|
+
const column_discord_role = "Discord Role";
|
|
4256
|
+
const column_time = "Time";
|
|
4257
|
+
const column_status = "Status";
|
|
4258
|
+
const column_amount = "Amount";
|
|
4259
|
+
const deposited = "Deposited";
|
|
4260
|
+
const distributed_by = "Distributed by";
|
|
4261
|
+
const token_history_telegram_spin = "Telegram Spin";
|
|
4262
|
+
const token_history_telegram_spin_bonus = "Telegram Spin Bonus";
|
|
4263
|
+
const column_token_type = "Type";
|
|
4264
|
+
const column_amount_withdrawable = "Amount Withdrawable";
|
|
4265
|
+
const column_withdraw_amount = "Withdraw Amount";
|
|
4266
|
+
const select_token = "Select Token";
|
|
4267
|
+
const token_amount = "Token Amount";
|
|
4268
|
+
const receive_address = "Receive Address";
|
|
4269
|
+
const max = "MAX";
|
|
4270
|
+
const available_balance = "Available";
|
|
4271
|
+
const please_select_token = "Please select a token";
|
|
4272
|
+
const please_enter_amount = "Please enter an amount";
|
|
4273
|
+
const please_enter_valid_amount = "Please enter a valid amount";
|
|
4274
|
+
const amount_exceeds_balance = "Amount exceeds available balance";
|
|
4275
|
+
const token_not_supported = "Token not supported";
|
|
4276
|
+
const withdrawing_tip = "Please wait while your withdrawal is being processed...";
|
|
4277
|
+
const claiming_nft = "Claiming NFT...";
|
|
4278
|
+
const claim_connecting_wallet = "Connecting wallet...";
|
|
4279
|
+
const claim_switching_network = "Switching network...";
|
|
4280
|
+
const claim_getting_signature = "Getting signature...";
|
|
4281
|
+
const claim_confirm_in_wallet = "Please confirm in your wallet";
|
|
4282
|
+
const claim_transaction_pending = "Transaction pending...";
|
|
4283
|
+
const claim_success = "Claim successful!";
|
|
4284
|
+
const claim_failed = "Claim failed";
|
|
4285
|
+
const claim_canceled = "Transaction was rejected by user.";
|
|
4286
|
+
const view_on_explorer = "View on Explorer";
|
|
4287
|
+
const pending_transaction = "Pending Transaction";
|
|
4288
|
+
const pending_tx_message = "You have a pending transaction";
|
|
4289
|
+
const claim_pending_title = "You have already claimed this NFT, please wait for this transaction to be confirmed.";
|
|
4290
|
+
const claim_pending_check_explorer = "You can check this transaction on explorer:";
|
|
4291
|
+
const claim_pending_hash_label = "Transaction hash:";
|
|
4292
|
+
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.';
|
|
4293
|
+
const claim_pending_receive_address_no_change = "This receive address can’t be changed:";
|
|
4294
|
+
const continue_waiting = "Continue Waiting";
|
|
4295
|
+
const claim_again = "Claim Again";
|
|
4296
|
+
const error_no_wallet = "No wallet found. Please install a wallet extension.";
|
|
4297
|
+
const error_address_mismatch = "Connected wallet address does not match.";
|
|
4298
|
+
const error_network_switch = "Failed to switch network. Please switch manually.";
|
|
4299
|
+
const error_insufficient_gas = "Insufficient gas. Please add more funds to your wallet.";
|
|
4300
|
+
const wallet_not_bind = "Please bind wallet before withdraw";
|
|
4301
|
+
const failed_connect_wallet = "Failed to connect wallet";
|
|
4302
|
+
const confirm_wallet_retry = "Please confirm in your wallet and retry.";
|
|
4303
|
+
const withdraw_failed = "Withdrawal failed";
|
|
4304
|
+
const not_configured = "Not configured";
|
|
4305
|
+
const enMessages = {
|
|
4306
|
+
tab_my_rewards,
|
|
4307
|
+
tab_identity,
|
|
4308
|
+
tab_activity_history,
|
|
4309
|
+
tab_rewards,
|
|
4310
|
+
tab_sprint_odyssey_history,
|
|
4311
|
+
section_you_have_earned,
|
|
4312
|
+
reward_token,
|
|
4313
|
+
reward_xp_level,
|
|
4314
|
+
reward_nft,
|
|
4315
|
+
reward_whitelist,
|
|
4316
|
+
reward_discord_role,
|
|
4317
|
+
reward_points,
|
|
4318
|
+
withdrawable_assets,
|
|
4319
|
+
token_history,
|
|
4320
|
+
withdraw,
|
|
4321
|
+
batch_withdraw,
|
|
4322
|
+
frozen_assets,
|
|
4323
|
+
resend,
|
|
4324
|
+
pending_withdrawals,
|
|
4325
|
+
pending_withdrawals_text,
|
|
4326
|
+
pending_withdrawals_count_label,
|
|
4327
|
+
withdraw_confirm,
|
|
4328
|
+
withdraw_success,
|
|
4329
|
+
withdraw_canceled,
|
|
4330
|
+
gas_not_enough,
|
|
4331
|
+
gas_not_enough_description,
|
|
4332
|
+
gas_not_enough_description_with_chain,
|
|
4333
|
+
retry,
|
|
4334
|
+
confirm_withdraw,
|
|
4335
|
+
withdrawing,
|
|
4336
|
+
confirm,
|
|
4337
|
+
cancel,
|
|
4338
|
+
close,
|
|
4339
|
+
column_detail,
|
|
4340
|
+
column_duration,
|
|
4341
|
+
activity_name,
|
|
4342
|
+
activity_time,
|
|
4343
|
+
level,
|
|
4344
|
+
total_xp,
|
|
4345
|
+
default_xp_points_name,
|
|
4346
|
+
xp_to_next_level,
|
|
4347
|
+
xp_history,
|
|
4348
|
+
total_points,
|
|
4349
|
+
empty_points,
|
|
4350
|
+
points_history,
|
|
4351
|
+
page,
|
|
4352
|
+
of,
|
|
4353
|
+
previous,
|
|
4354
|
+
next,
|
|
4355
|
+
load_more,
|
|
4356
|
+
showing,
|
|
4357
|
+
social_accounts,
|
|
4358
|
+
wallet_addresses,
|
|
4359
|
+
evm_chain,
|
|
4360
|
+
primary_address,
|
|
4361
|
+
secondary_address,
|
|
4362
|
+
email_address,
|
|
4363
|
+
bind,
|
|
4364
|
+
unbind,
|
|
4365
|
+
connect_wallet,
|
|
4366
|
+
binding,
|
|
4367
|
+
unbinding,
|
|
4368
|
+
bind_social_todo,
|
|
4369
|
+
confirm_unbind,
|
|
4370
|
+
unbind_warning,
|
|
4371
|
+
kyc_warning,
|
|
4372
|
+
unbind_cooldown,
|
|
4373
|
+
last_login_method,
|
|
4374
|
+
unbind_success,
|
|
4375
|
+
unbind_failed,
|
|
4376
|
+
bind_success,
|
|
4377
|
+
bind_failed,
|
|
4378
|
+
connecting_wallet,
|
|
4379
|
+
signing_message,
|
|
4380
|
+
empty_identity,
|
|
4381
|
+
link_email_account,
|
|
4382
|
+
please_enter_email,
|
|
4383
|
+
please_enter_valid_email,
|
|
4384
|
+
verification_code,
|
|
4385
|
+
please_enter_code,
|
|
4386
|
+
please_enter_valid_code,
|
|
4387
|
+
send_verification_code,
|
|
4388
|
+
resend_code,
|
|
4389
|
+
email_already_linked,
|
|
4390
|
+
send_code_success,
|
|
4391
|
+
send_code_failed,
|
|
4392
|
+
column_token_symbol,
|
|
4393
|
+
column_network,
|
|
4394
|
+
column_withdrawable,
|
|
4395
|
+
column_action,
|
|
4396
|
+
chain_label,
|
|
4397
|
+
ok,
|
|
4398
|
+
copy,
|
|
4399
|
+
copied,
|
|
4400
|
+
claim_nft,
|
|
4401
|
+
linked,
|
|
4402
|
+
link_platform_account,
|
|
4403
|
+
withdraw_canceled_message,
|
|
4404
|
+
missing_resend_payload,
|
|
4405
|
+
no_tokens_for_resend,
|
|
4406
|
+
failed_load_resend_details,
|
|
4407
|
+
frozen_type_campaign,
|
|
4408
|
+
frozen_type_withdraw,
|
|
4409
|
+
frozen_type_referral,
|
|
4410
|
+
frozen_type_benefit,
|
|
4411
|
+
frozen_type_tg_mini_app,
|
|
4412
|
+
frozen_type_milestone,
|
|
4413
|
+
loading,
|
|
4414
|
+
error,
|
|
4415
|
+
empty_rewards,
|
|
4416
|
+
empty_activity_history,
|
|
4417
|
+
empty_token,
|
|
4418
|
+
empty_nft,
|
|
4419
|
+
no_data,
|
|
4420
|
+
claim,
|
|
4421
|
+
claimed_txn,
|
|
4422
|
+
manual_drop,
|
|
4423
|
+
column_nft,
|
|
4424
|
+
column_whitelist,
|
|
4425
|
+
column_discord_role,
|
|
4426
|
+
column_time,
|
|
4427
|
+
column_status,
|
|
4428
|
+
column_amount,
|
|
4429
|
+
deposited,
|
|
4430
|
+
distributed_by,
|
|
4431
|
+
token_history_telegram_spin,
|
|
4432
|
+
token_history_telegram_spin_bonus,
|
|
4433
|
+
column_token_type,
|
|
4434
|
+
column_amount_withdrawable,
|
|
4435
|
+
column_withdraw_amount,
|
|
4436
|
+
select_token,
|
|
4437
|
+
token_amount,
|
|
4438
|
+
receive_address,
|
|
4439
|
+
max,
|
|
4440
|
+
available_balance,
|
|
4441
|
+
please_select_token,
|
|
4442
|
+
please_enter_amount,
|
|
4443
|
+
please_enter_valid_amount,
|
|
4444
|
+
amount_exceeds_balance,
|
|
4445
|
+
token_not_supported,
|
|
4446
|
+
withdrawing_tip,
|
|
4447
|
+
claiming_nft,
|
|
4448
|
+
claim_connecting_wallet,
|
|
4449
|
+
claim_switching_network,
|
|
4450
|
+
claim_getting_signature,
|
|
4451
|
+
claim_confirm_in_wallet,
|
|
4452
|
+
claim_transaction_pending,
|
|
4453
|
+
claim_success,
|
|
4454
|
+
claim_failed,
|
|
4455
|
+
claim_canceled,
|
|
4456
|
+
view_on_explorer,
|
|
4457
|
+
pending_transaction,
|
|
4458
|
+
pending_tx_message,
|
|
4459
|
+
claim_pending_title,
|
|
4460
|
+
claim_pending_check_explorer,
|
|
4461
|
+
claim_pending_hash_label,
|
|
4462
|
+
claim_pending_claim_again_warn,
|
|
4463
|
+
claim_pending_receive_address_no_change,
|
|
4464
|
+
continue_waiting,
|
|
4465
|
+
claim_again,
|
|
4466
|
+
error_no_wallet,
|
|
4467
|
+
error_address_mismatch,
|
|
4468
|
+
error_network_switch,
|
|
4469
|
+
error_insufficient_gas,
|
|
4470
|
+
wallet_not_bind,
|
|
4471
|
+
failed_connect_wallet,
|
|
4472
|
+
confirm_wallet_retry,
|
|
4473
|
+
withdraw_failed,
|
|
4474
|
+
not_configured
|
|
4475
|
+
};
|
|
4476
|
+
const DEFAULT_CLAIM_MESSAGES = {
|
|
4477
|
+
claimNft: enMessages.claim_nft,
|
|
4478
|
+
claimingNft: enMessages.claiming_nft,
|
|
4479
|
+
claimConnectingWallet: enMessages.claim_connecting_wallet,
|
|
4480
|
+
claimSwitchingNetwork: enMessages.claim_switching_network,
|
|
4481
|
+
claimGettingSignature: enMessages.claim_getting_signature,
|
|
4482
|
+
claimConfirmInWallet: enMessages.claim_confirm_in_wallet,
|
|
4483
|
+
claimTransactionPending: enMessages.claim_transaction_pending,
|
|
4484
|
+
claimSuccess: enMessages.claim_success,
|
|
4485
|
+
claimFailed: enMessages.claim_failed,
|
|
4486
|
+
claimCanceled: enMessages.claim_canceled,
|
|
4487
|
+
viewOnExplorer: enMessages.view_on_explorer,
|
|
4488
|
+
retry: enMessages.retry,
|
|
4489
|
+
close: enMessages.close
|
|
4490
|
+
};
|
|
4491
|
+
function LoadingSpinner() {
|
|
4492
|
+
return /* @__PURE__ */ jsx("div", { className: "taskon-claim-dialog-spinner", children: /* @__PURE__ */ jsx("div", { className: "taskon-claim-dialog-spinner__circle" }) });
|
|
4493
|
+
}
|
|
4494
|
+
function SuccessIcon() {
|
|
4495
|
+
return /* @__PURE__ */ jsxs(
|
|
4496
|
+
"svg",
|
|
4497
|
+
{
|
|
4498
|
+
className: "taskon-claim-dialog-icon taskon-claim-dialog-icon--success",
|
|
4499
|
+
viewBox: "0 0 24 24",
|
|
4500
|
+
fill: "none",
|
|
4501
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
4502
|
+
children: [
|
|
4503
|
+
/* @__PURE__ */ jsx("circle", { cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "2" }),
|
|
4504
|
+
/* @__PURE__ */ jsx(
|
|
4505
|
+
"path",
|
|
4506
|
+
{
|
|
4507
|
+
d: "M8 12L11 15L16 9",
|
|
4508
|
+
stroke: "currentColor",
|
|
4509
|
+
strokeWidth: "2",
|
|
4510
|
+
strokeLinecap: "round",
|
|
4511
|
+
strokeLinejoin: "round"
|
|
4512
|
+
}
|
|
4513
|
+
)
|
|
4514
|
+
]
|
|
4515
|
+
}
|
|
4516
|
+
);
|
|
4517
|
+
}
|
|
4518
|
+
function ErrorIcon() {
|
|
4519
|
+
return /* @__PURE__ */ jsxs(
|
|
4520
|
+
"svg",
|
|
4521
|
+
{
|
|
4522
|
+
className: "taskon-claim-dialog-icon taskon-claim-dialog-icon--error",
|
|
4523
|
+
viewBox: "0 0 24 24",
|
|
4524
|
+
fill: "none",
|
|
4525
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
4526
|
+
children: [
|
|
4527
|
+
/* @__PURE__ */ jsx("circle", { cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "2" }),
|
|
4528
|
+
/* @__PURE__ */ jsx(
|
|
4529
|
+
"path",
|
|
4530
|
+
{
|
|
4531
|
+
d: "M15 9L9 15M9 9L15 15",
|
|
4532
|
+
stroke: "currentColor",
|
|
4533
|
+
strokeWidth: "2",
|
|
4534
|
+
strokeLinecap: "round"
|
|
4535
|
+
}
|
|
4536
|
+
)
|
|
4537
|
+
]
|
|
4538
|
+
}
|
|
4539
|
+
);
|
|
4540
|
+
}
|
|
4541
|
+
function getStatusMessage(status, messages) {
|
|
4542
|
+
switch (status) {
|
|
4543
|
+
case "checking":
|
|
4544
|
+
return messages.claimingNft;
|
|
4545
|
+
case "connecting":
|
|
4546
|
+
return messages.claimConnectingWallet;
|
|
4547
|
+
case "switching":
|
|
4548
|
+
return messages.claimSwitchingNetwork;
|
|
4549
|
+
case "signing":
|
|
4550
|
+
return messages.claimGettingSignature;
|
|
4551
|
+
case "confirming":
|
|
4552
|
+
return messages.claimConfirmInWallet;
|
|
4553
|
+
case "pending":
|
|
4554
|
+
return messages.claimTransactionPending;
|
|
4555
|
+
case "success":
|
|
4556
|
+
return messages.claimSuccess;
|
|
4557
|
+
case "error":
|
|
4558
|
+
return messages.claimFailed;
|
|
4559
|
+
default:
|
|
4560
|
+
return "";
|
|
4561
|
+
}
|
|
4562
|
+
}
|
|
4563
|
+
function getErrorMessage(error2, messages) {
|
|
4564
|
+
if (error2.isUserCancelled()) {
|
|
4565
|
+
return messages.claimCanceled;
|
|
4566
|
+
}
|
|
4567
|
+
const readableMessage = typeof error2.message === "string" ? error2.message.trim() : "";
|
|
4568
|
+
if (readableMessage && readableMessage !== "[object Object]") {
|
|
4569
|
+
return readableMessage;
|
|
4570
|
+
}
|
|
4571
|
+
return messages.claimFailed || DEFAULT_ERROR_MESSAGES[error2.type] || DEFAULT_ERROR_MESSAGES[NftClaimErrorType.Unknown];
|
|
4572
|
+
}
|
|
4573
|
+
function formatTxHash$1(hash) {
|
|
4574
|
+
if (hash.length <= 16) return hash;
|
|
4575
|
+
return `${hash.slice(0, 10)}...${hash.slice(-6)}`;
|
|
4576
|
+
}
|
|
4577
|
+
function ClaimNftDialog({
|
|
4578
|
+
open,
|
|
4579
|
+
onClose,
|
|
4580
|
+
status,
|
|
4581
|
+
error: error2,
|
|
4582
|
+
txHash,
|
|
4583
|
+
claimingNft,
|
|
4584
|
+
explorerUrl,
|
|
4585
|
+
messages,
|
|
4586
|
+
onRetry
|
|
4587
|
+
}) {
|
|
4588
|
+
const resolvedMessages = {
|
|
4589
|
+
...DEFAULT_CLAIM_MESSAGES,
|
|
4590
|
+
...messages
|
|
4591
|
+
};
|
|
4592
|
+
const isLoading = [
|
|
4593
|
+
"checking",
|
|
4594
|
+
"connecting",
|
|
4595
|
+
"switching",
|
|
4596
|
+
"signing",
|
|
4597
|
+
"confirming",
|
|
4598
|
+
"pending"
|
|
4599
|
+
].includes(status);
|
|
4600
|
+
const canClose = status === "success" || status === "error" || status === "idle";
|
|
4601
|
+
const handleClose = () => {
|
|
4602
|
+
if (canClose) {
|
|
4603
|
+
onClose();
|
|
4604
|
+
}
|
|
4605
|
+
};
|
|
4606
|
+
const handleViewTx = () => {
|
|
4607
|
+
if (explorerUrl) {
|
|
4608
|
+
window.open(explorerUrl, "_blank", "noopener,noreferrer");
|
|
4609
|
+
}
|
|
4610
|
+
};
|
|
4611
|
+
return /* @__PURE__ */ jsx(
|
|
4612
|
+
Dialog,
|
|
4613
|
+
{
|
|
4614
|
+
open,
|
|
4615
|
+
onOpenChange: (isOpen) => {
|
|
4616
|
+
if (!isOpen && canClose) {
|
|
4617
|
+
onClose();
|
|
4618
|
+
}
|
|
4619
|
+
},
|
|
4620
|
+
title: resolvedMessages.claimNft,
|
|
4621
|
+
showCloseButton: canClose,
|
|
4622
|
+
contentClassName: "taskon-claim-dialog",
|
|
4623
|
+
maxWidth: 400,
|
|
4624
|
+
children: /* @__PURE__ */ jsxs("div", { className: "taskon-claim-dialog-content", children: [
|
|
4625
|
+
claimingNft && /* @__PURE__ */ jsx("div", { className: "taskon-claim-dialog-nft", children: claimingNft.item.reward_value.collection_image && /* @__PURE__ */ jsx(
|
|
4626
|
+
"img",
|
|
4627
|
+
{
|
|
4628
|
+
src: claimingNft.item.reward_value.collection_image,
|
|
4629
|
+
alt: "NFT",
|
|
4630
|
+
className: "taskon-claim-dialog-nft__image"
|
|
4631
|
+
}
|
|
4632
|
+
) }),
|
|
4633
|
+
/* @__PURE__ */ jsxs("div", { className: "taskon-claim-dialog-status", children: [
|
|
4634
|
+
isLoading && /* @__PURE__ */ jsx(LoadingSpinner, {}),
|
|
4635
|
+
status === "success" && /* @__PURE__ */ jsx(SuccessIcon, {}),
|
|
4636
|
+
status === "error" && /* @__PURE__ */ jsx(ErrorIcon, {})
|
|
4637
|
+
] }),
|
|
4638
|
+
/* @__PURE__ */ jsx("p", { className: "taskon-claim-dialog-message", children: status === "error" && error2 ? getErrorMessage(error2, resolvedMessages) : getStatusMessage(status, resolvedMessages) }),
|
|
4639
|
+
txHash && (status === "pending" || status === "success") && /* @__PURE__ */ jsxs("div", { className: "taskon-claim-dialog-tx", children: [
|
|
4640
|
+
/* @__PURE__ */ jsx("span", { className: "taskon-claim-dialog-tx__label", children: "Tx:" }),
|
|
4641
|
+
/* @__PURE__ */ jsx("span", { className: "taskon-claim-dialog-tx__hash", children: formatTxHash$1(txHash) })
|
|
4642
|
+
] }),
|
|
4643
|
+
/* @__PURE__ */ jsxs("div", { className: "taskon-claim-dialog-actions", children: [
|
|
4644
|
+
txHash && explorerUrl && /* @__PURE__ */ jsx(
|
|
4645
|
+
"button",
|
|
4646
|
+
{
|
|
4647
|
+
type: "button",
|
|
4648
|
+
className: "taskon-claim-dialog-btn taskon-claim-dialog-btn--secondary",
|
|
4649
|
+
onClick: handleViewTx,
|
|
4650
|
+
children: resolvedMessages.viewOnExplorer
|
|
4651
|
+
}
|
|
4652
|
+
),
|
|
4653
|
+
status === "error" && onRetry && /* @__PURE__ */ jsx(
|
|
4654
|
+
"button",
|
|
4655
|
+
{
|
|
4656
|
+
type: "button",
|
|
4657
|
+
className: "taskon-claim-dialog-btn taskon-claim-dialog-btn--primary",
|
|
4658
|
+
onClick: onRetry,
|
|
4659
|
+
children: resolvedMessages.retry
|
|
4660
|
+
}
|
|
4661
|
+
),
|
|
4662
|
+
canClose && /* @__PURE__ */ jsx(
|
|
4663
|
+
"button",
|
|
4664
|
+
{
|
|
4665
|
+
type: "button",
|
|
4666
|
+
className: "taskon-claim-dialog-btn taskon-claim-dialog-btn--primary",
|
|
4667
|
+
onClick: handleClose,
|
|
4668
|
+
children: resolvedMessages.close
|
|
4669
|
+
}
|
|
4670
|
+
)
|
|
4671
|
+
] })
|
|
4672
|
+
] })
|
|
4673
|
+
}
|
|
4674
|
+
);
|
|
4675
|
+
}
|
|
4676
|
+
const DEFAULT_PENDING_MESSAGES = {
|
|
4677
|
+
pendingTransaction: enMessages.pending_transaction,
|
|
4678
|
+
claimPendingTitle: enMessages.claim_pending_title,
|
|
4679
|
+
claimPendingCheckExplorer: enMessages.claim_pending_check_explorer,
|
|
4680
|
+
claimPendingHashLabel: enMessages.claim_pending_hash_label,
|
|
4681
|
+
claimPendingClaimAgainWarn: enMessages.claim_pending_claim_again_warn,
|
|
4682
|
+
claimPendingReceiveAddressNoChange: enMessages.claim_pending_receive_address_no_change,
|
|
4683
|
+
claimAgain: enMessages.claim_again,
|
|
4684
|
+
continueWaiting: enMessages.continue_waiting
|
|
4685
|
+
};
|
|
4686
|
+
function formatTxHash(hash) {
|
|
4687
|
+
if (hash.length <= 16) return hash;
|
|
4688
|
+
return `${hash.slice(0, 10)}...${hash.slice(-6)}`;
|
|
4689
|
+
}
|
|
4690
|
+
function PendingTxDialog({
|
|
4691
|
+
open,
|
|
4692
|
+
onClose,
|
|
4693
|
+
onClaimAgain,
|
|
4694
|
+
onContinueWaiting,
|
|
4695
|
+
txHash,
|
|
4696
|
+
explorerUrl,
|
|
4697
|
+
receiveAddress,
|
|
4698
|
+
messages
|
|
4699
|
+
}) {
|
|
4700
|
+
const resolvedMessages = {
|
|
4701
|
+
...DEFAULT_PENDING_MESSAGES,
|
|
4702
|
+
...messages
|
|
4703
|
+
};
|
|
4704
|
+
const title = resolvedMessages.claimPendingTitle;
|
|
4705
|
+
const checkExplorerText = resolvedMessages.claimPendingCheckExplorer;
|
|
4706
|
+
const hashLabel = resolvedMessages.claimPendingHashLabel;
|
|
4707
|
+
const claimAgainWarn = resolvedMessages.claimPendingClaimAgainWarn;
|
|
4708
|
+
const receiveAddressNoChange = resolvedMessages.claimPendingReceiveAddressNoChange;
|
|
4709
|
+
const handleViewTx = () => {
|
|
4710
|
+
if (explorerUrl) {
|
|
4711
|
+
openInNewTab(explorerUrl);
|
|
4712
|
+
}
|
|
4713
|
+
};
|
|
4714
|
+
return /* @__PURE__ */ jsx(
|
|
4715
|
+
Dialog,
|
|
4716
|
+
{
|
|
4717
|
+
open,
|
|
4718
|
+
onOpenChange: (isOpen) => {
|
|
4719
|
+
if (!isOpen) {
|
|
4720
|
+
onClose();
|
|
4721
|
+
}
|
|
4722
|
+
},
|
|
4723
|
+
title: resolvedMessages.pendingTransaction,
|
|
4724
|
+
showCloseButton: true,
|
|
4725
|
+
contentClassName: "taskon-pending-dialog",
|
|
4726
|
+
maxWidth: 460,
|
|
4727
|
+
children: /* @__PURE__ */ jsxs("div", { className: "taskon-pending-dialog-content", children: [
|
|
4728
|
+
/* @__PURE__ */ jsx("p", { className: "taskon-pending-dialog-title", children: title }),
|
|
4729
|
+
txHash && /* @__PURE__ */ jsx("p", { className: "taskon-pending-dialog-desc", children: checkExplorerText }),
|
|
4730
|
+
txHash && /* @__PURE__ */ jsxs("div", { className: "taskon-pending-dialog-hash-wrap", children: [
|
|
4731
|
+
/* @__PURE__ */ jsx("span", { className: "taskon-pending-dialog-hash-label", children: hashLabel }),
|
|
4732
|
+
explorerUrl ? /* @__PURE__ */ jsx(
|
|
4733
|
+
"button",
|
|
4734
|
+
{
|
|
4735
|
+
type: "button",
|
|
4736
|
+
className: "taskon-pending-dialog-hash-link",
|
|
4737
|
+
onClick: handleViewTx,
|
|
4738
|
+
children: formatTxHash(txHash)
|
|
4739
|
+
}
|
|
4740
|
+
) : /* @__PURE__ */ jsx("span", { className: "taskon-pending-dialog-hash-value", children: formatTxHash(txHash) })
|
|
4741
|
+
] }),
|
|
4742
|
+
/* @__PURE__ */ jsxs("ul", { className: "taskon-pending-dialog-notice-list", children: [
|
|
4743
|
+
/* @__PURE__ */ jsx("li", { className: "taskon-pending-dialog-notice-item", children: claimAgainWarn }),
|
|
4744
|
+
receiveAddress && /* @__PURE__ */ jsxs("li", { className: "taskon-pending-dialog-notice-item", children: [
|
|
4745
|
+
/* @__PURE__ */ jsx("div", { children: receiveAddressNoChange }),
|
|
4746
|
+
/* @__PURE__ */ jsx("div", { className: "taskon-pending-dialog-receive-address", children: receiveAddress })
|
|
4747
|
+
] })
|
|
4748
|
+
] }),
|
|
4749
|
+
/* @__PURE__ */ jsxs("div", { className: "taskon-pending-dialog-actions", children: [
|
|
4750
|
+
/* @__PURE__ */ jsx(
|
|
4751
|
+
"button",
|
|
4752
|
+
{
|
|
4753
|
+
type: "button",
|
|
4754
|
+
className: "taskon-pending-dialog-btn taskon-pending-dialog-btn--secondary",
|
|
4755
|
+
onClick: onClaimAgain,
|
|
4756
|
+
children: resolvedMessages.claimAgain
|
|
4757
|
+
}
|
|
4758
|
+
),
|
|
4759
|
+
/* @__PURE__ */ jsx(
|
|
4760
|
+
"button",
|
|
4761
|
+
{
|
|
4762
|
+
type: "button",
|
|
4763
|
+
className: "taskon-pending-dialog-btn taskon-pending-dialog-btn--primary",
|
|
4764
|
+
onClick: onContinueWaiting,
|
|
4765
|
+
children: resolvedMessages.continueWaiting
|
|
4766
|
+
}
|
|
4767
|
+
)
|
|
4768
|
+
] })
|
|
4769
|
+
] })
|
|
4770
|
+
}
|
|
4771
|
+
);
|
|
4772
|
+
}
|
|
4773
|
+
const loadMessages = createLocaleLoader(
|
|
4774
|
+
enMessages,
|
|
4775
|
+
{
|
|
4776
|
+
ko: () => import("./usercenter-ko-Dtpkn2qb.js").then((module) => ({
|
|
4777
|
+
default: module.default
|
|
4778
|
+
})),
|
|
4779
|
+
ja: () => import("./usercenter-ja-CKE4DJC6.js").then((module) => ({
|
|
4780
|
+
default: module.default
|
|
4781
|
+
})),
|
|
4782
|
+
ru: () => import("./usercenter-ru-DnBGee45.js").then((module) => ({
|
|
4783
|
+
default: module.default
|
|
4784
|
+
})),
|
|
4785
|
+
es: () => import("./usercenter-es-Dz3Wp2vV.js").then((module) => ({
|
|
4786
|
+
default: module.default
|
|
4787
|
+
}))
|
|
4788
|
+
}
|
|
4789
|
+
);
|
|
4790
|
+
function useUserCenterLocale() {
|
|
4791
|
+
return useTranslation({
|
|
4792
|
+
widgetId: "UserCenterWidget",
|
|
4793
|
+
defaultMessages: enMessages,
|
|
4794
|
+
loadMessages
|
|
4795
|
+
});
|
|
4796
|
+
}
|
|
5145
4797
|
function EmptyState({
|
|
5146
4798
|
message,
|
|
5147
4799
|
icon,
|
|
@@ -5153,7 +4805,7 @@ function EmptyState({
|
|
|
5153
4805
|
] });
|
|
5154
4806
|
}
|
|
5155
4807
|
function LoadingState({
|
|
5156
|
-
message
|
|
4808
|
+
message,
|
|
5157
4809
|
className = ""
|
|
5158
4810
|
}) {
|
|
5159
4811
|
return /* @__PURE__ */ jsxs("div", { className: `taskon-user-center-loading ${className}`, children: [
|
|
@@ -5168,10 +4820,10 @@ function Pagination({
|
|
|
5168
4820
|
hasNext,
|
|
5169
4821
|
onPrevious,
|
|
5170
4822
|
onNext,
|
|
5171
|
-
messages,
|
|
5172
4823
|
className = "",
|
|
5173
4824
|
showRange
|
|
5174
4825
|
}) {
|
|
4826
|
+
const { messages } = useUserCenterLocale();
|
|
5175
4827
|
if (totalPages === 0) {
|
|
5176
4828
|
return null;
|
|
5177
4829
|
}
|
|
@@ -5202,6 +4854,7 @@ function Pagination({
|
|
|
5202
4854
|
function WithdrawPending({
|
|
5203
4855
|
count,
|
|
5204
4856
|
text,
|
|
4857
|
+
countAriaLabel,
|
|
5205
4858
|
onClick
|
|
5206
4859
|
}) {
|
|
5207
4860
|
if (count <= 0) {
|
|
@@ -5226,7 +4879,7 @@ function WithdrawPending({
|
|
|
5226
4879
|
"span",
|
|
5227
4880
|
{
|
|
5228
4881
|
className: "taskon-withdraw-pending__count",
|
|
5229
|
-
"aria-label":
|
|
4882
|
+
"aria-label": countAriaLabel,
|
|
5230
4883
|
children: count
|
|
5231
4884
|
}
|
|
5232
4885
|
),
|
|
@@ -5266,12 +4919,17 @@ function formatBalance$2(balance) {
|
|
|
5266
4919
|
if (num >= 1e3) return `${(num / 1e3).toFixed(2)}K`;
|
|
5267
4920
|
return num.toLocaleString(void 0, { maximumFractionDigits: 5 });
|
|
5268
4921
|
}
|
|
4922
|
+
function normalizeImageSrc(src) {
|
|
4923
|
+
if (typeof src !== "string") return null;
|
|
4924
|
+
const trimmed = src.trim();
|
|
4925
|
+
return trimmed.length > 0 ? trimmed : null;
|
|
4926
|
+
}
|
|
5269
4927
|
function TokenAssetList({
|
|
5270
4928
|
data,
|
|
5271
4929
|
loading: loading2,
|
|
5272
4930
|
error: error2,
|
|
5273
4931
|
messages,
|
|
5274
|
-
pendingWithdrawals
|
|
4932
|
+
pendingWithdrawals,
|
|
5275
4933
|
onWithdraw,
|
|
5276
4934
|
onViewFrozen
|
|
5277
4935
|
}) {
|
|
@@ -5282,50 +4940,56 @@ function TokenAssetList({
|
|
|
5282
4940
|
return /* @__PURE__ */ jsx("div", { className: "taskon-user-center-error", children: /* @__PURE__ */ jsx("p", { className: "taskon-user-center-error__message", children: error2.message }) });
|
|
5283
4941
|
}
|
|
5284
4942
|
if (!loading2 && data.length === 0) {
|
|
5285
|
-
return /* @__PURE__ */ jsx(EmptyState, { message: messages.
|
|
4943
|
+
return /* @__PURE__ */ jsx(EmptyState, { message: messages.empty_token });
|
|
5286
4944
|
}
|
|
5287
4945
|
const columns = [
|
|
5288
4946
|
{
|
|
5289
4947
|
key: "token_symbol",
|
|
5290
|
-
title: messages.
|
|
4948
|
+
title: messages.column_token_symbol,
|
|
5291
4949
|
width: 120,
|
|
5292
|
-
render: (_, row) =>
|
|
5293
|
-
|
|
5294
|
-
|
|
5295
|
-
|
|
5296
|
-
|
|
5297
|
-
|
|
5298
|
-
|
|
5299
|
-
|
|
5300
|
-
|
|
5301
|
-
|
|
5302
|
-
|
|
4950
|
+
render: (_, row) => {
|
|
4951
|
+
const tokenIconSrc = normalizeImageSrc(row.token_icon);
|
|
4952
|
+
return /* @__PURE__ */ jsxs("div", { className: "taskon-token-assets__symbol-cell", children: [
|
|
4953
|
+
tokenIconSrc && /* @__PURE__ */ jsx(
|
|
4954
|
+
"img",
|
|
4955
|
+
{
|
|
4956
|
+
src: tokenIconSrc,
|
|
4957
|
+
alt: row.token_symbol,
|
|
4958
|
+
className: "taskon-token-assets__token-icon"
|
|
4959
|
+
}
|
|
4960
|
+
),
|
|
4961
|
+
/* @__PURE__ */ jsx("span", { className: "taskon-token-assets__symbol", children: row.token_symbol })
|
|
4962
|
+
] });
|
|
4963
|
+
}
|
|
5303
4964
|
},
|
|
5304
4965
|
{
|
|
5305
4966
|
key: "chain",
|
|
5306
|
-
title: messages.
|
|
4967
|
+
title: messages.column_network,
|
|
5307
4968
|
width: 164,
|
|
5308
|
-
render: (_, row) =>
|
|
5309
|
-
|
|
5310
|
-
|
|
5311
|
-
|
|
5312
|
-
|
|
5313
|
-
|
|
5314
|
-
|
|
5315
|
-
|
|
5316
|
-
|
|
5317
|
-
|
|
5318
|
-
|
|
4969
|
+
render: (_, row) => {
|
|
4970
|
+
const chainIconSrc = normalizeImageSrc(row.chain_icon);
|
|
4971
|
+
return /* @__PURE__ */ jsxs("div", { className: "taskon-token-assets__network-cell", children: [
|
|
4972
|
+
chainIconSrc && /* @__PURE__ */ jsx(
|
|
4973
|
+
"img",
|
|
4974
|
+
{
|
|
4975
|
+
src: chainIconSrc,
|
|
4976
|
+
alt: row.chain_label,
|
|
4977
|
+
className: "taskon-token-assets__chain-icon"
|
|
4978
|
+
}
|
|
4979
|
+
),
|
|
4980
|
+
/* @__PURE__ */ jsx("span", { className: "taskon-token-assets__chain", children: row.chain_label })
|
|
4981
|
+
] });
|
|
4982
|
+
}
|
|
5319
4983
|
},
|
|
5320
4984
|
{
|
|
5321
4985
|
key: "withdrawable_avail_balance",
|
|
5322
|
-
title: messages.
|
|
4986
|
+
title: messages.column_withdrawable,
|
|
5323
4987
|
width: 142,
|
|
5324
4988
|
render: (_, row) => /* @__PURE__ */ jsx("span", { className: "taskon-token-assets__balance", children: formatBalance$2(row.withdrawable_avail_balance) })
|
|
5325
4989
|
},
|
|
5326
4990
|
{
|
|
5327
4991
|
key: "frozen_balance",
|
|
5328
|
-
title: messages.
|
|
4992
|
+
title: messages.frozen_assets,
|
|
5329
4993
|
width: 142,
|
|
5330
4994
|
render: (_, row) => {
|
|
5331
4995
|
const frozenAmount = formatBalance$2(row.frozen_balance || "0");
|
|
@@ -5346,7 +5010,7 @@ function TokenAssetList({
|
|
|
5346
5010
|
},
|
|
5347
5011
|
{
|
|
5348
5012
|
key: "action",
|
|
5349
|
-
title: messages.
|
|
5013
|
+
title: messages.column_action,
|
|
5350
5014
|
align: "right",
|
|
5351
5015
|
render: (_, row) => {
|
|
5352
5016
|
const isDisabled = !row.can_withdraw;
|
|
@@ -5368,8 +5032,9 @@ function TokenAssetList({
|
|
|
5368
5032
|
/* @__PURE__ */ jsx(
|
|
5369
5033
|
WithdrawPending,
|
|
5370
5034
|
{
|
|
5371
|
-
count:
|
|
5372
|
-
text: messages.
|
|
5035
|
+
count: pendingWithdrawals ?? 0,
|
|
5036
|
+
text: messages.pending_withdrawals_text,
|
|
5037
|
+
countAriaLabel: messages.pending_withdrawals_count_label
|
|
5373
5038
|
}
|
|
5374
5039
|
),
|
|
5375
5040
|
/* @__PURE__ */ jsx(
|
|
@@ -5385,7 +5050,7 @@ function TokenAssetList({
|
|
|
5385
5050
|
loading: loading2 && data.length > 0,
|
|
5386
5051
|
loadingText: messages.loading,
|
|
5387
5052
|
empty: {
|
|
5388
|
-
title: messages.
|
|
5053
|
+
title: messages.empty_token
|
|
5389
5054
|
}
|
|
5390
5055
|
}
|
|
5391
5056
|
)
|
|
@@ -5393,7 +5058,7 @@ function TokenAssetList({
|
|
|
5393
5058
|
}
|
|
5394
5059
|
function formatTime(timestamp) {
|
|
5395
5060
|
const date = new Date(timestamp);
|
|
5396
|
-
return date.toLocaleDateString(
|
|
5061
|
+
return date.toLocaleDateString("en-US", {
|
|
5397
5062
|
year: "numeric",
|
|
5398
5063
|
month: "short",
|
|
5399
5064
|
day: "numeric",
|
|
@@ -5409,17 +5074,17 @@ function formatAmount$1(amount) {
|
|
|
5409
5074
|
function getLockedTypeLabel(type, messages) {
|
|
5410
5075
|
switch (type) {
|
|
5411
5076
|
case "Campaign":
|
|
5412
|
-
return messages.
|
|
5077
|
+
return messages.frozen_type_campaign;
|
|
5413
5078
|
case "Withdraw":
|
|
5414
|
-
return messages.
|
|
5079
|
+
return messages.frozen_type_withdraw;
|
|
5415
5080
|
case "ReferralReward":
|
|
5416
|
-
return messages.
|
|
5081
|
+
return messages.frozen_type_referral;
|
|
5417
5082
|
case "Benefit":
|
|
5418
|
-
return messages.
|
|
5083
|
+
return messages.frozen_type_benefit;
|
|
5419
5084
|
case "TgMiniApp":
|
|
5420
|
-
return messages.
|
|
5085
|
+
return messages.frozen_type_tg_mini_app;
|
|
5421
5086
|
case "CommunityMilestone":
|
|
5422
|
-
return messages.
|
|
5087
|
+
return messages.frozen_type_milestone;
|
|
5423
5088
|
default:
|
|
5424
5089
|
return type;
|
|
5425
5090
|
}
|
|
@@ -5441,18 +5106,18 @@ function FrozenAssetList({
|
|
|
5441
5106
|
return /* @__PURE__ */ jsx("div", { className: "taskon-user-center-error", children: /* @__PURE__ */ jsx("p", { className: "taskon-user-center-error__message", children: error2.message }) });
|
|
5442
5107
|
}
|
|
5443
5108
|
if (!loading2 && data.length === 0) {
|
|
5444
|
-
return /* @__PURE__ */ jsx(EmptyState, { message: messages.
|
|
5109
|
+
return /* @__PURE__ */ jsx(EmptyState, { message: messages.no_data });
|
|
5445
5110
|
}
|
|
5446
5111
|
const columns = [
|
|
5447
5112
|
{
|
|
5448
5113
|
key: "locked_amount",
|
|
5449
|
-
title: messages.
|
|
5114
|
+
title: messages.column_amount,
|
|
5450
5115
|
width: 120,
|
|
5451
5116
|
render: (_, row) => /* @__PURE__ */ jsx("span", { className: "taskon-frozen-assets__amount", children: formatAmount$1(row.locked_amount) })
|
|
5452
5117
|
},
|
|
5453
5118
|
{
|
|
5454
5119
|
key: "type",
|
|
5455
|
-
title: messages.
|
|
5120
|
+
title: messages.column_detail,
|
|
5456
5121
|
render: (_, row) => /* @__PURE__ */ jsxs("div", { className: "taskon-frozen-assets__detail-cell", children: [
|
|
5457
5122
|
/* @__PURE__ */ jsx("span", { className: "taskon-frozen-assets__type", children: getLockedTypeLabel(row.type, messages) }),
|
|
5458
5123
|
row.campaign_name && /* @__PURE__ */ jsx("span", { className: "taskon-frozen-assets__campaign", children: row.campaign_name })
|
|
@@ -5460,13 +5125,13 @@ function FrozenAssetList({
|
|
|
5460
5125
|
},
|
|
5461
5126
|
{
|
|
5462
5127
|
key: "lock_time",
|
|
5463
|
-
title: messages.
|
|
5128
|
+
title: messages.column_time,
|
|
5464
5129
|
width: 160,
|
|
5465
5130
|
render: (_, row) => /* @__PURE__ */ jsx("span", { className: "taskon-frozen-assets__time", children: formatTime(row.lock_time) })
|
|
5466
5131
|
},
|
|
5467
5132
|
{
|
|
5468
5133
|
key: "action",
|
|
5469
|
-
title: messages.
|
|
5134
|
+
title: messages.column_action,
|
|
5470
5135
|
width: 100,
|
|
5471
5136
|
align: "right",
|
|
5472
5137
|
render: (_, row) => {
|
|
@@ -5486,14 +5151,14 @@ function FrozenAssetList({
|
|
|
5486
5151
|
];
|
|
5487
5152
|
return /* @__PURE__ */ jsxs("div", { className: "taskon-frozen-assets", children: [
|
|
5488
5153
|
/* @__PURE__ */ jsxs("div", { className: "taskon-frozen-assets__header", children: [
|
|
5489
|
-
/* @__PURE__ */ jsx("h3", { className: "taskon-frozen-assets__title", children: messages.
|
|
5154
|
+
/* @__PURE__ */ jsx("h3", { className: "taskon-frozen-assets__title", children: messages.frozen_assets }),
|
|
5490
5155
|
onClose && /* @__PURE__ */ jsx(
|
|
5491
5156
|
"button",
|
|
5492
5157
|
{
|
|
5493
5158
|
type: "button",
|
|
5494
5159
|
className: "taskon-frozen-assets__close",
|
|
5495
5160
|
onClick: onClose,
|
|
5496
|
-
"aria-label":
|
|
5161
|
+
"aria-label": messages.close,
|
|
5497
5162
|
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
5163
|
}
|
|
5499
5164
|
)
|
|
@@ -5510,7 +5175,7 @@ function FrozenAssetList({
|
|
|
5510
5175
|
loading: loading2 && data.length > 0,
|
|
5511
5176
|
loadingText: messages.loading,
|
|
5512
5177
|
empty: {
|
|
5513
|
-
title: messages.
|
|
5178
|
+
title: messages.no_data
|
|
5514
5179
|
}
|
|
5515
5180
|
}
|
|
5516
5181
|
),
|
|
@@ -5522,8 +5187,7 @@ function FrozenAssetList({
|
|
|
5522
5187
|
onPrevious: pagination.goToPrevious,
|
|
5523
5188
|
onNext: pagination.goToNext,
|
|
5524
5189
|
hasPrevious: pagination.hasPrevious,
|
|
5525
|
-
hasNext: pagination.hasNext
|
|
5526
|
-
messages
|
|
5190
|
+
hasNext: pagination.hasNext
|
|
5527
5191
|
}
|
|
5528
5192
|
)
|
|
5529
5193
|
] });
|
|
@@ -5561,7 +5225,18 @@ function formatTokenAmount(amount) {
|
|
|
5561
5225
|
zeroText: "0"
|
|
5562
5226
|
});
|
|
5563
5227
|
}
|
|
5564
|
-
function buildRewardCards(rewards, userInfo) {
|
|
5228
|
+
function buildRewardCards(rewards, userInfo, config) {
|
|
5229
|
+
const dataDrivenCards = buildDataDrivenCards(rewards, userInfo);
|
|
5230
|
+
const enabledCardOptions = getEnabledRewardCardOptions(config);
|
|
5231
|
+
if (enabledCardOptions === null) {
|
|
5232
|
+
return dataDrivenCards;
|
|
5233
|
+
}
|
|
5234
|
+
if (enabledCardOptions.length === 0) {
|
|
5235
|
+
return [];
|
|
5236
|
+
}
|
|
5237
|
+
return buildConfigDrivenCards(dataDrivenCards, enabledCardOptions);
|
|
5238
|
+
}
|
|
5239
|
+
function buildDataDrivenCards(rewards, userInfo) {
|
|
5565
5240
|
var _a;
|
|
5566
5241
|
const cards = [];
|
|
5567
5242
|
const xpPointsId = (_a = userInfo == null ? void 0 : userInfo.points_list[0]) == null ? void 0 : _a.points_info.points_id;
|
|
@@ -5649,6 +5324,131 @@ function buildRewardCards(rewards, userInfo) {
|
|
|
5649
5324
|
}
|
|
5650
5325
|
return cards;
|
|
5651
5326
|
}
|
|
5327
|
+
function getEnabledRewardCardOptions(config) {
|
|
5328
|
+
if (!config) {
|
|
5329
|
+
return null;
|
|
5330
|
+
}
|
|
5331
|
+
const rewardTab = config.find((tab) => tab.tab === UserCenterTabType.MyRewards);
|
|
5332
|
+
if (!rewardTab) {
|
|
5333
|
+
return [];
|
|
5334
|
+
}
|
|
5335
|
+
return filterEnabledCards(rewardTab);
|
|
5336
|
+
}
|
|
5337
|
+
function buildConfigDrivenCards(dataDrivenCards, enabledCardOptions) {
|
|
5338
|
+
const usedPointsIds = /* @__PURE__ */ new Set();
|
|
5339
|
+
return enabledCardOptions.map((option, index2) => {
|
|
5340
|
+
var _a;
|
|
5341
|
+
if (option.card === USER_CENTER_REWARD_CARD_TYPES.Points) {
|
|
5342
|
+
const matchedPointsCard = findConfiguredPointsCard(
|
|
5343
|
+
dataDrivenCards,
|
|
5344
|
+
option,
|
|
5345
|
+
usedPointsIds
|
|
5346
|
+
);
|
|
5347
|
+
if (matchedPointsCard) {
|
|
5348
|
+
const matchedPointsId = (_a = matchedPointsCard.pointsData) == null ? void 0 : _a.points_id;
|
|
5349
|
+
if (matchedPointsId != null) {
|
|
5350
|
+
usedPointsIds.add(matchedPointsId);
|
|
5351
|
+
}
|
|
5352
|
+
return {
|
|
5353
|
+
...matchedPointsCard,
|
|
5354
|
+
visible: true
|
|
5355
|
+
};
|
|
5356
|
+
}
|
|
5357
|
+
return buildFallbackPointsCard(option, index2);
|
|
5358
|
+
}
|
|
5359
|
+
const matchedCard = dataDrivenCards.find(
|
|
5360
|
+
(card) => card.type === option.card && card.type !== USER_CENTER_REWARD_CARD_TYPES.Points
|
|
5361
|
+
);
|
|
5362
|
+
if (matchedCard) {
|
|
5363
|
+
return {
|
|
5364
|
+
...matchedCard,
|
|
5365
|
+
visible: true
|
|
5366
|
+
};
|
|
5367
|
+
}
|
|
5368
|
+
return buildFallbackCard(option.card);
|
|
5369
|
+
}).filter((card) => card !== null);
|
|
5370
|
+
}
|
|
5371
|
+
function findConfiguredPointsCard(dataDrivenCards, option, usedPointsIds) {
|
|
5372
|
+
const pointsCards = dataDrivenCards.filter(
|
|
5373
|
+
(card) => card.type === USER_CENTER_REWARD_CARD_TYPES.Points && !!card.pointsData
|
|
5374
|
+
);
|
|
5375
|
+
if (option.pointsId != null) {
|
|
5376
|
+
return pointsCards.find(
|
|
5377
|
+
(card) => card.pointsData.points_id === option.pointsId && !usedPointsIds.has(card.pointsData.points_id)
|
|
5378
|
+
) ?? null;
|
|
5379
|
+
}
|
|
5380
|
+
if (option.pointsName) {
|
|
5381
|
+
return pointsCards.find(
|
|
5382
|
+
(card) => card.pointsData.points_name === option.pointsName && !usedPointsIds.has(card.pointsData.points_id)
|
|
5383
|
+
) ?? null;
|
|
5384
|
+
}
|
|
5385
|
+
return pointsCards.find((card) => !usedPointsIds.has(card.pointsData.points_id)) ?? null;
|
|
5386
|
+
}
|
|
5387
|
+
function buildFallbackCard(cardType) {
|
|
5388
|
+
switch (cardType) {
|
|
5389
|
+
case USER_CENTER_REWARD_CARD_TYPES.Token:
|
|
5390
|
+
return {
|
|
5391
|
+
type: USER_CENTER_REWARD_CARD_TYPES.Token,
|
|
5392
|
+
value: formatTokenAmount("0"),
|
|
5393
|
+
rawValue: "0",
|
|
5394
|
+
visible: true
|
|
5395
|
+
};
|
|
5396
|
+
case USER_CENTER_REWARD_CARD_TYPES.XpLevel:
|
|
5397
|
+
return {
|
|
5398
|
+
type: USER_CENTER_REWARD_CARD_TYPES.XpLevel,
|
|
5399
|
+
value: "Lv.0",
|
|
5400
|
+
rawValue: 0,
|
|
5401
|
+
visible: true,
|
|
5402
|
+
xpLevelData: {
|
|
5403
|
+
level: 0,
|
|
5404
|
+
currentXp: 0,
|
|
5405
|
+
nextLevelXp: 0,
|
|
5406
|
+
percent: 0,
|
|
5407
|
+
xpPointsId: 0,
|
|
5408
|
+
xpPointsName: "XP",
|
|
5409
|
+
xpPointsIcon: ""
|
|
5410
|
+
}
|
|
5411
|
+
};
|
|
5412
|
+
case USER_CENTER_REWARD_CARD_TYPES.Nft:
|
|
5413
|
+
return {
|
|
5414
|
+
type: USER_CENTER_REWARD_CARD_TYPES.Nft,
|
|
5415
|
+
value: "0",
|
|
5416
|
+
rawValue: 0,
|
|
5417
|
+
visible: true
|
|
5418
|
+
};
|
|
5419
|
+
case USER_CENTER_REWARD_CARD_TYPES.Whitelist:
|
|
5420
|
+
return {
|
|
5421
|
+
type: USER_CENTER_REWARD_CARD_TYPES.Whitelist,
|
|
5422
|
+
value: "0",
|
|
5423
|
+
rawValue: 0,
|
|
5424
|
+
visible: true
|
|
5425
|
+
};
|
|
5426
|
+
case USER_CENTER_REWARD_CARD_TYPES.DiscordRole:
|
|
5427
|
+
return {
|
|
5428
|
+
type: USER_CENTER_REWARD_CARD_TYPES.DiscordRole,
|
|
5429
|
+
value: "0",
|
|
5430
|
+
rawValue: 0,
|
|
5431
|
+
visible: true
|
|
5432
|
+
};
|
|
5433
|
+
default:
|
|
5434
|
+
return null;
|
|
5435
|
+
}
|
|
5436
|
+
}
|
|
5437
|
+
function buildFallbackPointsCard(option, index2) {
|
|
5438
|
+
const fallbackPointsId = option.pointsId ?? -(index2 + 1);
|
|
5439
|
+
return {
|
|
5440
|
+
type: USER_CENTER_REWARD_CARD_TYPES.Points,
|
|
5441
|
+
value: "0",
|
|
5442
|
+
rawValue: 0,
|
|
5443
|
+
visible: true,
|
|
5444
|
+
pointsData: {
|
|
5445
|
+
points_id: fallbackPointsId,
|
|
5446
|
+
points_name: option.pointsName || `Points ${index2 + 1}`,
|
|
5447
|
+
points_icon: "",
|
|
5448
|
+
amount: 0
|
|
5449
|
+
}
|
|
5450
|
+
};
|
|
5451
|
+
}
|
|
5652
5452
|
function formatNumber(val) {
|
|
5653
5453
|
if (Math.abs(val) >= 1e6) {
|
|
5654
5454
|
return `${(val / 1e6).toFixed(1)}M`;
|
|
@@ -5664,9 +5464,9 @@ function PointsList({
|
|
|
5664
5464
|
loading: loading2,
|
|
5665
5465
|
error: error2,
|
|
5666
5466
|
pagination,
|
|
5667
|
-
messages,
|
|
5668
5467
|
className = ""
|
|
5669
5468
|
}) {
|
|
5469
|
+
const { messages } = useUserCenterLocale();
|
|
5670
5470
|
if (loading2 && data.length === 0) {
|
|
5671
5471
|
return /* @__PURE__ */ jsx(LoadingState, { message: messages.loading });
|
|
5672
5472
|
}
|
|
@@ -5674,23 +5474,23 @@ function PointsList({
|
|
|
5674
5474
|
return /* @__PURE__ */ jsx("div", { className: "taskon-user-center-error", children: /* @__PURE__ */ jsx("p", { className: "taskon-user-center-error__message", children: error2.message }) });
|
|
5675
5475
|
}
|
|
5676
5476
|
if (!loading2 && data.length === 0) {
|
|
5677
|
-
return /* @__PURE__ */ jsx(EmptyState, { message: messages.
|
|
5477
|
+
return /* @__PURE__ */ jsx(EmptyState, { message: messages.empty_points });
|
|
5678
5478
|
}
|
|
5679
5479
|
const columns = [
|
|
5680
5480
|
{
|
|
5681
5481
|
key: "detail",
|
|
5682
|
-
title: messages.
|
|
5482
|
+
title: messages.column_detail,
|
|
5683
5483
|
render: (_, row) => /* @__PURE__ */ jsx("span", { className: "taskon-points-list__name", children: row.name })
|
|
5684
5484
|
},
|
|
5685
5485
|
{
|
|
5686
5486
|
key: "time",
|
|
5687
|
-
title: messages.
|
|
5487
|
+
title: messages.column_time,
|
|
5688
5488
|
width: 160,
|
|
5689
5489
|
render: (_, row) => /* @__PURE__ */ jsx("span", { className: "taskon-points-list__time", children: formatDateTime(row.receive_time) })
|
|
5690
5490
|
},
|
|
5691
5491
|
{
|
|
5692
5492
|
key: "amount",
|
|
5693
|
-
title: `${messages.
|
|
5493
|
+
title: `${messages.column_amount} (${pointsInfo.points_name || messages.reward_points})`,
|
|
5694
5494
|
width: 160,
|
|
5695
5495
|
align: "right",
|
|
5696
5496
|
render: (_, row) => {
|
|
@@ -5731,7 +5531,7 @@ function PointsList({
|
|
|
5731
5531
|
/* @__PURE__ */ jsx("h3", { className: "taskon-points-list__title", children: pointsInfo.points_name }),
|
|
5732
5532
|
/* @__PURE__ */ jsxs("div", { className: "taskon-points-list__total", children: [
|
|
5733
5533
|
/* @__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.
|
|
5534
|
+
/* @__PURE__ */ jsx("span", { className: "taskon-points-list__total-label", children: messages.total_points })
|
|
5735
5535
|
] })
|
|
5736
5536
|
] }),
|
|
5737
5537
|
/* @__PURE__ */ jsx("div", { className: "taskon-points-list__table-wrap", children: /* @__PURE__ */ jsx(
|
|
@@ -5745,7 +5545,7 @@ function PointsList({
|
|
|
5745
5545
|
loading: loading2 && data.length > 0,
|
|
5746
5546
|
loadingText: messages.loading,
|
|
5747
5547
|
empty: {
|
|
5748
|
-
title: messages.
|
|
5548
|
+
title: messages.empty_points
|
|
5749
5549
|
}
|
|
5750
5550
|
}
|
|
5751
5551
|
) }),
|
|
@@ -5757,8 +5557,7 @@ function PointsList({
|
|
|
5757
5557
|
onPrevious: pagination.goToPrevious,
|
|
5758
5558
|
onNext: pagination.goToNext,
|
|
5759
5559
|
hasPrevious: pagination.hasPrevious,
|
|
5760
|
-
hasNext: pagination.hasNext
|
|
5761
|
-
messages
|
|
5560
|
+
hasNext: pagination.hasNext
|
|
5762
5561
|
}
|
|
5763
5562
|
)
|
|
5764
5563
|
] });
|
|
@@ -5817,7 +5616,7 @@ function NftTable({
|
|
|
5817
5616
|
return /* @__PURE__ */ jsx("div", { className: "taskon-user-center-error", children: /* @__PURE__ */ jsx("p", { className: "taskon-user-center-error__message", children: error2.message }) });
|
|
5818
5617
|
}
|
|
5819
5618
|
if (!loading2 && data.length === 0) {
|
|
5820
|
-
return /* @__PURE__ */ jsx(EmptyState, { message: messages.
|
|
5619
|
+
return /* @__PURE__ */ jsx(EmptyState, { message: messages.empty_nft });
|
|
5821
5620
|
}
|
|
5822
5621
|
const renderStatus = (item) => {
|
|
5823
5622
|
const nftValue = item.reward_value;
|
|
@@ -5832,7 +5631,7 @@ function NftTable({
|
|
|
5832
5631
|
onTxClick == null ? void 0 : onTxClick(item);
|
|
5833
5632
|
},
|
|
5834
5633
|
title: nftValue.tx_hash,
|
|
5835
|
-
children: messages.
|
|
5634
|
+
children: messages.claimed_txn
|
|
5836
5635
|
}
|
|
5837
5636
|
);
|
|
5838
5637
|
}
|
|
@@ -5850,12 +5649,12 @@ function NftTable({
|
|
|
5850
5649
|
}
|
|
5851
5650
|
);
|
|
5852
5651
|
}
|
|
5853
|
-
return /* @__PURE__ */ jsx("span", { className: "taskon-reward-table__manual-drop", children: messages.
|
|
5652
|
+
return /* @__PURE__ */ jsx("span", { className: "taskon-reward-table__manual-drop", children: messages.manual_drop });
|
|
5854
5653
|
};
|
|
5855
5654
|
const columns = [
|
|
5856
5655
|
{
|
|
5857
5656
|
key: "nft",
|
|
5858
|
-
title: messages.
|
|
5657
|
+
title: messages.column_nft,
|
|
5859
5658
|
width: 100,
|
|
5860
5659
|
render: (_, row) => {
|
|
5861
5660
|
const nftValue = row.reward_value;
|
|
@@ -5872,18 +5671,18 @@ function NftTable({
|
|
|
5872
5671
|
},
|
|
5873
5672
|
{
|
|
5874
5673
|
key: "detail",
|
|
5875
|
-
title: messages.
|
|
5674
|
+
title: messages.column_detail,
|
|
5876
5675
|
render: (_, row) => /* @__PURE__ */ jsx("span", { className: "taskon-reward-table__campaign-name", children: row.campaign_name })
|
|
5877
5676
|
},
|
|
5878
5677
|
{
|
|
5879
5678
|
key: "time",
|
|
5880
|
-
title: messages.
|
|
5679
|
+
title: messages.column_time,
|
|
5881
5680
|
width: 160,
|
|
5882
5681
|
render: (_, row) => /* @__PURE__ */ jsx("span", { className: "taskon-reward-table__time", children: formatDateTime(row.reward_time) })
|
|
5883
5682
|
},
|
|
5884
5683
|
{
|
|
5885
5684
|
key: "status",
|
|
5886
|
-
title: messages.
|
|
5685
|
+
title: messages.column_status,
|
|
5887
5686
|
width: 120,
|
|
5888
5687
|
align: "right",
|
|
5889
5688
|
render: (_, row) => renderStatus(row)
|
|
@@ -5901,7 +5700,7 @@ function NftTable({
|
|
|
5901
5700
|
loading: loading2 && data.length > 0,
|
|
5902
5701
|
loadingText: messages.loading,
|
|
5903
5702
|
empty: {
|
|
5904
|
-
title: messages.
|
|
5703
|
+
title: messages.empty_nft
|
|
5905
5704
|
}
|
|
5906
5705
|
}
|
|
5907
5706
|
),
|
|
@@ -5913,18 +5712,17 @@ function NftTable({
|
|
|
5913
5712
|
onPrevious: pagination.goToPrevious,
|
|
5914
5713
|
onNext: pagination.goToNext,
|
|
5915
5714
|
hasPrevious: pagination.hasPrevious,
|
|
5916
|
-
hasNext: pagination.hasNext
|
|
5917
|
-
messages
|
|
5715
|
+
hasNext: pagination.hasNext
|
|
5918
5716
|
}
|
|
5919
5717
|
)
|
|
5920
5718
|
] });
|
|
5921
5719
|
}
|
|
5922
|
-
function getDetailName(item,
|
|
5720
|
+
function getDetailName(item, messages) {
|
|
5923
5721
|
if (item.roulette_reward_type === RouletteRewardType.Spin) {
|
|
5924
|
-
return
|
|
5722
|
+
return messages.token_history_telegram_spin;
|
|
5925
5723
|
}
|
|
5926
5724
|
if (item.roulette_reward_type === RouletteRewardType.Bonus) {
|
|
5927
|
-
return
|
|
5725
|
+
return messages.token_history_telegram_spin_bonus;
|
|
5928
5726
|
}
|
|
5929
5727
|
return item.task_name || item.campaign_name || item.milestone_name || "";
|
|
5930
5728
|
}
|
|
@@ -5942,7 +5740,7 @@ function TokenHistoryTable({
|
|
|
5942
5740
|
return /* @__PURE__ */ jsx("div", { className: "taskon-user-center-error", children: /* @__PURE__ */ jsx("p", { className: "taskon-user-center-error__message", children: error2.message }) });
|
|
5943
5741
|
}
|
|
5944
5742
|
if (!loading2 && data.length === 0) {
|
|
5945
|
-
return /* @__PURE__ */ jsx(EmptyState, { message: messages.
|
|
5743
|
+
return /* @__PURE__ */ jsx(EmptyState, { message: messages.empty_token });
|
|
5946
5744
|
}
|
|
5947
5745
|
const renderAmount = (item) => {
|
|
5948
5746
|
var _a;
|
|
@@ -5968,7 +5766,7 @@ function TokenHistoryTable({
|
|
|
5968
5766
|
)
|
|
5969
5767
|
] }),
|
|
5970
5768
|
/* @__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.
|
|
5769
|
+
/* @__PURE__ */ jsx("span", { className: "taskon-token-history__distributed-label", children: messages.distributed_by }),
|
|
5972
5770
|
(communityInfo == null ? void 0 : communityInfo.community_avatar) && /* @__PURE__ */ jsx(
|
|
5973
5771
|
"img",
|
|
5974
5772
|
{
|
|
@@ -5984,18 +5782,18 @@ function TokenHistoryTable({
|
|
|
5984
5782
|
const columns = [
|
|
5985
5783
|
{
|
|
5986
5784
|
key: "detail",
|
|
5987
|
-
title: messages.
|
|
5988
|
-
render: (_, row) => /* @__PURE__ */ jsx("span", { className: "taskon-reward-table__campaign-name", children: getDetailName(row) })
|
|
5785
|
+
title: messages.column_detail,
|
|
5786
|
+
render: (_, row) => /* @__PURE__ */ jsx("span", { className: "taskon-reward-table__campaign-name", children: getDetailName(row, messages) })
|
|
5989
5787
|
},
|
|
5990
5788
|
{
|
|
5991
5789
|
key: "time",
|
|
5992
|
-
title: messages.
|
|
5790
|
+
title: messages.column_time,
|
|
5993
5791
|
width: 160,
|
|
5994
5792
|
render: (_, row) => /* @__PURE__ */ jsx("span", { className: "taskon-reward-table__time", children: formatDateTime(row.reward_time) })
|
|
5995
5793
|
},
|
|
5996
5794
|
{
|
|
5997
5795
|
key: "amount",
|
|
5998
|
-
title: messages.
|
|
5796
|
+
title: messages.column_amount,
|
|
5999
5797
|
width: 200,
|
|
6000
5798
|
align: "right",
|
|
6001
5799
|
render: (_, row) => renderAmount(row)
|
|
@@ -6013,7 +5811,7 @@ function TokenHistoryTable({
|
|
|
6013
5811
|
loading: loading2 && data.length > 0,
|
|
6014
5812
|
loadingText: messages.loading,
|
|
6015
5813
|
empty: {
|
|
6016
|
-
title: messages.
|
|
5814
|
+
title: messages.empty_token
|
|
6017
5815
|
}
|
|
6018
5816
|
}
|
|
6019
5817
|
),
|
|
@@ -6025,8 +5823,7 @@ function TokenHistoryTable({
|
|
|
6025
5823
|
onPrevious: pagination.goToPrevious,
|
|
6026
5824
|
onNext: pagination.goToNext,
|
|
6027
5825
|
hasPrevious: pagination.hasPrevious,
|
|
6028
|
-
hasNext: pagination.hasNext
|
|
6029
|
-
messages
|
|
5826
|
+
hasNext: pagination.hasNext
|
|
6030
5827
|
}
|
|
6031
5828
|
)
|
|
6032
5829
|
] });
|
|
@@ -6050,7 +5847,7 @@ function useRewardDetails(options) {
|
|
|
6050
5847
|
const pagination = usePagination({
|
|
6051
5848
|
total,
|
|
6052
5849
|
pageSize,
|
|
6053
|
-
initialPage:
|
|
5850
|
+
initialPage: 0,
|
|
6054
5851
|
mode
|
|
6055
5852
|
});
|
|
6056
5853
|
const fetchData = useCallback(
|
|
@@ -6065,7 +5862,7 @@ function useRewardDetails(options) {
|
|
|
6065
5862
|
const response = await api.listMyCommunityRewardDetails({
|
|
6066
5863
|
reward_type: rewardType,
|
|
6067
5864
|
page: {
|
|
6068
|
-
page_no: pageNo
|
|
5865
|
+
page_no: pageNo,
|
|
6069
5866
|
// API 使用 0-based 索引
|
|
6070
5867
|
size: pageSize
|
|
6071
5868
|
}
|
|
@@ -6087,20 +5884,23 @@ function useRewardDetails(options) {
|
|
|
6087
5884
|
[api, rewardType, pageSize]
|
|
6088
5885
|
);
|
|
6089
5886
|
const refresh = useCallback(async () => {
|
|
6090
|
-
pagination.goToPage(1);
|
|
6091
5887
|
setData([]);
|
|
6092
|
-
|
|
5888
|
+
if (pagination.page === 0) {
|
|
5889
|
+
await fetchData(0, false);
|
|
5890
|
+
return;
|
|
5891
|
+
}
|
|
5892
|
+
pagination.goToPage(0);
|
|
6093
5893
|
}, [fetchData, pagination]);
|
|
6094
5894
|
useEffect(() => {
|
|
6095
|
-
if (autoLoad) {
|
|
6096
|
-
|
|
5895
|
+
if (!autoLoad) {
|
|
5896
|
+
return;
|
|
6097
5897
|
}
|
|
6098
|
-
|
|
6099
|
-
useEffect(() => {
|
|
6100
|
-
if (mode === "pagination" && pagination.page > 1) {
|
|
5898
|
+
if (mode === "pagination") {
|
|
6101
5899
|
fetchData(pagination.page, false);
|
|
5900
|
+
return;
|
|
6102
5901
|
}
|
|
6103
|
-
|
|
5902
|
+
fetchData(pagination.page, pagination.page > 0);
|
|
5903
|
+
}, [autoLoad, mode, pagination.page, fetchData]);
|
|
6104
5904
|
return {
|
|
6105
5905
|
data,
|
|
6106
5906
|
loading: loading2,
|
|
@@ -6121,7 +5921,7 @@ function useTokenAssets(options = {}) {
|
|
|
6121
5921
|
const { client } = useTaskOnContext();
|
|
6122
5922
|
const [data, setData] = useState([]);
|
|
6123
5923
|
const [total, setTotal] = useState(0);
|
|
6124
|
-
const [
|
|
5924
|
+
const [pendingWithdrawals, setPendingWithdrawals] = useState(0);
|
|
6125
5925
|
const [loading2, setLoading] = useState(false);
|
|
6126
5926
|
const [error2, setError] = useState(null);
|
|
6127
5927
|
const api = useMemo(() => {
|
|
@@ -6196,7 +5996,7 @@ function useTokenAssets(options = {}) {
|
|
|
6196
5996
|
loading: loading2,
|
|
6197
5997
|
error: error2,
|
|
6198
5998
|
total,
|
|
6199
|
-
pendingWithdrawals
|
|
5999
|
+
pendingWithdrawals,
|
|
6200
6000
|
pagination,
|
|
6201
6001
|
refresh
|
|
6202
6002
|
};
|
|
@@ -6527,7 +6327,7 @@ function useTokenWithdraw(options = {}) {
|
|
|
6527
6327
|
evmAdapter,
|
|
6528
6328
|
onError
|
|
6529
6329
|
]);
|
|
6530
|
-
const
|
|
6330
|
+
const confirmWithdraw = useCallback(async () => {
|
|
6531
6331
|
if (!api) {
|
|
6532
6332
|
setError(new Error("TaskOn client not initialized"));
|
|
6533
6333
|
return;
|
|
@@ -6662,7 +6462,7 @@ function useTokenWithdraw(options = {}) {
|
|
|
6662
6462
|
initBatchWithdraw,
|
|
6663
6463
|
initWithdrawTokens,
|
|
6664
6464
|
checkAndConnect,
|
|
6665
|
-
confirmWithdraw
|
|
6465
|
+
confirmWithdraw,
|
|
6666
6466
|
cancelWithdraw,
|
|
6667
6467
|
reset
|
|
6668
6468
|
};
|
|
@@ -6742,7 +6542,13 @@ function usePointsHistory(options) {
|
|
|
6742
6542
|
};
|
|
6743
6543
|
}
|
|
6744
6544
|
function useWithdrawForm(options) {
|
|
6745
|
-
const {
|
|
6545
|
+
const {
|
|
6546
|
+
tokenAssets,
|
|
6547
|
+
initialTokenId,
|
|
6548
|
+
initialChain,
|
|
6549
|
+
getDecimals,
|
|
6550
|
+
messages
|
|
6551
|
+
} = options;
|
|
6746
6552
|
const resolveDecimals = useCallback(
|
|
6747
6553
|
(tokenAddress) => {
|
|
6748
6554
|
if (getDecimals) {
|
|
@@ -6768,23 +6574,23 @@ function useWithdrawForm(options) {
|
|
|
6768
6574
|
const validation = useMemo(() => {
|
|
6769
6575
|
const errors = {};
|
|
6770
6576
|
if (!selectedToken) {
|
|
6771
|
-
errors.token =
|
|
6577
|
+
errors.token = messages.please_select_token;
|
|
6772
6578
|
}
|
|
6773
6579
|
if (!withdrawAmount || withdrawAmount === "") {
|
|
6774
|
-
errors.amount =
|
|
6580
|
+
errors.amount = messages.please_enter_amount;
|
|
6775
6581
|
} else {
|
|
6776
6582
|
const amount = parseFloat(withdrawAmount);
|
|
6777
6583
|
if (isNaN(amount) || amount <= 0) {
|
|
6778
|
-
errors.amount =
|
|
6584
|
+
errors.amount = messages.please_enter_valid_amount;
|
|
6779
6585
|
} else if (selectedToken && amount > parseFloat(selectedToken.withdrawable_avail_balance)) {
|
|
6780
|
-
errors.amount =
|
|
6586
|
+
errors.amount = messages.amount_exceeds_balance;
|
|
6781
6587
|
}
|
|
6782
6588
|
}
|
|
6783
6589
|
return {
|
|
6784
6590
|
isValid: Object.keys(errors).length === 0,
|
|
6785
6591
|
errors
|
|
6786
6592
|
};
|
|
6787
|
-
}, [selectedToken, withdrawAmount]);
|
|
6593
|
+
}, [selectedToken, withdrawAmount, messages]);
|
|
6788
6594
|
useEffect(() => {
|
|
6789
6595
|
if (tokenAssets.length === 0) return;
|
|
6790
6596
|
if (initialTokenId) {
|
|
@@ -6960,17 +6766,16 @@ function TokenRewardContent({
|
|
|
6960
6766
|
tokenAssets,
|
|
6961
6767
|
tokenAssetsLoading,
|
|
6962
6768
|
tokenAssetsError,
|
|
6963
|
-
pendingWithdrawals
|
|
6964
|
-
tokenHistory
|
|
6769
|
+
pendingWithdrawals,
|
|
6770
|
+
tokenHistory,
|
|
6965
6771
|
tokenHistoryLoading,
|
|
6966
6772
|
tokenHistoryError,
|
|
6967
6773
|
tokenHistoryPagination,
|
|
6968
|
-
messages,
|
|
6969
6774
|
onWithdraw,
|
|
6970
6775
|
onBatchWithdraw,
|
|
6971
6776
|
showFrozenAssets = false,
|
|
6972
6777
|
onViewFrozen,
|
|
6973
|
-
frozenAssets
|
|
6778
|
+
frozenAssets = [],
|
|
6974
6779
|
frozenAssetsLoading = false,
|
|
6975
6780
|
frozenAssetsError = null,
|
|
6976
6781
|
frozenAssetsPagination,
|
|
@@ -6978,6 +6783,7 @@ function TokenRewardContent({
|
|
|
6978
6783
|
onResendFrozenAsset,
|
|
6979
6784
|
onCloseFrozenAssets
|
|
6980
6785
|
}) {
|
|
6786
|
+
const { messages } = useUserCenterLocale();
|
|
6981
6787
|
return /* @__PURE__ */ jsxs("div", { className: "taskon-my-rewards", children: [
|
|
6982
6788
|
/* @__PURE__ */ jsx("div", { className: "taskon-my-rewards__section", children: /* @__PURE__ */ jsx(
|
|
6983
6789
|
TokenAssetList,
|
|
@@ -6986,7 +6792,7 @@ function TokenRewardContent({
|
|
|
6986
6792
|
loading: tokenAssetsLoading,
|
|
6987
6793
|
error: tokenAssetsError,
|
|
6988
6794
|
messages,
|
|
6989
|
-
pendingWithdrawals
|
|
6795
|
+
pendingWithdrawals,
|
|
6990
6796
|
onWithdraw,
|
|
6991
6797
|
onBatchWithdraw,
|
|
6992
6798
|
onViewFrozen
|
|
@@ -6995,7 +6801,7 @@ function TokenRewardContent({
|
|
|
6995
6801
|
showFrozenAssets && frozenAssetsPagination && /* @__PURE__ */ jsx("div", { className: "taskon-my-rewards__section", children: /* @__PURE__ */ jsx(
|
|
6996
6802
|
FrozenAssetList,
|
|
6997
6803
|
{
|
|
6998
|
-
data:
|
|
6804
|
+
data: frozenAssets,
|
|
6999
6805
|
loading: frozenAssetsLoading,
|
|
7000
6806
|
error: frozenAssetsError,
|
|
7001
6807
|
pagination: frozenAssetsPagination,
|
|
@@ -7006,11 +6812,11 @@ function TokenRewardContent({
|
|
|
7006
6812
|
}
|
|
7007
6813
|
) }),
|
|
7008
6814
|
/* @__PURE__ */ jsxs("div", { className: "taskon-my-rewards__section", children: [
|
|
7009
|
-
/* @__PURE__ */ jsx("h3", { className: "taskon-my-rewards__section-title", children: messages.
|
|
6815
|
+
/* @__PURE__ */ jsx("h3", { className: "taskon-my-rewards__section-title", children: messages.token_history }),
|
|
7010
6816
|
/* @__PURE__ */ jsx(
|
|
7011
6817
|
TokenHistoryTable,
|
|
7012
6818
|
{
|
|
7013
|
-
data:
|
|
6819
|
+
data: tokenHistory,
|
|
7014
6820
|
loading: tokenHistoryLoading,
|
|
7015
6821
|
error: tokenHistoryError,
|
|
7016
6822
|
pagination: tokenHistoryPagination,
|
|
@@ -7025,24 +6831,22 @@ function NftRewardContent({
|
|
|
7025
6831
|
loading: loading2,
|
|
7026
6832
|
error: error2,
|
|
7027
6833
|
pagination,
|
|
7028
|
-
messages,
|
|
7029
6834
|
onClaim: customOnClaim,
|
|
7030
6835
|
onTxClick: customOnTxClick,
|
|
7031
6836
|
onClaimSuccess,
|
|
7032
6837
|
onClaimError
|
|
7033
6838
|
}) {
|
|
6839
|
+
const { messages } = useUserCenterLocale();
|
|
7034
6840
|
const { chainMap } = useChainMap();
|
|
7035
6841
|
const [isClaimDialogOpen, setIsClaimDialogOpen] = useState(false);
|
|
7036
|
-
const [isWalletDialogOpen, setIsWalletDialogOpen] = useState(false);
|
|
7037
6842
|
const [isPendingDialogOpen, setIsPendingDialogOpen] = useState(false);
|
|
7038
6843
|
const [pendingTxDialogState, setPendingTxDialogState] = useState(null);
|
|
7039
|
-
const [pendingWalletClaimItem, setPendingWalletClaimItem] = useState(null);
|
|
7040
6844
|
const pendingDecisionResolverRef = useRef(null);
|
|
7041
|
-
const resolvePendingDecision = useCallback((
|
|
6845
|
+
const resolvePendingDecision = useCallback((claimAgain) => {
|
|
7042
6846
|
const resolver = pendingDecisionResolverRef.current;
|
|
7043
6847
|
if (resolver) {
|
|
7044
6848
|
pendingDecisionResolverRef.current = null;
|
|
7045
|
-
resolver(
|
|
6849
|
+
resolver(claimAgain);
|
|
7046
6850
|
}
|
|
7047
6851
|
}, []);
|
|
7048
6852
|
useEffect(() => {
|
|
@@ -7054,8 +6858,8 @@ function NftRewardContent({
|
|
|
7054
6858
|
status: claimStatus,
|
|
7055
6859
|
error: claimError,
|
|
7056
6860
|
txHash: claimTxHash,
|
|
7057
|
-
claimingNft
|
|
7058
|
-
claimNft
|
|
6861
|
+
claimingNft,
|
|
6862
|
+
claimNft,
|
|
7059
6863
|
reset: resetClaim
|
|
7060
6864
|
} = useNftClaim({
|
|
7061
6865
|
onSuccess: (txHash, item) => {
|
|
@@ -7066,49 +6870,75 @@ function NftRewardContent({
|
|
|
7066
6870
|
},
|
|
7067
6871
|
onPendingFound: async (pendingKey, txHash, chainName, item) => {
|
|
7068
6872
|
const rewardValue = item.reward_value;
|
|
7069
|
-
const
|
|
6873
|
+
const receiveAddress = typeof rewardValue.receiver_address === "string" ? rewardValue.receiver_address : void 0;
|
|
7070
6874
|
resolvePendingDecision(false);
|
|
7071
6875
|
setIsClaimDialogOpen(false);
|
|
7072
6876
|
setPendingTxDialogState({
|
|
7073
6877
|
pendingKey,
|
|
7074
6878
|
txHash,
|
|
7075
6879
|
chainName,
|
|
7076
|
-
receiveAddress
|
|
6880
|
+
receiveAddress
|
|
7077
6881
|
});
|
|
7078
6882
|
setIsPendingDialogOpen(true);
|
|
7079
6883
|
return new Promise((resolve) => {
|
|
7080
6884
|
pendingDecisionResolverRef.current = resolve;
|
|
7081
6885
|
});
|
|
7082
|
-
},
|
|
7083
|
-
onNeedWalletDialog: () => {
|
|
7084
|
-
setIsClaimDialogOpen(false);
|
|
7085
|
-
setIsWalletDialogOpen(true);
|
|
7086
6886
|
}
|
|
7087
6887
|
});
|
|
7088
6888
|
const explorerUrl = useMemo(() => {
|
|
7089
|
-
if (!claimTxHash || !
|
|
7090
|
-
const chainName =
|
|
6889
|
+
if (!claimTxHash || !claimingNft) return void 0;
|
|
6890
|
+
const chainName = claimingNft.chainName;
|
|
7091
6891
|
const chainInfo = chainMap[chainName.toLowerCase()];
|
|
7092
6892
|
if (!chainInfo) return void 0;
|
|
7093
6893
|
return getTxExplorerUrl(chainInfo, claimTxHash);
|
|
7094
|
-
}, [claimTxHash,
|
|
6894
|
+
}, [claimTxHash, claimingNft, chainMap]);
|
|
7095
6895
|
const pendingExplorerUrl = useMemo(() => {
|
|
7096
6896
|
if (!(pendingTxDialogState == null ? void 0 : pendingTxDialogState.txHash)) return void 0;
|
|
7097
6897
|
const chainInfo = chainMap[pendingTxDialogState.chainName.toLowerCase()];
|
|
7098
6898
|
if (!chainInfo) return void 0;
|
|
7099
6899
|
return getTxExplorerUrl(chainInfo, pendingTxDialogState.txHash);
|
|
7100
6900
|
}, [pendingTxDialogState, chainMap]);
|
|
6901
|
+
const claimDialogMessages = useMemo(
|
|
6902
|
+
() => ({
|
|
6903
|
+
claimNft: messages.claim_nft,
|
|
6904
|
+
claimingNft: messages.claiming_nft,
|
|
6905
|
+
claimConnectingWallet: messages.claim_connecting_wallet,
|
|
6906
|
+
claimSwitchingNetwork: messages.claim_switching_network,
|
|
6907
|
+
claimGettingSignature: messages.claim_getting_signature,
|
|
6908
|
+
claimConfirmInWallet: messages.claim_confirm_in_wallet,
|
|
6909
|
+
claimTransactionPending: messages.claim_transaction_pending,
|
|
6910
|
+
claimSuccess: messages.claim_success,
|
|
6911
|
+
claimFailed: messages.claim_failed,
|
|
6912
|
+
claimCanceled: messages.claim_canceled,
|
|
6913
|
+
viewOnExplorer: messages.view_on_explorer,
|
|
6914
|
+
retry: messages.retry,
|
|
6915
|
+
close: messages.close
|
|
6916
|
+
}),
|
|
6917
|
+
[messages]
|
|
6918
|
+
);
|
|
6919
|
+
const pendingDialogMessages = useMemo(
|
|
6920
|
+
() => ({
|
|
6921
|
+
pendingTransaction: messages.pending_transaction,
|
|
6922
|
+
claimPendingTitle: messages.claim_pending_title,
|
|
6923
|
+
claimPendingCheckExplorer: messages.claim_pending_check_explorer,
|
|
6924
|
+
claimPendingHashLabel: messages.claim_pending_hash_label,
|
|
6925
|
+
claimPendingClaimAgainWarn: messages.claim_pending_claim_again_warn,
|
|
6926
|
+
claimPendingReceiveAddressNoChange: messages.claim_pending_receive_address_no_change,
|
|
6927
|
+
claimAgain: messages.claim_again,
|
|
6928
|
+
continueWaiting: messages.continue_waiting
|
|
6929
|
+
}),
|
|
6930
|
+
[messages]
|
|
6931
|
+
);
|
|
7101
6932
|
const handleNftClaim = useCallback(
|
|
7102
6933
|
(item) => {
|
|
7103
6934
|
if (customOnClaim) {
|
|
7104
6935
|
customOnClaim(item);
|
|
7105
6936
|
return;
|
|
7106
6937
|
}
|
|
7107
|
-
setPendingWalletClaimItem(item);
|
|
7108
6938
|
setIsClaimDialogOpen(true);
|
|
7109
|
-
void
|
|
6939
|
+
void claimNft(item);
|
|
7110
6940
|
},
|
|
7111
|
-
[customOnClaim,
|
|
6941
|
+
[customOnClaim, claimNft]
|
|
7112
6942
|
);
|
|
7113
6943
|
const handleNftTxClick = useCallback(
|
|
7114
6944
|
(item) => {
|
|
@@ -7136,35 +6966,9 @@ function NftRewardContent({
|
|
|
7136
6966
|
},
|
|
7137
6967
|
[customOnTxClick, chainMap]
|
|
7138
6968
|
);
|
|
7139
|
-
const handleWalletConnect = useCallback(
|
|
7140
|
-
async (address, provider) => {
|
|
7141
|
-
const targetItem = pendingWalletClaimItem ?? (claimingNft2 == null ? void 0 : claimingNft2.item);
|
|
7142
|
-
if (!targetItem) {
|
|
7143
|
-
throw new Error("No pending NFT claim target found");
|
|
7144
|
-
}
|
|
7145
|
-
if (!provider || typeof provider.request !== "function") {
|
|
7146
|
-
throw new Error("Invalid wallet provider");
|
|
7147
|
-
}
|
|
7148
|
-
const popupAdapter = createEthereumAdapterFromProvider(
|
|
7149
|
-
provider,
|
|
7150
|
-
{
|
|
7151
|
-
// 弹窗回调已返回地址,先注入,避免重复 connect
|
|
7152
|
-
address
|
|
7153
|
-
}
|
|
7154
|
-
);
|
|
7155
|
-
setIsWalletDialogOpen(false);
|
|
7156
|
-
setIsClaimDialogOpen(true);
|
|
7157
|
-
await claimNft2(targetItem, popupAdapter);
|
|
7158
|
-
},
|
|
7159
|
-
[pendingWalletClaimItem, claimingNft2, claimNft2]
|
|
7160
|
-
);
|
|
7161
|
-
const handleWalletError = useCallback((errorMessage) => {
|
|
7162
|
-
console.warn("Wallet dialog connect failed:", errorMessage);
|
|
7163
|
-
}, []);
|
|
7164
6969
|
const handlePendingContinueWaiting = useCallback(() => {
|
|
7165
6970
|
setIsPendingDialogOpen(false);
|
|
7166
6971
|
setPendingTxDialogState(null);
|
|
7167
|
-
setPendingWalletClaimItem(null);
|
|
7168
6972
|
resetClaim();
|
|
7169
6973
|
resolvePendingDecision(false);
|
|
7170
6974
|
}, [resetClaim, resolvePendingDecision]);
|
|
@@ -7178,16 +6982,14 @@ function NftRewardContent({
|
|
|
7178
6982
|
setIsClaimDialogOpen(false);
|
|
7179
6983
|
setTimeout(() => {
|
|
7180
6984
|
resetClaim();
|
|
7181
|
-
setPendingWalletClaimItem(null);
|
|
7182
6985
|
}, 200);
|
|
7183
6986
|
}, [resetClaim]);
|
|
7184
6987
|
const handleRetry = useCallback(() => {
|
|
7185
|
-
if (
|
|
6988
|
+
if (claimingNft) {
|
|
7186
6989
|
resetClaim();
|
|
7187
|
-
|
|
7188
|
-
void claimNft2(claimingNft2.item);
|
|
6990
|
+
void claimNft(claimingNft.item);
|
|
7189
6991
|
}
|
|
7190
|
-
}, [
|
|
6992
|
+
}, [claimingNft, resetClaim, claimNft]);
|
|
7191
6993
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
7192
6994
|
/* @__PURE__ */ jsx(
|
|
7193
6995
|
NftTable,
|
|
@@ -7209,9 +7011,9 @@ function NftRewardContent({
|
|
|
7209
7011
|
status: claimStatus,
|
|
7210
7012
|
error: claimError,
|
|
7211
7013
|
txHash: claimTxHash,
|
|
7212
|
-
claimingNft
|
|
7014
|
+
claimingNft,
|
|
7213
7015
|
explorerUrl,
|
|
7214
|
-
messages,
|
|
7016
|
+
messages: claimDialogMessages,
|
|
7215
7017
|
onRetry: handleRetry
|
|
7216
7018
|
}
|
|
7217
7019
|
),
|
|
@@ -7225,16 +7027,7 @@ function NftRewardContent({
|
|
|
7225
7027
|
txHash: pendingTxDialogState == null ? void 0 : pendingTxDialogState.txHash,
|
|
7226
7028
|
explorerUrl: pendingExplorerUrl,
|
|
7227
7029
|
receiveAddress: pendingTxDialogState == null ? void 0 : pendingTxDialogState.receiveAddress,
|
|
7228
|
-
messages
|
|
7229
|
-
}
|
|
7230
|
-
),
|
|
7231
|
-
/* @__PURE__ */ jsx(
|
|
7232
|
-
BindWalletDialog,
|
|
7233
|
-
{
|
|
7234
|
-
open: isWalletDialogOpen,
|
|
7235
|
-
onOpenChange: setIsWalletDialogOpen,
|
|
7236
|
-
onConnect: handleWalletConnect,
|
|
7237
|
-
onError: handleWalletError
|
|
7030
|
+
messages: pendingDialogMessages
|
|
7238
7031
|
}
|
|
7239
7032
|
)
|
|
7240
7033
|
] });
|
|
@@ -7245,14 +7038,17 @@ function formatBalance$1(balance) {
|
|
|
7245
7038
|
return num.toLocaleString(void 0, { maximumFractionDigits: 6 });
|
|
7246
7039
|
}
|
|
7247
7040
|
function TokenSelect({
|
|
7041
|
+
messages,
|
|
7248
7042
|
tokens,
|
|
7249
7043
|
value,
|
|
7250
|
-
placeholder
|
|
7044
|
+
placeholder,
|
|
7251
7045
|
disabled = false,
|
|
7252
7046
|
hasError = false,
|
|
7253
|
-
notSupportText
|
|
7047
|
+
notSupportText,
|
|
7254
7048
|
onChange
|
|
7255
7049
|
}) {
|
|
7050
|
+
const placeholderText = placeholder ?? messages.select_token;
|
|
7051
|
+
const notSupportLabel = notSupportText ?? messages.token_not_supported;
|
|
7256
7052
|
const tokenOptions = useMemo(() => {
|
|
7257
7053
|
return tokens.map((token) => ({
|
|
7258
7054
|
label: token.token_symbol,
|
|
@@ -7305,18 +7101,18 @@ function TokenSelect({
|
|
|
7305
7101
|
canWithdraw: tokenOption.can_withdraw,
|
|
7306
7102
|
active,
|
|
7307
7103
|
disabled: tokenOption.disabled,
|
|
7308
|
-
notSupportText
|
|
7104
|
+
notSupportText: notSupportLabel
|
|
7309
7105
|
}
|
|
7310
7106
|
);
|
|
7311
7107
|
},
|
|
7312
|
-
[
|
|
7108
|
+
[notSupportLabel]
|
|
7313
7109
|
);
|
|
7314
7110
|
return /* @__PURE__ */ jsx(
|
|
7315
7111
|
Select,
|
|
7316
7112
|
{
|
|
7317
7113
|
options: tokenOptions,
|
|
7318
7114
|
value,
|
|
7319
|
-
placeholder,
|
|
7115
|
+
placeholder: placeholderText,
|
|
7320
7116
|
disabled,
|
|
7321
7117
|
hasError,
|
|
7322
7118
|
showCheckedIcon: false,
|
|
@@ -7386,6 +7182,7 @@ function formatAddress(address, prefixLen = 6, suffixLen = 4) {
|
|
|
7386
7182
|
return `${address.slice(0, prefixLen)}...${address.slice(-suffixLen)}`;
|
|
7387
7183
|
}
|
|
7388
7184
|
function ReceiverAddress({
|
|
7185
|
+
messages,
|
|
7389
7186
|
chainIcon,
|
|
7390
7187
|
chainLabel,
|
|
7391
7188
|
address
|
|
@@ -7396,13 +7193,13 @@ function ReceiverAddress({
|
|
|
7396
7193
|
"img",
|
|
7397
7194
|
{
|
|
7398
7195
|
src: chainIcon,
|
|
7399
|
-
alt: chainLabel ||
|
|
7196
|
+
alt: chainLabel || messages.chain_label,
|
|
7400
7197
|
className: "taskon-receiver-address__chain-icon"
|
|
7401
7198
|
}
|
|
7402
7199
|
),
|
|
7403
|
-
/* @__PURE__ */ jsx("span", { className: "taskon-receiver-address__chain-label", children: chainLabel ||
|
|
7200
|
+
/* @__PURE__ */ jsx("span", { className: "taskon-receiver-address__chain-label", children: chainLabel || messages.no_data })
|
|
7404
7201
|
] }),
|
|
7405
|
-
/* @__PURE__ */ jsx("div", { className: "taskon-receiver-address__address", children: address ? formatAddress(address) :
|
|
7202
|
+
/* @__PURE__ */ jsx("div", { className: "taskon-receiver-address__address", children: address ? formatAddress(address) : messages.no_data })
|
|
7406
7203
|
] });
|
|
7407
7204
|
}
|
|
7408
7205
|
const PAGE_SIZE = 5;
|
|
@@ -7662,7 +7459,7 @@ function BatchTokenTable({
|
|
|
7662
7459
|
// Token 类型列
|
|
7663
7460
|
{
|
|
7664
7461
|
key: "token_symbol",
|
|
7665
|
-
title: messages.
|
|
7462
|
+
title: messages.column_token_type,
|
|
7666
7463
|
width: 105,
|
|
7667
7464
|
align: "center",
|
|
7668
7465
|
render: (_, row) => /* @__PURE__ */ jsxs("div", { className: "taskon-batch-token-table__token-cell", children: [
|
|
@@ -7680,7 +7477,7 @@ function BatchTokenTable({
|
|
|
7680
7477
|
// 可提现金额列
|
|
7681
7478
|
{
|
|
7682
7479
|
key: "withdrawable_avail_balance",
|
|
7683
|
-
title: messages.
|
|
7480
|
+
title: messages.column_amount_withdrawable,
|
|
7684
7481
|
width: 120,
|
|
7685
7482
|
align: "center",
|
|
7686
7483
|
render: (_, row) => formatBalance(row.withdrawable_avail_balance)
|
|
@@ -7688,7 +7485,7 @@ function BatchTokenTable({
|
|
|
7688
7485
|
// 提现金额输入列
|
|
7689
7486
|
{
|
|
7690
7487
|
key: "amount",
|
|
7691
|
-
title: messages.
|
|
7488
|
+
title: messages.column_withdraw_amount,
|
|
7692
7489
|
width: 120,
|
|
7693
7490
|
align: "center",
|
|
7694
7491
|
render: (_, row) => {
|
|
@@ -7773,18 +7570,18 @@ function WithdrawFormInit({
|
|
|
7773
7570
|
return /* @__PURE__ */ jsxs("div", { className: "taskon-withdraw-form-init", children: [
|
|
7774
7571
|
/* @__PURE__ */ jsx("h2", { className: "taskon-withdraw-form-init__title", children: messages.withdraw }),
|
|
7775
7572
|
/* @__PURE__ */ jsxs("div", { className: "taskon-withdraw-form-init__content", children: [
|
|
7776
|
-
/* @__PURE__ */ jsx(FormItem, { label:
|
|
7573
|
+
/* @__PURE__ */ jsx(FormItem, { label: messages.select_token, type: "dialog", error: validationErrors.token, children: /* @__PURE__ */ jsx(
|
|
7777
7574
|
TokenSelect,
|
|
7778
7575
|
{
|
|
7576
|
+
messages,
|
|
7779
7577
|
tokens: withdrawableTokens,
|
|
7780
7578
|
value: selectedTokenId,
|
|
7781
|
-
placeholder: "Select Token",
|
|
7782
7579
|
disabled: tokenAssetsLoading || submitting,
|
|
7783
7580
|
hasError: !!validationErrors.token,
|
|
7784
7581
|
onChange: onTokenChange
|
|
7785
7582
|
}
|
|
7786
7583
|
) }),
|
|
7787
|
-
/* @__PURE__ */ jsx(FormItem, { label:
|
|
7584
|
+
/* @__PURE__ */ jsx(FormItem, { label: messages.token_amount, type: "dialog", error: validationErrors.amount, children: /* @__PURE__ */ jsx(
|
|
7788
7585
|
AmountInput,
|
|
7789
7586
|
{
|
|
7790
7587
|
value: withdrawAmount,
|
|
@@ -7796,9 +7593,10 @@ function WithdrawFormInit({
|
|
|
7796
7593
|
onChange: onAmountChange
|
|
7797
7594
|
}
|
|
7798
7595
|
) }),
|
|
7799
|
-
/* @__PURE__ */ jsx(FormItem, { label:
|
|
7596
|
+
/* @__PURE__ */ jsx(FormItem, { label: messages.receive_address, type: "dialog", children: /* @__PURE__ */ jsx(
|
|
7800
7597
|
ReceiverAddress,
|
|
7801
7598
|
{
|
|
7599
|
+
messages,
|
|
7802
7600
|
chainIcon: selectedToken == null ? void 0 : selectedToken.chain_icon,
|
|
7803
7601
|
chainLabel: selectedToken == null ? void 0 : selectedToken.chain_label,
|
|
7804
7602
|
address: userAddress
|
|
@@ -7809,7 +7607,7 @@ function WithdrawFormInit({
|
|
|
7809
7607
|
{
|
|
7810
7608
|
checked: batchEnabled,
|
|
7811
7609
|
onChange: onBatchEnabledChange,
|
|
7812
|
-
label: messages.
|
|
7610
|
+
label: messages.batch_withdraw,
|
|
7813
7611
|
disabled: submitting
|
|
7814
7612
|
}
|
|
7815
7613
|
) }) }),
|
|
@@ -7854,7 +7652,7 @@ function WithdrawConfirm({
|
|
|
7854
7652
|
onCancel
|
|
7855
7653
|
}) {
|
|
7856
7654
|
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.
|
|
7655
|
+
/* @__PURE__ */ jsx("div", { className: "taskon-withdraw-confirm__header", children: /* @__PURE__ */ jsx("h3", { className: "taskon-withdraw-confirm__title", children: messages.withdraw_confirm }) }),
|
|
7858
7656
|
/* @__PURE__ */ jsxs("div", { className: "taskon-withdraw-confirm__content", children: [
|
|
7859
7657
|
/* @__PURE__ */ jsx("div", { className: "taskon-withdraw-confirm__tokens", children: tokens.map((token) => /* @__PURE__ */ jsxs("div", { className: "taskon-withdraw-confirm__token", children: [
|
|
7860
7658
|
/* @__PURE__ */ jsxs("div", { className: "taskon-withdraw-confirm__token-info", children: [
|
|
@@ -7944,7 +7742,7 @@ function WithdrawSuccess({
|
|
|
7944
7742
|
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
7743
|
}
|
|
7946
7744
|
) }),
|
|
7947
|
-
/* @__PURE__ */ jsx("h3", { className: "taskon-withdraw-success__title", children: messages.
|
|
7745
|
+
/* @__PURE__ */ jsx("h3", { className: "taskon-withdraw-success__title", children: messages.withdraw_success }),
|
|
7948
7746
|
txHash && /* @__PURE__ */ jsxs("p", { className: "taskon-withdraw-success__tx-hash", children: [
|
|
7949
7747
|
"TX: ",
|
|
7950
7748
|
txHash.slice(0, 10),
|
|
@@ -7978,8 +7776,8 @@ function WithdrawCancel({
|
|
|
7978
7776
|
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
7777
|
}
|
|
7980
7778
|
) }),
|
|
7981
|
-
/* @__PURE__ */ jsx("h3", { className: "taskon-withdraw-cancel__title", children: messages.
|
|
7982
|
-
/* @__PURE__ */ jsx("p", { className: "taskon-withdraw-cancel__message", children: messages.
|
|
7779
|
+
/* @__PURE__ */ jsx("h3", { className: "taskon-withdraw-cancel__title", children: messages.withdraw_canceled }),
|
|
7780
|
+
/* @__PURE__ */ jsx("p", { className: "taskon-withdraw-cancel__message", children: messages.withdraw_canceled_message }),
|
|
7983
7781
|
/* @__PURE__ */ jsxs("div", { className: "taskon-withdraw-cancel__actions", children: [
|
|
7984
7782
|
/* @__PURE__ */ jsx(
|
|
7985
7783
|
Button,
|
|
@@ -8005,6 +7803,7 @@ function WithdrawGasNotEnough({
|
|
|
8005
7803
|
chainLabel,
|
|
8006
7804
|
onClose
|
|
8007
7805
|
}) {
|
|
7806
|
+
const message = chainLabel ? messages.gas_not_enough_description_with_chain.replace("{chain}", chainLabel) : messages.gas_not_enough_description;
|
|
8008
7807
|
return /* @__PURE__ */ jsxs("div", { className: "taskon-withdraw-gas-not-enough", children: [
|
|
8009
7808
|
/* @__PURE__ */ jsx("div", { className: "taskon-withdraw-gas-not-enough__icon", children: /* @__PURE__ */ jsx(
|
|
8010
7809
|
"svg",
|
|
@@ -8016,8 +7815,8 @@ function WithdrawGasNotEnough({
|
|
|
8016
7815
|
children: /* @__PURE__ */ jsx("path", { d: "M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z" })
|
|
8017
7816
|
}
|
|
8018
7817
|
) }),
|
|
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:
|
|
7818
|
+
/* @__PURE__ */ jsx("h3", { className: "taskon-withdraw-gas-not-enough__title", children: messages.gas_not_enough }),
|
|
7819
|
+
/* @__PURE__ */ jsx("p", { className: "taskon-withdraw-gas-not-enough__message", children: message }),
|
|
8021
7820
|
/* @__PURE__ */ jsx(
|
|
8022
7821
|
Button,
|
|
8023
7822
|
{
|
|
@@ -8032,22 +7831,21 @@ function WithdrawGasNotEnough({
|
|
|
8032
7831
|
function getDialogTitle(status, messages) {
|
|
8033
7832
|
switch (status) {
|
|
8034
7833
|
case "confirm":
|
|
8035
|
-
return messages.
|
|
7834
|
+
return messages.withdraw_confirm;
|
|
8036
7835
|
case "loading":
|
|
8037
7836
|
return messages.loading;
|
|
8038
7837
|
case "success":
|
|
8039
|
-
return messages.
|
|
7838
|
+
return messages.withdraw_success;
|
|
8040
7839
|
case "cancel":
|
|
8041
|
-
return messages.
|
|
7840
|
+
return messages.withdraw_canceled;
|
|
8042
7841
|
case "noEnough":
|
|
8043
|
-
return messages.
|
|
7842
|
+
return messages.gas_not_enough;
|
|
8044
7843
|
default:
|
|
8045
7844
|
return messages.withdraw;
|
|
8046
7845
|
}
|
|
8047
7846
|
}
|
|
8048
7847
|
function WithdrawForm({
|
|
8049
7848
|
open,
|
|
8050
|
-
messages,
|
|
8051
7849
|
tokenAssets,
|
|
8052
7850
|
tokenAssetsLoading,
|
|
8053
7851
|
userAddress,
|
|
@@ -8058,10 +7856,13 @@ function WithdrawForm({
|
|
|
8058
7856
|
onClose,
|
|
8059
7857
|
onSuccess
|
|
8060
7858
|
}) {
|
|
7859
|
+
const { messages } = useUserCenterLocale();
|
|
8061
7860
|
const [submitting, setSubmitting] = useState(false);
|
|
8062
7861
|
const { toast } = useToast();
|
|
8063
7862
|
const { userInfo } = useTaskOnContext();
|
|
8064
|
-
const isResendMode = Boolean(
|
|
7863
|
+
const isResendMode = Boolean(
|
|
7864
|
+
resend2 && resendTokenItems && resendTokenItems.length > 0
|
|
7865
|
+
);
|
|
8065
7866
|
const { getDecimals } = useTokenDecimals({
|
|
8066
7867
|
tokenAssets
|
|
8067
7868
|
});
|
|
@@ -8069,8 +7870,9 @@ function WithdrawForm({
|
|
|
8069
7870
|
tokenAssets,
|
|
8070
7871
|
initialTokenId,
|
|
8071
7872
|
initialChain,
|
|
8072
|
-
getDecimals
|
|
7873
|
+
getDecimals,
|
|
8073
7874
|
// 传入精度获取函数
|
|
7875
|
+
messages
|
|
8074
7876
|
});
|
|
8075
7877
|
const resolvedUserAddress = useMemo(() => {
|
|
8076
7878
|
var _a;
|
|
@@ -8089,35 +7891,27 @@ function WithdrawForm({
|
|
|
8089
7891
|
switch (errType) {
|
|
8090
7892
|
case TxErrorType.AccountMismatch: {
|
|
8091
7893
|
if (error2.message === WITHDRAW_WALLET_NOT_BOUND_MESSAGE) {
|
|
8092
|
-
toast.error(
|
|
8093
|
-
messages.walletNotBind ?? "Please bind wallet before withdraw"
|
|
8094
|
-
);
|
|
7894
|
+
toast.error(messages.wallet_not_bind);
|
|
8095
7895
|
} else {
|
|
8096
|
-
toast.error(
|
|
8097
|
-
messages.errorAddressMismatch ?? "Connected wallet address does not match."
|
|
8098
|
-
);
|
|
7896
|
+
toast.error(messages.error_address_mismatch);
|
|
8099
7897
|
}
|
|
8100
7898
|
break;
|
|
8101
7899
|
}
|
|
8102
7900
|
case TxErrorType.ChainMismatch:
|
|
8103
|
-
toast.error(
|
|
8104
|
-
messages.errorNetworkSwitch ?? "Failed to switch network. Please switch manually."
|
|
8105
|
-
);
|
|
7901
|
+
toast.error(messages.error_network_switch);
|
|
8106
7902
|
break;
|
|
8107
7903
|
case TxErrorType.BalanceNotEnough:
|
|
8108
|
-
toast.error(
|
|
8109
|
-
messages.errorInsufficientGas ?? "Insufficient gas. Please add more funds to your wallet."
|
|
8110
|
-
);
|
|
7904
|
+
toast.error(messages.error_insufficient_gas);
|
|
8111
7905
|
break;
|
|
8112
7906
|
case TxErrorType.ConnectFailed:
|
|
8113
|
-
toast.error(
|
|
7907
|
+
toast.error(messages.failed_connect_wallet);
|
|
8114
7908
|
break;
|
|
8115
7909
|
case TxErrorType.Canceled:
|
|
8116
7910
|
case TxErrorType.TransactionFailed:
|
|
8117
|
-
toast.error(
|
|
7911
|
+
toast.error(messages.confirm_wallet_retry);
|
|
8118
7912
|
break;
|
|
8119
7913
|
default:
|
|
8120
|
-
toast.error(
|
|
7914
|
+
toast.error(messages.withdraw_failed);
|
|
8121
7915
|
}
|
|
8122
7916
|
},
|
|
8123
7917
|
[toast, messages]
|
|
@@ -8136,11 +7930,11 @@ function WithdrawForm({
|
|
|
8136
7930
|
});
|
|
8137
7931
|
const handleResendSubmit = useCallback(async () => {
|
|
8138
7932
|
if (!resolvedUserAddress) {
|
|
8139
|
-
toast.error(messages.
|
|
7933
|
+
toast.error(messages.wallet_not_bind);
|
|
8140
7934
|
return;
|
|
8141
7935
|
}
|
|
8142
7936
|
if (!resendTokenItems || resendTokenItems.length === 0) {
|
|
8143
|
-
toast.error(messages.
|
|
7937
|
+
toast.error(messages.no_tokens_for_resend);
|
|
8144
7938
|
return;
|
|
8145
7939
|
}
|
|
8146
7940
|
try {
|
|
@@ -8161,8 +7955,8 @@ function WithdrawForm({
|
|
|
8161
7955
|
resendTokenItems,
|
|
8162
7956
|
withdraw2,
|
|
8163
7957
|
toast,
|
|
8164
|
-
messages.
|
|
8165
|
-
messages.
|
|
7958
|
+
messages.wallet_not_bind,
|
|
7959
|
+
messages.no_tokens_for_resend
|
|
8166
7960
|
]);
|
|
8167
7961
|
const handleSubmit = useCallback(async () => {
|
|
8168
7962
|
if (isResendMode) {
|
|
@@ -8173,7 +7967,7 @@ function WithdrawForm({
|
|
|
8173
7967
|
return;
|
|
8174
7968
|
}
|
|
8175
7969
|
if (!resolvedUserAddress) {
|
|
8176
|
-
toast.error(messages.
|
|
7970
|
+
toast.error(messages.wallet_not_bind);
|
|
8177
7971
|
return;
|
|
8178
7972
|
}
|
|
8179
7973
|
const tokens = form.buildWithdrawTokens();
|
|
@@ -8196,7 +7990,8 @@ function WithdrawForm({
|
|
|
8196
7990
|
withdraw2,
|
|
8197
7991
|
resolvedUserAddress,
|
|
8198
7992
|
toast,
|
|
8199
|
-
messages.
|
|
7993
|
+
messages.wallet_not_bind,
|
|
7994
|
+
messages.no_tokens_for_resend
|
|
8200
7995
|
]);
|
|
8201
7996
|
const handleConfirm = useCallback(async () => {
|
|
8202
7997
|
await withdraw2.confirmWithdraw();
|
|
@@ -8321,38 +8116,31 @@ function WithdrawForm({
|
|
|
8321
8116
|
}
|
|
8322
8117
|
export {
|
|
8323
8118
|
AssetImage as A,
|
|
8324
|
-
|
|
8325
|
-
ClaimNftDialog as C,
|
|
8119
|
+
Content2 as C,
|
|
8326
8120
|
EmptyState as E,
|
|
8327
|
-
FrozenAssetList as F,
|
|
8328
8121
|
Input as I,
|
|
8329
8122
|
LoadingState as L,
|
|
8330
8123
|
NftRewardContent as N,
|
|
8331
8124
|
Pagination as P,
|
|
8332
8125
|
Root2 as R,
|
|
8333
|
-
|
|
8126
|
+
TokenRewardContent as T,
|
|
8334
8127
|
WithdrawForm as W,
|
|
8335
|
-
|
|
8336
|
-
|
|
8337
|
-
|
|
8338
|
-
|
|
8339
|
-
|
|
8340
|
-
|
|
8341
|
-
|
|
8342
|
-
|
|
8343
|
-
|
|
8344
|
-
|
|
8345
|
-
|
|
8346
|
-
|
|
8347
|
-
|
|
8348
|
-
|
|
8349
|
-
|
|
8350
|
-
|
|
8351
|
-
|
|
8352
|
-
|
|
8353
|
-
TipPopover as s,
|
|
8354
|
-
toWithdrawItem as t,
|
|
8355
|
-
useRewardDetails as u,
|
|
8356
|
-
InfoIcon as v,
|
|
8357
|
-
en as w
|
|
8128
|
+
useBindSocialAccount as a,
|
|
8129
|
+
buildRewardCards as b,
|
|
8130
|
+
useTokenAssets as c,
|
|
8131
|
+
useRewardDetails as d,
|
|
8132
|
+
usePointsHistory as e,
|
|
8133
|
+
formatDateTime as f,
|
|
8134
|
+
PointsList as g,
|
|
8135
|
+
Trigger as h,
|
|
8136
|
+
Portal as i,
|
|
8137
|
+
Arrow2 as j,
|
|
8138
|
+
useChainMap as k,
|
|
8139
|
+
useNftClaim as l,
|
|
8140
|
+
ClaimNftDialog as m,
|
|
8141
|
+
enMessages as n,
|
|
8142
|
+
PendingTxDialog as o,
|
|
8143
|
+
TipPopover as p,
|
|
8144
|
+
InfoIcon as q,
|
|
8145
|
+
useUserCenterLocale as u
|
|
8358
8146
|
};
|