Skip to content

Commit ca1e251

Browse files
Revert "revert: "Merge pull request #1730 from curvefi/refactor/routes""
1 parent 4cfb14e commit ca1e251

File tree

40 files changed

+641
-490
lines changed

40 files changed

+641
-490
lines changed

apps/main/src/lend/components/AlertNoLoanFound.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ const AlertNoLoanFound = ({ alertType, owmId }: { alertType?: AlertType; owmId:
2525
size="large"
2626
onClick={() => {
2727
setStateByKeyMarkets('marketDetailsView', 'market')
28-
push(getLoanCreatePathname(params, owmId, 'create'))
28+
push(getLoanCreatePathname(params, owmId))
2929
}}
3030
>
3131
Create loan
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
import { useCallback } from 'react'
2+
import LoanFormCreate from '@/lend/components/PageLoanCreate/LoanFormCreate'
3+
import type { FormValues } from '@/lend/components/PageLoanCreate/types'
4+
import { DEFAULT_FORM_VALUES } from '@/lend/components/PageLoanCreate/utils'
5+
import networks from '@/lend/networks'
6+
import useStore from '@/lend/store/useStore'
7+
import { type MarketUrlParams, type PageContentProps } from '@/lend/types/lend.types'
8+
import { CreateLoanForm } from '@/llamalend/features/borrow/components/CreateLoanForm'
9+
import type { OnBorrowFormUpdate } from '@/llamalend/features/borrow/types'
10+
import { hasLeverage } from '@/llamalend/llama.utils'
11+
import { useCreateLoanMuiForm } from '@ui-kit/hooks/useFeatureFlags'
12+
import { t } from '@ui-kit/lib/i18n'
13+
import { type FormTab, FormTabs } from '@ui-kit/shared/ui/FormTabs/FormTabs'
14+
15+
type CreateLoanProps = PageContentProps<MarketUrlParams>
16+
17+
/**
18+
* Callback that synchronizes the `ChartOhlc` component with the `RangeSlider` component in the new `BorrowTabContents`.
19+
*/
20+
const useOnFormUpdate = ({ api, market }: Pick<CreateLoanProps, 'api' | 'market'>): OnBorrowFormUpdate =>
21+
useCallback(
22+
async ({ debt, userCollateral, range, slippage, leverageEnabled }) => {
23+
const { setFormValues, setStateByKeys } = useStore.getState().loanCreate
24+
const formValues: FormValues = {
25+
...DEFAULT_FORM_VALUES,
26+
n: range,
27+
debt: `${debt ?? ''}`,
28+
userCollateral: `${userCollateral ?? ''}`,
29+
}
30+
await setFormValues(api, market, formValues, `${slippage}`, leverageEnabled)
31+
setStateByKeys({ isEditLiqRange: true })
32+
},
33+
[api, market],
34+
)
35+
36+
function CreateLoanTab({ market, api, rChainId }: CreateLoanProps) {
37+
const onLoanCreated = useStore((state) => state.loanCreate.onLoanCreated)
38+
const onCreated = useCallback(
39+
async () => api && market && (await onLoanCreated(api, market)),
40+
[api, market, onLoanCreated],
41+
)
42+
const onUpdate = useOnFormUpdate({ market, api })
43+
return (
44+
<CreateLoanForm networks={networks} chainId={rChainId} market={market} onUpdate={onUpdate} onCreated={onCreated} />
45+
)
46+
}
47+
48+
const LendCreateTabsNewMenu = [
49+
{ value: 'create', label: t`Borrow`, component: CreateLoanTab },
50+
] satisfies FormTab<CreateLoanProps>[]
51+
52+
const LendCreateTabsOldMenu = [
53+
{ value: 'create', label: t`Create Loan`, component: LoanFormCreate },
54+
{
55+
value: 'leverage',
56+
label: t`Leverage`,
57+
component: (p) => <LoanFormCreate {...p} isLeverage />,
58+
visible: ({ market }) => market && hasLeverage(market),
59+
},
60+
] satisfies FormTab<CreateLoanProps>[]
61+
62+
export const LoanCreateTabs = (pageProps: CreateLoanProps) => {
63+
const menu = useCreateLoanMuiForm() ? LendCreateTabsNewMenu : LendCreateTabsOldMenu
64+
const shouldWrap = menu === LendCreateTabsOldMenu
65+
return <FormTabs params={pageProps} menu={menu} shouldWrap={shouldWrap} />
66+
}

apps/main/src/lend/components/PageLoanCreate/LoanFormCreate/index.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -412,7 +412,7 @@ const LoanCreate = ({
412412
size="large"
413413
onClick={() => {
414414
setStateByKeyMarkets('marketDetailsView', 'user')
415-
push(getLoanManagePathname(params, rOwmId, 'loan'))
415+
push(getLoanManagePathname(params, rOwmId))
416416
}}
417417
>
418418
Manage loan
@@ -431,7 +431,7 @@ const LoanCreate = ({
431431
)}
432432
{steps && <Stepper steps={steps} />}
433433
{formStatus.isComplete && market && (
434-
<LinkButton variant="filled" size="large" href={getLoanManagePathname(params, market.id, 'loan')}>
434+
<LinkButton variant="filled" size="large" href={getLoanManagePathname(params, market.id)}>
435435
Manage loan
436436
</LinkButton>
437437
)}

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

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import type { Address } from 'viem'
33
import CampaignRewardsBanner from '@/lend/components/CampaignRewardsBanner'
44
import { MarketInformationComp } from '@/lend/components/MarketInformationComp'
55
import { MarketInformationTabs } from '@/lend/components/MarketInformationTabs'
6-
import LoanCreate from '@/lend/components/PageLoanCreate/index'
6+
import { LoanCreateTabs } from '@/lend/components/PageLoanCreate/LoanCreateTabs'
77
import { useOneWayMarket } from '@/lend/entities/chain'
88
import { useLendPageTitle } from '@/lend/hooks/useLendPageTitle'
99
import { useMarketDetails } from '@/lend/hooks/useMarketDetails'
@@ -35,7 +35,7 @@ const { Spacing } = SizesAndSpaces
3535

3636
const Page = () => {
3737
const params = useParams<MarketUrlParams>()
38-
const { rMarket, rChainId, rFormType } = parseMarketParams(params)
38+
const { rMarket, rChainId } = parseMarketParams(params)
3939

4040
const { data: market, isSuccess } = useOneWayMarket(rChainId, rMarket)
4141
const { llamaApi: api = null, connectState } = useConnection()
@@ -88,7 +88,6 @@ const Page = () => {
8888
params,
8989
rChainId,
9090
rOwmId,
91-
rFormType,
9291
api,
9392
market,
9493
titleMapper,
@@ -97,7 +96,7 @@ const Page = () => {
9796
}
9897
const positionDetailsHrefs = {
9998
borrow: '',
100-
supply: getVaultPathname(params, rOwmId, 'deposit'),
99+
supply: getVaultPathname(params, rOwmId),
101100
}
102101

103102
return isSuccess && !market ? (
@@ -106,7 +105,7 @@ const Page = () => {
106105
<>
107106
<DetailPageStack>
108107
<AppPageFormsWrapper data-testid="form-wrapper">
109-
{rChainId && rOwmId && <LoanCreate {...pageProps} params={params} />}
108+
{rChainId && rOwmId && <LoanCreateTabs {...pageProps} params={params} />}
110109
</AppPageFormsWrapper>
111110
<Stack flexDirection="column" flexGrow={1} sx={{ gap: Spacing.md }}>
112111
<CampaignRewardsBanner

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

Lines changed: 0 additions & 103 deletions
This file was deleted.

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import {
1010
import type { HealthMode } from '@/llamalend/llamalend.types'
1111
import type { Step } from '@ui/Stepper/types'
1212

13-
export type FormType = 'create' | 'vault' | 'leverage'
1413
export type StepKey = 'APPROVAL' | 'CREATE' | ''
1514
export type InpError = 'too-much' | 'too-much-max' | ''
1615

apps/main/src/lend/components/PageLoanManage/LoanBorrowMore/index.tsx

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,13 @@ import useStore from '@/lend/store/useStore'
2121
import { Api, OneWayMarketTemplate, PageContentProps } from '@/lend/types/lend.types'
2222
import { _showNoLoanFound } from '@/lend/utils/helpers'
2323
import { DEFAULT_HEALTH_MODE } from '@/llamalend/constants'
24+
import { hasLeverage } from '@/llamalend/llama.utils'
2425
import type { HealthMode } from '@/llamalend/llamalend.types'
2526
import { useLoanExists } from '@/llamalend/queries/loan-exists'
2627
import Stack from '@mui/material/Stack'
2728
import Typography from '@mui/material/Typography'
2829
import AlertBox from '@ui/AlertBox'
30+
import { AppFormContentWrapper } from '@ui/AppForm'
2931
import { getActiveStep } from '@ui/Stepper/helpers'
3032
import Stepper from '@ui/Stepper/Stepper'
3133
import type { Step } from '@ui/Stepper/types'
@@ -40,17 +42,9 @@ import { SizesAndSpaces } from '@ui-kit/themes/design/1_sizes_spaces'
4042

4143
const { Spacing } = SizesAndSpaces
4244

43-
const LoanBorrowMore = ({
44-
rChainId,
45-
rOwmId,
46-
isLeverage = false,
47-
isLoaded,
48-
api,
49-
market,
50-
userActiveKey,
51-
}: PageContentProps & { isLeverage?: boolean }) => {
45+
const LoanBorrowMore = ({ rChainId, rOwmId, isLoaded, api, market, userActiveKey }: PageContentProps) => {
5246
const isSubscribed = useRef(false)
53-
47+
const isLeverage = !!market && hasLeverage(market)
5448
const activeKey = useStore((state) => state.loanBorrowMore.activeKey)
5549
const activeKeyMax = useStore((state) => state.loanBorrowMore.activeKeyMax)
5650
const detailInfoLeverage = useStore((state) => state.loanBorrowMore.detailInfoLeverage[activeKey])
@@ -436,3 +430,14 @@ const LoanBorrowMore = ({
436430
}
437431

438432
export default LoanBorrowMore
433+
434+
/**
435+
* The new implementation of LoanBorrowMore with mui isn't ready yet. For now, we wrap the old one for styling.
436+
*/
437+
export const LoanBorrowMoreWrapped = (props: PageContentProps) => (
438+
<Stack sx={{ backgroundColor: (t) => t.design.Layer[1].Fill }}>
439+
<AppFormContentWrapper>
440+
<LoanBorrowMore {...props} />
441+
</AppFormContentWrapper>
442+
</Stack>
443+
)

apps/main/src/lend/components/PageLoanManage/LoanCollateralAdd/index.tsx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import useStore from '@/lend/store/useStore'
1919
import { Api, OneWayMarketTemplate, PageContentProps } from '@/lend/types/lend.types'
2020
import { _showNoLoanFound } from '@/lend/utils/helpers'
2121
import { DEFAULT_HEALTH_MODE } from '@/llamalend/constants'
22+
import { AddCollateralForm } from '@/llamalend/features/manage-loan/components/AddCollateralForm'
2223
import { useLoanExists } from '@/llamalend/queries/loan-exists'
2324
import AlertBox from '@ui/AlertBox'
2425
import { getActiveStep } from '@ui/Stepper/helpers'
@@ -258,3 +259,7 @@ const LoanCollateralAdd = ({ rChainId, rOwmId, api, isLoaded, market, userActive
258259
}
259260

260261
export default LoanCollateralAdd
262+
263+
export const LoanAddCollateralTab = ({ rChainId, market, isLoaded }: PageContentProps) => (
264+
<AddCollateralForm networks={networks} chainId={rChainId} market={market} enabled={isLoaded} />
265+
)

apps/main/src/lend/components/PageLoanManage/LoanCollateralRemove/index.tsx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import useStore from '@/lend/store/useStore'
2121
import { Api, OneWayMarketTemplate, PageContentProps } from '@/lend/types/lend.types'
2222
import { _showNoLoanFound } from '@/lend/utils/helpers'
2323
import { DEFAULT_HEALTH_MODE } from '@/llamalend/constants'
24+
import { RemoveCollateralForm } from '@/llamalend/features/manage-loan/components/RemoveCollateralForm'
2425
import type { HealthMode } from '@/llamalend/llamalend.types'
2526
import { useLoanExists } from '@/llamalend/queries/loan-exists'
2627
import AlertBox from '@ui/AlertBox'
@@ -296,3 +297,7 @@ const LoanCollateralRemove = ({ rChainId, rOwmId, isLoaded, api, market, userAct
296297
}
297298

298299
export default LoanCollateralRemove
300+
301+
export const LoanRemoveCollateralTab = ({ rChainId, market, isLoaded }: PageContentProps) => (
302+
<RemoveCollateralForm networks={networks} chainId={rChainId} market={market} enabled={isLoaded} />
303+
)

apps/main/src/lend/components/PageLoanManage/LoanRepay/index.tsx

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import { Api, FormError, type MarketUrlParams, OneWayMarketTemplate, PageContent
2020
import { _showNoLoanFound } from '@/lend/utils/helpers'
2121
import { getCollateralListPathname } from '@/lend/utils/utilsRouter'
2222
import { DEFAULT_HEALTH_MODE } from '@/llamalend/constants'
23+
import { RepayForm } from '@/llamalend/features/manage-loan/components/RepayForm'
2324
import type { HealthMode } from '@/llamalend/llamalend.types'
2425
import { useLoanExists } from '@/llamalend/queries/loan-exists'
2526
import Stack from '@mui/material/Stack'
@@ -537,3 +538,11 @@ const LoanRepay = ({
537538
}
538539

539540
export default LoanRepay
541+
542+
export const LoanRepayFromWalletTab = ({ rChainId, market, isLoaded }: PageContentProps) => (
543+
<RepayForm fromWallet networks={networks} chainId={rChainId} market={market} enabled={isLoaded} />
544+
)
545+
546+
export const LoanRepayFromCollateralTab = ({ rChainId, market, isLoaded }: PageContentProps) => (
547+
<RepayForm fromCollateral networks={networks} chainId={rChainId} market={market} enabled={isLoaded} />
548+
)

0 commit comments

Comments
 (0)