Skip to content

Commit fc7f25d

Browse files
Merge pull request #1424 from curvefi/refactor/mint-market-address-url
feat: use mint market controller address in url instead of id
2 parents 8c1716a + 6316e0a commit fc7f25d

File tree

10 files changed

+49
-53
lines changed

10 files changed

+49
-53
lines changed

apps/main/src/llamalend/entities/llama-markets.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -243,7 +243,7 @@ const convertMintMarket = (
243243
url: getInternalUrl(
244244
'crvusd',
245245
chain,
246-
`${CRVUSD_ROUTES.PAGE_MARKETS}/${name}/${hasBorrow ? 'manage/loan' : 'create'}`,
246+
`${CRVUSD_ROUTES.PAGE_MARKETS}/${address}/${hasBorrow ? 'manage/loan' : 'create'}`,
247247
),
248248
isFavorite: favoriteMarkets.has(llamma),
249249
rewards: [...(campaigns[address.toLowerCase()] ?? []), ...(campaigns[llamma.toLowerCase()] ?? [])],

apps/main/src/loan/components/PageLoanCreate/Page.tsx

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,9 @@ import { hasLeverage } from '@/loan/components/PageLoanCreate/utils'
1212
import { useMintMarket } from '@/loan/entities/mint-markets'
1313
import { useMarketDetails } from '@/loan/hooks/useMarketDetails'
1414
import useStore from '@/loan/store/useStore'
15-
import { type CollateralUrlParams, type LlamaApi, Llamma } from '@/loan/types/loan.types'
15+
import { type MarketUrlParams, type LlamaApi, Llamma } from '@/loan/types/loan.types'
1616
import { getTokenName } from '@/loan/utils/utilsLoan'
17-
import {
18-
getLoanCreatePathname,
19-
getLoanManagePathname,
20-
parseCollateralParams,
21-
useChainId,
22-
} from '@/loan/utils/utilsRouter'
17+
import { getLoanCreatePathname, getLoanManagePathname, parseMarketParams, useChainId } from '@/loan/utils/utilsRouter'
2318
import Stack from '@mui/material/Stack'
2419
import { AppPageFormsWrapper, AppPageFormTitleWrapper } from '@ui/AppPage'
2520
import Box from '@ui/Box'
@@ -39,16 +34,16 @@ import { SizesAndSpaces } from '@ui-kit/themes/design/1_sizes_spaces'
3934
const { Spacing } = SizesAndSpaces
4035

4136
const Page = () => {
42-
const params = useParams<CollateralUrlParams>()
43-
const { rFormType = null, rCollateralId } = parseCollateralParams(params)
37+
const params = useParams<MarketUrlParams>()
38+
const { rFormType = null, rMarket } = parseMarketParams(params)
4439
const push = useNavigate()
4540
const { connectState, llamaApi: curve = null } = useConnection()
4641
const rChainId = useChainId(params)
4742
const { connect: connectWallet, provider } = useWallet()
4843
const { address } = useAccount()
4944
const [loaded, setLoaded] = useState(false)
5045

51-
const { data: market } = useMintMarket({ chainId: rChainId, marketId: rCollateralId })
46+
const { data: market } = useMintMarket({ chainId: rChainId, marketId: rMarket })
5247
const marketId = market?.id ?? ''
5348
const pageLoaded = !isLoading(connectState)
5449

@@ -170,7 +165,7 @@ const Page = () => {
170165
)}
171166
<DetailPageStack>
172167
<AppPageFormsWrapper>
173-
{rChainId && rCollateralId && (
168+
{rChainId && rMarket && (
174169
<LoanCreate
175170
curve={curve}
176171
isReady={isReady}
@@ -180,7 +175,7 @@ const Page = () => {
180175
llammaId={marketId}
181176
params={params}
182177
rChainId={rChainId}
183-
rCollateralId={rCollateralId}
178+
rMarket={rMarket}
184179
rFormType={rFormType}
185180
fetchInitial={fetchInitial}
186181
/>

apps/main/src/loan/components/PageLoanCreate/index.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ const LoanCreate = ({
4444
loanExists: boolean | undefined
4545
fetchInitial: (curve: LlamaApi, isLeverage: boolean, llamma: Llamma) => void
4646
}) => {
47-
const { curve, llamma, loanExists, params, rCollateralId, rFormType, rChainId } = props
47+
const { curve, llamma, loanExists, params, rMarket, rFormType, rChainId } = props
4848
const push = useNavigate()
4949
const collateralAlert = useCollateralAlert(llamma?.address)
5050
const [releaseChannel] = useReleaseChannel()
@@ -66,15 +66,15 @@ const LoanCreate = ({
6666
const handleTabClick = useCallback(
6767
(formType: FormType) => {
6868
if (loanExists) {
69-
push(getLoanManagePathname(params, rCollateralId, 'loan'))
69+
push(getLoanManagePathname(params, rMarket, 'loan'))
7070
} else {
7171
if (curve && llamma) {
7272
fetchInitial(curve, formType === 'leverage', llamma)
7373
}
74-
push(getLoanCreatePathname(params, rCollateralId, formType))
74+
push(getLoanCreatePathname(params, rMarket, formType))
7575
}
7676
},
77-
[curve, fetchInitial, llamma, loanExists, push, params, rCollateralId],
77+
[curve, fetchInitial, llamma, loanExists, push, params, rMarket],
7878
)
7979

8080
return (

apps/main/src/loan/components/PageLoanCreate/types.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { Dispatch, ReactNode, SetStateAction } from 'react'
22
import type { FormEstGas, FormStatus as Fs } from '@/loan/components/PageLoanManage/types'
33
import type { LiqRangeSliderIdx } from '@/loan/store/types'
4-
import { ChainId, type CollateralUrlParams, LlamaApi, HealthMode, Llamma } from '@/loan/types/loan.types'
4+
import { ChainId, type MarketUrlParams, LlamaApi, HealthMode, Llamma } from '@/loan/types/loan.types'
55
import type { Step } from '@ui/Stepper/types'
66

77
export type FormType = 'create' | 'leverage'
@@ -28,9 +28,9 @@ export type PageLoanCreateProps = {
2828
isLeverage: boolean
2929
llamma: Llamma | null
3030
llammaId: string
31-
params: CollateralUrlParams
31+
params: MarketUrlParams
3232
rChainId: ChainId
33-
rCollateralId: string
33+
rMarket: string
3434
rFormType: string | null
3535
}
3636

apps/main/src/loan/components/PageLoanManage/Page.tsx

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,11 @@ import { useLoanPositionDetails } from '@/loan/hooks/useLoanPositionDetails'
1515
import { useMarketDetails } from '@/loan/hooks/useMarketDetails'
1616
import useTitleMapper from '@/loan/hooks/useTitleMapper'
1717
import useStore from '@/loan/store/useStore'
18-
import type { CollateralUrlParams } from '@/loan/types/loan.types'
18+
import type { MarketUrlParams } from '@/loan/types/loan.types'
1919
import {
2020
getCollateralListPathname,
2121
getLoanCreatePathname,
22-
parseCollateralParams,
22+
parseMarketParams,
2323
useChainId,
2424
} from '@/loan/utils/utilsRouter'
2525
import Stack from '@mui/material/Stack'
@@ -39,21 +39,22 @@ import { SizesAndSpaces } from '@ui-kit/themes/design/1_sizes_spaces'
3939
const { Spacing } = SizesAndSpaces
4040

4141
const Page = () => {
42-
const params = useParams<CollateralUrlParams>()
43-
const { rFormType, rCollateralId } = parseCollateralParams(params)
42+
const params = useParams<MarketUrlParams>()
43+
const { rFormType, rMarket } = parseMarketParams(params)
4444
const push = useNavigate()
4545
const { connectState, llamaApi: curve = null } = useConnection()
4646
const pageLoaded = !isLoading(connectState)
4747
const titleMapper = useTitleMapper()
4848
const rChainId = useChainId(params)
4949
const { address } = useAccount()
5050

51-
const { data: market } = useMintMarket({ chainId: rChainId, marketId: rCollateralId })
51+
const { data: market } = useMintMarket({ chainId: rChainId, marketId: rMarket })
5252
const marketId = market?.id ?? ''
5353

5454
const isMdUp = useLayoutStore((state) => state.isMdUp)
5555
const isPageVisible = useLayoutStore((state) => state.isPageVisible)
5656
const { data: loanExists } = useLoanExists({ chainId: rChainId, marketId, userAddress: address })
57+
5758
const fetchLoanDetails = useStore((state) => state.loans.fetchLoanDetails)
5859
const fetchUserLoanDetails = useStore((state) => state.loans.fetchUserLoanDetails)
5960
const resetUserDetailsState = useStore((state) => state.loans.resetUserDetailsState)
@@ -62,8 +63,8 @@ const Page = () => {
6263

6364
const [loaded, setLoaded] = useState(false)
6465

65-
const isValidRouterParams = !!rChainId && !!rCollateralId && !!rFormType
6666
const isReady = !!curve?.signerAddress && !!market
67+
const isValidRouterParams = !!rChainId && !!rMarket && !!rFormType
6768

6869
const marketDetails = useMarketDetails({ chainId: rChainId, llamma: market, llammaId: marketId })
6970
const positionDetails = useLoanPositionDetails({
@@ -74,18 +75,18 @@ const Page = () => {
7475

7576
useEffect(() => {
7677
if (curve && pageLoaded) {
77-
if (rChainId && rCollateralId && rFormType && curve.signerAddress && market) {
78+
if (rChainId && rMarket && rFormType && curve.signerAddress && market) {
7879
void (async () => {
7980
const fetchedLoanDetails = await fetchLoanDetails(curve, market)
8081
if (!fetchedLoanDetails.loanExists) {
8182
resetUserDetailsState(market)
82-
push(getLoanCreatePathname(params, rCollateralId))
83+
push(getLoanCreatePathname(params, rMarket))
8384
}
8485
setLoaded(true)
8586
})()
8687
} else {
87-
const args = { rChainId, rCollateralId, rFormType, signer: curve.signerAddress, market }
88-
console.warn(`Cannot find market ${rCollateralId}, redirecting to list`, args)
88+
const args = { rChainId, rMarket, rFormType, signer: curve.signerAddress, market }
89+
console.warn(`Cannot find market ${rMarket}, redirecting to list`, args)
8990
push(getCollateralListPathname(params))
9091
}
9192
}
@@ -152,7 +153,7 @@ const Page = () => {
152153
{...formProps}
153154
params={params}
154155
rChainId={rChainId}
155-
rCollateralId={rCollateralId}
156+
rMarket={rMarket}
156157
rFormType={rFormType as FormType}
157158
titleMapper={titleMapper}
158159
/>

apps/main/src/loan/components/PageLoanManage/index.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ const tabsCollateral: TabOption<CollateralFormType>[] = [
3232
{ value: 'collateral-decrease', label: t`Remove` },
3333
]
3434

35-
const LoanManage = ({ curve, isReady, llamma, llammaId, params, rChainId, rCollateralId, rFormType }: Props) => {
35+
const LoanManage = ({ curve, isReady, llamma, llammaId, params, rChainId, rMarket, rFormType }: Props) => {
3636
const push = useNavigate()
3737

3838
type Tab = 'loan' | 'collateral' | 'deleverage'
@@ -59,7 +59,7 @@ const LoanManage = ({ curve, isReady, llamma, llammaId, params, rChainId, rColla
5959
variant="contained"
6060
size="medium"
6161
value={!rFormType ? 'loan' : rFormType}
62-
onChange={(key) => push(getLoanManagePathname(params, rCollateralId, key as FormType))}
62+
onChange={(key) => push(getLoanManagePathname(params, rMarket, key as FormType))}
6363
options={tabs}
6464
fullWidth
6565
/>

apps/main/src/loan/components/PageLoanManage/types.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { ChainId, type CollateralUrlParams, LlamaApi, Llamma, TitleMapper } from '@/loan/types/loan.types'
1+
import { ChainId, type MarketUrlParams, LlamaApi, Llamma, TitleMapper } from '@/loan/types/loan.types'
22
export type DetailInfoTypes = 'user' | 'llamma'
33
export type FormType = 'loan' | 'collateral' | 'swap' | 'deleverage'
44
export type LoanFormType = 'loan-increase' | 'loan-decrease' | 'loan-liquidate'
@@ -29,9 +29,9 @@ export type PageLoanManageProps = {
2929
isReady: boolean
3030
llamma: Llamma | null
3131
llammaId: string
32-
params: CollateralUrlParams
32+
params: MarketUrlParams
3333
rChainId: ChainId
34-
rCollateralId: string
34+
rMarket: string
3535
rFormType: FormType
3636
titleMapper: TitleMapper
3737
}

apps/main/src/loan/types/loan.types.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ export type ChainId = 1 // note lend also has other chains, but we only use eth
1515
export type NetworkEnum = Extract<INetworkName, 'ethereum'>
1616

1717
export type NetworkUrlParams = { network: NetworkEnum }
18-
export type CollateralUrlParams = NetworkUrlParams & { collateralId: string; formType: RFormType }
19-
export type UrlParams = NetworkUrlParams & Partial<CollateralUrlParams>
18+
export type MarketUrlParams = NetworkUrlParams & { market: string; formType: RFormType }
19+
export type UrlParams = NetworkUrlParams & Partial<MarketUrlParams>
2020

2121
export type AlertType = 'info' | 'warning' | 'error' | 'danger'
2222

apps/main/src/loan/utils/utilsRouter.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import type { FormType as ManageFormType } from '@/loan/components/PageLoanManage/types'
22
import { ROUTE } from '@/loan/constants'
3-
import { ChainId, type CollateralUrlParams, type NetworkUrlParams, type UrlParams } from '@/loan/types/loan.types'
3+
import { ChainId, type MarketUrlParams, type NetworkUrlParams, type UrlParams } from '@/loan/types/loan.types'
44
import { getInternalUrl, LLAMALEND_ROUTES } from '@ui-kit/shared/routes'
55
import { Chain } from '@ui-kit/utils'
66

@@ -17,18 +17,18 @@ export const useChainId = ({ network }: NetworkUrlParams) =>
1717

1818
export const getLoanCreatePathname = (
1919
params: NetworkUrlParams,
20-
collateralId: string,
20+
market: string,
2121
formType?: 'create' | 'leverage' | 'borrow',
2222
) =>
2323
getPath(
2424
params,
25-
`${ROUTE.PAGE_MARKETS}/${collateralId}${ROUTE.PAGE_CREATE}${formType && formType !== 'create' ? `/${formType}` : ''}`,
25+
`${ROUTE.PAGE_MARKETS}/${market}${ROUTE.PAGE_CREATE}${formType && formType !== 'create' ? `/${formType}` : ''}`,
2626
)
2727

28-
export const getLoanManagePathname = (params: NetworkUrlParams, collateralId: string, formType: ManageFormType) =>
29-
getPath(params, `${ROUTE.PAGE_MARKETS}/${collateralId}${ROUTE.PAGE_MANAGE}/${formType}`)
28+
export const getLoanManagePathname = (params: NetworkUrlParams, market: string, formType: ManageFormType) =>
29+
getPath(params, `${ROUTE.PAGE_MARKETS}/${market}${ROUTE.PAGE_MANAGE}/${formType}`)
3030

31-
export const parseCollateralParams = ({ collateralId, formType: rFormType }: CollateralUrlParams) => ({
31+
export const parseMarketParams = ({ market, formType: rFormType }: MarketUrlParams) => ({
3232
rFormType: rFormType ?? '',
33-
rCollateralId: collateralId.toLowerCase(),
33+
rMarket: market.toLowerCase(),
3434
})

apps/main/src/routes/crvusd.routes.tsx

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -64,34 +64,34 @@ export const crvusdRoutes = crvusdLayoutRoute.addChildren([
6464
...layoutProps,
6565
}),
6666
createRoute({
67-
path: '$network/markets/$collateralId/create/$formType',
67+
path: '$network/markets/$market/create/$formType',
6868
component: CreateLoan,
6969
head: ({ params }) => ({
70-
meta: [{ title: `Create - ${params.collateralId} - Curve` }],
70+
meta: [{ title: `Create - ${params.market} - Curve` }],
7171
}),
7272
...layoutProps,
7373
}),
7474
createRoute({
75-
path: '$network/markets/$collateralId/create',
75+
path: '$network/markets/$market/create',
7676
component: CreateLoan,
7777
head: ({ params }) => ({
78-
meta: [{ title: `Create - ${params.collateralId} - Curve` }],
78+
meta: [{ title: `Create - ${params.market} - Curve` }],
7979
}),
8080
...layoutProps,
8181
}),
8282
createRoute({
83-
path: '$network/markets/$collateralId/manage/$formType',
83+
path: '$network/markets/$market/manage/$formType',
8484
component: ManageLoan,
8585
head: ({ params }) => ({
86-
meta: [{ title: `Manage - ${params.collateralId} - Curve` }],
86+
meta: [{ title: `Manage - ${params.market} - Curve` }],
8787
}),
8888
...layoutProps,
8989
}),
9090
createRoute({
91-
path: '$network/markets/$collateralId/manage',
91+
path: '$network/markets/$market/manage',
9292
component: ManageLoan,
9393
head: ({ params }) => ({
94-
meta: [{ title: `Manage - ${params.collateralId} - Curve` }],
94+
meta: [{ title: `Manage - ${params.market} - Curve` }],
9595
}),
9696
...layoutProps,
9797
}),

0 commit comments

Comments
 (0)