payment-kit 1.18.50 → 1.18.52
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/api/src/crons/currency.ts +25 -4
- package/api/src/libs/payment.ts +92 -0
- package/api/src/routes/connect/shared.ts +5 -3
- package/api/src/routes/connect/subscribe.ts +36 -5
- package/api/src/routes/invoices.ts +47 -0
- package/blocklet.yml +1 -1
- package/package.json +18 -18
- package/public/currencies/0xBTC.png +0 -0
- package/public/currencies/1INCH.svg +1 -0
- package/public/currencies/AAVE.svg +1 -0
- package/public/currencies/ABT.svg +16 -0
- package/public/currencies/ACX.png +0 -0
- package/public/currencies/ADX.svg +12 -0
- package/public/currencies/AIKEK.png +0 -0
- package/public/currencies/AJNA.svg +12 -0
- package/public/currencies/AKIRA.png +0 -0
- package/public/currencies/ALEX.png +0 -0
- package/public/currencies/ALI.png +0 -0
- package/public/currencies/ALT.svg +12 -0
- package/public/currencies/AMKT.svg +5 -0
- package/public/currencies/AMP.svg +7 -0
- package/public/currencies/APU.png +0 -0
- package/public/currencies/APW.svg +21 -0
- package/public/currencies/APX.png +0 -0
- package/public/currencies/ARC.png +0 -0
- package/public/currencies/ARIA20.svg +1 -0
- package/public/currencies/ARPA.svg +1 -0
- package/public/currencies/ATH.svg +1 -0
- package/public/currencies/AVC.png +0 -0
- package/public/currencies/AVRK.png +0 -0
- package/public/currencies/AXGT.svg +1 -0
- package/public/currencies/AZUR.svg +20 -0
- package/public/currencies/BAL.png +0 -0
- package/public/currencies/BANK.png +0 -0
- package/public/currencies/BAXA.svg +3 -0
- package/public/currencies/BCAT.png +0 -0
- package/public/currencies/BEPRO.svg +1 -0
- package/public/currencies/BERRY.svg +1 -0
- package/public/currencies/BICO.svg +11 -0
- package/public/currencies/BITBOT.jpg +0 -0
- package/public/currencies/BITCOIN.png +0 -0
- package/public/currencies/BKN.svg +1 -0
- package/public/currencies/BLUE.png +0 -0
- package/public/currencies/BNB.png +0 -0
- package/public/currencies/BOBA.svg +16 -0
- package/public/currencies/BOBO.png +0 -0
- package/public/currencies/BOND.svg +10 -0
- package/public/currencies/BOTTO.svg +4 -0
- package/public/currencies/BRIGHT.svg +83 -0
- package/public/currencies/BTRST.svg +1 -0
- package/public/currencies/BURN.png +0 -0
- package/public/currencies/BitANT.png +0 -0
- package/public/currencies/BitBTC.png +0 -0
- package/public/currencies/CARD.svg +1 -0
- package/public/currencies/CBX.svg +1 -0
- package/public/currencies/CHI.svg +1 -0
- package/public/currencies/CIG.svg +21 -0
- package/public/currencies/CNG.svg +9 -0
- package/public/currencies/COC.svg +8 -0
- package/public/currencies/COLLAB.svg +8 -0
- package/public/currencies/COMP.svg +1 -0
- package/public/currencies/COW.svg +1 -0
- package/public/currencies/CRV.png +0 -0
- package/public/currencies/CRYO.svg +1 -0
- package/public/currencies/CTRAVL.svg +1 -0
- package/public/currencies/CTSI.svg +1 -0
- package/public/currencies/CTX.svg +1 -0
- package/public/currencies/CUSD.png +0 -0
- package/public/currencies/CXT.svg +11 -0
- package/public/currencies/D2D.svg +6 -0
- package/public/currencies/DAI.svg +13 -0
- package/public/currencies/DCN.svg +47 -0
- package/public/currencies/DF.svg +15 -0
- package/public/currencies/DHT.svg +1 -0
- package/public/currencies/DIMO.svg +1 -0
- package/public/currencies/DMS.png +0 -0
- package/public/currencies/DODO.svg +6 -0
- package/public/currencies/DOGEGF.png +0 -0
- package/public/currencies/DOLA.svg +1 -0
- package/public/currencies/DOSE.svg +1 -0
- package/public/currencies/DUCK.png +0 -0
- package/public/currencies/DYP.png +0 -0
- package/public/currencies/EIGEN.svg +13 -0
- package/public/currencies/ENS.png +0 -0
- package/public/currencies/EPOCH.svg +1 -0
- package/public/currencies/EQB.svg +4 -0
- package/public/currencies/EQZ.png +0 -0
- package/public/currencies/ERN.png +0 -0
- package/public/currencies/ERNTST.png +0 -0
- package/public/currencies/EST.png +0 -0
- package/public/currencies/ETH.svg +13 -0
- package/public/currencies/ETHIX.svg +1 -0
- package/public/currencies/EVERY.svg +13 -0
- package/public/currencies/F.svg +1 -0
- package/public/currencies/FACTR.png +0 -0
- package/public/currencies/FANS.svg +11 -0
- package/public/currencies/FARM.png +0 -0
- package/public/currencies/FCR.png +0 -0
- package/public/currencies/FET.svg +21 -0
- package/public/currencies/FIS.svg +22 -0
- package/public/currencies/FLASH.svg +22 -0
- package/public/currencies/FLy.png +0 -0
- package/public/currencies/FOAM.svg +23 -0
- package/public/currencies/FORTH.svg +1 -0
- package/public/currencies/FOX.svg +8 -0
- package/public/currencies/FRAX.png +0 -0
- package/public/currencies/FU.svg +17 -0
- package/public/currencies/FVT.svg +1 -0
- package/public/currencies/FXN.svg +25 -0
- package/public/currencies/FXS.png +0 -0
- package/public/currencies/Froglic.png +0 -0
- package/public/currencies/GALAXIS.svg +1 -0
- package/public/currencies/GCH.png +0 -0
- package/public/currencies/GENOME.svg +23 -0
- package/public/currencies/GGTK.svg +1 -0
- package/public/currencies/GHST.svg +15 -0
- package/public/currencies/GIGACHAD.png +0 -0
- package/public/currencies/GIV.svg +6 -0
- package/public/currencies/GLS.svg +22 -0
- package/public/currencies/GOLD.png +0 -0
- package/public/currencies/GRG.png +0 -0
- package/public/currencies/GROW.svg +1 -0
- package/public/currencies/GRT.svg +11 -0
- package/public/currencies/GTC.svg +5 -0
- package/public/currencies/GURU.svg +1 -0
- package/public/currencies/GYEN.svg +1 -0
- package/public/currencies/GYSR.png +0 -0
- package/public/currencies/HAIR.svg +1 -0
- package/public/currencies/HAN.svg +25 -0
- package/public/currencies/HANeP.svg +1 -0
- package/public/currencies/HAUS.png +0 -0
- package/public/currencies/HEU.svg +5 -0
- package/public/currencies/HOBA.png +0 -0
- package/public/currencies/HUNT.svg +1 -0
- package/public/currencies/IBEX.png +0 -0
- package/public/currencies/IDRISS.svg +4 -0
- package/public/currencies/IOTX.png +0 -0
- package/public/currencies/IPOR.svg +1 -0
- package/public/currencies/IPT.svg +7 -0
- package/public/currencies/IRARA.svg +1 -0
- package/public/currencies/ISK.png +0 -0
- package/public/currencies/IYKYK.svg +14 -0
- package/public/currencies/JAM.svg +20 -0
- package/public/currencies/JRT.svg +8 -0
- package/public/currencies/KAGE.png +0 -0
- package/public/currencies/KAI.svg +23 -0
- package/public/currencies/KIBSHI.png +0 -0
- package/public/currencies/KNC.png +0 -0
- package/public/currencies/KOMPETE.png +0 -0
- package/public/currencies/KROM.png +0 -0
- package/public/currencies/LCX.svg +6 -0
- package/public/currencies/LDO.svg +5 -0
- package/public/currencies/LIF3.svg +27 -0
- package/public/currencies/LINK.png +0 -0
- package/public/currencies/LIZ.png +0 -0
- package/public/currencies/LMEOW.png +0 -0
- package/public/currencies/LOCG.png +0 -0
- package/public/currencies/LORDS.png +0 -0
- package/public/currencies/LPF.svg +18 -0
- package/public/currencies/LQTY.svg +1 -0
- package/public/currencies/LRC.png +0 -0
- package/public/currencies/LRDS.svg +44 -0
- package/public/currencies/LSK.png +0 -0
- package/public/currencies/LUSD.svg +1 -0
- package/public/currencies/LYRA.png +0 -0
- package/public/currencies/MASK.svg +4 -0
- package/public/currencies/MASQ.png +0 -0
- package/public/currencies/MBS.png +0 -0
- package/public/currencies/MCADE.svg +26 -0
- package/public/currencies/MET.svg +15 -0
- package/public/currencies/MINDS.svg +32 -0
- package/public/currencies/MKR.png +0 -0
- package/public/currencies/MLN.svg +1 -0
- package/public/currencies/MOCHI.svg +1 -0
- package/public/currencies/MOM.svg +5 -0
- package/public/currencies/MONKE.png +0 -0
- package/public/currencies/MOOV.svg +5 -0
- package/public/currencies/MORPHO.svg +14 -0
- package/public/currencies/MPWR.svg +5 -0
- package/public/currencies/MTA.svg +15 -0
- package/public/currencies/MTL.png +0 -0
- package/public/currencies/MUGLOO.png +0 -0
- package/public/currencies/Mog.png +0 -0
- package/public/currencies/NAVI.svg +1 -0
- package/public/currencies/NCT.svg +49 -0
- package/public/currencies/NET.svg +11 -0
- package/public/currencies/NEURON.svg +38 -0
- package/public/currencies/NFD.png +0 -0
- package/public/currencies/NOGS.png +0 -0
- package/public/currencies/NOUNS.png +0 -0
- package/public/currencies/NOVA.png +0 -0
- package/public/currencies/NSTR.svg +4 -0
- package/public/currencies/Neiro.png +0 -0
- package/public/currencies/OCEAN.png +0 -0
- package/public/currencies/OGN.svg +8 -0
- package/public/currencies/OL.svg +21 -0
- package/public/currencies/OLAS.svg +7 -0
- package/public/currencies/OM.png +0 -0
- package/public/currencies/OMETA.svg +7 -0
- package/public/currencies/OMI.svg +42 -0
- package/public/currencies/OPENLOOT.svg +21 -0
- package/public/currencies/OPN.svg +1 -0
- package/public/currencies/OS.svg +1 -0
- package/public/currencies/OUTb.svg +4 -0
- package/public/currencies/OVR.png +0 -0
- package/public/currencies/PAGE.svg +1 -0
- package/public/currencies/PAL.svg +1 -0
- package/public/currencies/PAPER.svg +4 -0
- package/public/currencies/PENDLE.png +0 -0
- package/public/currencies/PEPE.png +0 -0
- package/public/currencies/PERP.png +0 -0
- package/public/currencies/PHTK.svg +14 -0
- package/public/currencies/PIP.svg +11 -0
- package/public/currencies/POGS.png +0 -0
- package/public/currencies/POOL.svg +22 -0
- package/public/currencies/POP.svg +8 -0
- package/public/currencies/PORK.png +0 -0
- package/public/currencies/PRE.svg +66 -0
- package/public/currencies/PREMIA.svg +4 -0
- package/public/currencies/PRF.png +0 -0
- package/public/currencies/PRO.svg +1 -0
- package/public/currencies/PSP.svg +35 -0
- package/public/currencies/PSTAKE.png +0 -0
- package/public/currencies/PSY.svg +26 -0
- package/public/currencies/RAC.png +0 -0
- package/public/currencies/RAI.svg +1 -0
- package/public/currencies/RAZOR.svg +1 -0
- package/public/currencies/REKT.png +0 -0
- package/public/currencies/RFKJ.png +0 -0
- package/public/currencies/RFWSTETH.svg +36 -0
- package/public/currencies/RGT.png +0 -0
- package/public/currencies/RICE.svg +22 -0
- package/public/currencies/RIZE.svg +21 -0
- package/public/currencies/RPL.svg +1 -0
- package/public/currencies/RSC.svg +6 -0
- package/public/currencies/RSR.png +0 -0
- package/public/currencies/RSS3.png +0 -0
- package/public/currencies/Reach.svg +17 -0
- package/public/currencies/SAIL.png +0 -0
- package/public/currencies/SALD.png +0 -0
- package/public/currencies/SARCO.png +0 -0
- package/public/currencies/SCM.svg +1 -0
- package/public/currencies/SCRY.svg +13 -0
- package/public/currencies/SDL.svg +1 -0
- package/public/currencies/SEAM.svg +5 -0
- package/public/currencies/SEXY.svg +1 -0
- package/public/currencies/SHU.png +0 -0
- package/public/currencies/SIPHER.png +0 -0
- package/public/currencies/SKAI.svg +1 -0
- package/public/currencies/SLN.png +0 -0
- package/public/currencies/SMT.svg +1 -0
- package/public/currencies/SMURFCAT.png +0 -0
- package/public/currencies/SNT.svg +14 -0
- package/public/currencies/SNX.svg +20 -0
- package/public/currencies/SOFI.png +0 -0
- package/public/currencies/SOFT.svg +1 -0
- package/public/currencies/SOVRN.svg +13 -0
- package/public/currencies/SPANK.png +0 -0
- package/public/currencies/SPC.png +0 -0
- package/public/currencies/SPOT.svg +1 -0
- package/public/currencies/SQD.png +0 -0
- package/public/currencies/SQT.svg +14 -0
- package/public/currencies/STNT.svg +38 -0
- package/public/currencies/STPT.png +0 -0
- package/public/currencies/SUDO.svg +6 -0
- package/public/currencies/SUKU.png +0 -0
- package/public/currencies/SUPER.svg +6 -0
- package/public/currencies/SUSHI.svg +19 -0
- package/public/currencies/SYNTH.svg +1 -0
- package/public/currencies/ShibDoge.png +0 -0
- package/public/currencies/Silo.svg +4 -0
- package/public/currencies/StaFi.svg +65 -0
- package/public/currencies/T.svg +4 -0
- package/public/currencies/TEN.svg +1 -0
- package/public/currencies/TETU.svg +6 -0
- package/public/currencies/THALES.png +0 -0
- package/public/currencies/THING.png +0 -0
- package/public/currencies/THX.svg +22 -0
- package/public/currencies/TKAI.svg +1 -0
- package/public/currencies/TKN.png +0 -0
- package/public/currencies/TODL.png +0 -0
- package/public/currencies/TOWER.svg +1 -0
- package/public/currencies/TRAC.png +0 -0
- package/public/currencies/TRB.png +0 -0
- package/public/currencies/TRUE.svg +11 -0
- package/public/currencies/TRX.svg +4 -0
- package/public/currencies/TSC.png +0 -0
- package/public/currencies/TT.png +0 -0
- package/public/currencies/TUSD.png +0 -0
- package/public/currencies/TYBENG.png +0 -0
- package/public/currencies/TheDAO.svg +1 -0
- package/public/currencies/U.png +0 -0
- package/public/currencies/UBI.svg +5 -0
- package/public/currencies/UCASH.svg +1 -0
- package/public/currencies/UDT.svg +4 -0
- package/public/currencies/UMA.png +0 -0
- package/public/currencies/UNI.png +0 -0
- package/public/currencies/USA.png +0 -0
- package/public/currencies/USC.svg +23 -0
- package/public/currencies/USD3.svg +13 -0
- package/public/currencies/USDD.png +0 -0
- package/public/currencies/USDS.png +0 -0
- package/public/currencies/USDbC.png +0 -0
- package/public/currencies/UST.png +0 -0
- package/public/currencies/VALX.png +0 -0
- package/public/currencies/VIDYA.png +0 -0
- package/public/currencies/VITA.svg +10 -0
- package/public/currencies/VSP.svg +15 -0
- package/public/currencies/VUSD.svg +1 -0
- package/public/currencies/WAAC.png +0 -0
- package/public/currencies/WAD.png +0 -0
- package/public/currencies/WALLET.svg +1 -0
- package/public/currencies/WAMPL.svg +53 -0
- package/public/currencies/WBTC.png +0 -0
- package/public/currencies/WCT.svg +5 -0
- package/public/currencies/WEXO.png +0 -0
- package/public/currencies/WLD.jpeg +0 -0
- package/public/currencies/WMC.png +0 -0
- package/public/currencies/WOO.png +0 -0
- package/public/currencies/Wildfire.svg +1 -0
- package/public/currencies/XCHF.png +0 -0
- package/public/currencies/XCN.svg +1 -0
- package/public/currencies/XMT.svg +1 -0
- package/public/currencies/XYO.svg +1 -0
- package/public/currencies/YFI.svg +4 -0
- package/public/currencies/YFX.svg +11 -0
- package/public/currencies/YGG.svg +11 -0
- package/public/currencies/YOKAI.png +0 -0
- package/public/currencies/YYY.svg +1 -0
- package/public/currencies/ZENT.svg +12 -0
- package/public/currencies/ZRX.png +0 -0
- package/public/currencies/ZUN.svg +24 -0
- package/public/currencies/ZUSD.svg +1 -0
- package/public/currencies/ZYN.png +0 -0
- package/public/currencies/aCRV.png +0 -0
- package/public/currencies/btc.png +0 -0
- package/public/currencies/bwAJNA.svg +1 -0
- package/public/currencies/cSTONE.svg +23 -0
- package/public/currencies/cbETH.svg +9 -0
- package/public/currencies/crvUSD.png +0 -0
- package/public/currencies/cvxFXS.png +0 -0
- package/public/currencies/dollar.png +0 -0
- package/public/currencies/ePendle.png +0 -0
- package/public/currencies/frxETH.png +0 -0
- package/public/currencies/fxUSD.svg +5 -0
- package/public/currencies/iFARM.png +0 -0
- package/public/currencies/iZi.png +0 -0
- package/public/currencies/imgnAI.svg +1 -0
- package/public/currencies/mpETH.svg +4 -0
- package/public/currencies/nETH.svg +11 -0
- package/public/currencies/rETH.svg +1 -0
- package/public/currencies/rgUSD.svg +5 -0
- package/public/currencies/rnETH.svg +11 -0
- package/public/currencies/sDAI.svg +13 -0
- package/public/currencies/sFRAX.png +0 -0
- package/public/currencies/sUSDS.png +0 -0
- package/public/currencies/scWETHv2.svg +1 -0
- package/public/currencies/send.svg +12 -0
- package/public/currencies/stETH.png +1 -0
- package/public/currencies/stZENT.svg +12 -0
- package/public/currencies/stkLYRA.svg +26 -0
- package/public/currencies/tGS.png +0 -0
- package/public/currencies/tSTAR.png +0 -0
- package/public/currencies/usdc.png +0 -0
- package/public/currencies/usdt.png +0 -0
- package/public/currencies/veKWENTA.svg +24 -0
- package/public/currencies/wHOGE.svg +14 -0
- package/public/currencies/wOpenX.svg +140 -0
- package/public/currencies/wPOKT.svg +17 -0
- package/public/currencies/wTBT.svg +1 -0
- package/public/currencies/weETH.svg +23 -0
- package/public/currencies/wstETH.svg +11 -0
- package/public/currencies/yETH.svg +8 -0
- package/public/currencies/zunETH.svg +46 -0
- package/public/currencies/zunUSD.svg +33 -0
- package/src/components/customer/overdraft-protection.tsx +37 -9
- package/src/components/invoice/action.tsx +20 -0
- package/src/components/invoice/list.tsx +4 -1
- package/src/components/payment-currency/add.tsx +12 -3
- package/src/components/payment-currency/edit.tsx +89 -3
- package/src/components/payment-currency/tokenList.json +8847 -8156
- package/src/components/payment-intent/list.tsx +2 -4
- package/src/components/subscription/portal/actions.tsx +6 -2
- package/src/libs/util.ts +2 -0
- package/src/locales/en.tsx +11 -3
- package/src/locales/zh.tsx +11 -3
- package/src/pages/admin/settings/vault-config/edit-form.tsx +13 -0
- package/src/pages/customer/recharge/account.tsx +8 -1
- package/src/pages/customer/recharge/subscription.tsx +8 -1
- package/src/pages/customer/subscription/detail.tsx +1 -3
|
@@ -174,7 +174,10 @@ export default function InvoiceList({
|
|
|
174
174
|
const item = data.list[index] as TInvoiceExpanded;
|
|
175
175
|
return (
|
|
176
176
|
<InvoiceLink invoice={item}>
|
|
177
|
-
<Typography
|
|
177
|
+
<Typography
|
|
178
|
+
component="strong"
|
|
179
|
+
fontWeight={600}
|
|
180
|
+
sx={{ textDecoration: item.status === 'void' ? 'line-through' : 'none' }}>
|
|
178
181
|
{formatBNStr(item?.total, item?.paymentCurrency.decimal)}
|
|
179
182
|
{item?.paymentCurrency.symbol}
|
|
180
183
|
</Typography>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { useLocaleContext } from '@arcblock/ux/lib/Locale/context';
|
|
2
2
|
import Toast from '@arcblock/ux/lib/Toast';
|
|
3
|
-
import { api, formatError } from '@blocklet/payment-react';
|
|
3
|
+
import { api, formatError, getPrefix } from '@blocklet/payment-react';
|
|
4
4
|
import type { TPaymentCurrency, TPaymentMethodExpanded } from '@blocklet/payment-types';
|
|
5
5
|
import { AddOutlined } from '@mui/icons-material';
|
|
6
6
|
import {
|
|
@@ -18,6 +18,7 @@ import { useSetState } from 'ahooks';
|
|
|
18
18
|
import { FormProvider, useForm } from 'react-hook-form';
|
|
19
19
|
import { dispatch } from 'use-bus';
|
|
20
20
|
import { useEffect } from 'react';
|
|
21
|
+
import { joinURL } from 'ufo';
|
|
21
22
|
import DrawerForm from '../drawer-form';
|
|
22
23
|
import PaymentCurrencyForm from './form';
|
|
23
24
|
|
|
@@ -33,6 +34,7 @@ interface TokenInfo {
|
|
|
33
34
|
name: string;
|
|
34
35
|
symbol: string;
|
|
35
36
|
logoURI?: string;
|
|
37
|
+
localLogoURI?: string;
|
|
36
38
|
}
|
|
37
39
|
|
|
38
40
|
export default function PaymentCurrencyAdd({
|
|
@@ -87,11 +89,18 @@ export default function PaymentCurrencyAdd({
|
|
|
87
89
|
}
|
|
88
90
|
}, [showTokenSelect, chainId]);
|
|
89
91
|
|
|
92
|
+
const getLogoURI = (token: TokenInfo) => {
|
|
93
|
+
if (token.localLogoURI) {
|
|
94
|
+
return joinURL(getPrefix(), token.localLogoURI);
|
|
95
|
+
}
|
|
96
|
+
return token.logoURI || '';
|
|
97
|
+
};
|
|
98
|
+
|
|
90
99
|
const handleTokenSelect = (token: TokenInfo | null) => {
|
|
91
100
|
if (token) {
|
|
92
101
|
setValue('name', token.name);
|
|
93
102
|
setValue('description', `${token.name} (${token.symbol})`);
|
|
94
|
-
setValue('logo', token
|
|
103
|
+
setValue('logo', getLogoURI(token));
|
|
95
104
|
setValue('contract', token.address);
|
|
96
105
|
}
|
|
97
106
|
};
|
|
@@ -162,7 +171,7 @@ export default function PaymentCurrencyAdd({
|
|
|
162
171
|
},
|
|
163
172
|
}}>
|
|
164
173
|
<Avatar
|
|
165
|
-
src={option
|
|
174
|
+
src={getLogoURI(option) || option.symbol}
|
|
166
175
|
alt={option.symbol}
|
|
167
176
|
sx={{
|
|
168
177
|
width: 24,
|
|
@@ -1,17 +1,35 @@
|
|
|
1
1
|
/* eslint-disable no-nested-ternary */
|
|
2
2
|
import { useLocaleContext } from '@arcblock/ux/lib/Locale/context';
|
|
3
3
|
import Toast from '@arcblock/ux/lib/Toast';
|
|
4
|
-
import { api, formatError } from '@blocklet/payment-react';
|
|
4
|
+
import { api, formatError, getPrefix, CachedRequest } from '@blocklet/payment-react';
|
|
5
5
|
import type { TPaymentCurrency, TPaymentMethod } from '@blocklet/payment-types';
|
|
6
6
|
import { AddOutlined } from '@mui/icons-material';
|
|
7
7
|
import { Button, CircularProgress } from '@mui/material';
|
|
8
8
|
import { useSetState } from 'ahooks';
|
|
9
9
|
import { FormProvider, useForm } from 'react-hook-form';
|
|
10
10
|
import { dispatch } from 'use-bus';
|
|
11
|
+
import { useEffect } from 'react';
|
|
12
|
+
import { joinURL } from 'ufo';
|
|
11
13
|
|
|
12
14
|
import DrawerForm from '../drawer-form';
|
|
13
15
|
import PaymentCurrencyForm from './form';
|
|
14
16
|
|
|
17
|
+
const loadTokenList = () =>
|
|
18
|
+
import(
|
|
19
|
+
/* webpackChunkName: "payment-token-list" */
|
|
20
|
+
'./tokenList.json'
|
|
21
|
+
);
|
|
22
|
+
|
|
23
|
+
interface TokenInfo {
|
|
24
|
+
address: string;
|
|
25
|
+
chainId: number;
|
|
26
|
+
decimals: number;
|
|
27
|
+
name: string;
|
|
28
|
+
symbol: string;
|
|
29
|
+
logoURI?: string;
|
|
30
|
+
localLogoURI?: string;
|
|
31
|
+
}
|
|
32
|
+
|
|
15
33
|
export default function PaymentCurrencyEdit({
|
|
16
34
|
method,
|
|
17
35
|
onClose,
|
|
@@ -22,7 +40,11 @@ export default function PaymentCurrencyEdit({
|
|
|
22
40
|
value: TPaymentCurrency;
|
|
23
41
|
}) {
|
|
24
42
|
const { t } = useLocaleContext();
|
|
25
|
-
const [state, setState] = useSetState({
|
|
43
|
+
const [state, setState] = useSetState({
|
|
44
|
+
loading: false,
|
|
45
|
+
tokenListLoading: false,
|
|
46
|
+
contractToTokenMap: new Map<string, TokenInfo>(),
|
|
47
|
+
});
|
|
26
48
|
|
|
27
49
|
const methods = useForm<TPaymentCurrency>({
|
|
28
50
|
defaultValues: {
|
|
@@ -33,7 +55,71 @@ export default function PaymentCurrencyEdit({
|
|
|
33
55
|
contract: value?.contract,
|
|
34
56
|
},
|
|
35
57
|
});
|
|
36
|
-
const { handleSubmit } = methods;
|
|
58
|
+
const { handleSubmit, setValue } = methods;
|
|
59
|
+
|
|
60
|
+
const showTokenSelect = ['ethereum', 'base'].includes(method.type);
|
|
61
|
+
// @ts-ignore
|
|
62
|
+
const chainId = method?.settings?.[method.type]?.chain_id || '';
|
|
63
|
+
|
|
64
|
+
const getLogoURI = (token: TokenInfo) => {
|
|
65
|
+
if (token.localLogoURI) {
|
|
66
|
+
return joinURL(getPrefix(), token.localLogoURI);
|
|
67
|
+
}
|
|
68
|
+
return token.logoURI || '';
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
useEffect(() => {
|
|
72
|
+
if (showTokenSelect && chainId) {
|
|
73
|
+
setState({ tokenListLoading: true });
|
|
74
|
+
|
|
75
|
+
// 使用 CachedRequest 直接缓存 contract 映射
|
|
76
|
+
const cachedTokenMapRequest = new CachedRequest(
|
|
77
|
+
`tokenMap_${chainId}`,
|
|
78
|
+
async () => {
|
|
79
|
+
const module = await loadTokenList();
|
|
80
|
+
// @ts-ignore
|
|
81
|
+
const tokenList = (module.default?.[chainId] as TokenInfo[]) || [];
|
|
82
|
+
|
|
83
|
+
// 创建 contract 地址到 token 的映射对象
|
|
84
|
+
const contractToTokenObj: Record<string, TokenInfo> = {};
|
|
85
|
+
tokenList.forEach((token: TokenInfo) => {
|
|
86
|
+
if (token.address) {
|
|
87
|
+
contractToTokenObj[token.address.toLowerCase()] = token;
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
return { data: contractToTokenObj };
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
strategy: 'session',
|
|
95
|
+
ttl: 30 * 60 * 1000,
|
|
96
|
+
}
|
|
97
|
+
);
|
|
98
|
+
|
|
99
|
+
cachedTokenMapRequest
|
|
100
|
+
.fetch()
|
|
101
|
+
.then((contractToTokenObj: Record<string, TokenInfo>) => {
|
|
102
|
+
const contractToTokenMap = new Map<string, TokenInfo>(Object.entries(contractToTokenObj));
|
|
103
|
+
setState({
|
|
104
|
+
contractToTokenMap,
|
|
105
|
+
tokenListLoading: false,
|
|
106
|
+
});
|
|
107
|
+
|
|
108
|
+
// 检查当前币种是否需要替换 logo(根据 contract 地址匹配)
|
|
109
|
+
if (value?.contract) {
|
|
110
|
+
const matchedToken = contractToTokenMap.get(value.contract.toLowerCase());
|
|
111
|
+
if (matchedToken && matchedToken.localLogoURI) {
|
|
112
|
+
const newLogoURI = getLogoURI(matchedToken);
|
|
113
|
+
setValue('logo', newLogoURI);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
})
|
|
117
|
+
.catch((error) => {
|
|
118
|
+
console.error('Failed to load token map:', error);
|
|
119
|
+
setState({ tokenListLoading: false });
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
}, [showTokenSelect, chainId, value?.contract]);
|
|
37
123
|
|
|
38
124
|
const onSubmit = (data: TPaymentCurrency) => {
|
|
39
125
|
setState({ loading: true });
|