@uniswap/token-lists#TokenList TypeScript Examples
The following examples show how to use
@uniswap/token-lists#TokenList.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: useTokenList.ts From dxvote with GNU Affero General Public License v3.0 | 6 votes |
useTokenList = (chainId?: number) => {
const tokenList = useIPFSFile<TokenList>(SWAPR_TOKEN_LIST);
const tokens = useMemo(() => {
let list = tokenList.data?.tokens || [];
if (chainId) {
list = list.filter(token => token.chainId === chainId);
}
return list;
}, [chainId, tokenList]);
return { tokens };
}
Example #2
Source File: actions.ts From cuiswap with GNU General Public License v3.0 | 6 votes |
/**
* Contains the logic for resolving a URL to a valid token list
* @param listUrl list url
*/
async function getTokenList(listUrl: string): Promise<TokenList> {
const urls = uriToHttp(listUrl)
for (const url of urls) {
let response
try {
response = await fetch(url)
if (!response.ok) continue
} catch (error) {
console.error(`failed to fetch list ${listUrl} at uri ${url}`)
continue
}
const json = await response.json()
if (!tokenListValidator(json)) {
throw new Error(
tokenListValidator.errors?.reduce<string>((memo, error) => {
const add = `${error.dataPath} ${error.message ?? ''}`
return memo.length > 0 ? `${memo}; ${add}` : `${add}`
}, '') ?? 'Token list failed validation'
)
}
return json
}
throw new Error('Unrecognized list URL protocol.')
}
Example #3
Source File: actions.ts From interface-v2 with GNU General Public License v3.0 | 6 votes |
fetchTokenList: Readonly<{
pending: ActionCreatorWithPayload<{ url: string; requestId: string }>;
fulfilled: ActionCreatorWithPayload<{
url: string;
tokenList: TokenList;
requestId: string;
}>;
rejected: ActionCreatorWithPayload<{
url: string;
errorMessage: string;
requestId: string;
}>;
}> = {
pending: createAction('lists/fetchTokenList/pending'),
fulfilled: createAction('lists/fetchTokenList/fulfilled'),
rejected: createAction('lists/fetchTokenList/rejected'),
}
Example #4
Source File: buildLists.ts From default-token-list with MIT License | 6 votes |
makeTokenList = (
previousTokenList: TokenList | null,
tokens: TokenInfo[]
): TokenList => {
let timestamp: string = new Date().toISOString();
if (process.env.CI) {
if (!previousTokenList) {
throw new Error("Token list not found");
}
// if in CI, use the timestamp generated from the previous process
timestamp = previousTokenList.timestamp;
}
return {
name: previousTokenList?.name ?? "Unknown List",
logoURI: `${LOGO_URI_BASE}/logo.svg`,
keywords: ["celo", "ubeswap", "defi"],
timestamp,
tokens,
version: {
major: parseInt(version[0]),
minor: parseInt(version[1]),
patch: parseInt(version[2]),
},
};
}
Example #5
Source File: useFetchListCallback.ts From cheeseswap-interface with GNU General Public License v3.0 | 6 votes |
export function useFetchListCallback(): (listUrl: string) => Promise<TokenList> {
const { chainId, library } = useActiveWeb3React()
const dispatch = useDispatch<AppDispatch>()
const ensResolver = useCallback(
(ensName: string) => {
if (!library || chainId !== ChainId.MAINNET) {
if (NETWORK_CHAIN_ID === ChainId.MAINNET) {
const networkLibrary = getNetworkLibrary()
if (networkLibrary) {
return resolveENSContentHash(ensName, networkLibrary)
}
}
throw new Error('Could not construct mainnet ENS resolver')
}
return resolveENSContentHash(ensName, library)
},
[chainId, library]
)
return useCallback(
async (listUrl: string) => {
const requestId = nanoid()
dispatch(fetchTokenList.pending({ requestId, url: listUrl }))
return getTokenList(listUrl, ensResolver)
.then(tokenList => {
dispatch(fetchTokenList.fulfilled({ url: listUrl, tokenList, requestId }))
return tokenList
})
.catch(error => {
console.debug(`Failed to get list at url ${listUrl}`, error)
dispatch(fetchTokenList.rejected({ url: listUrl, requestId, errorMessage: error.message }))
throw error
})
},
[dispatch, ensResolver]
)
}
Example #6
Source File: useFetchListCallback.ts From dyp with Do What The F*ck You Want To Public License | 6 votes |
export function useFetchListCallback(): (listUrl: string) => Promise<TokenList> {
const { chainId, library } = useActiveWeb3React()
const dispatch = useDispatch<AppDispatch>()
const ensResolver = useCallback(
(ensName: string) => {
if (!library || chainId !== ChainId.MAINNET) {
if (NETWORK_CHAIN_ID === ChainId.MAINNET) {
const networkLibrary = getNetworkLibrary()
if (networkLibrary) {
return resolveENSContentHash(ensName, networkLibrary)
}
}
throw new Error('Could not construct mainnet ENS resolver')
}
return resolveENSContentHash(ensName, library)
},
[chainId, library]
)
return useCallback(
async (listUrl: string) => {
const requestId = nanoid()
dispatch(fetchTokenList.pending({ requestId, url: listUrl }))
return getTokenList(listUrl, ensResolver)
.then(tokenList => {
dispatch(fetchTokenList.fulfilled({ url: listUrl, tokenList, requestId }))
return tokenList
})
.catch(error => {
console.debug(`Failed to get list at url ${listUrl}`, error)
dispatch(fetchTokenList.rejected({ url: listUrl, requestId, errorMessage: error.message }))
throw error
})
},
[dispatch, ensResolver]
)
}
Example #7
Source File: actions.ts From limit-orders-lib with GNU General Public License v3.0 | 6 votes |
fetchTokenList: Readonly<{
pending: ActionCreatorWithPayload<{ url: string; requestId: string }>;
fulfilled: ActionCreatorWithPayload<{
url: string;
tokenList: TokenList;
requestId: string;
}>;
rejected: ActionCreatorWithPayload<{
url: string;
errorMessage: string;
requestId: string;
}>;
}> = {
pending: createAction("glists/fetchTokenList/pending"),
fulfilled: createAction("glists/fetchTokenList/fulfilled"),
rejected: createAction("glists/fetchTokenList/rejected"),
}
Example #8
Source File: Manage.tsx From glide-frontend with GNU General Public License v3.0 | 6 votes |
export default function Manage({
setModalView,
setImportList,
setImportToken,
setListUrl,
}: {
setModalView: (view: CurrencyModalView) => void
setImportToken: (token: Token) => void
setImportList: (list: TokenList) => void
setListUrl: (url: string) => void
}) {
const [showLists, setShowLists] = useState(true)
const { t } = useTranslation()
return (
<ModalBody>
<StyledButtonMenu
activeIndex={showLists ? 0 : 1}
onItemClick={() => setShowLists((prev) => !prev)}
scale="sm"
variant="subtle"
mb="32px"
>
<ButtonMenuItem width="50%">{t('Lists')}</ButtonMenuItem>
<ButtonMenuItem width="50%">{t('Tokens')}</ButtonMenuItem>
</StyledButtonMenu>
{showLists ? (
<ManageLists setModalView={setModalView} setImportList={setImportList} setListUrl={setListUrl} />
) : (
<ManageTokens setModalView={setModalView} setImportToken={setImportToken} />
)}
</ModalBody>
)
}
Example #9
Source File: useFetchListCallback.ts From goose-frontend-amm with GNU General Public License v3.0 | 6 votes |
export function useFetchListCallback(): (listUrl: string) => Promise<TokenList> {
const { chainId, library } = useActiveWeb3React()
const dispatch = useDispatch<AppDispatch>()
const ensResolver = useCallback(
(ensName: string) => {
if (!library || chainId !== ChainId.MAINNET) {
if (NETWORK_CHAIN_ID === ChainId.MAINNET) {
const networkLibrary = getNetworkLibrary()
if (networkLibrary) {
return resolveENSContentHash(ensName, networkLibrary)
}
}
throw new Error('Could not construct mainnet ENS resolver')
}
return resolveENSContentHash(ensName, library)
},
[chainId, library]
)
return useCallback(
async (listUrl: string) => {
const requestId = nanoid()
dispatch(fetchTokenList.pending({ requestId, url: listUrl }))
return getTokenList(listUrl, ensResolver)
.then((tokenList) => {
dispatch(fetchTokenList.fulfilled({ url: listUrl, tokenList, requestId }))
return tokenList
})
.catch((error) => {
console.error(`Failed to get list at url ${listUrl}`, error)
dispatch(fetchTokenList.rejected({ url: listUrl, requestId, errorMessage: error.message }))
throw error
})
},
[dispatch, ensResolver]
)
}
Example #10
Source File: useFetchListCallback.ts From pancake-swap-exchange-testnet with GNU General Public License v3.0 | 6 votes |
export function useFetchListCallback(): (listUrl: string) => Promise<TokenList> {
const { chainId, library } = useActiveWeb3React()
const dispatch = useDispatch<AppDispatch>()
const ensResolver = useCallback(
(ensName: string) => {
if (!library || chainId !== ChainId.MAINNET) {
if (NETWORK_CHAIN_ID === ChainId.MAINNET) {
const networkLibrary = getNetworkLibrary()
if (networkLibrary) {
return resolveENSContentHash(ensName, networkLibrary)
}
}
throw new Error('Could not construct mainnet ENS resolver')
}
return resolveENSContentHash(ensName, library)
},
[chainId, library]
)
return useCallback(
async (listUrl: string) => {
const requestId = nanoid()
dispatch(fetchTokenList.pending({ requestId, url: listUrl }))
return getTokenList(listUrl, ensResolver)
.then((tokenList) => {
dispatch(fetchTokenList.fulfilled({ url: listUrl, tokenList, requestId }))
return tokenList
})
.catch((error) => {
console.error(`Failed to get list at url ${listUrl}`, error)
dispatch(fetchTokenList.rejected({ url: listUrl, requestId, errorMessage: error.message }))
throw error
})
},
[dispatch, ensResolver]
)
}
Example #11
Source File: buildList.ts From pancake-toolkit with GNU General Public License v3.0 | 6 votes |
buildList = (listName: string, versionBump?: VersionBump): TokenList => {
const { list, name, keywords, logoURI, sort, currentVersion } = lists[listName];
const version = getNextVersion(currentVersion, versionBump);
return {
name,
timestamp: new Date().toISOString(),
version,
logoURI,
keywords,
// sort them by symbol for easy readability (not applied to default list)
tokens: sort
? list.sort((t1, t2) => {
if (t1.chainId === t2.chainId) {
// CAKE first in extended list
if ((t1.symbol === "CAKE") !== (t2.symbol === "CAKE")) {
return t1.symbol === "CAKE" ? -1 : 1;
}
return t1.symbol.toLowerCase() < t2.symbol.toLowerCase() ? -1 : 1;
}
return t1.chainId < t2.chainId ? -1 : 1;
})
: list,
};
}
Example #12
Source File: useFetchListCallback.ts From panther-frontend-dex with GNU General Public License v3.0 | 6 votes |
export function useFetchListCallback(): (listUrl: string) => Promise<TokenList> {
const { chainId, library } = useActiveWeb3React()
const dispatch = useDispatch<AppDispatch>()
const ensResolver = useCallback(
(ensName: string) => {
if (!library || chainId !== ChainId.MAINNET) {
if (NETWORK_CHAIN_ID === ChainId.MAINNET) {
const networkLibrary = getNetworkLibrary()
if (networkLibrary) {
return resolveENSContentHash(ensName, networkLibrary)
}
}
throw new Error('Could not construct mainnet ENS resolver')
}
return resolveENSContentHash(ensName, library)
},
[chainId, library]
)
return useCallback(
async (listUrl: string) => {
const requestId = nanoid()
dispatch(fetchTokenList.pending({ requestId, url: listUrl }))
return getTokenList(listUrl, ensResolver)
.then((tokenList) => {
dispatch(fetchTokenList.fulfilled({ url: listUrl, tokenList, requestId }))
return tokenList
})
.catch((error) => {
console.error(`Failed to get list at url ${listUrl}`, error)
dispatch(fetchTokenList.rejected({ url: listUrl, requestId, errorMessage: error.message }))
throw error
})
},
[dispatch, ensResolver]
)
}
Example #13
Source File: useFetchListCallback.ts From forward.swaps with GNU General Public License v3.0 | 6 votes |
export function useFetchListCallback(): (listUrl: string, sendDispatch?: boolean) => Promise<TokenList> {
const { chainId, library } = useActiveWeb3React()
const dispatch = useDispatch<AppDispatch>()
const ensResolver = useCallback(
(ensName: string) => {
if (!library || chainId !== ChainId.MAINNET) {
if (NETWORK_CHAIN_ID === ChainId.MAINNET) {
const networkLibrary = getNetworkLibrary()
if (networkLibrary) {
return resolveENSContentHash(ensName, networkLibrary)
}
}
throw new Error('Could not construct mainnet ENS resolver')
}
return resolveENSContentHash(ensName, library)
},
[chainId, library]
)
// note: prevent dispatch if using for list search or unsupported list
return useCallback(
async (listUrl: string, sendDispatch = true) => {
const requestId = nanoid()
sendDispatch && dispatch(fetchTokenList.pending({ requestId, url: listUrl }))
return getTokenList(listUrl, ensResolver)
.then(tokenList => {
sendDispatch && dispatch(fetchTokenList.fulfilled({ url: listUrl, tokenList, requestId }))
return tokenList
})
.catch(error => {
console.debug(`Failed to get list at url ${listUrl}`, error)
sendDispatch && dispatch(fetchTokenList.rejected({ url: listUrl, requestId, errorMessage: error.message }))
throw error
})
},
[dispatch, ensResolver]
)
}
Example #14
Source File: useFetchListCallback.ts From luaswap-interface with GNU General Public License v3.0 | 6 votes |
export function useFetchListCallback(): (listUrl: string) => Promise<TokenList> {
const { chainId, library } = useActiveWeb3React()
const dispatch = useDispatch<AppDispatch>()
const ensResolver = useCallback(
(ensName: string) => {
if (!library || chainId !== ChainId.MAINNET) {
if (NETWORK_CHAIN_ID === ChainId.MAINNET) {
const networkLibrary = getNetworkLibrary()
if (networkLibrary) {
return resolveENSContentHash(ensName, networkLibrary)
}
}
throw new Error('Could not construct mainnet ENS resolver')
}
return resolveENSContentHash(ensName, library)
},
[chainId, library]
)
return useCallback(
async (listUrl: string) => {
const requestId = nanoid()
dispatch(fetchTokenList.pending({ requestId, url: listUrl }))
return getTokenList(listUrl, ensResolver)
.then(tokenList => {
dispatch(fetchTokenList.fulfilled({ url: listUrl, tokenList, requestId }))
return tokenList
})
.catch(error => {
console.debug(`Failed to get list at url ${listUrl}`, error)
dispatch(fetchTokenList.rejected({ url: listUrl, requestId, errorMessage: error.message }))
throw error
})
},
[dispatch, ensResolver]
)
}
Example #15
Source File: buildList.ts From vvs-ui with GNU General Public License v3.0 | 6 votes |
buildList = (listName: string, versionBump?: VersionBump): TokenList => {
const { list, name, keywords, logoURI, sort, currentVersion } = lists[listName];
const version = getNextVersion(currentVersion, versionBump);
return {
name,
timestamp: new Date().toISOString(),
version,
logoURI,
keywords,
// sort them by symbol for easy readability (not applied to default list)
tokens: sort
? list.sort((t1, t2) => {
if (t1.chainId === t2.chainId) {
// CAKE first in extended list
if ((t1.symbol === "CAKE") !== (t2.symbol === "CAKE")) {
return t1.symbol === "CAKE" ? -1 : 1;
}
return t1.symbol.toLowerCase() < t2.symbol.toLowerCase() ? -1 : 1;
}
return t1.chainId < t2.chainId ? -1 : 1;
})
: list,
};
}
Example #16
Source File: useFetchListCallback.ts From pancakeswap-testnet with GNU General Public License v3.0 | 6 votes |
export function useFetchListCallback(): (listUrl: string) => Promise<TokenList> {
const { chainId, library } = useActiveWeb3React()
const dispatch = useDispatch<AppDispatch>()
const ensResolver = useCallback(
(ensName: string) => {
if (!library || chainId !== ChainId.MAINNET) {
if (NETWORK_CHAIN_ID === ChainId.MAINNET) {
const networkLibrary = getNetworkLibrary()
if (networkLibrary) {
return resolveENSContentHash(ensName, networkLibrary)
}
}
throw new Error('Could not construct mainnet ENS resolver')
}
return resolveENSContentHash(ensName, library)
},
[chainId, library]
)
return useCallback(
async (listUrl: string) => {
const requestId = nanoid()
dispatch(fetchTokenList.pending({ requestId, url: listUrl }))
return getTokenList(listUrl, ensResolver)
.then((tokenList) => {
dispatch(fetchTokenList.fulfilled({ url: listUrl, tokenList, requestId }))
return tokenList
})
.catch((error) => {
console.error(`Failed to get list at url ${listUrl}`, error)
dispatch(fetchTokenList.rejected({ url: listUrl, requestId, errorMessage: error.message }))
throw error
})
},
[dispatch, ensResolver]
)
}
Example #17
Source File: ListUpdatePopup.tsx From cuiswap with GNU General Public License v3.0 | 5 votes |
export default function ListUpdatePopup({
popKey,
listUrl,
oldList,
newList,
auto
}: {
popKey: string
listUrl: string
oldList: TokenList
newList: TokenList
auto: boolean
}) {
const removePopup = useRemovePopup()
const removeThisPopup = useCallback(() => removePopup(popKey), [popKey, removePopup])
const dispatch = useDispatch<AppDispatch>()
const theme = useContext(ThemeContext)
const updateList = useCallback(() => {
if (auto) return
dispatch(acceptListUpdate(listUrl))
removeThisPopup()
}, [auto, dispatch, listUrl, removeThisPopup])
return (
<AutoRow>
<div style={{ paddingRight: 16 }}>
{auto ? <Info color={theme.text2} size={24} /> : <AlertCircle color={theme.red1} size={24} />}{' '}
</div>
<AutoColumn style={{ flex: '1' }} gap="8px">
{auto ? (
<TYPE.body fontWeight={500}>
The token list "{oldList.name}" has been updated to{' '}
<strong>{versionLabel(newList.version)}</strong>.
</TYPE.body>
) : (
<>
<div>
A token list update is available for the list "{oldList.name}" ({versionLabel(oldList.version)}{' '}
to {versionLabel(newList.version)}).
</div>
<AutoRow>
<div style={{ flexGrow: 1, marginRight: 6 }}>
<ButtonPrimary onClick={updateList}>Update list</ButtonPrimary>
</div>
<div style={{ flexGrow: 1 }}>
<ButtonSecondary onClick={removeThisPopup}>Dismiss</ButtonSecondary>
</div>
</AutoRow>
</>
)}
</AutoColumn>
</AutoRow>
)
}
Example #18
Source File: useFetchListCallback.ts From interface-v2 with GNU General Public License v3.0 | 5 votes |
export function useFetchListCallback(): (
listUrl: string,
) => Promise<TokenList> {
const { chainId, library } = useActiveWeb3React();
const dispatch = useDispatch<AppDispatch>();
const ensResolver = useCallback(
(ensName: string) => {
if (!library || chainId !== ChainId.MUMBAI) {
if (NETWORK_CHAIN_ID === ChainId.MUMBAI) {
const networkLibrary = getNetworkLibrary();
if (networkLibrary) {
return resolveENSContentHash(ensName, networkLibrary);
}
}
throw new Error('Could not construct mainnet ENS resolver');
}
return resolveENSContentHash(ensName, library);
},
[chainId, library],
);
return useCallback(
async (listUrl: string) => {
const requestId = nanoid();
dispatch(fetchTokenList.pending({ requestId, url: listUrl }));
return getTokenList(listUrl, ensResolver)
.then((tokenList) => {
dispatch(
fetchTokenList.fulfilled({ url: listUrl, tokenList, requestId }),
);
return tokenList;
})
.catch((error) => {
console.debug(`Failed to get list at url ${listUrl}`, error);
dispatch(
fetchTokenList.rejected({
url: listUrl,
requestId,
errorMessage: error.message,
}),
);
throw error;
});
},
[dispatch, ensResolver],
);
}
Example #19
Source File: validateLists.ts From default-token-list with MIT License | 5 votes |
defaultList: TokenList = ubeswapList
Example #20
Source File: hooks.ts From cheeseswap-interface with GNU General Public License v3.0 | 5 votes |
listCache: WeakMap<TokenList, TokenAddressMap> | null =
typeof WeakMap !== 'undefined' ? new WeakMap<TokenList, TokenAddressMap>() : null
Example #21
Source File: hooks.ts From dyp with Do What The F*ck You Want To Public License | 5 votes |
listCache: WeakMap<TokenList, TokenAddressMap> | null =
typeof WeakMap !== 'undefined' ? new WeakMap<TokenList, TokenAddressMap>() : null
Example #22
Source File: Manage.tsx From limit-orders-lib with GNU General Public License v3.0 | 5 votes |
export default function Manage({
onDismiss,
setModalView,
setImportList,
setImportToken,
setListUrl,
}: {
onDismiss: () => void;
setModalView: (view: CurrencyModalView) => void;
setImportToken: (token: Token) => void;
setImportList: (list: TokenList) => void;
setListUrl: (url: string) => void;
}) {
// toggle between tokens and lists
const [showLists, setShowLists] = useState(true);
return (
<Wrapper>
<PaddedColumn>
<RowBetween>
<ArrowLeft
style={{ cursor: "pointer" }}
onClick={() => setModalView(CurrencyModalView.search)}
/>
<Text fontWeight={500} fontSize={20}>
Manage
</Text>
<CloseIcon onClick={onDismiss} />
</RowBetween>
</PaddedColumn>
<Separator />
<PaddedColumn style={{ paddingBottom: 0 }}>
<ToggleWrapper>
<ToggleOption
onClick={() => setShowLists(!showLists)}
active={showLists}
>
Lists
</ToggleOption>
<ToggleOption
onClick={() => setShowLists(!showLists)}
active={!showLists}
>
Tokens
</ToggleOption>
</ToggleWrapper>
</PaddedColumn>
{showLists ? (
<ManageLists
setModalView={setModalView}
setImportList={setImportList}
setListUrl={setListUrl}
/>
) : (
<ManageTokens
setModalView={setModalView}
setImportToken={setImportToken}
/>
)}
</Wrapper>
);
}
Example #23
Source File: useFetchListCallback.ts From glide-frontend with GNU General Public License v3.0 | 5 votes |
function useFetchListCallback(): (listUrl: string, sendDispatch?: boolean) => Promise<TokenList> {
const { library } = useWeb3Provider()
const { chainId } = useActiveWeb3React()
const dispatch = useDispatch<AppDispatch>()
const ensResolver = useCallback(
(ensName: string) => {
if (chainId !== ChainId.MAINNET) {
throw new Error('Could not construct mainnet ENS resolver')
}
return resolveENSContentHash(ensName, library)
},
[chainId, library],
)
// note: prevent dispatch if using for list search or unsupported list
return useCallback(
async (listUrl: string, sendDispatch = true) => {
const requestId = nanoid()
if (sendDispatch) {
dispatch(fetchTokenList.pending({ requestId, url: listUrl }))
}
return getTokenList(listUrl, ensResolver)
.then((tokenList) => {
if (sendDispatch) {
dispatch(fetchTokenList.fulfilled({ url: listUrl, tokenList, requestId }))
}
return tokenList
})
.catch((error) => {
console.error(`Failed to get list at url ${listUrl}`, error)
if (sendDispatch) {
dispatch(fetchTokenList.rejected({ url: listUrl, requestId, errorMessage: error.message }))
}
throw error
})
},
[dispatch, ensResolver],
)
}
Example #24
Source File: hooks.ts From goose-frontend-amm with GNU General Public License v3.0 | 5 votes |
listCache: WeakMap<TokenList, TokenAddressMap> | null =
typeof WeakMap !== 'undefined' ? new WeakMap<TokenList, TokenAddressMap>() : null
Example #25
Source File: hooks.ts From pancake-swap-exchange-testnet with GNU General Public License v3.0 | 5 votes |
listCache: WeakMap<TokenList, TokenAddressMap> | null =
typeof WeakMap !== 'undefined' ? new WeakMap<TokenList, TokenAddressMap>() : null
Example #26
Source File: buildList.ts From pancake-toolkit with GNU General Public License v3.0 | 5 votes |
saveList = (tokenList: TokenList, listName: string): void => {
const tokenListPath = `${path.resolve()}/lists/${listName}.json`;
const stringifiedList = JSON.stringify(tokenList, null, 2);
fs.writeFileSync(tokenListPath, stringifiedList);
console.info("Token list saved to ", tokenListPath);
}
Example #27
Source File: hooks.ts From panther-frontend-dex with GNU General Public License v3.0 | 5 votes |
listCache: WeakMap<TokenList, TokenAddressMap> | null =
typeof WeakMap !== 'undefined' ? new WeakMap<TokenList, TokenAddressMap>() : null
Example #28
Source File: CurrencySearchModal.tsx From forward.swaps with GNU General Public License v3.0 | 5 votes |
export default function CurrencySearchModal({
isOpen,
onDismiss,
onCurrencySelect,
selectedCurrency,
otherSelectedCurrency,
showCommonBases = false
}: CurrencySearchModalProps) {
const [modalView, setModalView] = useState<CurrencyModalView>(CurrencyModalView.manage)
const lastOpen = useLast(isOpen)
useEffect(() => {
if (isOpen && !lastOpen) {
setModalView(CurrencyModalView.search)
}
}, [isOpen, lastOpen])
const handleCurrencySelect = useCallback(
(currency: Currency) => {
onCurrencySelect(currency)
onDismiss()
},
[onDismiss, onCurrencySelect]
)
// for token import view
const prevView = usePrevious(modalView)
// used for import token flow
const [importToken, setImportToken] = useState<Token | undefined>()
// used for import list
const [importList, setImportList] = useState<TokenList | undefined>()
const [listURL, setListUrl] = useState<string | undefined>()
// change min height if not searching
const minHeight = modalView === CurrencyModalView.importToken || modalView === CurrencyModalView.importList ? 40 : 80
return (
<Modal isOpen={isOpen} onDismiss={onDismiss} maxHeight={80} minHeight={minHeight}>
{modalView === CurrencyModalView.search ? (
<CurrencySearch
isOpen={isOpen}
onDismiss={onDismiss}
onCurrencySelect={handleCurrencySelect}
selectedCurrency={selectedCurrency}
otherSelectedCurrency={otherSelectedCurrency}
showCommonBases={showCommonBases}
showImportView={() => setModalView(CurrencyModalView.importToken)}
setImportToken={setImportToken}
showManageView={() => setModalView(CurrencyModalView.manage)}
/>
) : modalView === CurrencyModalView.importToken && importToken ? (
<ImportToken
tokens={[importToken]}
onDismiss={onDismiss}
onBack={() =>
setModalView(prevView && prevView !== CurrencyModalView.importToken ? prevView : CurrencyModalView.search)
}
handleCurrencySelect={handleCurrencySelect}
/>
) : modalView === CurrencyModalView.importList && importList && listURL ? (
<ImportList list={importList} listURL={listURL} onDismiss={onDismiss} setModalView={setModalView} />
) : modalView === CurrencyModalView.manage ? (
<Manage
onDismiss={onDismiss}
setModalView={setModalView}
setImportToken={setImportToken}
setImportList={setImportList}
setListUrl={setListUrl}
/>
) : (
''
)}
</Modal>
)
}
Example #29
Source File: hooks.ts From luaswap-interface with GNU General Public License v3.0 | 5 votes |
listCache: WeakMap<TokenList, TokenAddressMap> | null =
typeof WeakMap !== 'undefined' ? new WeakMap<TokenList, TokenAddressMap>() : null