@orderly.network/ui-transfer 3.0.0-beta.6 → 3.0.0-beta.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +78 -47
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +79 -48
- package/dist/index.mjs.map +1 -1
- package/package.json +14 -14
package/dist/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { i18n, useTranslation, Trans } from '@orderly.network/i18n';
|
|
2
|
-
import { registerSimpleDialog, registerSimpleSheet, Tabs, TabPanel, ArrowDownSquareFillIcon, ArrowUpSquareFillIcon, ExtensionSlot, ExtensionPositionEnum, Box, textVariants, Flex, toast, Text, cn, Button, Spinner, Select, Input, inputFormatter, useScreen, modal, Tooltip, Tips, AlertDialog, EditIcon, ArrowLeftRightIcon, WalletIcon, DropdownMenuRoot, DropdownMenuTrigger, DropdownMenuPortal, DropdownMenuContent, ScrollArea, ChainIcon, Badge,
|
|
2
|
+
import { registerSimpleDialog, registerSimpleSheet, Tabs, TabPanel, ArrowDownSquareFillIcon, ArrowUpSquareFillIcon, ExtensionSlot, ExtensionPositionEnum, Box, textVariants, Flex, toast, Text, cn, Button, Spinner, Select, Input, inputFormatter, useScreen, modal, Tooltip, Tips, AlertDialog, EditIcon, ArrowLeftRightIcon, WalletIcon, DropdownMenuRoot, DropdownMenuTrigger, DropdownMenuPortal, DropdownMenuContent, ScrollArea, ChainIcon, Badge, CaretUpIcon, CaretDownIcon, SimpleDialog, CloseRoundFillIcon, ExclamationFillIcon, TokenIcon, WarningIcon, SelectItem, ChevronRightIcon, Checkbox, CloseIcon } from '@orderly.network/ui';
|
|
3
3
|
import { forwardRef, useState, isValidElement, useMemo, useEffect, useCallback, useRef } from 'react';
|
|
4
4
|
import { useConfig, useWalletConnector, useLocalStorage, useConvert, useOdosQuote, useComputedLTV, useAccount, useAppStore, useTransfer, useSubAccountDataObserver, useSubAccountMaxWithdrawal, useTokensInfo, useEventEmitter, usePositionStream, useIndexPricesStream, useOrderlyContext, useDeposit, useAssetsHistory, useChains, useMemoizedFn, useWithdraw, useWalletTopic, useQuery, useSWR, useTokenInfo, useHoldingStream, useInternalTransfer, useDebouncedCallback, usePrivateQuery, useTransferHistory, useBalanceTopic } from '@orderly.network/hooks';
|
|
5
5
|
import { Decimal, zero, praseChainIdToNumber, int2hex, toNonExponential, formatWithPrecision, isSolana } from '@orderly.network/utils';
|
|
@@ -803,10 +803,10 @@ var buildExplorerUrl = (baseUrl, txId) => {
|
|
|
803
803
|
var useExclusiveDeposit = (options2) => {
|
|
804
804
|
const active = options2.active ?? true;
|
|
805
805
|
const confirmed = options2.confirmed ?? true;
|
|
806
|
-
const { chainId, explorerBaseUrl } = options2;
|
|
806
|
+
const { chainId, token, explorerBaseUrl } = options2;
|
|
807
807
|
const { t: t0 } = useTranslation();
|
|
808
808
|
const t = t0;
|
|
809
|
-
const receiverAddressKey = confirmed && chainId ? `/v1/client/asset/receiver_address?chain_id=${chainId}` : null;
|
|
809
|
+
const receiverAddressKey = confirmed && chainId && token ? `/v1/client/asset/receiver_address?chain_id=${chainId}&token=${token}` : null;
|
|
810
810
|
const receiverEventsKey = active && confirmed ? "/v1/client/asset/receiver_events" : null;
|
|
811
811
|
const {
|
|
812
812
|
data: addressData,
|
|
@@ -858,46 +858,87 @@ var useExclusiveDeposit = (options2) => {
|
|
|
858
858
|
eventsError
|
|
859
859
|
};
|
|
860
860
|
};
|
|
861
|
-
var
|
|
862
|
-
prod: [42161],
|
|
863
|
-
testnet: [421614]
|
|
864
|
-
};
|
|
865
|
-
var SUPPORTED_TOKENS = ["USDC"];
|
|
866
|
-
var useExclusiveDepositOptions = () => {
|
|
867
|
-
const env = useConfig("env");
|
|
861
|
+
var useExclusiveDepositOptions = (params) => {
|
|
868
862
|
const networkId = useConfig("networkId");
|
|
869
|
-
const
|
|
863
|
+
const tokensInfo = useTokensInfo();
|
|
864
|
+
const selectedNetwork = params?.selectedNetwork;
|
|
865
|
+
const [, { findByChainId }] = useChains(networkId, {
|
|
870
866
|
pick: "network_infos"
|
|
871
867
|
});
|
|
872
|
-
const
|
|
868
|
+
const combos = useMemo(() => {
|
|
869
|
+
if (!tokensInfo?.length) return [];
|
|
870
|
+
const result = [];
|
|
871
|
+
for (const token of tokensInfo) {
|
|
872
|
+
for (const detail of token.chain_details ?? []) {
|
|
873
|
+
if (detail.exclusive_deposit_supported === true) {
|
|
874
|
+
const chainId = Number(detail.chain_id);
|
|
875
|
+
const chain = findByChainId(chainId);
|
|
876
|
+
result.push({
|
|
877
|
+
chainId,
|
|
878
|
+
chainName: chain?.network_infos?.name ?? `Chain ${chainId}`,
|
|
879
|
+
explorerUrl: chain?.network_infos?.explorer_base_url ?? "",
|
|
880
|
+
tokenSymbol: token.token
|
|
881
|
+
});
|
|
882
|
+
}
|
|
883
|
+
}
|
|
884
|
+
}
|
|
885
|
+
return result;
|
|
886
|
+
}, [tokensInfo, findByChainId]);
|
|
873
887
|
const networkOptions = useMemo(() => {
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
}
|
|
888
|
+
const seen = /* @__PURE__ */ new Map();
|
|
889
|
+
for (const combo of combos) {
|
|
890
|
+
if (!seen.has(combo.chainId)) {
|
|
891
|
+
seen.set(combo.chainId, {
|
|
892
|
+
label: combo.chainName,
|
|
893
|
+
value: String(combo.chainId),
|
|
894
|
+
chainId: combo.chainId,
|
|
895
|
+
explorerUrl: combo.explorerUrl
|
|
896
|
+
});
|
|
897
|
+
}
|
|
898
|
+
}
|
|
899
|
+
const list = Array.from(seen.values());
|
|
900
|
+
list.sort((a, b) => {
|
|
901
|
+
if (a.chainId === 42161) return -1;
|
|
902
|
+
if (b.chainId === 42161) return 1;
|
|
903
|
+
return 0;
|
|
884
904
|
});
|
|
885
|
-
|
|
905
|
+
return list;
|
|
906
|
+
}, [combos]);
|
|
886
907
|
const tokenOptions = useMemo(() => {
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
908
|
+
if (!selectedNetwork) return [];
|
|
909
|
+
const chainId = Number(selectedNetwork);
|
|
910
|
+
const seen = /* @__PURE__ */ new Set();
|
|
911
|
+
const result = [];
|
|
912
|
+
for (const combo of combos) {
|
|
913
|
+
if (combo.chainId === chainId && !seen.has(combo.tokenSymbol)) {
|
|
914
|
+
seen.add(combo.tokenSymbol);
|
|
915
|
+
result.push({ label: combo.tokenSymbol, value: combo.tokenSymbol });
|
|
916
|
+
}
|
|
917
|
+
}
|
|
918
|
+
result.sort((a, b) => {
|
|
919
|
+
if (a.value === "USDC") return -1;
|
|
920
|
+
if (b.value === "USDC") return 1;
|
|
921
|
+
return 0;
|
|
922
|
+
});
|
|
923
|
+
return result;
|
|
924
|
+
}, [combos, selectedNetwork]);
|
|
925
|
+
const isSupported = combos.length > 0;
|
|
926
|
+
return { networkOptions, tokenOptions, isSupported };
|
|
893
927
|
};
|
|
894
928
|
var ExclusiveDeposit = ({ active }) => {
|
|
895
929
|
const { t: t0 } = useTranslation();
|
|
896
930
|
const t = t0;
|
|
897
931
|
const [selectedNetwork, setSelectedNetwork] = useState("");
|
|
898
932
|
const [selectedToken, setSelectedToken] = useState("");
|
|
899
|
-
const { networkOptions, tokenOptions
|
|
933
|
+
const { networkOptions, tokenOptions} = useExclusiveDepositOptions({
|
|
934
|
+
selectedNetwork
|
|
935
|
+
});
|
|
900
936
|
const confirmed = !!selectedNetwork && !!selectedToken;
|
|
937
|
+
useEffect(() => {
|
|
938
|
+
if (selectedToken && tokenOptions.length > 0 && !tokenOptions.some((t2) => t2.value === selectedToken)) {
|
|
939
|
+
setSelectedToken("");
|
|
940
|
+
}
|
|
941
|
+
}, [selectedNetwork, selectedToken, tokenOptions]);
|
|
901
942
|
const selectedNetworkOption = selectedNetwork ? networkOptions.find((n) => n.value === selectedNetwork) : void 0;
|
|
902
943
|
const selectedChainId = selectedNetworkOption?.chainId;
|
|
903
944
|
const selectedTokenOption = selectedToken ? tokenOptions.find((t2) => t2.value === selectedToken) : void 0;
|
|
@@ -913,6 +954,7 @@ var ExclusiveDeposit = ({ active }) => {
|
|
|
913
954
|
active,
|
|
914
955
|
confirmed,
|
|
915
956
|
chainId: selectedChainId,
|
|
957
|
+
token: selectedToken,
|
|
916
958
|
explorerBaseUrl: selectedNetworkOption?.explorerUrl ?? ""
|
|
917
959
|
});
|
|
918
960
|
const networkName = selectedNetworkOption?.label ?? "";
|
|
@@ -930,31 +972,20 @@ var ExclusiveDeposit = ({ active }) => {
|
|
|
930
972
|
address && /* @__PURE__ */ jsx(CopyAddress, { address })
|
|
931
973
|
] }),
|
|
932
974
|
/* @__PURE__ */ jsxs(Flex, { direction: "column", gap: 2, className: "oui-mt-5 oui-w-full", children: [
|
|
933
|
-
|
|
934
|
-
/* @__PURE__ */ jsxs(Flex, { className: "oui-w-full", justify: "between", itemAlign: "center", children: [
|
|
935
|
-
/* @__PURE__ */ jsx(Text, { size: "xs", intensity: 36, children: t("common.network") }),
|
|
936
|
-
/* @__PURE__ */ jsxs(Flex, { gap: 1, itemAlign: "center", children: [
|
|
937
|
-
/* @__PURE__ */ jsx(ChainIcon, { chainId: selectedChainId, size: "2xs" }),
|
|
938
|
-
/* @__PURE__ */ jsx(Text, { size: "xs", intensity: 98, children: networkName })
|
|
939
|
-
] })
|
|
940
|
-
] }),
|
|
941
|
-
/* @__PURE__ */ jsxs(Flex, { className: "oui-w-full", justify: "between", itemAlign: "center", children: [
|
|
942
|
-
/* @__PURE__ */ jsx(Text, { size: "xs", intensity: 36, children: t("common.token") }),
|
|
943
|
-
/* @__PURE__ */ jsxs(Flex, { gap: 1, itemAlign: "center", children: [
|
|
944
|
-
/* @__PURE__ */ jsx(TokenIcon, { name: tokenName, size: "2xs" }),
|
|
945
|
-
/* @__PURE__ */ jsx(Text, { size: "xs", intensity: 98, children: tokenName })
|
|
946
|
-
] })
|
|
947
|
-
] })
|
|
948
|
-
] }) : /* @__PURE__ */ jsx(
|
|
975
|
+
/* @__PURE__ */ jsx(
|
|
949
976
|
NetworkTokenSelect,
|
|
950
977
|
{
|
|
951
978
|
selectedNetwork,
|
|
952
979
|
selectedToken,
|
|
953
|
-
onNetworkChange:
|
|
980
|
+
onNetworkChange: (value) => {
|
|
981
|
+
setSelectedNetwork(value);
|
|
982
|
+
setSelectedToken("");
|
|
983
|
+
},
|
|
954
984
|
onTokenChange: setSelectedToken,
|
|
955
985
|
networkOptions,
|
|
956
986
|
tokenOptions
|
|
957
|
-
}
|
|
987
|
+
},
|
|
988
|
+
selectedNetwork
|
|
958
989
|
),
|
|
959
990
|
/* @__PURE__ */ jsxs(Flex, { className: "oui-w-full", justify: "between", children: [
|
|
960
991
|
/* @__PURE__ */ jsx(Text, { size: "xs", intensity: 36, children: t("transfer.exclusiveDeposit.minDeposit") }),
|