bridge_ui: support Luna and UST migration

Change-Id: Id29b26ed73105df581a97ddd5d1c2fce95c928a9
This commit is contained in:
Evan Gray 2021-10-15 12:07:06 -04:00
parent 350244e8e4
commit deb91554bf
6 changed files with 62 additions and 20 deletions

View File

@ -24,7 +24,7 @@ export default function SendPreview() {
const sourceChain = useSelector(selectTransferSourceChain);
const transferTx = useSelector(selectTransferTransferTx);
const explainerString = "The tokens have been sent!";
const explainerString = "The tokens have entered the bridge!";
return (
<>

View File

@ -349,6 +349,17 @@ const getSolanaParsedTokenAccounts = async (
);
});
// uncomment to test token account in picker, useful for debugging
// splParsedTokenAccounts.push({
// amount: "1",
// decimals: 8,
// mintKey: "2Xf2yAXJfg82sWwdLUo2x9mZXy6JCdszdMZkcF1Hf4KV",
// publicKey: "2Xf2yAXJfg82sWwdLUo2x9mZXy6JCdszdMZkcF1Hf4KV",
// uiAmount: 1,
// uiAmountString: "1",
// isNativeAsset: false,
// });
if (nft) {
//In the case of NFTs, we are done, and we set the accounts in redux
dispatch(receiveSourceParsedTokenAccountsNFT(splParsedTokenAccounts));

View File

@ -109,7 +109,7 @@ export default function useMetadata(
chainId: ChainId,
addresses: string[]
): DataWrapper<Map<string, GenericMetadata>> {
const terraTokenMap = useTerraTokenMap();
const terraTokenMap = useTerraTokenMap(chainId === CHAIN_ID_TERRA);
const solanaTokenMap = useSolanaTokenMap();
const solanaAddresses = useMemo(() => {

View File

@ -25,18 +25,19 @@ export type TerraTokenMap = {
};
};
const useTerraTokenMap = (): DataWrapper<TerraTokenMap> => {
const useTerraTokenMap = (shouldFire: boolean): DataWrapper<TerraTokenMap> => {
const terraTokenMap = useSelector(selectTerraTokenMap);
const dispatch = useDispatch();
const shouldFire =
terraTokenMap.data === undefined ||
(terraTokenMap.data === null && !terraTokenMap.isFetching);
const internalShouldFire =
shouldFire &&
(terraTokenMap.data === undefined ||
(terraTokenMap.data === null && !terraTokenMap.isFetching));
useEffect(() => {
if (shouldFire) {
if (internalShouldFire) {
getTerraTokenMap(dispatch);
}
}, [shouldFire, dispatch]);
}, [internalShouldFire, dispatch]);
return terraTokenMap;
};

View File

@ -5,7 +5,6 @@ import {
CHAIN_ID_SOLANA,
CHAIN_ID_TERRA,
} from "@certusone/wormhole-sdk";
import { ChainID } from "@certusone/wormhole-sdk/lib/proto/publicrpc/v1/publicrpc";
import { clusterApiUrl } from "@solana/web3.js";
import { getAddress } from "ethers/lib/utils";
@ -391,15 +390,25 @@ export const MIGRATION_ASSET_MAP = new Map<string, string>(
"2kycGCD8tJbrjJJqWN2Qz5ysN9iB4Bth3Uic4mSB7uak",
"43m2ewFV5nDepieFjT9EmAQnc1HRtAF247RBpLGFem5F",
],
// [
// // UST
// "CXLBjMMcwkc17GfJtBos6rQCo1ypeH6eDbB82Kby4MRm",
// "5Un6AdG9GBjxVhTSvvt2x6X6vtN1zrDxkkDpDcShnHfF",
// ],
[
// UST
"CXLBjMMcwkc17GfJtBos6rQCo1ypeH6eDbB82Kby4MRm",
"5Un6AdG9GBjxVhTSvvt2x6X6vtN1zrDxkkDpDcShnHfF",
"9vMJfxuKxXBoEa7rM12mYLMwTacLMLDJqHozw96WQL8i",
],
// [
// // Wrapped LUNA
// "2Xf2yAXJfg82sWwdLUo2x9mZXy6JCdszdMZkcF1Hf4KV",
// "EQTV1LW23Mgtjb5LXSg9NGw1J32oqTV4HCPmHCVSGmqD",
// ],
[
// Wrapped LUNA
"2Xf2yAXJfg82sWwdLUo2x9mZXy6JCdszdMZkcF1Hf4KV",
"EQTV1LW23Mgtjb5LXSg9NGw1J32oqTV4HCPmHCVSGmqD",
"F6v4wfAdJB8D8p77bMXZgYt8TDKsYxLYxH5AFhUkYx9W",
],
[
// FTT
@ -454,7 +463,18 @@ export const MIGRATION_ASSET_MAP = new Map<string, string>(
export const ETH_MIGRATION_ASSET_MAP = new Map<string, string>(
CLUSTER === "mainnet"
? []
? [
[
// LUNA
"0xd2877702675e6cEb975b4A1dFf9fb7BAF4C91ea9",
"0xe76820F1DB773B1d62a3D22F47259705cC5fA4E6",
],
[
// UST
"0xa47c8bf37f92aBed4A126BDA807A7b7498661acD",
"0xF39C29d8f6851d87c40c83b61078EB7384f7Cb51",
],
]
: CLUSTER === "testnet"
? []
: [
@ -467,22 +487,29 @@ export const ETH_MIGRATION_ASSET_MAP = new Map<string, string>(
export const BSC_MIGRATION_ASSET_MAP = new Map<string, string>(
CLUSTER === "mainnet"
? []
? [
[
// LUNA
"0xECCF35F941Ab67FfcAA9A1265C2fF88865caA005",
"0x355A116ef1Cf566B12Ef3a8e409A64e303c53740",
],
[
// UST
"0x23396cF899Ca06c4472205fC903bDB4de249D6fC",
"0x0F98AB919D04a291838B3b075c57181057D4CF75",
],
]
: CLUSTER === "testnet"
? []
: [
// [
// "0x2D8BE6BF0baA74e0A907016679CaE9190e80dD0A",
// "0x4bf3A7dFB3b76b5B3E169ACE65f888A4b4FCa5Ee",
// ],
// [
// "0x68d1569d1a6968f194b4d93f8d0b416c123a599f",
// "0xFcCeD5E997E7fb1D0594518D3eD57245bB8ed17E",
// ],
]
);
export const getMigrationAssetMap = (chainId: ChainID) => {
export const getMigrationAssetMap = (chainId: ChainId) => {
if (chainId === CHAIN_ID_BSC) {
return BSC_MIGRATION_ASSET_MAP;
} else if (chainId === CHAIN_ID_ETH) {

View File

@ -1,13 +1,16 @@
import { WalletDialogProvider } from "@solana/wallet-adapter-material-ui";
import { useWallet, WalletProvider } from "@solana/wallet-adapter-react";
import { getPhantomWallet } from "@solana/wallet-adapter-wallets";
import {
getPhantomWallet,
getSolletWallet,
} from "@solana/wallet-adapter-wallets";
import React, { FC, useMemo } from "react";
export const SolanaWalletProvider: FC = (props) => {
// @solana/wallet-adapter-wallets includes all the adapters but supports tree shaking --
// Only the wallets you want to instantiate here will be compiled into your application
const wallets = useMemo(() => {
return [getPhantomWallet()];
return [getPhantomWallet(), getSolletWallet()];
}, []);
return (