From 8759d04d44cc2a589e623ac6a286ad3ca6d5efc5 Mon Sep 17 00:00:00 2001 From: Nelson Taveras <4562733+nvtaveras@users.noreply.github.com> Date: Tue, 21 May 2024 17:25:34 +0200 Subject: [PATCH] feat: add cKES to all networks (#131) --- src/config/consts.ts | 2 -- src/config/exchanges.ts | 25 +++++++++++++++++++++++++ src/config/tokens.ts | 12 ++++++++++++ src/features/swap/SwapConfirm.tsx | 11 ----------- src/images/tokens/TokenIcon.tsx | 2 ++ src/images/tokens/cKES.svg | 5 +++++ 6 files changed, 44 insertions(+), 13 deletions(-) create mode 100644 src/images/tokens/cKES.svg diff --git a/src/config/consts.ts b/src/config/consts.ts index 332c9a6..5c46d1d 100644 --- a/src/config/consts.ts +++ b/src/config/consts.ts @@ -18,6 +18,4 @@ export const MAX_GAS_LIMIT = '10000000' // 10 million export const MIN_ROUNDED_VALUE = 0.0001 export const DISPLAY_DECIMALS = 4 -export const MIN_EXCHANGE_RATE = 0.01 // 1<->100 ratio -export const MAX_EXCHANGE_RATE = 100 // 1<->100 ratio export const MAX_EXCHANGE_SPREAD = 0.1 // 10% diff --git a/src/config/exchanges.ts b/src/config/exchanges.ts index f737f44..5f70aa7 100644 --- a/src/config/exchanges.ts +++ b/src/config/exchanges.ts @@ -104,7 +104,16 @@ export const AlfajoresExchanges: Exchange[] = [ '0x2F25deB3848C207fc8E0c34035B3Ba7fC157602B', ], }, + { + providerAddr: '0x9B64E8EaBD1a035b148cE970d3319c5C3Ad53EC3', + id: '0x89de88b8eb790de26f4649f543cb6893d93635c728ac857f0926e842fb0d298b', + assets: [ + '0x874069Fa1Eb16D44d622F2e0Ca25eeA172369bC1', + '0x1E0433C1769271ECcF4CFF9FDdD515eefE6CdF92', + ], + }, ] + export const BaklavaExchanges: Exchange[] = [ { providerAddr: '0xFF9a3da00F42839CD6D33AD7adf50bCc97B41411', @@ -202,6 +211,14 @@ export const BaklavaExchanges: Exchange[] = [ '0xB407D37d76c417B6343310D42611FCA106B2abB8', ], }, + { + providerAddr: '0xFF9a3da00F42839CD6D33AD7adf50bCc97B41411', + id: '0x89de88b8eb790de26f4649f543cb6893d93635c728ac857f0926e842fb0d298b', + assets: [ + '0x62492A644A588FD904270BeD06ad52B9abfEA1aE', + '0x8813Ae180017057d0Cf98C930cED1E7101B97370', + ], + }, ] export const CeloExchanges: Exchange[] = [ @@ -301,6 +318,14 @@ export const CeloExchanges: Exchange[] = [ '0xcebA9300f2b948710d2653dD7B07f33A8B32118C', ], }, + { + providerAddr: '0x22d9db95E6Ae61c104A7B6F6C78D7993B94ec901', + id: '0x89de88b8eb790de26f4649f543cb6893d93635c728ac857f0926e842fb0d298b', + assets: [ + '0x765DE816845861e75A25fCA122bb6898B8B1282a', + '0x456a3D042C0DbD3db53D5489e98dFb038553B0d0', + ], + }, ] export const MentoExchanges: Record> = { diff --git a/src/config/tokens.ts b/src/config/tokens.ts index 872eea1..0cb6a11 100644 --- a/src/config/tokens.ts +++ b/src/config/tokens.ts @@ -24,6 +24,7 @@ export enum TokenId { axlUSDC = 'axlUSDC', axlEUROC = 'axlEUROC', eXOF = 'eXOF', + cKES = 'cKES', } export const NativeStableTokenIds = [TokenId.cUSD, TokenId.cEUR, TokenId.cREAL] @@ -87,6 +88,13 @@ export const eXOF: Token = Object.freeze({ color: Color.usdcBlue, decimals: 18, }) +export const cKES: Token = Object.freeze({ + id: TokenId.cKES, + symbol: TokenId.cKES, + name: 'cKES', + color: Color.usdcBlue, + decimals: 18, +}) export const Tokens: Record = { CELO, @@ -97,6 +105,7 @@ export const Tokens: Record = { axlUSDC, axlEUROC, eXOF, + cKES, } export const TokenAddresses: Record> = Object.freeze({ @@ -109,6 +118,7 @@ export const TokenAddresses: Record> = Object. [TokenId.axlUSDC]: '0x87D61dA3d668797786D73BC674F053f87111570d', [TokenId.axlEUROC]: '0x6e673502c5b55F3169657C004e5797fFE5be6653', [TokenId.eXOF]: '0xB0FA15e002516d0301884059c0aaC0F0C72b019D', + [TokenId.cKES]: '0x1E0433C1769271ECcF4CFF9FDdD515eefE6CdF92', }, [ChainId.Baklava]: { [TokenId.CELO]: '0xdDc9bE57f553fe75752D61606B94CBD7e0264eF8', @@ -119,6 +129,7 @@ export const TokenAddresses: Record> = Object. [TokenId.axlUSDC]: '0xD4079B322c392D6b196f90AA4c439fC2C16d6770', [TokenId.axlEUROC]: '0x6f90ac394b1F45290d3023e4Ba0203005cAF2A4B', [TokenId.eXOF]: '0x64c1D812673E93Bc036AdC3D547d9950696DA5Af', + [TokenId.cKES]: '0x8813Ae180017057d0Cf98C930cED1E7101B97370', }, [ChainId.Celo]: { [TokenId.CELO]: '0x471EcE3750Da237f93B8E339c536989b8978a438', @@ -129,6 +140,7 @@ export const TokenAddresses: Record> = Object. [TokenId.axlUSDC]: '0xEB466342C4d449BC9f53A865D5Cb90586f405215', [TokenId.axlEUROC]: '0x061cc5a2C863E0C1Cb404006D559dB18A34C762d', [TokenId.eXOF]: '0x73F93dcc49cB8A239e2032663e9475dd5ef29A08', + [TokenId.cKES]: '0x456a3D042C0DbD3db53D5489e98dFb038553B0d0', }, }) diff --git a/src/features/swap/SwapConfirm.tsx b/src/features/swap/SwapConfirm.tsx index b887456..d54fc71 100644 --- a/src/features/swap/SwapConfirm.tsx +++ b/src/features/swap/SwapConfirm.tsx @@ -1,12 +1,9 @@ -import BigNumber from 'bignumber.js' import Lottie from 'lottie-react' import { SVGProps, useEffect, useState } from 'react' -import { toast } from 'react-toastify' import mentoLoaderBlue from 'src/animations/Mentoloader_blue.json' import mentoLoaderGreen from 'src/animations/Mentoloader_green.json' import { toastToYourSuccess } from 'src/components/TxSuccessToast' import { Button3D } from 'src/components/buttons/3DButton' -import { MAX_EXCHANGE_RATE, MIN_EXCHANGE_RATE } from 'src/config/consts' import { TokenId, Tokens } from 'src/config/tokens' import { useAppDispatch, useAppSelector } from 'src/features/store/hooks' import { setFormValues } from 'src/features/swap/swapSlice' @@ -106,14 +103,6 @@ export function SwapConfirmCard({ formValues }: Props) { const onSubmit = async () => { if (!rate || !amountWei || !address || !isConnected) return - const rateBN = new BigNumber(rate) - - // ignore eXOF for now until we have a better way to handle it - const tradeHasEXOF = toTokenId === 'eXOF' || fromTokenId === 'eXOF' - if (!tradeHasEXOF && (rateBN.lt(MIN_EXCHANGE_RATE) || rateBN.gt(MAX_EXCHANGE_RATE))) { - toast.error('Rate seems incorrect') - return - } if (!sendApproveTx || isApproveTxSuccess || isApproveTxLoading) { logger.debug('Approve already started or finished, ignoring submit') diff --git a/src/images/tokens/TokenIcon.tsx b/src/images/tokens/TokenIcon.tsx index 944ad6a..94c1df8 100644 --- a/src/images/tokens/TokenIcon.tsx +++ b/src/images/tokens/TokenIcon.tsx @@ -6,6 +6,7 @@ import USDCIcon from 'src/images/tokens/USDC.svg' import axlEUROCIcon from 'src/images/tokens/axlEUROC.svg' import axlUSDCIcon from 'src/images/tokens/axlUSDC.svg' import cEURIcon from 'src/images/tokens/cEUR.svg' +import cKESIcon from 'src/images/tokens/cKES.svg' import cREALIcon from 'src/images/tokens/cREAL.svg' import cUSDIcon from 'src/images/tokens/cUSD.svg' import eXOFIcon from 'src/images/tokens/eXOF.svg' @@ -39,6 +40,7 @@ function _TokenIcon({ token, size = 'm' }: Props) { else if (token?.id === TokenId.axlUSDC) imgSrc = axlUSDCIcon else if (token?.id === TokenId.axlEUROC) imgSrc = axlEUROCIcon else if (token?.id === TokenId.eXOF) imgSrc = eXOFIcon + else if (token?.id === TokenId.cKES) imgSrc = cKESIcon if (imgSrc) { return ( diff --git a/src/images/tokens/cKES.svg b/src/images/tokens/cKES.svg new file mode 100644 index 0000000..b773b3c --- /dev/null +++ b/src/images/tokens/cKES.svg @@ -0,0 +1,5 @@ + + + + +