Skip to content

Commit a9a3777

Browse files
committed
Upgrade deps to latest, including react-celo for WC v2
Update metamask firefox fix to newer version Refactor app dir for Next upgrade Remove some unused libs
1 parent a47e84d commit a9a3777

34 files changed

+2060
-1505
lines changed

jest.config.ts

-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ const config: JestConfigWithTsJest = {
44
preset: 'ts-jest',
55
setupFilesAfterEnv: ['<rootDir>/setupTests.ts'],
66
transform: {
7-
'.+\\.(css|styl|less|sass|scss)$': 'jest-css-modules-transform',
87
'.+\\.(ts|tsx)$': ['ts-jest', { tsconfig: 'tsconfig.test.json' }],
98
},
109
moduleNameMapper: {

package.json

+22-28
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@mento-protocol/mento-web",
3-
"version": "1.5.1",
3+
"version": "1.6.0",
44
"description": "A simple DApp for Celo Mento exchanges",
55
"keywords": [
66
"Celo",
@@ -26,55 +26,49 @@
2626
"prettier": "prettier --write ./src"
2727
},
2828
"dependencies": {
29-
"@celo/contractkit": "^3.1.0",
30-
"@celo/react-celo": "^4.3.0",
31-
"@ethersproject/abi": "^5.5.0",
32-
"@ethersproject/address": "^5.5.0",
33-
"@ethersproject/units": "^5.5.0",
34-
"@headlessui/react": "^1.7.8",
35-
"@metamask/inpage-provider": "6.0.1",
29+
"@celo/contractkit": "^3.2.0",
30+
"@celo/react-celo": "^5.0.3",
31+
"@mento-protocol/mento-sdk": "^0.1.1",
3632
"@metamask/jazzicon": "https://github.com/jmrossy/jazzicon#7a8df28",
37-
"@reduxjs/toolkit": "^1.9.2",
33+
"@metamask/post-message-stream": "6.1.0",
34+
"@metamask/providers": "10.2.1",
35+
"@reduxjs/toolkit": "^1.9.3",
3836
"bignumber.js": "^9.1.1",
37+
"ethers": "^5.7.2",
3938
"formik": "^2.2.9",
4039
"frappe-charts": "^1.6.2",
41-
"next": "13.1.6",
40+
"next": "13.2.1",
4241
"next-persist": "^1.2.4",
43-
"post-message-stream": "3.0.0",
4442
"react": "^18.2.0",
45-
"react-accessible-dropdown-menu-hook": "^3.2.0",
43+
"react-accessible-dropdown-menu-hook": "^4.0.0",
4644
"react-dom": "^18.2.0",
4745
"react-modal": "^3.16.1",
4846
"react-redux": "^8.0.5",
4947
"react-select": "4.3.1",
5048
"react-toastify": "^9.1.1"
5149
},
5250
"devDependencies": {
53-
"@testing-library/jest-dom": "^5.16.5",
54-
"@testing-library/react": "^13.4.0",
55-
"@testing-library/user-event": "^14.4.3",
56-
"@trivago/prettier-plugin-sort-imports": "^4.0.0",
51+
"@trivago/prettier-plugin-sort-imports": "^4.1.1",
5752
"@types/jest": "^29.4.0",
58-
"@types/node": "^18.11.18",
59-
"@types/react": "^18.0.27",
60-
"@types/react-dom": "^18.0.10",
53+
"@types/node": "^18.14.1",
54+
"@types/react": "^18.0.28",
55+
"@types/react-dom": "^18.0.11",
6156
"@types/react-modal": "^3.13.1",
6257
"@types/react-redux": "^7.1.25",
6358
"@types/react-select": "4.0.18",
64-
"@typescript-eslint/eslint-plugin": "^5.49.0",
65-
"@typescript-eslint/parser": "^5.49.0",
59+
"@typescript-eslint/eslint-plugin": "^5.53.0",
60+
"@typescript-eslint/parser": "^5.53.0",
6661
"autoprefixer": "^10.4.13",
67-
"eslint": "^8.33.0",
68-
"eslint-config-next": "^13.1.6",
62+
"eslint": "^8.34.0",
63+
"eslint-config-next": "^13.2.1",
6964
"eslint-config-prettier": "^8.6.0",
70-
"jest": "^29.4.1",
71-
"jest-css-modules-transform": "^4.4.2",
65+
"jest": "^29.4.3",
7266
"postcss": "^8.4.21",
73-
"prettier": "^2.8.3",
74-
"tailwindcss": "^3.2.4",
67+
"prettier": "^2.8.4",
68+
"tailwindcss": "^3.2.7",
7569
"ts-jest": "^29.0.5",
7670
"ts-node": "^10.9.1",
77-
"typescript": "^4.9.4"
71+
"typescript": "^4.9.5"
7872
},
7973
"resolutions": {
8074
"bignumber.js": "9.1.1",

setupTests.ts

-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import '@testing-library/jest-dom'
21
import { loadEnvConfig } from '@next/env'
32

43
loadEnvConfig(__dirname, true, { info: () => null, error: console.error })

src/app/NotFoundScreen.tsx

-22
This file was deleted.
File renamed without changes.

src/components/nav/BalancesSummary.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import { useAppSelector } from 'src/app/hooks'
21
import { NativeTokenId, NativeTokens } from 'src/config/tokens'
2+
import { useAppSelector } from 'src/features/store/hooks'
33
import { TokenIcon } from 'src/images/tokens/TokenIcon'
44
import { fromWeiRounded } from 'src/utils/amount'
55

src/components/nav/Footer.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import BigNumber from 'bignumber.js'
22
import Image from 'next/image'
33
import { useState } from 'react'
4-
import { useAppSelector } from 'src/app/hooks'
54
import { NetworkModal } from 'src/components/nav/NetworkModal'
65
import { config } from 'src/config/config'
76
import { STALE_BLOCK_TIME } from 'src/config/consts'
7+
import { useAppSelector } from 'src/features/store/hooks'
88
import Discord from 'src/images/logos/discord.svg'
99
import Github from 'src/images/logos/github.svg'
1010
import Twitter from 'src/images/logos/twitter.svg'

src/components/nav/NetworkModal.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
import { Alfajores, Baklava, Mainnet, Network, useCelo } from '@celo/react-celo'
22
import ReactModal from 'react-modal'
33
import { toast } from 'react-toastify'
4-
import { useAppDispatch, useAppSelector } from 'src/app/hooks'
54
import { IconButton } from 'src/components/buttons/IconButton'
65
import { reset as accountReset } from 'src/features/accounts/accountSlice'
76
import { reset as blockReset } from 'src/features/blocks/blockSlice'
87
import { resetTokenPrices } from 'src/features/chart/tokenPriceSlice'
98
import { reset as grandaReset } from 'src/features/granda/grandaSlice'
9+
import { useAppDispatch, useAppSelector } from 'src/features/store/hooks'
1010
import { reset as swapReset } from 'src/features/swap/swapSlice'
1111
import XCircle from 'src/images/icons/x-circle.svg'
1212
import { HrDivider } from 'src/layout/HrDivider'

src/config/config.ts

+3
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,12 @@ interface Config {
55
discordUrl: string
66
blockscoutUrl: string
77
showPriceChart: boolean
8+
walletConnectProjectId?: string
89
}
910

1011
const isDevMode = process?.env?.NODE_ENV === 'development'
1112
const version = process?.env?.NEXT_PUBLIC_VERSION ?? null
13+
const walletConnectProjectId = process?.env?.WALLET_CONNECT_ID
1214

1315
export const config: Config = Object.freeze({
1416
debug: isDevMode,
@@ -17,4 +19,5 @@ export const config: Config = Object.freeze({
1719
discordUrl: 'https://discord.com/invite/Zszgng9NdF',
1820
blockscoutUrl: 'https://explorer.celo.org',
1921
showPriceChart: false,
22+
walletConnectProjectId,
2023
})

src/features/accounts/fetchBalances.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import type { MiniContractKit } from '@celo/contractkit/lib/mini-kit'
22
import { createAsyncThunk } from '@reduxjs/toolkit'
3-
import type { AppDispatch, AppState } from 'src/app/store'
43
import { BALANCE_STALE_TIME } from 'src/config/consts'
54
import { NativeTokenId } from 'src/config/tokens'
5+
import type { AppDispatch, AppState } from 'src/features/store/store'
66
import { validateAddress } from 'src/utils/addresses'
77
import { isStale } from 'src/utils/time'
88

src/features/blocks/fetchLatestBlock.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import type { MiniContractKit } from '@celo/contractkit/lib/mini-kit'
22
import { createAsyncThunk } from '@reduxjs/toolkit'
3-
import type { AppDispatch, AppState } from 'src/app/store'
3+
import type { AppDispatch, AppState } from 'src/features/store/store'
44
import type { BlockHeader } from 'web3-eth'
55

66
interface FetchLatestBlockParams {

src/features/chart/PriceChartCelo.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
import { Mainnet, useCelo } from '@celo/react-celo'
22
import { useEffect } from 'react'
33
import { toast } from 'react-toastify'
4-
import { useAppDispatch, useAppSelector } from 'src/app/hooks'
54
import { NativeTokenId } from 'src/config/tokens'
65
import styles from 'src/features/chart/PriceChart.module.css'
76
import { fetchTokenPrice } from 'src/features/chart/fetchPrices'
87
import { tokenPriceHistoryToChartData } from 'src/features/chart/utils'
8+
import { useAppDispatch, useAppSelector } from 'src/features/store/hooks'
99
import { FloatingBox } from 'src/layout/FloatingBox'
1010
import { Color } from 'src/styles/Color'
1111
import { logger } from 'src/utils/logger'

src/features/chart/fetchPrices.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ import type { MiniContractKit } from '@celo/contractkit/lib/mini-kit'
33
import { Interface } from '@ethersproject/abi'
44
import { createAsyncThunk } from '@reduxjs/toolkit'
55
import BigNumber from 'bignumber.js'
6-
import type { AppDispatch, AppState } from 'src/app/store'
76
import { ABI as SortedOraclesAbi } from 'src/blockchain/ABIs/sortedOracles'
87
import { getLatestBlockDetails, getNumBlocksPerInterval } from 'src/blockchain/blocks'
98
import { config } from 'src/config/config'
@@ -18,6 +17,7 @@ import {
1817
TokenPricePoint,
1918
} from 'src/features/chart/types'
2019
import { findMissingPriceDays, mergePriceHistories } from 'src/features/chart/utils'
20+
import type { AppDispatch, AppState } from 'src/features/store/store'
2121
import { areAddressesEqual, ensureLeading0x } from 'src/utils/addresses'
2222
import { fromFixidity } from 'src/utils/amount'
2323
import {

src/features/granda/ProposalConfirm.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import { useCelo } from '@celo/react-celo'
44
import Image from 'next/image'
55
import { useEffect } from 'react'
66
import { toast } from 'react-toastify'
7-
import { useAppDispatch, useAppSelector } from 'src/app/hooks'
87
import { toastToYourSuccess } from 'src/components/TxSuccessToast'
98
import { BackButton } from 'src/components/buttons/BackButton'
109
import { RefreshButton } from 'src/components/buttons/RefreshButton'
@@ -18,6 +17,7 @@ import { fetchOracleRates } from 'src/features/granda/fetchOracleRates'
1817
import { fetchProposals } from 'src/features/granda/fetchProposals'
1918
import { setFormValues } from 'src/features/granda/grandaSlice'
2019
import { getExchangeValues } from 'src/features/granda/utils'
20+
import { useAppDispatch, useAppSelector } from 'src/features/store/hooks'
2121
import { SwapConfirmSummary } from 'src/features/swap/SwapConfirm'
2222
import InfoCircle from 'src/images/icons/info-circle.svg'
2323
import { FloatingBox } from 'src/layout/FloatingBox'

src/features/granda/ProposalForm.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import Image from 'next/image'
2-
import { useAppDispatch, useAppSelector } from 'src/app/hooks'
32
import { TextLink } from 'src/components/buttons/TextLink'
43
import { setFormValues, setSubpage } from 'src/features/granda/grandaSlice'
54
import { GrandaSubpage } from 'src/features/granda/types'
65
import { getExchangeValues } from 'src/features/granda/utils'
6+
import { useAppDispatch, useAppSelector } from 'src/features/store/hooks'
77
import { SwapFormInner } from 'src/features/swap/SwapForm'
88
import { SwapFormValues } from 'src/features/swap/types'
99
import { useFormValidator } from 'src/features/swap/useFormValidator'

src/features/granda/ProposalList.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
import BigNumber from 'bignumber.js'
22
import Image from 'next/image'
3-
import { useAppDispatch, useAppSelector } from 'src/app/hooks'
43
import { Spinner } from 'src/components/animation/Spinner'
54
import { BackButton } from 'src/components/buttons/BackButton'
65
import { IconButton } from 'src/components/buttons/IconButton'
76
import { SolidButton } from 'src/components/buttons/SolidButton'
87
import { CELO, NativeTokens } from 'src/config/tokens'
98
import { setSubpage, viewProposal } from 'src/features/granda/grandaSlice'
109
import { GrandaProposal, GrandaProposalState, GrandaSubpage } from 'src/features/granda/types'
10+
import { useAppDispatch, useAppSelector } from 'src/features/store/hooks'
1111
import ArrowRight from 'src/images/icons/arrow-right-short.svg'
1212
import PlusCircle from 'src/images/icons/plus-circle-fill.svg'
1313
import { TokenIcon } from 'src/images/tokens/TokenIcon'

src/features/granda/ProposalView.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import BigNumber from 'bignumber.js'
44
import { useEffect, useState } from 'react'
55
import ReactModal from 'react-modal'
66
import { toast } from 'react-toastify'
7-
import { useAppDispatch, useAppSelector } from 'src/app/hooks'
87
import { toastToYourSuccess } from 'src/components/TxSuccessToast'
98
import { BackButton } from 'src/components/buttons/BackButton'
109
import { IconButton } from 'src/components/buttons/IconButton'
@@ -17,6 +16,7 @@ import { getGrandaMento } from 'src/contract-wrappers/granda-mento'
1716
import { fetchProposals } from 'src/features/granda/fetchProposals'
1817
import { clearProposal } from 'src/features/granda/grandaSlice'
1918
import { GrandaProposal, GrandaProposalState } from 'src/features/granda/types'
19+
import { useAppDispatch, useAppSelector } from 'src/features/store/hooks'
2020
import { SwapConfirmSummary } from 'src/features/swap/SwapConfirm'
2121
import XCircle from 'src/images/icons/x-circle.svg'
2222
import { FloatingBox } from 'src/layout/FloatingBox'

src/features/granda/fetchConfig.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import type { MiniContractKit } from '@celo/contractkit/lib/mini-kit'
22
import { createAsyncThunk } from '@reduxjs/toolkit'
3-
import type { AppDispatch, AppState } from 'src/app/store'
43
import { kitContractToNativeToken } from 'src/config/tokenMapping'
54
import { getGrandaMento } from 'src/contract-wrappers/granda-mento'
65
import { GrandaConfig, SizeLimits } from 'src/features/granda/types'
6+
import type { AppDispatch, AppState } from 'src/features/store/store'
77
import { isValidAddress } from 'src/utils/addresses'
88
import { toWei } from 'src/utils/amount'
99
import { logger } from 'src/utils/logger'

src/features/granda/fetchOracleRates.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
import type { MiniContractKit } from '@celo/contractkit/lib/mini-kit'
22
import { createAsyncThunk } from '@reduxjs/toolkit'
3-
import type { AppDispatch, AppState } from 'src/app/store'
43
import { MAX_EXCHANGE_RATE, MIN_EXCHANGE_RATE } from 'src/config/consts'
54
import { nativeTokenToKitToken } from 'src/config/tokenMapping'
65
import { NativeTokenId, StableTokenIds } from 'src/config/tokens'
76
import { getSortedOracles } from 'src/contract-wrappers/sorted-oracles'
87
import { OracleRates } from 'src/features/granda/types'
8+
import type { AppDispatch, AppState } from 'src/features/store/store'
99
import { SimpleExchangeRate } from 'src/features/swap/types'
1010
import { logger } from 'src/utils/logger'
1111
import { areRatesStale } from 'src/utils/time'

src/features/granda/fetchProposals.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@ import type { CeloTokenType } from '@celo/contractkit'
22
import type { MiniContractKit } from '@celo/contractkit/lib/mini-kit'
33
import { ExchangeProposalState } from '@celo/contractkit/lib/wrappers/GrandaMento'
44
import { createAsyncThunk } from '@reduxjs/toolkit'
5-
import type { AppDispatch, AppState } from 'src/app/store'
65
import { GRANDA_PROPOSAL_STALE_TIME } from 'src/config/consts'
76
import { kitTokenToNativeToken } from 'src/config/tokenMapping'
87
import { NativeTokenId, isStableToken } from 'src/config/tokens'
98
import { getGrandaMento } from 'src/contract-wrappers/granda-mento'
109
import { GrandaProposal, GrandaProposalState } from 'src/features/granda/types'
10+
import type { AppDispatch, AppState } from 'src/features/store/store'
1111
import { areAddressesEqual, isValidAddress } from 'src/utils/addresses'
1212
import { logger } from 'src/utils/logger'
1313
import { isStale } from 'src/utils/time'

src/features/polling/PollingWorker.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
import { useCelo } from '@celo/react-celo'
22
import { useEffect } from 'react'
33
import { toast } from 'react-toastify'
4-
import { useAppDispatch, useAppSelector } from 'src/app/hooks'
54
import { STATUS_POLLER_DELAY } from 'src/config/consts'
65
import { fetchBalances } from 'src/features/accounts/fetchBalances'
76
import { fetchLatestBlock } from 'src/features/blocks/fetchLatestBlock'
87
import { fetchConfig } from 'src/features/granda/fetchConfig'
98
import { fetchOracleRates } from 'src/features/granda/fetchOracleRates'
109
import { fetchProposals } from 'src/features/granda/fetchProposals'
10+
import { useAppDispatch, useAppSelector } from 'src/features/store/hooks'
1111
import { fetchExchangeRates } from 'src/features/swap/fetchExchangeRates'
1212
import { logger } from 'src/utils/logger'
1313
import { useInterval } from 'src/utils/timeout'

src/app/hooks.ts src/features/store/hooks.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { TypedUseSelectorHook, useDispatch, useSelector } from 'react-redux'
2-
import type { AppDispatch, AppState } from 'src/app/store'
2+
import type { AppDispatch, AppState } from 'src/features/store/store'
33

44
// Use throughout your app instead of plain `useDispatch` and `useSelector`
55
export const useAppDispatch = () => useDispatch<AppDispatch>()
File renamed without changes.

src/features/swap/SettingsMenu.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import useDropdownMenu from 'react-accessible-dropdown-menu-hook'
2-
import { useAppDispatch, useAppSelector } from 'src/app/hooks'
32
import { IconButton } from 'src/components/buttons/IconButton'
43
import { SwitchButton } from 'src/components/buttons/SwitchButton'
54
import { config } from 'src/config/config'
5+
import { useAppDispatch, useAppSelector } from 'src/features/store/hooks'
66
import { setShowChart, setShowSlippage } from 'src/features/swap/swapSlice'
77
import Gear from 'src/images/icons/gear.svg'
88

src/features/swap/SwapConfirm.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ import { useCelo } from '@celo/react-celo'
33
import BigNumber from 'bignumber.js'
44
import { useEffect } from 'react'
55
import { toast } from 'react-toastify'
6-
import { useAppDispatch, useAppSelector } from 'src/app/hooks'
76
import { toastToYourSuccess } from 'src/components/TxSuccessToast'
87
import { BackButton } from 'src/components/buttons/BackButton'
98
import { RefreshButton } from 'src/components/buttons/RefreshButton'
@@ -17,6 +16,7 @@ import {
1716
import { getExchangeContract, getTokenContract } from 'src/config/tokenMapping'
1817
import { NativeTokenId, NativeTokens } from 'src/config/tokens'
1918
import { fetchBalances } from 'src/features/accounts/fetchBalances'
19+
import { useAppDispatch, useAppSelector } from 'src/features/store/hooks'
2020
import { fetchExchangeRates } from 'src/features/swap/fetchExchangeRates'
2121
import { setFormValues } from 'src/features/swap/swapSlice'
2222
import { SwapFormValues } from 'src/features/swap/types'

src/features/swap/SwapForm.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@ import { Connector, useCelo } from '@celo/react-celo'
22
import { Field, Form, Formik, FormikErrors, useFormikContext } from 'formik'
33
import { useCallback } from 'react'
44
import { toast } from 'react-toastify'
5-
import { useAppDispatch, useAppSelector } from 'src/app/hooks'
65
import { IconButton } from 'src/components/buttons/IconButton'
76
import { SolidButton } from 'src/components/buttons/SolidButton'
87
import { RadioInput } from 'src/components/input/RadioInput'
98
import TokenSelectField, { TokenOption } from 'src/components/input/TokenSelectField'
109
import { CELO, NativeTokenId, cEUR, cREAL, cUSD, isStableToken } from 'src/config/tokens'
1110
import { AccountBalances } from 'src/features/accounts/fetchBalances'
11+
import { useAppDispatch, useAppSelector } from 'src/features/store/hooks'
1212
import { SettingsMenu } from 'src/features/swap/SettingsMenu'
1313
import { setFormValues } from 'src/features/swap/swapSlice'
1414
import { SwapFormValues } from 'src/features/swap/types'

src/features/swap/fetchExchangeRates.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import type { MiniContractKit } from '@celo/contractkit/lib/mini-kit'
22
import { createAsyncThunk } from '@reduxjs/toolkit'
3-
import type { AppDispatch, AppState } from 'src/app/store'
43
import { MAX_EXCHANGE_SPREAD } from 'src/config/consts'
54
import { getExchangeContract } from 'src/config/tokenMapping'
65
import { NativeTokenId, StableTokenIds } from 'src/config/tokens'
6+
import type { AppDispatch, AppState } from 'src/features/store/store'
77
import { ExchangeRate, ToCeloRates } from 'src/features/swap/types'
88
import { logger } from 'src/utils/logger'
99
import { areRatesStale } from 'src/utils/time'

0 commit comments

Comments
 (0)