diff --git a/src/constants/env.ts b/src/constants/env.ts index a11cbe6734..6413cb64c9 100644 --- a/src/constants/env.ts +++ b/src/constants/env.ts @@ -1,6 +1,8 @@ +import { ChainId } from '@kyberswap/ks-sdk-core' import invariant from 'tiny-invariant' import { PrivateAnnouncementType } from 'components/Announcement/type' +import { isAddressString } from 'utils/address' import { ENV_TYPE } from './type' @@ -162,8 +164,8 @@ export const getAnnouncementsTemplateIds = (type: keyof TemplateConfig) => { } const mock = localStorage.getItem('mock')?.split(',') ?? [] -export const MOCK_ACCOUNT_EVM = mock[0] ?? '' -export const MOCK_ACCOUNT_SOLANA = mock[1] ?? '' +export const MOCK_ACCOUNT_EVM = isAddressString(ChainId.MAINNET, mock[0]?.trim()) +export const MOCK_ACCOUNT_SOLANA = isAddressString(ChainId.SOLANA, mock[1]?.trim()) const isSupportTestNet = ENV_LEVEL < ENV_TYPE.PROD && new URLSearchParams(window.location.search).get('test') export const CROSS_CHAIN_CONFIG = { diff --git a/src/utils/address.ts b/src/utils/address.ts new file mode 100644 index 0000000000..365df0b211 --- /dev/null +++ b/src/utils/address.ts @@ -0,0 +1,29 @@ +import { ChainId, Token } from '@kyberswap/ks-sdk-core' +import { PublicKey } from '@solana/web3.js' + +export const isWalletAddressSolana = async (addr: string) => { + try { + if (!addr) return false + const publicKey = new PublicKey(addr) + return await PublicKey.isOnCurve(publicKey.toBytes()) + } catch (err) { + return false + } +} + +// returns the checksummed address if the address is valid, otherwise returns false +export function isAddress(chainId: ChainId, value: any): string | false { + try { + return new Token(chainId, value, 0).address + } catch { + return false + } +} + +export function isAddressString(chainId: ChainId, value: any): string { + try { + return new Token(chainId, value, 0).address + } catch { + return '' + } +} diff --git a/src/utils/index.ts b/src/utils/index.ts index 5edd8718db..b7e5ad6e05 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -1,8 +1,7 @@ import { ApolloClient, NormalizedCacheObject } from '@apollo/client' import { BigNumber } from '@ethersproject/bignumber' -import { ChainId, Currency, CurrencyAmount, Percent, Token, WETH } from '@kyberswap/ks-sdk-core' +import { ChainId, Currency, CurrencyAmount, Percent, WETH } from '@kyberswap/ks-sdk-core' import { WalletReadyState } from '@solana/wallet-adapter-base' -import { PublicKey } from '@solana/web3.js' import dayjs from 'dayjs' import JSBI from 'jsbi' import Numeral from 'numeral' @@ -26,32 +25,9 @@ import store from 'state' import { GroupedTxsByHash, TransactionDetails } from 'state/transactions/type' import { chunk } from 'utils/array' -export const isWalletAddressSolana = async (addr: string) => { - try { - if (!addr) return false - const publicKey = new PublicKey(addr) - return await PublicKey.isOnCurve(publicKey.toBytes()) - } catch (err) { - return false - } -} +import { isAddress, isAddressString, isWalletAddressSolana } from './address' -// returns the checksummed address if the address is valid, otherwise returns false -export function isAddress(chainId: ChainId, value: any): string | false { - try { - return new Token(chainId, value, 0).address - } catch { - return false - } -} - -export function isAddressString(chainId: ChainId, value: any): string { - try { - return new Token(chainId, value, 0).address - } catch { - return '' - } -} +export { isAddress, isWalletAddressSolana, isAddressString } export function getEtherscanLink( chainId: ChainId,