diff --git a/apps/main/src/lend/components/AlertNoLoanFound.tsx b/apps/main/src/lend/components/AlertNoLoanFound.tsx
index d37cb33e5d..d5377404be 100644
--- a/apps/main/src/lend/components/AlertNoLoanFound.tsx
+++ b/apps/main/src/lend/components/AlertNoLoanFound.tsx
@@ -1,7 +1,7 @@
import { styled } from 'styled-components'
import useStore from '@/lend/store/useStore'
import type { UrlParams } from '@/lend/types/lend.types'
-import { getLoanCreatePathname } from '@/lend/utils/utilsRouter'
+import { getLoanPathname } from '@/lend/utils/utilsRouter'
import AlertBox from '@ui/AlertBox'
import type { AlertType } from '@ui/AlertBox/types'
import Button from '@ui/Button'
@@ -25,7 +25,7 @@ const AlertNoLoanFound = ({ alertType, owmId }: { alertType?: AlertType; owmId:
size="large"
onClick={() => {
setStateByKeyMarkets('marketDetailsView', 'market')
- push(getLoanCreatePathname(params, owmId))
+ push(getLoanPathname(params, owmId))
}}
>
Create loan
diff --git a/apps/main/src/lend/components/BandsComp.tsx b/apps/main/src/lend/components/BandsComp.tsx
index 885b959156..8f45e856d2 100644
--- a/apps/main/src/lend/components/BandsComp.tsx
+++ b/apps/main/src/lend/components/BandsComp.tsx
@@ -9,33 +9,31 @@ import { t } from '@ui-kit/lib/i18n'
type BandsCompProps = {
pageProps: PageContentProps
- page: 'create' | 'manage'
- loanExists: boolean
+ loanExists: boolean | undefined
}
-export const BandsComp = ({ pageProps, page, loanExists }: BandsCompProps) => {
+export const BandsComp = ({ pageProps, loanExists }: BandsCompProps) => {
const { rChainId, rOwmId, market } = pageProps
- const [selectedBand, setSelectedBand] = useState<'user' | 'market'>(page === 'create' ? 'market' : 'user')
+ const [selectedBand, setSelectedBand] = useState<'user' | 'market'>(loanExists ? 'user' : 'market')
- const SelectorMenu =
- page === 'create' ? null : (
-
- setSelectedBand('user')}
- >
- {t`Position Bands`}
-
- setSelectedBand('market')}
- >
- {t`Market Bands`}
-
-
- )
+ const SelectorMenu = loanExists && (
+
+ setSelectedBand('user')}
+ >
+ {t`Position Bands`}
+
+ setSelectedBand('market')}
+ >
+ {t`Market Bands`}
+
+
+ )
return (
@@ -43,12 +41,7 @@ export const BandsComp = ({ pageProps, page, loanExists }: BandsCompProps) => {
)}
{(selectedBand === 'market' || !loanExists) && (
-
+
)}
)
diff --git a/apps/main/src/lend/components/InpChipVaultShareUsdRate.tsx b/apps/main/src/lend/components/InpChipVaultShareUsdRate.tsx
index 4532b0843b..41122fac41 100644
--- a/apps/main/src/lend/components/InpChipVaultShareUsdRate.tsx
+++ b/apps/main/src/lend/components/InpChipVaultShareUsdRate.tsx
@@ -1,4 +1,4 @@
-import { StyledInpChip } from '@/lend/components/PageLoanManage/styles'
+import { StyledInpChip } from '@/lend/components/styles'
import useVaultShares from '@/lend/hooks/useVaultShares'
import { ChainId } from '@/lend/types/lend.types'
import Box from '@ui/Box'
diff --git a/apps/main/src/lend/components/InpToken.tsx b/apps/main/src/lend/components/InpToken.tsx
index ed7aac3c16..8133727650 100644
--- a/apps/main/src/lend/components/InpToken.tsx
+++ b/apps/main/src/lend/components/InpToken.tsx
@@ -1,6 +1,6 @@
import { useCallback } from 'react'
import InpChipUsdRate from '@/lend/components/InpChipUsdRate'
-import { StyledInpChip } from '@/lend/components/PageLoanManage/styles'
+import { StyledInpChip } from '@/lend/components/styles'
import type { NetworkConfig } from '@/lend/types/lend.types'
import Box from '@ui/Box'
import InputProvider, { InputDebounced, InputMaxBtn } from '@ui/InputComp'
diff --git a/apps/main/src/lend/components/InpTokenBorrow.tsx b/apps/main/src/lend/components/InpTokenBorrow.tsx
index c413cfa824..d285d0e020 100644
--- a/apps/main/src/lend/components/InpTokenBorrow.tsx
+++ b/apps/main/src/lend/components/InpTokenBorrow.tsx
@@ -1,7 +1,7 @@
import { useCallback } from 'react'
import InpChipUsdRate from '@/lend/components/InpChipUsdRate'
-import { StyledInpChip } from '@/lend/components/PageLoanManage/styles'
import { FieldsTitle } from '@/lend/components/SharedFormStyles/FieldsWrapper'
+import { StyledInpChip } from '@/lend/components/styles'
import type { NetworkConfig } from '@/lend/types/lend.types'
import Box from '@ui/Box'
import type { BoxProps } from '@ui/Box/types'
diff --git a/apps/main/src/lend/components/InpTokenRemove.tsx b/apps/main/src/lend/components/InpTokenRemove.tsx
index 9fe82ecd58..cff03d2140 100644
--- a/apps/main/src/lend/components/InpTokenRemove.tsx
+++ b/apps/main/src/lend/components/InpTokenRemove.tsx
@@ -1,7 +1,7 @@
import { useCallback } from 'react'
import InpChipUsdRate from '@/lend/components/InpChipUsdRate'
-import { StyledInpChip } from '@/lend/components/PageLoanManage/styles'
import { FieldsTitle } from '@/lend/components/SharedFormStyles/FieldsWrapper'
+import { StyledInpChip } from '@/lend/components/styles'
import type { NetworkConfig } from '@/lend/types/lend.types'
import Box from '@ui/Box'
import type { BoxProps } from '@ui/Box/types'
diff --git a/apps/main/src/lend/components/MarketInformationComp.tsx b/apps/main/src/lend/components/MarketInformationComp.tsx
index aadaca4c5d..b7fa1b60c8 100644
--- a/apps/main/src/lend/components/MarketInformationComp.tsx
+++ b/apps/main/src/lend/components/MarketInformationComp.tsx
@@ -18,24 +18,17 @@ const { Spacing } = SizesAndSpaces
type MarketInformationCompProps = {
pageProps: PageContentProps
- loanExists?: boolean
+ loanExists: boolean | undefined
userActiveKey: string
type: 'borrow' | 'supply'
- page?: 'create' | 'manage'
}
const EMPTY_ARRAY: never[] = []
/**
- * Reusable component for OHLC charts, Bands (if applicable), and market parameters. For /create, /manage, /vault pages.
+ * Reusable component for OHLC charts, Bands (if applicable), and market parameters, used in market and vault pages.
*/
-export const MarketInformationComp = ({
- pageProps,
- loanExists = false,
- userActiveKey,
- type,
- page = 'manage',
-}: MarketInformationCompProps) => {
+export const MarketInformationComp = ({ pageProps, loanExists, userActiveKey, type }: MarketInformationCompProps) => {
const { rChainId, rOwmId, market } = pageProps
const collateralTokenAddress = market?.collateral_token.address
const borrowedTokenAddress = market?.borrowed_token.address
@@ -88,7 +81,7 @@ export const MarketInformationComp = ({
)}
{type === 'borrow' && !newBandsChartEnabled && isAdvancedMode && (
t.design.Layer[1].Fill, gap: Spacing.md, padding: Spacing.md }}>
-
+
)}
{market && isAdvancedMode && (
diff --git a/apps/main/src/lend/components/PageLoanManage/Page.tsx b/apps/main/src/lend/components/PageLendMarket/LendMarketPage.tsx
similarity index 73%
rename from apps/main/src/lend/components/PageLoanManage/Page.tsx
rename to apps/main/src/lend/components/PageLendMarket/LendMarketPage.tsx
index 57b9f5eb9f..d72184acfa 100644
--- a/apps/main/src/lend/components/PageLoanManage/Page.tsx
+++ b/apps/main/src/lend/components/PageLendMarket/LendMarketPage.tsx
@@ -3,7 +3,8 @@ import type { Address } from 'viem'
import CampaignRewardsBanner from '@/lend/components/CampaignRewardsBanner'
import { MarketInformationComp } from '@/lend/components/MarketInformationComp'
import { MarketInformationTabs } from '@/lend/components/MarketInformationTabs'
-import { ManageLoanTabs } from '@/lend/components/PageLoanManage/ManageLoanTabs'
+import { LoanCreateTabs } from '@/lend/components/PageLendMarket/LoanCreateTabs'
+import { ManageLoanTabs } from '@/lend/components/PageLendMarket/ManageLoanTabs'
import { useOneWayMarket } from '@/lend/entities/chain'
import { useBorrowPositionDetails } from '@/lend/hooks/useBorrowPositionDetails'
import { useLendPageTitle } from '@/lend/hooks/useLendPageTitle'
@@ -13,8 +14,8 @@ import { helpers } from '@/lend/lib/apiLending'
import networks from '@/lend/networks'
import useStore from '@/lend/store/useStore'
import { type MarketUrlParams } from '@/lend/types/lend.types'
-import { getVaultPathname, parseMarketParams } from '@/lend/utils/helpers'
-import { getCollateralListPathname } from '@/lend/utils/utilsRouter'
+import { getCollateralListPathname, parseMarketParams } from '@/lend/utils/helpers'
+import { getVaultPathname } from '@/lend/utils/utilsRouter'
import { MarketDetails } from '@/llamalend/features/market-details'
import { BorrowPositionDetails, NoPosition } from '@/llamalend/features/market-position-details'
import { UserPositionHistory } from '@/llamalend/features/user-position-history'
@@ -35,41 +36,28 @@ import { SizesAndSpaces } from '@ui-kit/themes/design/1_sizes_spaces'
const { Spacing } = SizesAndSpaces
-const Page = () => {
+export const LendMarketPage = () => {
const params = useParams()
- const { rMarket, rChainId } = parseMarketParams(params)
+ const { rMarket, rChainId: chainId } = parseMarketParams(params)
+
+ const { data: market, isSuccess } = useOneWayMarket(chainId, rMarket)
const { llamaApi: api = null, connectState } = useCurve()
const titleMapper = useTitleMapper()
- const { data: market, isSuccess } = useOneWayMarket(rChainId, rMarket)
- const rOwmId = market?.id ?? ''
- const userActiveKey = helpers.getUserActiveKey(api, market!)
+ const { provider, connect } = useWallet()
+
const isPageVisible = useLayoutStore((state) => state.isPageVisible)
const fetchAllMarketDetails = useStore((state) => state.markets.fetchAll)
+ const fetchUserMarketBalances = useStore((state) => state.user.fetchUserMarketBalances)
const fetchAllUserMarketDetails = useStore((state) => state.user.fetchAll)
const setMarketsStateKey = useStore((state) => state.markets.setStateByKey)
- const { provider, connect } = useWallet()
+ const marketId = market?.id ?? '' // todo: use market?.id directly everywhere since we pass the market too!
+ const userActiveKey = helpers.getUserActiveKey(api, market!)
const { signerAddress } = api ?? {}
+ useLendPageTitle(market?.collateral_token?.symbol ?? rMarket, t`Lend`)
- const { data: loanExists } = useLoanExists({
- chainId: rChainId,
- marketId: market?.id,
- userAddress: signerAddress,
- })
-
- const [isLoaded, setLoaded] = useState(false)
-
- const borrowPositionDetails = useBorrowPositionDetails({
- chainId: rChainId,
- market: market ?? undefined,
- marketId: rOwmId,
- })
- const marketDetails = useMarketDetails({
- chainId: rChainId,
- llamma: market,
- llammaId: rOwmId,
- })
- const network = networks[rChainId]
+ const marketDetails = useMarketDetails({ chainId, market, marketId })
+ const network = networks[chainId]
const {
data: userCollateralEvents,
isLoading: collateralEventsIsLoading,
@@ -83,46 +71,47 @@ const Page = () => {
borrowToken: market?.borrowed_token,
network,
})
+ const { data: loanExists, isLoading: isLoanExistsLoading } = useLoanExists({
+ chainId,
+ marketId: marketId,
+ userAddress: signerAddress,
+ })
- const isInSoftLiquidation =
- borrowPositionDetails.liquidationAlert.softLiquidation || borrowPositionDetails.liquidationAlert.hardLiquidation
+ const [isLoaded, setLoaded] = useState(false)
- useEffect(() => {
- if (api && market && isPageVisible) {
- if (loanExists) setMarketsStateKey('marketDetailsView', 'user')
- setLoaded(true)
- }
- }, [api, isPageVisible, loanExists, market, setMarketsStateKey])
+ const borrowPositionDetails = useBorrowPositionDetails({ chainId, market: market, marketId })
useEffect(() => {
// delay fetch rest after form details are fetched first
const timer = setTimeout(async () => {
- if (!api || !market || !isPageVisible || !isLoaded) return
- void fetchAllMarketDetails(api, market, true)
- if (api.signerAddress && loanExists) {
- void fetchAllUserMarketDetails(api, market, true)
+ if (!api || !market || !isPageVisible) return
+ await fetchAllMarketDetails(api, market, true)
+ if (api.signerAddress) {
+ await fetchUserMarketBalances(api, market, true)
+ if (loanExists) {
+ void fetchAllUserMarketDetails(api, market, true)
+ }
}
}, REFRESH_INTERVAL['3s'])
return () => clearTimeout(timer)
- }, [api, fetchAllMarketDetails, fetchAllUserMarketDetails, isLoaded, isPageVisible, loanExists, market])
-
- useLendPageTitle(market?.collateral_token?.symbol, 'Manage')
-
- const pageProps = {
- params,
- rChainId,
- rOwmId,
- isLoaded,
+ }, [
api,
+ fetchAllMarketDetails,
+ fetchUserMarketBalances,
+ fetchAllUserMarketDetails,
+ isPageVisible,
market,
- userActiveKey,
- titleMapper,
- }
+ loanExists,
+ ])
+
+ useEffect(() => {
+ if (api && market && isPageVisible) {
+ if (loanExists) setMarketsStateKey('marketDetailsView', 'user')
+ setLoaded(true)
+ }
+ }, [api, isPageVisible, loanExists, market, setMarketsStateKey])
- const positionDetailsHrefs = {
- borrow: '',
- supply: getVaultPathname(params, rOwmId),
- }
+ const pageProps = { params, rChainId: chainId, rOwmId: marketId, isLoaded, api, market, userActiveKey, titleMapper }
return isSuccess && !market ? (
@@ -130,15 +119,25 @@ const Page = () => {
<>
- {rChainId && rOwmId && }
+ {chainId &&
+ marketId &&
+ !isLoanExistsLoading &&
+ (loanExists ? (
+
+ ) : (
+
+ ))}
-
+
{loanExists ? (
) : (
@@ -185,5 +184,3 @@ const Page = () => {
)
}
-
-export default Page
diff --git a/apps/main/src/lend/components/PageLoanManage/LoanBorrowMore/components/DetailInfo.tsx b/apps/main/src/lend/components/PageLendMarket/LoanBorrowMore/components/DetailInfo.tsx
similarity index 100%
rename from apps/main/src/lend/components/PageLoanManage/LoanBorrowMore/components/DetailInfo.tsx
rename to apps/main/src/lend/components/PageLendMarket/LoanBorrowMore/components/DetailInfo.tsx
diff --git a/apps/main/src/lend/components/PageLoanManage/LoanBorrowMore/components/DetailInfoLeverage.tsx b/apps/main/src/lend/components/PageLendMarket/LoanBorrowMore/components/DetailInfoLeverage.tsx
similarity index 98%
rename from apps/main/src/lend/components/PageLoanManage/LoanBorrowMore/components/DetailInfoLeverage.tsx
rename to apps/main/src/lend/components/PageLendMarket/LoanBorrowMore/components/DetailInfoLeverage.tsx
index e675cee7fc..ddca91556c 100644
--- a/apps/main/src/lend/components/PageLoanManage/LoanBorrowMore/components/DetailInfoLeverage.tsx
+++ b/apps/main/src/lend/components/PageLendMarket/LoanBorrowMore/components/DetailInfoLeverage.tsx
@@ -7,7 +7,7 @@ import DetailInfoLiqRange from '@/lend/components/DetailInfoLiqRange'
import DetailInfoPriceImpact from '@/lend/components/DetailInfoPriceImpact'
import DetailInfoRate from '@/lend/components/DetailInfoRate'
import DetailInfoSlippageTolerance from '@/lend/components/DetailInfoSlippageTolerance'
-import { _parseValues } from '@/lend/components/PageLoanManage/LoanBorrowMore/utils'
+import { _parseValues } from '@/lend/components/PageLendMarket/LoanBorrowMore/utils'
import networks from '@/lend/networks'
import useStore from '@/lend/store/useStore'
import { PageContentProps } from '@/lend/types/lend.types'
diff --git a/apps/main/src/lend/components/PageLoanManage/LoanBorrowMore/index.tsx b/apps/main/src/lend/components/PageLendMarket/LoanBorrowMore/index.tsx
similarity index 91%
rename from apps/main/src/lend/components/PageLoanManage/LoanBorrowMore/index.tsx
rename to apps/main/src/lend/components/PageLendMarket/LoanBorrowMore/index.tsx
index 65a9ad2b8f..7025e79cb2 100644
--- a/apps/main/src/lend/components/PageLoanManage/LoanBorrowMore/index.tsx
+++ b/apps/main/src/lend/components/PageLendMarket/LoanBorrowMore/index.tsx
@@ -1,28 +1,25 @@
import { ReactNode, useCallback, useEffect, useRef, useState } from 'react'
import AlertFormError from '@/lend/components/AlertFormError'
import AlertLoanSummary from '@/lend/components/AlertLoanSummary'
-import AlertNoLoanFound from '@/lend/components/AlertNoLoanFound'
import DialogFormWarning from '@/lend/components/DialogFormWarning'
import InpToken from '@/lend/components/InpToken'
import InpTokenBorrow from '@/lend/components/InpTokenBorrow'
import LoanFormConnect from '@/lend/components/LoanFormConnect'
-import DetailInfo from '@/lend/components/PageLoanManage/LoanBorrowMore/components/DetailInfo'
-import DetailInfoLeverage from '@/lend/components/PageLoanManage/LoanBorrowMore/components/DetailInfoLeverage'
-import type { FormStatus, FormValues, StepKey } from '@/lend/components/PageLoanManage/LoanBorrowMore/types'
-import { _parseValues, DEFAULT_FORM_VALUES } from '@/lend/components/PageLoanManage/LoanBorrowMore/utils'
-import { StyledDetailInfoWrapper } from '@/lend/components/PageLoanManage/styles'
-import type { FormEstGas } from '@/lend/components/PageLoanManage/types'
-import { DEFAULT_CONFIRM_WARNING } from '@/lend/components/PageLoanManage/utils'
+import DetailInfo from '@/lend/components/PageLendMarket/LoanBorrowMore/components/DetailInfo'
+import DetailInfoLeverage from '@/lend/components/PageLendMarket/LoanBorrowMore/components/DetailInfoLeverage'
+import type { FormStatus, FormValues, StepKey } from '@/lend/components/PageLendMarket/LoanBorrowMore/types'
+import { _parseValues, DEFAULT_FORM_VALUES } from '@/lend/components/PageLendMarket/LoanBorrowMore/utils'
+import type { FormEstGas } from '@/lend/components/PageLendMarket/types'
+import { DEFAULT_CONFIRM_WARNING } from '@/lend/components/PageLendMarket/utils'
+import { StyledDetailInfoWrapper } from '@/lend/components/styles'
import { NOFITY_MESSAGE } from '@/lend/constants'
import { useUserLoanDetails } from '@/lend/hooks/useUserLoanDetails'
import { helpers } from '@/lend/lib/apiLending'
import networks from '@/lend/networks'
import useStore from '@/lend/store/useStore'
import { Api, OneWayMarketTemplate, PageContentProps } from '@/lend/types/lend.types'
-import { _showNoLoanFound } from '@/lend/utils/helpers'
import { DEFAULT_HEALTH_MODE } from '@/llamalend/constants'
import type { HealthMode } from '@/llamalend/llamalend.types'
-import { useLoanExists } from '@/llamalend/queries/loan-exists'
import Stack from '@mui/material/Stack'
import Typography from '@mui/material/Typography'
import AlertBox from '@ui/AlertBox'
@@ -78,12 +75,6 @@ const LoanBorrowMore = ({
const { signerAddress } = api ?? {}
const { expectedCollateral } = detailInfoLeverage ?? {}
- const { data: loanExists } = useLoanExists({
- chainId: rChainId,
- marketId: market?.id,
- userAddress: signerAddress,
- })
-
const updateFormValues = useCallback(
(
updatedFormValues: Partial,
@@ -417,22 +408,18 @@ const LoanBorrowMore = ({
{/* actions */}
- {_showNoLoanFound(signerAddress, formStatus.isComplete, loanExists) ? (
-
- ) : (
-
- {txInfoBar}
- {healthMode.message && {healthMode.message}}
- {(formStatus.error || formStatus.stepError) && (
- updateFormValues({})}
- />
- )}
- {steps && }
-
- )}
+
+ {txInfoBar}
+ {healthMode.message && {healthMode.message}}
+ {(formStatus.error || formStatus.stepError) && (
+ updateFormValues({})}
+ />
+ )}
+ {steps && }
+
)
}
diff --git a/apps/main/src/lend/components/PageLoanManage/LoanBorrowMore/types.ts b/apps/main/src/lend/components/PageLendMarket/LoanBorrowMore/types.ts
similarity index 67%
rename from apps/main/src/lend/components/PageLoanManage/LoanBorrowMore/types.ts
rename to apps/main/src/lend/components/PageLendMarket/LoanBorrowMore/types.ts
index 6f79f9ecb5..8e788dbb39 100644
--- a/apps/main/src/lend/components/PageLoanManage/LoanBorrowMore/types.ts
+++ b/apps/main/src/lend/components/PageLendMarket/LoanBorrowMore/types.ts
@@ -1,6 +1,5 @@
-import type { InpError } from '@/lend/components/PageLoanCreate/types'
-import type { FormDetailInfo, FormStatus as Fs } from '@/lend/components/PageLoanManage/types'
-import { ExpectedCollateral } from '@/lend/types/lend.types'
+import type { FormDetailInfo, InpError } from '@/lend/components/PageLendMarket/types'
+import { ExpectedCollateral, type FormStatus as Fs } from '@/lend/types/lend.types'
export type FormValues = {
userCollateral: string
diff --git a/apps/main/src/lend/components/PageLoanManage/LoanBorrowMore/utils.ts b/apps/main/src/lend/components/PageLendMarket/LoanBorrowMore/utils.ts
similarity index 92%
rename from apps/main/src/lend/components/PageLoanManage/LoanBorrowMore/utils.ts
rename to apps/main/src/lend/components/PageLendMarket/LoanBorrowMore/utils.ts
index f03bb8670b..82132d2db7 100644
--- a/apps/main/src/lend/components/PageLoanManage/LoanBorrowMore/utils.ts
+++ b/apps/main/src/lend/components/PageLendMarket/LoanBorrowMore/utils.ts
@@ -1,5 +1,5 @@
-import { FormStatus, FormValues } from '@/lend/components/PageLoanManage/LoanBorrowMore/types'
-import { DEFAULT_FORM_STATUS as FORM_STATUS } from '@/lend/components/PageLoanManage/utils'
+import { FormStatus, FormValues } from '@/lend/components/PageLendMarket/LoanBorrowMore/types'
+import { DEFAULT_FORM_STATUS as FORM_STATUS } from '@/lend/components/PageLendMarket/utils'
import { OneWayMarketTemplate } from '@/lend/types/lend.types'
import { _parseStepTokensList } from '@/lend/utils/helpers'
diff --git a/apps/main/src/lend/components/PageLoanManage/LoanCollateralAdd/index.tsx b/apps/main/src/lend/components/PageLendMarket/LoanCollateralAdd/index.tsx
similarity index 89%
rename from apps/main/src/lend/components/PageLoanManage/LoanCollateralAdd/index.tsx
rename to apps/main/src/lend/components/PageLendMarket/LoanCollateralAdd/index.tsx
index eea70678a7..a9ee8ee001 100644
--- a/apps/main/src/lend/components/PageLoanManage/LoanCollateralAdd/index.tsx
+++ b/apps/main/src/lend/components/PageLendMarket/LoanCollateralAdd/index.tsx
@@ -1,15 +1,14 @@
import { ReactNode, useCallback, useEffect, useRef, useState } from 'react'
import AlertFormError from '@/lend/components/AlertFormError'
import AlertSummary from '@/lend/components/AlertLoanSummary'
-import AlertNoLoanFound from '@/lend/components/AlertNoLoanFound'
import DetailInfoEstimateGas from '@/lend/components/DetailInfoEstimateGas'
import DetailInfoHealth from '@/lend/components/DetailInfoHealth'
import DetailInfoLiqRange from '@/lend/components/DetailInfoLiqRange'
import InpToken from '@/lend/components/InpToken'
import LoanFormConnect from '@/lend/components/LoanFormConnect'
-import type { FormStatus, FormValues, StepKey } from '@/lend/components/PageLoanManage/LoanCollateralAdd/types'
-import { StyledDetailInfoWrapper } from '@/lend/components/PageLoanManage/styles'
-import type { FormEstGas } from '@/lend/components/PageLoanManage/types'
+import type { FormStatus, FormValues, StepKey } from '@/lend/components/PageLendMarket/LoanCollateralAdd/types'
+import type { FormEstGas } from '@/lend/components/PageLendMarket/types'
+import { StyledDetailInfoWrapper } from '@/lend/components/styles'
import { NOFITY_MESSAGE } from '@/lend/constants'
import { useUserLoanDetails } from '@/lend/hooks/useUserLoanDetails'
import { helpers } from '@/lend/lib/apiLending'
@@ -17,10 +16,8 @@ import networks from '@/lend/networks'
import { DEFAULT_FORM_VALUES } from '@/lend/store/createLoanCollateralAddSlice'
import useStore from '@/lend/store/useStore'
import { Api, OneWayMarketTemplate, PageContentProps } from '@/lend/types/lend.types'
-import { _showNoLoanFound } from '@/lend/utils/helpers'
import { DEFAULT_HEALTH_MODE } from '@/llamalend/constants'
import { AddCollateralForm } from '@/llamalend/features/manage-loan/components/AddCollateralForm'
-import { useLoanExists } from '@/llamalend/queries/loan-exists'
import AlertBox from '@ui/AlertBox'
import { getActiveStep } from '@ui/Stepper/helpers'
import Stepper from '@ui/Stepper/Stepper'
@@ -54,12 +51,6 @@ const LoanCollateralAdd = ({ rChainId, rOwmId, api, isLoaded, market, userActive
const { signerAddress } = api ?? {}
- const { data: loanExists } = useLoanExists({
- chainId: rChainId,
- marketId: market?.id,
- userAddress: signerAddress,
- })
-
const updateFormValues = useCallback(
(updatedFormValues: Partial, isFullReset?: boolean) => {
void setFormValues(isLoaded ? api : null, market, isFullReset ? DEFAULT_FORM_VALUES : updatedFormValues)
@@ -239,21 +230,17 @@ const LoanCollateralAdd = ({ rChainId, rOwmId, api, isLoaded, market, userActive
{/* actions */}
- {_showNoLoanFound(signerAddress, formStatus.isComplete, loanExists) ? (
-
- ) : (
-
- {txInfoBar}
- {(formStatus.error || formStatus.stepError) && (
- updateFormValues({}, true)}
- />
- )}
- {steps && }
-
- )}
+
+ {txInfoBar}
+ {(formStatus.error || formStatus.stepError) && (
+ updateFormValues({}, true)}
+ />
+ )}
+ {steps && }
+
>
)
}
diff --git a/apps/main/src/lend/components/PageLoanManage/LoanCollateralAdd/types.ts b/apps/main/src/lend/components/PageLendMarket/LoanCollateralAdd/types.ts
similarity index 69%
rename from apps/main/src/lend/components/PageLoanManage/LoanCollateralAdd/types.ts
rename to apps/main/src/lend/components/PageLendMarket/LoanCollateralAdd/types.ts
index de9878c137..d280644e35 100644
--- a/apps/main/src/lend/components/PageLoanManage/LoanCollateralAdd/types.ts
+++ b/apps/main/src/lend/components/PageLendMarket/LoanCollateralAdd/types.ts
@@ -1,4 +1,4 @@
-import type { FormStatus as Fs } from '@/lend/components/PageLoanManage/types'
+import type { FormStatus as Fs } from '@/lend/types/lend.types'
export type FormValues = {
collateral: string
diff --git a/apps/main/src/lend/components/PageLoanManage/LoanCollateralRemove/index.tsx b/apps/main/src/lend/components/PageLendMarket/LoanCollateralRemove/index.tsx
similarity index 89%
rename from apps/main/src/lend/components/PageLoanManage/LoanCollateralRemove/index.tsx
rename to apps/main/src/lend/components/PageLendMarket/LoanCollateralRemove/index.tsx
index 0a2e54f410..88249492fa 100644
--- a/apps/main/src/lend/components/PageLoanManage/LoanCollateralRemove/index.tsx
+++ b/apps/main/src/lend/components/PageLendMarket/LoanCollateralRemove/index.tsx
@@ -1,17 +1,16 @@
import { ReactNode, useCallback, useEffect, useRef, useState } from 'react'
import AlertFormError from '@/lend/components/AlertFormError'
import AlertSummary from '@/lend/components/AlertLoanSummary'
-import AlertNoLoanFound from '@/lend/components/AlertNoLoanFound'
import DetailInfoEstimateGas from '@/lend/components/DetailInfoEstimateGas'
import DetailInfoHealth from '@/lend/components/DetailInfoHealth'
import DetailInfoLiqRange from '@/lend/components/DetailInfoLiqRange'
import DialogFormWarning from '@/lend/components/DialogFormWarning'
import InpTokenRemove from '@/lend/components/InpTokenRemove'
import LoanFormConnect from '@/lend/components/LoanFormConnect'
-import type { FormStatus, FormValues, StepKey } from '@/lend/components/PageLoanManage/LoanCollateralRemove/types'
-import { StyledDetailInfoWrapper } from '@/lend/components/PageLoanManage/styles'
-import type { FormEstGas } from '@/lend/components/PageLoanManage/types'
-import { DEFAULT_CONFIRM_WARNING } from '@/lend/components/PageLoanManage/utils'
+import type { FormStatus, FormValues, StepKey } from '@/lend/components/PageLendMarket/LoanCollateralRemove/types'
+import type { FormEstGas } from '@/lend/components/PageLendMarket/types'
+import { DEFAULT_CONFIRM_WARNING } from '@/lend/components/PageLendMarket/utils'
+import { StyledDetailInfoWrapper } from '@/lend/components/styles'
import { NOFITY_MESSAGE } from '@/lend/constants'
import { useUserLoanDetails } from '@/lend/hooks/useUserLoanDetails'
import { helpers } from '@/lend/lib/apiLending'
@@ -19,11 +18,9 @@ import networks from '@/lend/networks'
import { DEFAULT_FORM_VALUES } from '@/lend/store/createLoanCollateralRemoveSlice'
import useStore from '@/lend/store/useStore'
import { Api, OneWayMarketTemplate, PageContentProps } from '@/lend/types/lend.types'
-import { _showNoLoanFound } from '@/lend/utils/helpers'
import { DEFAULT_HEALTH_MODE } from '@/llamalend/constants'
import { RemoveCollateralForm } from '@/llamalend/features/manage-loan/components/RemoveCollateralForm'
import type { HealthMode } from '@/llamalend/llamalend.types'
-import { useLoanExists } from '@/llamalend/queries/loan-exists'
import AlertBox from '@ui/AlertBox'
import { getActiveStep } from '@ui/Stepper/helpers'
import Stepper from '@ui/Stepper/Stepper'
@@ -58,12 +55,6 @@ const LoanCollateralRemove = ({ rChainId, rOwmId, isLoaded, api, market, userAct
const { signerAddress } = api ?? {}
- const { data: loanExists } = useLoanExists({
- chainId: rChainId,
- marketId: market?.id,
- userAddress: signerAddress,
- })
-
const network = networks[rChainId]
const updateFormValues = useCallback(
@@ -276,22 +267,18 @@ const LoanCollateralRemove = ({ rChainId, rOwmId, isLoaded, api, market, userAct
{/* actions */}
- {_showNoLoanFound(signerAddress, formStatus.isComplete, loanExists) ? (
-
- ) : (
-
- {txInfoBar}
- {healthMode.message && {healthMode.message}}
- {(formStatus.error || formStatus.stepError) && (
- updateFormValues({})}
- />
- )}
- {steps && }
-
- )}
+
+ {txInfoBar}
+ {healthMode.message && {healthMode.message}}
+ {(formStatus.error || formStatus.stepError) && (
+ updateFormValues({})}
+ />
+ )}
+ {steps && }
+
>
)
}
diff --git a/apps/main/src/lend/components/PageLoanManage/LoanCollateralRemove/types.ts b/apps/main/src/lend/components/PageLendMarket/LoanCollateralRemove/types.ts
similarity index 56%
rename from apps/main/src/lend/components/PageLoanManage/LoanCollateralRemove/types.ts
rename to apps/main/src/lend/components/PageLendMarket/LoanCollateralRemove/types.ts
index 20d8e5ec05..1e3e373fe5 100644
--- a/apps/main/src/lend/components/PageLoanManage/LoanCollateralRemove/types.ts
+++ b/apps/main/src/lend/components/PageLendMarket/LoanCollateralRemove/types.ts
@@ -1,5 +1,5 @@
-import type { InpError } from '@/lend/components/PageLoanCreate/types'
-import type { FormStatus as Fs } from '@/lend/components/PageLoanManage/types'
+import type { InpError } from '@/lend/components/PageLendMarket/types'
+import type { FormStatus as Fs } from '@/lend/types/lend.types'
export type FormValues = {
collateral: string
diff --git a/apps/main/src/lend/components/PageLoanCreate/LoanCreateTabs.tsx b/apps/main/src/lend/components/PageLendMarket/LoanCreateTabs.tsx
similarity index 88%
rename from apps/main/src/lend/components/PageLoanCreate/LoanCreateTabs.tsx
rename to apps/main/src/lend/components/PageLendMarket/LoanCreateTabs.tsx
index de431d4a23..d2f5444c72 100644
--- a/apps/main/src/lend/components/PageLoanCreate/LoanCreateTabs.tsx
+++ b/apps/main/src/lend/components/PageLendMarket/LoanCreateTabs.tsx
@@ -1,7 +1,7 @@
import { useCallback } from 'react'
-import LoanFormCreate from '@/lend/components/PageLoanCreate/LoanFormCreate'
-import type { FormValues } from '@/lend/components/PageLoanCreate/types'
-import { DEFAULT_FORM_VALUES } from '@/lend/components/PageLoanCreate/utils'
+import { LoanCreateForm } from '@/lend/components/PageLendMarket/LoanFormCreate/LoanCreateForm'
+import type { FormValues } from '@/lend/components/PageLendMarket/types'
+import { DEFAULT_FORM_VALUES } from '@/lend/components/PageLendMarket/utils'
import networks from '@/lend/networks'
import useStore from '@/lend/store/useStore'
import { type MarketUrlParams, type PageContentProps } from '@/lend/types/lend.types'
@@ -60,11 +60,11 @@ const LendCreateTabsNewMenu = [
] satisfies FormTab[]
const LendCreateTabsOldMenu = [
- { value: 'create', label: t`Create Loan`, component: LoanFormCreate },
+ { value: 'create', label: t`Create Loan`, component: LoanCreateForm },
{
value: 'leverage',
label: t`Leverage`,
- component: (p) => ,
+ component: (p) => ,
visible: ({ market }) => market && hasLeverage(market),
},
] satisfies FormTab[]
diff --git a/apps/main/src/lend/components/PageLoanCreate/LoanFormCreate/index.tsx b/apps/main/src/lend/components/PageLendMarket/LoanFormCreate/LoanCreateForm.tsx
similarity index 87%
rename from apps/main/src/lend/components/PageLoanCreate/LoanFormCreate/index.tsx
rename to apps/main/src/lend/components/PageLendMarket/LoanFormCreate/LoanCreateForm.tsx
index f9f4426a09..18394c5895 100644
--- a/apps/main/src/lend/components/PageLoanCreate/LoanFormCreate/index.tsx
+++ b/apps/main/src/lend/components/PageLendMarket/LoanFormCreate/LoanCreateForm.tsx
@@ -5,10 +5,9 @@ import DialogFormWarning from '@/lend/components/DialogFormWarning'
import InpToken from '@/lend/components/InpToken'
import InpTokenBorrow from '@/lend/components/InpTokenBorrow'
import LoanFormConnect from '@/lend/components/LoanFormConnect'
-import DetailInfo from '@/lend/components/PageLoanCreate/LoanFormCreate/components/DetailInfo'
-import type { FormEstGas, FormStatus, FormValues, StepKey } from '@/lend/components/PageLoanCreate/types'
-import { _parseValue, DEFAULT_FORM_VALUES } from '@/lend/components/PageLoanCreate/utils'
-import { DEFAULT_CONFIRM_WARNING } from '@/lend/components/PageLoanManage/utils'
+import DetailInfo from '@/lend/components/PageLendMarket/LoanFormCreate/components/DetailInfo'
+import type { FormEstGas, FormStatus, FormValues, StepKey } from '@/lend/components/PageLendMarket/types'
+import { _parseValue, DEFAULT_CONFIRM_WARNING, DEFAULT_FORM_VALUES } from '@/lend/components/PageLendMarket/utils'
import { FieldsTitle, FieldsWrapper } from '@/lend/components/SharedFormStyles/FieldsWrapper'
import { NOFITY_MESSAGE } from '@/lend/constants'
import useMarketAlert from '@/lend/hooks/useMarketAlert'
@@ -17,16 +16,12 @@ import { helpers } from '@/lend/lib/apiLending'
import networks from '@/lend/networks'
import useStore from '@/lend/store/useStore'
import { Api, type MarketUrlParams, OneWayMarketTemplate, PageContentProps } from '@/lend/types/lend.types'
-import { getLoanManagePathname } from '@/lend/utils/utilsRouter'
import { DEFAULT_HEALTH_MODE } from '@/llamalend/constants'
import { MarketParameters } from '@/llamalend/features/market-parameters/MarketParameters'
import type { HealthMode } from '@/llamalend/llamalend.types'
-import { useLoanExists } from '@/llamalend/queries/loan-exists'
import Accordion from '@ui/Accordion'
import AlertBox from '@ui/AlertBox'
import Box from '@ui/Box'
-import Button from '@ui/Button'
-import LinkButton from '@ui/LinkButton'
import Stepper from '@ui/Stepper/Stepper'
import type { Step } from '@ui/Stepper/types'
import TextCaption from '@ui/TextCaption'
@@ -34,18 +29,16 @@ import TxInfoBar from '@ui/TxInfoBar'
import { formatNumber, scanTxPath } from '@ui/utils'
import { notify } from '@ui-kit/features/connect-wallet'
import { useUserProfileStore } from '@ui-kit/features/user-profile'
-import { useNavigate } from '@ui-kit/hooks/router'
import usePageVisibleInterval from '@ui-kit/hooks/usePageVisibleInterval'
import { t } from '@ui-kit/lib/i18n'
import { REFRESH_INTERVAL } from '@ui-kit/lib/model'
-const LoanCreate = ({
+export const LoanCreateForm = ({
isLeverage = false,
...pageProps
-}: PageContentProps & { isLeverage?: boolean; params: MarketUrlParams }) => {
- const { rChainId, rOwmId, isLoaded, api, market, userActiveKey, params } = pageProps
+}: PageContentProps & { isLeverage?: boolean }) => {
+ const { rChainId, rOwmId, isLoaded, api, market, userActiveKey } = pageProps
const isSubscribed = useRef(false)
- const push = useNavigate()
const marketAlert = useMarketAlert(rChainId, rOwmId)
const activeKey = useStore((state) => state.loanCreate.activeKey)
@@ -61,7 +54,6 @@ const LoanCreate = ({
const refetchMaxRecv = useStore((state) => state.loanCreate.refetchMaxRecv)
const fetchStepApprove = useStore((state) => state.loanCreate.fetchStepApprove)
const fetchStepCreate = useStore((state) => state.loanCreate.fetchStepCreate)
- const setStateByKeyMarkets = useStore((state) => state.markets.setStateByKey)
const setFormValues = useStore((state) => state.loanCreate.setFormValues)
const resetState = useStore((state) => state.loanCreate.resetState)
@@ -77,12 +69,6 @@ const LoanCreate = ({
const { expectedCollateral } = detailInfoLeverage ?? {}
const { borrowed_token, collateral_token } = market ?? {}
- const { data: loanExists } = useLoanExists({
- chainId: rChainId,
- marketId: market?.id,
- userAddress: signerAddress,
- })
-
const updateFormValues = useCallback(
(updatedFormValues: Partial, isFullReset?: boolean, shouldRefetch?: boolean) => {
setConfirmWarning(DEFAULT_CONFIRM_WARNING)
@@ -404,39 +390,18 @@ const LoanCreate = ({
{marketAlert && {marketAlert.message}}
{/* actions */}
- {signerAddress && loanExists && !formStatus.isComplete ? (
- <>
- {t`A loan has been found for this market.`}
-
- >
- ) : (
-
- {txInfoBar}
- {!!healthMode.message && {healthMode.message}}
- {(formStatus.error || formStatus.stepError) && (
- updateFormValues({}, true)}
- />
- )}
- {steps && }
- {formStatus.isComplete && market && (
-
- Manage loan
-
- )}
-
- )}
+
+ {txInfoBar}
+ {!!healthMode.message && {healthMode.message}}
+ {(formStatus.error || formStatus.stepError) && (
+ updateFormValues({}, true)}
+ />
+ )}
+ {steps && }
+
{!isAdvancedMode && (
{t`Market details`}}>
@@ -446,5 +411,3 @@ const LoanCreate = ({
>
)
}
-
-export default LoanCreate
diff --git a/apps/main/src/lend/components/PageLoanCreate/LoanFormCreate/components/DetailInfo.tsx b/apps/main/src/lend/components/PageLendMarket/LoanFormCreate/components/DetailInfo.tsx
similarity index 89%
rename from apps/main/src/lend/components/PageLoanCreate/LoanFormCreate/components/DetailInfo.tsx
rename to apps/main/src/lend/components/PageLendMarket/LoanFormCreate/components/DetailInfo.tsx
index df124c19b5..66d740c518 100644
--- a/apps/main/src/lend/components/PageLoanCreate/LoanFormCreate/components/DetailInfo.tsx
+++ b/apps/main/src/lend/components/PageLendMarket/LoanFormCreate/components/DetailInfo.tsx
@@ -1,7 +1,7 @@
import { useMemo } from 'react'
-import DetailInfoLeverage from '@/lend/components/PageLoanCreate/LoanFormCreate/components/DetailInfoLeverage'
-import DetailInfoNonLeverage from '@/lend/components/PageLoanCreate/LoanFormCreate/components/DetailInfoNonLeverage'
-import type { DetailInfoCompAdditionalProps, DetailInfoCompProps } from '@/lend/components/PageLoanCreate/types'
+import DetailInfoLeverage from '@/lend/components/PageLendMarket/LoanFormCreate/components/DetailInfoLeverage'
+import DetailInfoNonLeverage from '@/lend/components/PageLendMarket/LoanFormCreate/components/DetailInfoNonLeverage'
+import type { DetailInfoCompAdditionalProps, DetailInfoCompProps } from '@/lend/components/PageLendMarket/types'
import type { LiqRangeSliderIdx } from '@/lend/store/types'
import useStore from '@/lend/store/useStore'
import { PageContentProps } from '@/lend/types/lend.types'
diff --git a/apps/main/src/lend/components/PageLoanCreate/LoanFormCreate/components/DetailInfoLeverage.tsx b/apps/main/src/lend/components/PageLendMarket/LoanFormCreate/components/DetailInfoLeverage.tsx
similarity index 98%
rename from apps/main/src/lend/components/PageLoanCreate/LoanFormCreate/components/DetailInfoLeverage.tsx
rename to apps/main/src/lend/components/PageLendMarket/LoanFormCreate/components/DetailInfoLeverage.tsx
index 2991dc0411..0b49d0e904 100644
--- a/apps/main/src/lend/components/PageLoanCreate/LoanFormCreate/components/DetailInfoLeverage.tsx
+++ b/apps/main/src/lend/components/PageLendMarket/LoanFormCreate/components/DetailInfoLeverage.tsx
@@ -9,8 +9,8 @@ import DetailInfoN from '@/lend/components/DetailInfoN'
import DetailInfoPriceImpact from '@/lend/components/DetailInfoPriceImpact'
import DetailInfoRate from '@/lend/components/DetailInfoRate'
import DetailInfoSlippageTolerance from '@/lend/components/DetailInfoSlippageTolerance'
-import type { DetailInfoCompProps, DetailInfoCompAdditionalProps } from '@/lend/components/PageLoanCreate/types'
-import { _parseValue } from '@/lend/components/PageLoanCreate/utils'
+import type { DetailInfoCompProps, DetailInfoCompAdditionalProps } from '@/lend/components/PageLendMarket/types'
+import { _parseValue } from '@/lend/components/PageLendMarket/utils'
import networks from '@/lend/networks'
import useStore from '@/lend/store/useStore'
import { PageContentProps } from '@/lend/types/lend.types'
diff --git a/apps/main/src/lend/components/PageLoanCreate/LoanFormCreate/components/DetailInfoNonLeverage.tsx b/apps/main/src/lend/components/PageLendMarket/LoanFormCreate/components/DetailInfoNonLeverage.tsx
similarity index 98%
rename from apps/main/src/lend/components/PageLoanCreate/LoanFormCreate/components/DetailInfoNonLeverage.tsx
rename to apps/main/src/lend/components/PageLendMarket/LoanFormCreate/components/DetailInfoNonLeverage.tsx
index 3517ad6206..ccf742b5f2 100644
--- a/apps/main/src/lend/components/PageLoanCreate/LoanFormCreate/components/DetailInfoNonLeverage.tsx
+++ b/apps/main/src/lend/components/PageLendMarket/LoanFormCreate/components/DetailInfoNonLeverage.tsx
@@ -4,7 +4,7 @@ import DetailInfoLiqRange from '@/lend/components/DetailInfoLiqRange'
import DetailInfoLTV from '@/lend/components/DetailInfoLTV'
import DetailInfoN from '@/lend/components/DetailInfoN'
import DetailInfoRate from '@/lend/components/DetailInfoRate'
-import type { DetailInfoCompProps, DetailInfoCompAdditionalProps } from '@/lend/components/PageLoanCreate/types'
+import type { DetailInfoCompProps, DetailInfoCompAdditionalProps } from '@/lend/components/PageLendMarket/types'
import useStore from '@/lend/store/useStore'
import { PageContentProps } from '@/lend/types/lend.types'
import { useUserProfileStore } from '@ui-kit/features/user-profile'
diff --git a/apps/main/src/lend/components/PageLoanManage/LoanRepay/components/DetailInfo.tsx b/apps/main/src/lend/components/PageLendMarket/LoanRepay/components/DetailInfo.tsx
similarity index 96%
rename from apps/main/src/lend/components/PageLoanManage/LoanRepay/components/DetailInfo.tsx
rename to apps/main/src/lend/components/PageLendMarket/LoanRepay/components/DetailInfo.tsx
index 47e39285a1..f31a57504c 100644
--- a/apps/main/src/lend/components/PageLoanManage/LoanRepay/components/DetailInfo.tsx
+++ b/apps/main/src/lend/components/PageLendMarket/LoanRepay/components/DetailInfo.tsx
@@ -6,9 +6,9 @@ import DetailInfoLiqRange from '@/lend/components/DetailInfoLiqRange'
import DetailInfoPriceImpact from '@/lend/components/DetailInfoPriceImpact'
import DetailInfoRate from '@/lend/components/DetailInfoRate'
import DetailInfoSlippageTolerance from '@/lend/components/DetailInfoSlippageTolerance'
-import type { DetailProps, FormDetailInfoLeverage } from '@/lend/components/PageLoanManage/LoanRepay/types'
-import { _parseValues } from '@/lend/components/PageLoanManage/LoanRepay/utils'
-import type { FormDetailInfo } from '@/lend/components/PageLoanManage/types'
+import type { DetailProps, FormDetailInfoLeverage } from '@/lend/components/PageLendMarket/LoanRepay/types'
+import { _parseValues } from '@/lend/components/PageLendMarket/LoanRepay/utils'
+import type { FormDetailInfo } from '@/lend/components/PageLendMarket/types'
import networks from '@/lend/networks'
import useStore from '@/lend/store/useStore'
import { PageContentProps } from '@/lend/types/lend.types'
diff --git a/apps/main/src/lend/components/PageLoanManage/LoanRepay/index.tsx b/apps/main/src/lend/components/PageLendMarket/LoanRepay/index.tsx
similarity index 91%
rename from apps/main/src/lend/components/PageLoanManage/LoanRepay/index.tsx
rename to apps/main/src/lend/components/PageLendMarket/LoanRepay/index.tsx
index 8c4c51015e..4f4a68d688 100644
--- a/apps/main/src/lend/components/PageLoanManage/LoanRepay/index.tsx
+++ b/apps/main/src/lend/components/PageLendMarket/LoanRepay/index.tsx
@@ -1,28 +1,25 @@
import { ReactNode, useCallback, useEffect, useMemo, useRef, useState } from 'react'
import AlertFormError from '@/lend/components/AlertFormError'
import AlertSummary from '@/lend/components/AlertLoanSummary'
-import AlertNoLoanFound from '@/lend/components/AlertNoLoanFound'
import DialogFormWarning from '@/lend/components/DialogFormWarning'
import InpToken from '@/lend/components/InpToken'
import LoanFormConnect from '@/lend/components/LoanFormConnect'
-import DetailInfo from '@/lend/components/PageLoanManage/LoanRepay/components/DetailInfo'
-import type { FormStatus, FormValues, StepKey } from '@/lend/components/PageLoanManage/LoanRepay/types'
-import { _parseValues, DEFAULT_FORM_VALUES } from '@/lend/components/PageLoanManage/LoanRepay/utils'
-import { StyledDetailInfoWrapper } from '@/lend/components/PageLoanManage/styles'
-import type { FormEstGas } from '@/lend/components/PageLoanManage/types'
-import { DEFAULT_CONFIRM_WARNING } from '@/lend/components/PageLoanManage/utils'
+import DetailInfo from '@/lend/components/PageLendMarket/LoanRepay/components/DetailInfo'
+import type { FormStatus, FormValues, StepKey } from '@/lend/components/PageLendMarket/LoanRepay/types'
+import { _parseValues, DEFAULT_FORM_VALUES } from '@/lend/components/PageLendMarket/LoanRepay/utils'
+import type { FormEstGas } from '@/lend/components/PageLendMarket/types'
+import { DEFAULT_CONFIRM_WARNING } from '@/lend/components/PageLendMarket/utils'
+import { StyledDetailInfoWrapper } from '@/lend/components/styles'
import { NOFITY_MESSAGE } from '@/lend/constants'
import { useUserLoanDetails } from '@/lend/hooks/useUserLoanDetails'
import { helpers } from '@/lend/lib/apiLending'
import networks from '@/lend/networks'
import useStore from '@/lend/store/useStore'
import { Api, FormError, type MarketUrlParams, OneWayMarketTemplate, PageContentProps } from '@/lend/types/lend.types'
-import { _showNoLoanFound } from '@/lend/utils/helpers'
import { getCollateralListPathname } from '@/lend/utils/utilsRouter'
import { DEFAULT_HEALTH_MODE } from '@/llamalend/constants'
import { RepayForm } from '@/llamalend/features/manage-loan/components/RepayForm'
import type { HealthMode } from '@/llamalend/llamalend.types'
-import { useLoanExists } from '@/llamalend/queries/loan-exists'
import Stack from '@mui/material/Stack'
import Typography from '@mui/material/Typography'
import AlertBox from '@ui/AlertBox'
@@ -80,12 +77,6 @@ const LoanRepay = ({
const { expectedBorrowed } = detailInfoLeverage ?? {}
const hasExpectedBorrowed = !!expectedBorrowed
- const { data: loanExists, isFetching: loanExistsLoading } = useLoanExists({
- chainId: rChainId,
- marketId: market?.id,
- userAddress: signerAddress,
- })
-
const updateFormValues = useCallback(
(
updatedFormValues: Partial,
@@ -376,7 +367,7 @@ const LoanRepay = ({
id="stateCollateral"
inpError={formValues.stateCollateralError}
inpDisabled={disable}
- inpLabelLoading={loanExistsLoading && !!signerAddress && typeof userState?.collateral === 'undefined'}
+ inpLabelLoading={!!signerAddress && typeof userState?.collateral === 'undefined'}
inpLabelDescription={formatNumber(userState?.collateral, { defaultValue: '-' })}
inpValue={formValues.stateCollateral}
tokenAddress={collateral_token?.address}
@@ -512,27 +503,23 @@ const LoanRepay = ({
{/* actions */}
- {_showNoLoanFound(signerAddress, formStatus.isComplete, loanExists) ? (
-
- ) : (
-
- {txInfoBar}
- {!!healthMode.message && {healthMode.message}}
- {formStatus.error === FormError.FullRepaymentRequired ? (
-
- {t`Only partial repayment from wallet's ${borrowed_token?.symbol} or full repayment from collateral or wallet's ${collateral_token?.symbol} is
+
+ {txInfoBar}
+ {!!healthMode.message && {healthMode.message}}
+ {formStatus.error === FormError.FullRepaymentRequired ? (
+
+ {t`Only partial repayment from wallet's ${borrowed_token?.symbol} or full repayment from collateral or wallet's ${collateral_token?.symbol} is
allowed during liquidation mode.`}
-
- ) : formStatus.error || formStatus.stepError ? (
- updateFormValues({})}
- />
- ) : null}
- {steps && }
-
- )}
+
+ ) : formStatus.error || formStatus.stepError ? (
+ updateFormValues({})}
+ />
+ ) : null}
+ {steps && }
+
)
}
diff --git a/apps/main/src/lend/components/PageLoanManage/LoanRepay/types.ts b/apps/main/src/lend/components/PageLendMarket/LoanRepay/types.ts
similarity index 81%
rename from apps/main/src/lend/components/PageLoanManage/LoanRepay/types.ts
rename to apps/main/src/lend/components/PageLendMarket/LoanRepay/types.ts
index f3da5c0bb5..713bfce186 100644
--- a/apps/main/src/lend/components/PageLoanManage/LoanRepay/types.ts
+++ b/apps/main/src/lend/components/PageLendMarket/LoanRepay/types.ts
@@ -1,7 +1,6 @@
import { Dispatch, SetStateAction } from 'react'
-import type { InpError } from '@/lend/components/PageLoanCreate/types'
-import type { FormDetailInfo, FormStatus as Fs } from '@/lend/components/PageLoanManage/types'
-import { ExpectedBorrowed, PageContentProps } from '@/lend/types/lend.types'
+import type { FormDetailInfo, InpError } from '@/lend/components/PageLendMarket/types'
+import { ExpectedBorrowed, type FormStatus as Fs, PageContentProps } from '@/lend/types/lend.types'
import type { HealthMode } from '@/llamalend/llamalend.types'
import type { Step } from '@ui/Stepper/types'
diff --git a/apps/main/src/lend/components/PageLoanManage/LoanRepay/utils.ts b/apps/main/src/lend/components/PageLendMarket/LoanRepay/utils.ts
similarity index 97%
rename from apps/main/src/lend/components/PageLoanManage/LoanRepay/utils.ts
rename to apps/main/src/lend/components/PageLendMarket/LoanRepay/utils.ts
index b728ac0d75..27acf22704 100644
--- a/apps/main/src/lend/components/PageLoanManage/LoanRepay/utils.ts
+++ b/apps/main/src/lend/components/PageLendMarket/LoanRepay/utils.ts
@@ -1,5 +1,5 @@
-import type { FormStatus, FormValues } from '@/lend/components/PageLoanManage/LoanRepay/types'
-import { DEFAULT_FORM_STATUS as FORM_STATUS } from '@/lend/components/PageLoanManage/utils'
+import type { FormStatus, FormValues } from '@/lend/components/PageLendMarket/LoanRepay/types'
+import { DEFAULT_FORM_STATUS as FORM_STATUS } from '@/lend/components/PageLendMarket/utils'
import { type OneWayMarketTemplate } from '@/lend/types/lend.types'
export const DEFAULT_FORM_STATUS: FormStatus = {
diff --git a/apps/main/src/lend/components/PageLoanManage/LoanSelfLiquidation/index.tsx b/apps/main/src/lend/components/PageLendMarket/LoanSelfLiquidation/index.tsx
similarity index 88%
rename from apps/main/src/lend/components/PageLoanManage/LoanSelfLiquidation/index.tsx
rename to apps/main/src/lend/components/PageLendMarket/LoanSelfLiquidation/index.tsx
index 15efbecd39..c76feb7caf 100644
--- a/apps/main/src/lend/components/PageLoanManage/LoanSelfLiquidation/index.tsx
+++ b/apps/main/src/lend/components/PageLendMarket/LoanSelfLiquidation/index.tsx
@@ -3,13 +3,12 @@ import { styled } from 'styled-components'
import AlertFormError from '@/lend/components/AlertFormError'
import AlertFormWarning from '@/lend/components/AlertFormWarning'
import AlertSummary from '@/lend/components/AlertLoanSummary'
-import AlertNoLoanFound from '@/lend/components/AlertNoLoanFound'
import DetailInfoEstimateGas from '@/lend/components/DetailInfoEstimateGas'
import DetailInfoRate from '@/lend/components/DetailInfoRate'
import DetailInfoSlippageTolerance from '@/lend/components/DetailInfoSlippageTolerance'
import LoanFormConnect from '@/lend/components/LoanFormConnect'
-import type { FormStatus, StepKey } from '@/lend/components/PageLoanManage/LoanSelfLiquidation/types'
-import type { FormEstGas } from '@/lend/components/PageLoanManage/types'
+import type { FormStatus, StepKey } from '@/lend/components/PageLendMarket/LoanSelfLiquidation/types'
+import type { FormEstGas } from '@/lend/components/PageLendMarket/types'
import { NOFITY_MESSAGE } from '@/lend/constants'
import { useUserLoanDetails } from '@/lend/hooks/useUserLoanDetails'
import { helpers } from '@/lend/lib/apiLending'
@@ -22,9 +21,7 @@ import {
PageContentProps,
UserLoanState,
} from '@/lend/types/lend.types'
-import { _showNoLoanFound } from '@/lend/utils/helpers'
import { getCollateralListPathname } from '@/lend/utils/utilsRouter'
-import { useLoanExists } from '@/llamalend/queries/loan-exists'
import AlertBox from '@ui/AlertBox'
import InputReadOnly from '@ui/InputReadOnly'
import InternalLink from '@ui/Link/InternalLink'
@@ -65,12 +62,6 @@ const LoanSelfLiquidation = ({
const { signerAddress } = api ?? {}
- const { data: loanExists } = useLoanExists({
- chainId: rChainId,
- marketId: market?.id,
- userAddress: signerAddress,
- })
-
const reset = useCallback(() => {
setTxInfoBar(null)
@@ -227,18 +218,14 @@ const LoanSelfLiquidation = ({
{/* actions */}
- {_showNoLoanFound(signerAddress, formStatus.isComplete, loanExists) ? (
-
- ) : (
-
- {txInfoBar}
- {!formStatus.loading && !!formStatus.warning && }
- {(formStatus.error || formStatus.stepError) && (
-
- )}
- {steps && }
-
- )}
+
+ {txInfoBar}
+ {!formStatus.loading && !!formStatus.warning && }
+ {(formStatus.error || formStatus.stepError) && (
+
+ )}
+ {steps && }
+
>
)
}
diff --git a/apps/main/src/lend/components/PageLoanManage/LoanSelfLiquidation/types.ts b/apps/main/src/lend/components/PageLendMarket/LoanSelfLiquidation/types.ts
similarity index 55%
rename from apps/main/src/lend/components/PageLoanManage/LoanSelfLiquidation/types.ts
rename to apps/main/src/lend/components/PageLendMarket/LoanSelfLiquidation/types.ts
index bbd963c6de..099688142e 100644
--- a/apps/main/src/lend/components/PageLoanManage/LoanSelfLiquidation/types.ts
+++ b/apps/main/src/lend/components/PageLendMarket/LoanSelfLiquidation/types.ts
@@ -1,5 +1,4 @@
-import type { FormStatus as Fs } from '@/lend/components/PageLoanManage/types'
-import { FormWarning } from '@/lend/types/lend.types'
+import { type FormStatus as Fs, FormWarning } from '@/lend/types/lend.types'
export type StepKey = 'APPROVAL' | 'SELF_LIQUIDATE' | ''
diff --git a/apps/main/src/lend/components/PageLoanManage/ManageLoanTabs.tsx b/apps/main/src/lend/components/PageLendMarket/ManageLoanTabs.tsx
similarity index 84%
rename from apps/main/src/lend/components/PageLoanManage/ManageLoanTabs.tsx
rename to apps/main/src/lend/components/PageLendMarket/ManageLoanTabs.tsx
index 51aee3eb16..ded57dcd9a 100644
--- a/apps/main/src/lend/components/PageLoanManage/ManageLoanTabs.tsx
+++ b/apps/main/src/lend/components/PageLendMarket/ManageLoanTabs.tsx
@@ -1,17 +1,18 @@
-import LoanBorrowMore, { LoanBorrowMoreWrapped } from '@/lend/components/PageLoanManage/LoanBorrowMore'
-import LoanCollateralAdd, { LoanAddCollateralTab } from '@/lend/components/PageLoanManage/LoanCollateralAdd'
-import LoanCollateralRemove, { LoanRemoveCollateralTab } from '@/lend/components/PageLoanManage/LoanCollateralRemove'
+import LoanBorrowMore, { LoanBorrowMoreWrapped } from '@/lend/components/PageLendMarket/LoanBorrowMore'
+import LoanCollateralAdd, { LoanAddCollateralTab } from '@/lend/components/PageLendMarket/LoanCollateralAdd'
+import LoanCollateralRemove, { LoanRemoveCollateralTab } from '@/lend/components/PageLendMarket/LoanCollateralRemove'
import LoanRepay, {
LoanRepayFromCollateralTab,
LoanRepayFromWalletTab,
-} from '@/lend/components/PageLoanManage/LoanRepay'
-import LoanSelfLiquidation from '@/lend/components/PageLoanManage/LoanSelfLiquidation'
+} from '@/lend/components/PageLendMarket/LoanRepay'
+import LoanSelfLiquidation from '@/lend/components/PageLendMarket/LoanSelfLiquidation'
import networks from '@/lend/networks'
import { type MarketUrlParams, PageContentProps } from '@/lend/types/lend.types'
import { useClosePositionTab } from '@/llamalend/features/manage-soft-liquidation/hooks/useClosePositionTab'
import { useImproveHealthTab } from '@/llamalend/features/manage-soft-liquidation/hooks/useImproveHealthTab'
import { ClosePosition } from '@/llamalend/features/manage-soft-liquidation/ui/tabs/ClosePosition'
import { ImproveHealth } from '@/llamalend/features/manage-soft-liquidation/ui/tabs/ImproveHealth'
+import type { BorrowPositionDetailsProps } from '@/llamalend/features/market-position-details'
import { useManageLoanMuiForm, useManageSoftLiquidation } from '@ui-kit/hooks/useFeatureFlags'
import { t } from '@ui-kit/lib/i18n'
import { type FormTab, FormTabs } from '@ui-kit/shared/ui/FormTabs/FormTabs'
@@ -29,7 +30,7 @@ const ClosePositionTab = ({ rChainId, rOwmId }: ManageLoanProps) => (
const LendManageLegacyMenu = [
{
value: 'loan',
- label: t`Borrow`,
+ label: t`Loan`,
subTabs: [
{ value: 'loan-increase', label: t`Borrow more`, component: LoanBorrowMore },
{ value: 'loan-decrease', label: t`Repay`, component: LoanRepay },
@@ -90,16 +91,18 @@ const LendManageSoftLiquidationMenu = [
] satisfies FormTab[]
export const ManageLoanTabs = ({
- isInSoftLiquidation,
+ position: {
+ liquidationAlert: { softLiquidation, hardLiquidation },
+ },
...pageProps
-}: ManageLoanProps & { isInSoftLiquidation: boolean | undefined }) => {
- const shouldUseSoftLiquidation = useManageSoftLiquidation() && isInSoftLiquidation
+}: ManageLoanProps & { position: BorrowPositionDetailsProps }) => {
+ const shouldUseSoftLiquidation = useManageSoftLiquidation() && (softLiquidation || hardLiquidation)
const shouldUseManageLoanMuiForm = useManageLoanMuiForm()
const menu = shouldUseSoftLiquidation
? LendManageSoftLiquidationMenu
: shouldUseManageLoanMuiForm
? LendManageNewMenu
: LendManageLegacyMenu
- const shouldWrap = menu === LendManageLegacyMenu
+ const shouldWrap = menu === LendManageLegacyMenu || menu === LendManageSoftLiquidationMenu // todo: LoanFormWrapper in soft liquidation
return
}
diff --git a/apps/main/src/lend/components/PageLoanCreate/types.ts b/apps/main/src/lend/components/PageLendMarket/types.ts
similarity index 86%
rename from apps/main/src/lend/components/PageLoanCreate/types.ts
rename to apps/main/src/lend/components/PageLendMarket/types.ts
index 4293951e40..2d52908381 100644
--- a/apps/main/src/lend/components/PageLoanCreate/types.ts
+++ b/apps/main/src/lend/components/PageLendMarket/types.ts
@@ -1,10 +1,11 @@
import { Dispatch, SetStateAction } from 'react'
-import type { FormStatus as Fs } from '@/lend/components/PageLoanManage/types'
import type { LiqRangeSliderIdx } from '@/lend/store/types'
import {
DetailInfoLeverageResp,
DetailInfoResp,
ExpectedCollateral,
+ type FormStatus as Fs,
+ FutureRates,
OneWayMarketTemplate,
} from '@/lend/types/lend.types'
import type { HealthMode } from '@/llamalend/llamalend.types'
@@ -60,3 +61,12 @@ export type DetailInfoLeverage = DetailInfoLeverageResp & {
loading: boolean
error: string
}
+export type FormDetailInfo = {
+ healthFull: string
+ healthNotFull: string
+ futureRates: FutureRates | null
+ bands: [number, number]
+ prices: string[]
+ loading: boolean
+ error: string
+}
diff --git a/apps/main/src/lend/components/PageLoanCreate/utils.ts b/apps/main/src/lend/components/PageLendMarket/utils.ts
similarity index 65%
rename from apps/main/src/lend/components/PageLoanCreate/utils.ts
rename to apps/main/src/lend/components/PageLendMarket/utils.ts
index 8f212ae0dc..361b4bc504 100644
--- a/apps/main/src/lend/components/PageLoanCreate/utils.ts
+++ b/apps/main/src/lend/components/PageLendMarket/utils.ts
@@ -1,10 +1,18 @@
-import type { FormStatus, FormValues } from '@/lend/components/PageLoanCreate/types'
-import { DEFAULT_FORM_STATUS as FORM_STATUS } from '@/lend/components/PageLoanManage/utils'
-import { type OneWayMarketTemplate } from '@/lend/types/lend.types'
+import type { FormEstGas, FormStatus as LendFormStatus, FormValues } from '@/lend/components/PageLendMarket/types'
+import { type FormStatus as DefaultFormStatus, type OneWayMarketTemplate } from '@/lend/types/lend.types'
import { _parseStepTokensList } from '@/lend/utils/helpers'
-export const DEFAULT_FORM_STATUS: FormStatus = {
- ...FORM_STATUS,
+export const DEFAULT_FORM_STATUS: DefaultFormStatus = {
+ isApproved: false,
+ isApprovedCompleted: false,
+ isComplete: false,
+ isInProgress: false,
+ error: '',
+ stepError: '',
+}
+
+export const DEFAULT_CREATE_FORM_STATUS: LendFormStatus = {
+ ...DEFAULT_FORM_STATUS,
warning: '',
step: '',
}
@@ -50,3 +58,13 @@ export function _parseValue({
getStepTokensStr: _getStepTokensStr,
}
}
+
+export const DEFAULT_FORM_EST_GAS: FormEstGas = {
+ estimatedGas: 0,
+ loading: false,
+}
+
+export const DEFAULT_CONFIRM_WARNING = {
+ isConfirming: false,
+ confirmedWarning: false,
+}
diff --git a/apps/main/src/lend/components/PageLoanCreate/Page.tsx b/apps/main/src/lend/components/PageLoanCreate/Page.tsx
deleted file mode 100644
index f8d8c8e775..0000000000
--- a/apps/main/src/lend/components/PageLoanCreate/Page.tsx
+++ /dev/null
@@ -1,148 +0,0 @@
-import { useEffect } from 'react'
-import type { Address } from 'viem'
-import CampaignRewardsBanner from '@/lend/components/CampaignRewardsBanner'
-import { MarketInformationComp } from '@/lend/components/MarketInformationComp'
-import { MarketInformationTabs } from '@/lend/components/MarketInformationTabs'
-import { LoanCreateTabs } from '@/lend/components/PageLoanCreate/LoanCreateTabs'
-import { useOneWayMarket } from '@/lend/entities/chain'
-import { useLendPageTitle } from '@/lend/hooks/useLendPageTitle'
-import { useMarketDetails } from '@/lend/hooks/useMarketDetails'
-import useTitleMapper from '@/lend/hooks/useTitleMapper'
-import { helpers } from '@/lend/lib/apiLending'
-import networks from '@/lend/networks'
-import useStore from '@/lend/store/useStore'
-import { type MarketUrlParams, PageContentProps } from '@/lend/types/lend.types'
-import { getCollateralListPathname, parseMarketParams } from '@/lend/utils/helpers'
-import { getVaultPathname } from '@/lend/utils/utilsRouter'
-import { MarketDetails } from '@/llamalend/features/market-details'
-import { NoPosition } from '@/llamalend/features/market-position-details'
-import { UserPositionHistory } from '@/llamalend/features/user-position-history'
-import { useUserCollateralEvents } from '@/llamalend/features/user-position-history/hooks/useUserCollateralEvents'
-import { DetailPageStack } from '@/llamalend/widgets/DetailPageStack'
-import { isChain } from '@curvefi/prices-api'
-import Stack from '@mui/material/Stack'
-import { AppPageFormsWrapper } from '@ui/AppPage'
-import Box from '@ui/Box'
-import { ConnectWalletPrompt, isLoading, useCurve, useWallet } from '@ui-kit/features/connect-wallet'
-import { useLayoutStore } from '@ui-kit/features/layout'
-import { useParams } from '@ui-kit/hooks/router'
-import { t } from '@ui-kit/lib/i18n'
-import { REFRESH_INTERVAL } from '@ui-kit/lib/model'
-import { ErrorPage } from '@ui-kit/pages/ErrorPage'
-import { SizesAndSpaces } from '@ui-kit/themes/design/1_sizes_spaces'
-
-const { Spacing } = SizesAndSpaces
-
-const Page = () => {
- const params = useParams()
- const { rMarket, rChainId } = parseMarketParams(params)
-
- const { data: market, isSuccess } = useOneWayMarket(rChainId, rMarket)
- const { llamaApi: api = null, connectState } = useCurve()
- const titleMapper = useTitleMapper()
- const { provider, connect } = useWallet()
-
- const isPageVisible = useLayoutStore((state) => state.isPageVisible)
- const fetchAllMarketDetails = useStore((state) => state.markets.fetchAll)
- const fetchUserMarketBalances = useStore((state) => state.user.fetchUserMarketBalances)
-
- const userActiveKey = helpers.getUserActiveKey(api, market!)
- const rOwmId = market?.id ?? ''
- const { signerAddress } = api ?? {}
-
- const marketDetails = useMarketDetails({
- chainId: rChainId,
- llamma: market,
- llammaId: rOwmId,
- })
- const network = networks[rChainId]
- const {
- data: userCollateralEvents,
- isLoading: collateralEventsIsLoading,
- isError: collateralEventsIsError,
- } = useUserCollateralEvents({
- app: 'lend',
- chain: isChain(network.id) ? network.id : undefined,
- controllerAddress: market?.addresses?.controller as Address,
- userAddress: signerAddress,
- collateralToken: market?.collateral_token,
- borrowToken: market?.borrowed_token,
- network,
- })
-
- useEffect(() => {
- // delay fetch rest after form details are fetched first
- const timer = setTimeout(async () => {
- if (!api || !market || !isPageVisible) return
- await fetchAllMarketDetails(api, market, true)
- if (api.signerAddress) {
- await fetchUserMarketBalances(api, market, true)
- }
- }, REFRESH_INTERVAL['3s'])
- return () => clearTimeout(timer)
- }, [api, fetchAllMarketDetails, fetchUserMarketBalances, isPageVisible, market])
-
- useLendPageTitle(market?.collateral_token?.symbol, 'Create')
-
- const pageProps: PageContentProps = {
- params,
- rChainId,
- rOwmId,
- api,
- market,
- titleMapper,
- userActiveKey,
- isLoaded: true,
- }
- const positionDetailsHrefs = {
- borrow: '',
- supply: getVaultPathname(params, rOwmId),
- }
-
- return isSuccess && !market ? (
-
- ) : provider ? (
- <>
-
-
- {rChainId && rOwmId && }
-
-
-
-
- t.design.Layer[1].Fill }}>
-
- {userCollateralEvents?.events && userCollateralEvents.events.length > 0 && (
-
- )}
-
-
-
-
-
-
-
-
- >
- ) : (
-
- connect()}
- isLoading={isLoading(connectState)}
- />
-
- )
-}
-
-export default Page
diff --git a/apps/main/src/lend/components/PageLoanManage/types.ts b/apps/main/src/lend/components/PageLoanManage/types.ts
deleted file mode 100644
index a1a7aef085..0000000000
--- a/apps/main/src/lend/components/PageLoanManage/types.ts
+++ /dev/null
@@ -1,27 +0,0 @@
-import { FutureRates } from '@/lend/types/lend.types'
-
-export type DetailInfoTypes = 'user' | 'market'
-
-export type FormStatus = {
- isApproved: boolean
- isApprovedCompleted: boolean
- isComplete: boolean
- isInProgress: boolean
- error: string
- stepError: string
-}
-
-export type FormEstGas = {
- estimatedGas: number
- loading?: boolean
-}
-
-export type FormDetailInfo = {
- healthFull: string
- healthNotFull: string
- futureRates: FutureRates | null
- bands: [number, number]
- prices: string[]
- loading: boolean
- error: string
-}
diff --git a/apps/main/src/lend/components/PageLoanManage/utils.ts b/apps/main/src/lend/components/PageLoanManage/utils.ts
deleted file mode 100644
index d86f786f30..0000000000
--- a/apps/main/src/lend/components/PageLoanManage/utils.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { FormEstGas, FormStatus } from '@/lend/components/PageLoanManage/types'
-
-export const DEFAULT_FORM_EST_GAS: FormEstGas = {
- estimatedGas: 0,
- loading: false,
-}
-
-export const DEFAULT_FORM_STATUS: FormStatus = {
- isApproved: false,
- isApprovedCompleted: false,
- isComplete: false,
- isInProgress: false,
- error: '',
- stepError: '',
-}
-
-export const DEFAULT_CONFIRM_WARNING = {
- isConfirming: false,
- confirmedWarning: false,
-}
diff --git a/apps/main/src/lend/components/PageVault/Page.tsx b/apps/main/src/lend/components/PageVault/Page.tsx
index af524ec02c..7b22c3a60b 100644
--- a/apps/main/src/lend/components/PageVault/Page.tsx
+++ b/apps/main/src/lend/components/PageVault/Page.tsx
@@ -11,12 +11,7 @@ import useTitleMapper from '@/lend/hooks/useTitleMapper'
import { helpers } from '@/lend/lib/apiLending'
import useStore from '@/lend/store/useStore'
import { type MarketUrlParams, PageContentProps } from '@/lend/types/lend.types'
-import {
- getCollateralListPathname,
- getLoanCreatePathname,
- getLoanManagePathname,
- parseMarketParams,
-} from '@/lend/utils/utilsRouter'
+import { getCollateralListPathname, getLoanPathname, parseMarketParams } from '@/lend/utils/utilsRouter'
import { MarketDetails } from '@/llamalend/features/market-details'
import { NoPosition, SupplyPositionDetails } from '@/llamalend/features/market-position-details'
import { useLoanExists } from '@/llamalend/queries/loan-exists'
@@ -65,8 +60,8 @@ const Page = () => {
})
const marketDetails = useMarketDetails({
chainId: rChainId,
- llamma: market,
- llammaId: rOwmId,
+ market: market,
+ marketId: rOwmId,
})
useEffect(() => {
@@ -93,7 +88,7 @@ const Page = () => {
market,
])
- useLendPageTitle(market?.collateral_token?.symbol, 'Supply')
+ useLendPageTitle(market?.collateral_token?.symbol, t`Supply`)
const pageProps: PageContentProps = {
params,
@@ -106,8 +101,7 @@ const Page = () => {
titleMapper,
}
- const borrowPathnameFn = loanExists ? getLoanManagePathname : getLoanCreatePathname
- const positionDetailsHrefs = { borrow: borrowPathnameFn(params, rOwmId), supply: '' }
+ const positionDetailsHrefs = { borrow: getLoanPathname(params, rOwmId), supply: '' }
const hasSupplyPosition = (supplyPositionDetails.shares.value ?? 0) > 0
return isSuccess && !market ? (
@@ -133,7 +127,7 @@ const Page = () => {
-
+
diff --git a/apps/main/src/lend/components/PageVault/VaultClaim/types.ts b/apps/main/src/lend/components/PageVault/VaultClaim/types.ts
index aa48862a2b..a6b63e02bd 100644
--- a/apps/main/src/lend/components/PageVault/VaultClaim/types.ts
+++ b/apps/main/src/lend/components/PageVault/VaultClaim/types.ts
@@ -1,4 +1,4 @@
-import type { FormStatus as Fs } from '@/lend/components/PageLoanManage/types'
+import type { FormStatus as Fs } from '@/lend/types/lend.types'
export type RewardType = 'crv' | 'rewards'
export type StepKey = 'CLAIM_CRV' | 'CLAIM_REWARDS' | ''
diff --git a/apps/main/src/lend/components/PageVault/VaultClaim/utils.ts b/apps/main/src/lend/components/PageVault/VaultClaim/utils.ts
index e5963ec3b4..e0ffae62c5 100644
--- a/apps/main/src/lend/components/PageVault/VaultClaim/utils.ts
+++ b/apps/main/src/lend/components/PageVault/VaultClaim/utils.ts
@@ -1,4 +1,4 @@
-import { DEFAULT_FORM_STATUS as FORM_STATUS } from '@/lend/components/PageLoanManage/utils'
+import { DEFAULT_FORM_STATUS as FORM_STATUS } from '@/lend/components/PageLendMarket/utils'
import type { FormStatus } from '@/lend/components/PageVault/VaultClaim/types'
export const DEFAULT_FORM_STATUS: FormStatus = {
diff --git a/apps/main/src/lend/components/PageVault/VaultDepositMint/index.tsx b/apps/main/src/lend/components/PageVault/VaultDepositMint/index.tsx
index 695a6f43b6..91e5a38942 100644
--- a/apps/main/src/lend/components/PageVault/VaultDepositMint/index.tsx
+++ b/apps/main/src/lend/components/PageVault/VaultDepositMint/index.tsx
@@ -4,8 +4,8 @@ import DetailInfoEstimateGas from '@/lend/components/DetailInfoEstimateGas'
import DetailInfoRate from '@/lend/components/DetailInfoRate'
import InpChipUsdRate from '@/lend/components/InpChipUsdRate'
import LoanFormConnect from '@/lend/components/LoanFormConnect'
-import { StyledDetailInfoWrapper, StyledInpChip } from '@/lend/components/PageLoanManage/styles'
import type { FormStatus, FormValues, StepKey } from '@/lend/components/PageVault/VaultDepositMint/types'
+import { StyledDetailInfoWrapper, StyledInpChip } from '@/lend/components/styles'
import useMarketAlert from '@/lend/hooks/useMarketAlert'
import { helpers } from '@/lend/lib/apiLending'
import networks from '@/lend/networks'
diff --git a/apps/main/src/lend/components/PageVault/VaultDepositMint/types.ts b/apps/main/src/lend/components/PageVault/VaultDepositMint/types.ts
index c99114f43a..50ad49a3c0 100644
--- a/apps/main/src/lend/components/PageVault/VaultDepositMint/types.ts
+++ b/apps/main/src/lend/components/PageVault/VaultDepositMint/types.ts
@@ -1,4 +1,4 @@
-import type { FormStatus as Fs } from '@/lend/components/PageLoanManage/types'
+import type { FormStatus as Fs } from '@/lend/types/lend.types'
export type FormValues = {
amount: string
diff --git a/apps/main/src/lend/components/PageVault/VaultDepositMint/utils.ts b/apps/main/src/lend/components/PageVault/VaultDepositMint/utils.ts
index 0c3eb0140e..ab7f21432a 100644
--- a/apps/main/src/lend/components/PageVault/VaultDepositMint/utils.ts
+++ b/apps/main/src/lend/components/PageVault/VaultDepositMint/utils.ts
@@ -1,4 +1,4 @@
-import { DEFAULT_FORM_STATUS as FORM_STATUS } from '@/lend/components/PageLoanManage/utils'
+import { DEFAULT_FORM_STATUS as FORM_STATUS } from '@/lend/components/PageLendMarket/utils'
import type { FormStatus, FormValues } from '@/lend/components/PageVault/VaultDepositMint/types'
export const DEFAULT_FORM_STATUS: FormStatus = {
diff --git a/apps/main/src/lend/components/PageVault/VaultStake/index.tsx b/apps/main/src/lend/components/PageVault/VaultStake/index.tsx
index c88b03bf1c..8cf3ec390f 100644
--- a/apps/main/src/lend/components/PageVault/VaultStake/index.tsx
+++ b/apps/main/src/lend/components/PageVault/VaultStake/index.tsx
@@ -4,8 +4,8 @@ import DetailInfoCrvIncentives from '@/lend/components/DetailInfoCrvIncentives'
import DetailInfoEstimateGas from '@/lend/components/DetailInfoEstimateGas'
import InpChipVaultSharesUsdRate from '@/lend/components/InpChipVaultShareUsdRate'
import LoanFormConnect from '@/lend/components/LoanFormConnect'
-import { StyledDetailInfoWrapper, StyledInpChip } from '@/lend/components/PageLoanManage/styles'
import type { FormStatus, FormValues, StepKey } from '@/lend/components/PageVault/VaultStake/types'
+import { StyledDetailInfoWrapper, StyledInpChip } from '@/lend/components/styles'
import { helpers } from '@/lend/lib/apiLending'
import networks from '@/lend/networks'
import useStore from '@/lend/store/useStore'
diff --git a/apps/main/src/lend/components/PageVault/VaultStake/types.ts b/apps/main/src/lend/components/PageVault/VaultStake/types.ts
index 5ceab8701f..64a09891ca 100644
--- a/apps/main/src/lend/components/PageVault/VaultStake/types.ts
+++ b/apps/main/src/lend/components/PageVault/VaultStake/types.ts
@@ -1,4 +1,4 @@
-import type { FormStatus as Fs } from '@/lend/components/PageLoanManage/types'
+import type { FormStatus as Fs } from '@/lend/types/lend.types'
export type FormValues = {
amount: string
diff --git a/apps/main/src/lend/components/PageVault/VaultStake/utils.ts b/apps/main/src/lend/components/PageVault/VaultStake/utils.ts
index 77f5dbce8b..df2618b7ea 100644
--- a/apps/main/src/lend/components/PageVault/VaultStake/utils.ts
+++ b/apps/main/src/lend/components/PageVault/VaultStake/utils.ts
@@ -1,4 +1,4 @@
-import { DEFAULT_FORM_STATUS as FORM_STATUS } from '@/lend/components/PageLoanManage/utils'
+import { DEFAULT_FORM_STATUS as FORM_STATUS } from '@/lend/components/PageLendMarket/utils'
import type { FormStatus, FormValues } from '@/lend/components/PageVault/VaultStake/types'
export const DEFAULT_FORM_STATUS: FormStatus = {
diff --git a/apps/main/src/lend/components/PageVault/VaultUnstake/index.tsx b/apps/main/src/lend/components/PageVault/VaultUnstake/index.tsx
index 4949ab340f..be55fed906 100644
--- a/apps/main/src/lend/components/PageVault/VaultUnstake/index.tsx
+++ b/apps/main/src/lend/components/PageVault/VaultUnstake/index.tsx
@@ -3,8 +3,8 @@ import AlertFormError from '@/lend/components/AlertFormError'
import DetailInfoEstimateGas from '@/lend/components/DetailInfoEstimateGas'
import InpChipVaultSharesUsdRate from '@/lend/components/InpChipVaultShareUsdRate'
import LoanFormConnect from '@/lend/components/LoanFormConnect'
-import { StyledDetailInfoWrapper, StyledInpChip } from '@/lend/components/PageLoanManage/styles'
import type { FormStatus, FormValues, StepKey } from '@/lend/components/PageVault/VaultUnstake/types'
+import { StyledDetailInfoWrapper, StyledInpChip } from '@/lend/components/styles'
import { helpers } from '@/lend/lib/apiLending'
import networks from '@/lend/networks'
import useStore from '@/lend/store/useStore'
diff --git a/apps/main/src/lend/components/PageVault/VaultUnstake/types.ts b/apps/main/src/lend/components/PageVault/VaultUnstake/types.ts
index 350e2bce2f..291329bce2 100644
--- a/apps/main/src/lend/components/PageVault/VaultUnstake/types.ts
+++ b/apps/main/src/lend/components/PageVault/VaultUnstake/types.ts
@@ -1,4 +1,4 @@
-import type { FormStatus as Fs } from '@/lend/components/PageLoanManage/types'
+import type { FormStatus as Fs } from '@/lend/types/lend.types'
export type FormValues = {
amount: string
diff --git a/apps/main/src/lend/components/PageVault/VaultUnstake/utils.ts b/apps/main/src/lend/components/PageVault/VaultUnstake/utils.ts
index 63a9e7d4ab..23351595d0 100644
--- a/apps/main/src/lend/components/PageVault/VaultUnstake/utils.ts
+++ b/apps/main/src/lend/components/PageVault/VaultUnstake/utils.ts
@@ -1,4 +1,4 @@
-import { DEFAULT_FORM_STATUS as FORM_STATUS } from '@/lend/components/PageLoanManage/utils'
+import { DEFAULT_FORM_STATUS as FORM_STATUS } from '@/lend/components/PageLendMarket/utils'
import type { FormStatus, FormValues } from '@/lend/components/PageVault/VaultUnstake/types'
export const DEFAULT_FORM_STATUS: FormStatus = {
diff --git a/apps/main/src/lend/components/PageVault/VaultWithdrawRedeem/index.tsx b/apps/main/src/lend/components/PageVault/VaultWithdrawRedeem/index.tsx
index e4a2d01044..746696be34 100644
--- a/apps/main/src/lend/components/PageVault/VaultWithdrawRedeem/index.tsx
+++ b/apps/main/src/lend/components/PageVault/VaultWithdrawRedeem/index.tsx
@@ -3,8 +3,8 @@ import AlertFormError from '@/lend/components/AlertFormError'
import DetailInfoEstimateGas from '@/lend/components/DetailInfoEstimateGas'
import DetailInfoRate from '@/lend/components/DetailInfoRate'
import LoanFormConnect from '@/lend/components/LoanFormConnect'
-import { StyledDetailInfoWrapper, StyledInpChip } from '@/lend/components/PageLoanManage/styles'
import type { FormStatus, FormValues, StepKey } from '@/lend/components/PageVault/VaultWithdrawRedeem/types'
+import { StyledDetailInfoWrapper, StyledInpChip } from '@/lend/components/styles'
import { helpers } from '@/lend/lib/apiLending'
import networks from '@/lend/networks'
import { _getMaxActiveKey } from '@/lend/store/createVaultDepositMintSlice'
diff --git a/apps/main/src/lend/components/PageVault/VaultWithdrawRedeem/types.ts b/apps/main/src/lend/components/PageVault/VaultWithdrawRedeem/types.ts
index 25cb886eb4..0dfa015fc3 100644
--- a/apps/main/src/lend/components/PageVault/VaultWithdrawRedeem/types.ts
+++ b/apps/main/src/lend/components/PageVault/VaultWithdrawRedeem/types.ts
@@ -1,4 +1,4 @@
-import type { FormStatus as Fs } from '@/lend/components/PageLoanManage/types'
+import type { FormStatus as Fs } from '@/lend/types/lend.types'
export type FormValues = {
amount: string
diff --git a/apps/main/src/lend/components/PageLoanManage/styles.ts b/apps/main/src/lend/components/styles.ts
similarity index 100%
rename from apps/main/src/lend/components/PageLoanManage/styles.ts
rename to apps/main/src/lend/components/styles.ts
diff --git a/apps/main/src/lend/constants.ts b/apps/main/src/lend/constants.ts
index 06c99b8b98..71068b19ba 100644
--- a/apps/main/src/lend/constants.ts
+++ b/apps/main/src/lend/constants.ts
@@ -1,8 +1,7 @@
import { LEND_ROUTES } from '@ui-kit/shared/routes'
export const MARKET_ROUTES = {
- PAGE_CREATE: '/create',
- PAGE_MANAGE: '/manage',
+ PAGE_LOAN: '',
PAGE_VAULT: '/vault',
} as const
diff --git a/apps/main/src/lend/hooks/useLendPageTitle.ts b/apps/main/src/lend/hooks/useLendPageTitle.ts
index a4d43e60a3..c6de390c27 100644
--- a/apps/main/src/lend/hooks/useLendPageTitle.ts
+++ b/apps/main/src/lend/hooks/useLendPageTitle.ts
@@ -1,14 +1,13 @@
import { useEffect } from 'react'
+import { notFalsy } from '@curvefi/prices-api/objects.util'
/**
* Custom hook to set the document title for markets pages
* @param collateralSymbol - The symbol of the collateral token
- * @param prefix - The prefix part of the title (e.g., "Create - ...")
+ * @param prefix - The prefix part of the title (e.g., "Supply - ...")
*/
-export function useLendPageTitle(collateralSymbol: string | undefined, prefix: string) {
+export function useLendPageTitle(collateralSymbol: string | undefined, prefix?: string) {
useEffect(() => {
- if (collateralSymbol) {
- document.title = `${prefix} - ${collateralSymbol} - Curve Llamalend`
- }
+ document.title = notFalsy(prefix, collateralSymbol, `Curve Llamalend`).join(' - ')
}, [collateralSymbol, prefix])
}
diff --git a/apps/main/src/lend/hooks/useMarketDetails.tsx b/apps/main/src/lend/hooks/useMarketDetails.tsx
index fe2cc1ddc4..876906055b 100644
--- a/apps/main/src/lend/hooks/useMarketDetails.tsx
+++ b/apps/main/src/lend/hooks/useMarketDetails.tsx
@@ -16,8 +16,8 @@ const { sum } = lodash
type UseMarketDetailsProps = {
chainId: ChainId
- llamma: OneWayMarketTemplate | null | undefined
- llammaId: string
+ market: OneWayMarketTemplate | null | undefined
+ marketId: string
}
const averageMultiplier = 30
@@ -25,18 +25,18 @@ const averageMultiplierString = `${averageMultiplier}D`
export const useMarketDetails = ({
chainId,
- llamma,
- llammaId,
+ market,
+ marketId,
}: UseMarketDetailsProps): Omit => {
const blockchainId = networks[chainId]?.id as Chain
- const { collateral_token, borrowed_token } = llamma ?? {}
- const { controller, vault } = llamma?.addresses ?? {}
- const marketRate = useStore((state) => state.markets.ratesMapper[chainId]?.[llammaId])
+ const { collateral_token, borrowed_token } = market ?? {}
+ const { controller, vault } = market?.addresses ?? {}
+ const marketRate = useStore((state) => state.markets.ratesMapper[chainId]?.[marketId])
const {
data: { rates, collateralAmount, borrowedAmount, cap, available, maxLeverage, crvRates, rewardsApr },
isLoading: isMarketDetailsLoading,
- } = useLendMarketDetails({ chainId, marketId: llammaId })
+ } = useLendMarketDetails({ chainId, marketId })
const { data: lendingSnapshots, isLoading: isSnapshotsLoading } = useLendingSnapshots({
blockchainId,
contractAddress: controller as Address,
@@ -126,7 +126,7 @@ export const useMarketDetails = ({
total: collateralAmount ?? null,
totalUsdValue: collateralAmount && collateralUsdRate ? collateralAmount * collateralUsdRate : null,
usdRate: collateralUsdRate ?? null,
- loading: !llamma || isMarketDetailsLoading.marketCollateralAmounts || collateralUsdRateLoading,
+ loading: !market || isMarketDetailsLoading.marketCollateralAmounts || collateralUsdRateLoading,
},
borrowToken: {
symbol: borrowed_token?.symbol ?? null,
@@ -134,7 +134,7 @@ export const useMarketDetails = ({
total: borrowedAmount ?? null,
totalUsdValue: borrowedAmount && borrowedUsdRate ? borrowedAmount * borrowedUsdRate : null,
usdRate: borrowedUsdRate ?? null,
- loading: !llamma || isMarketDetailsLoading.marketCollateralAmounts || borrowedUsdRateLoading,
+ loading: !market || isMarketDetailsLoading.marketCollateralAmounts || borrowedUsdRateLoading,
},
borrowAPY: {
rate: borrowApy != null ? Number(borrowApy) : null,
@@ -145,7 +145,7 @@ export const useMarketDetails = ({
totalBorrowRate: borrowApy == null ? null : Number(borrowApy) - (collateralRebasingYield ?? 0),
totalAverageBorrowRate,
extraRewards: campaigns,
- loading: !llamma || isSnapshotsLoading || isMarketDetailsLoading.marketOnChainRates,
+ loading: !market || isSnapshotsLoading || isMarketDetailsLoading.marketOnChainRates,
},
supplyAPY: {
rate: supplyApy != null ? Number(supplyApy) : null,
@@ -171,17 +171,17 @@ export const useMarketDetails = ({
}))
: [],
extraRewards: campaigns,
- loading: !llamma || isSnapshotsLoading || isMarketDetailsLoading.marketOnChainRates,
+ loading: !market || isSnapshotsLoading || isMarketDetailsLoading.marketOnChainRates,
},
availableLiquidity: {
value: available ?? null,
max: cap ?? null,
- loading: !llamma || isMarketDetailsLoading.marketCapAndAvailable,
+ loading: !market || isMarketDetailsLoading.marketCapAndAvailable,
},
maxLeverage: maxLeverage
? {
value: Number(maxLeverage),
- loading: !llamma || isMarketDetailsLoading.marketMaxLeverage,
+ loading: !market || isMarketDetailsLoading.marketMaxLeverage,
}
: undefined,
}
diff --git a/apps/main/src/lend/store/createLoanBorrowMoreSlice.ts b/apps/main/src/lend/store/createLoanBorrowMoreSlice.ts
index 6bbcecac08..b0ad5dcc79 100644
--- a/apps/main/src/lend/store/createLoanBorrowMoreSlice.ts
+++ b/apps/main/src/lend/store/createLoanBorrowMoreSlice.ts
@@ -4,14 +4,14 @@ import type {
FormDetailInfoLeverage,
FormStatus,
FormValues,
-} from '@/lend/components/PageLoanManage/LoanBorrowMore/types'
+} from '@/lend/components/PageLendMarket/LoanBorrowMore/types'
import {
_parseValues,
DEFAULT_FORM_STATUS,
DEFAULT_FORM_VALUES,
-} from '@/lend/components/PageLoanManage/LoanBorrowMore/utils'
-import type { FormDetailInfo, FormEstGas } from '@/lend/components/PageLoanManage/types'
-import { DEFAULT_FORM_EST_GAS } from '@/lend/components/PageLoanManage/utils'
+} from '@/lend/components/PageLendMarket/LoanBorrowMore/utils'
+import type { FormDetailInfo, FormEstGas } from '@/lend/components/PageLendMarket/types'
+import { DEFAULT_FORM_EST_GAS } from '@/lend/components/PageLendMarket/utils'
import { invalidateMarketDetails } from '@/lend/entities/market-details'
import { invalidateAllUserBorrowDetails } from '@/lend/entities/user-loan-details'
import apiLending, { helpers } from '@/lend/lib/apiLending'
diff --git a/apps/main/src/lend/store/createLoanCollateralAddSlice.ts b/apps/main/src/lend/store/createLoanCollateralAddSlice.ts
index ab83e9aeaf..0c1fcdbef8 100644
--- a/apps/main/src/lend/store/createLoanCollateralAddSlice.ts
+++ b/apps/main/src/lend/store/createLoanCollateralAddSlice.ts
@@ -1,8 +1,8 @@
import lodash from 'lodash'
import { StoreApi } from 'zustand'
-import type { FormStatus, FormValues } from '@/lend/components/PageLoanManage/LoanCollateralAdd/types'
-import type { FormDetailInfo, FormEstGas } from '@/lend/components/PageLoanManage/types'
-import { DEFAULT_FORM_EST_GAS, DEFAULT_FORM_STATUS as FORM_STATUS } from '@/lend/components/PageLoanManage/utils'
+import type { FormStatus, FormValues } from '@/lend/components/PageLendMarket/LoanCollateralAdd/types'
+import type { FormDetailInfo, FormEstGas } from '@/lend/components/PageLendMarket/types'
+import { DEFAULT_FORM_EST_GAS, DEFAULT_FORM_STATUS as FORM_STATUS } from '@/lend/components/PageLendMarket/utils'
import { invalidateMarketDetails } from '@/lend/entities/market-details'
import { invalidateAllUserBorrowDetails } from '@/lend/entities/user-loan-details'
import apiLending, { helpers } from '@/lend/lib/apiLending'
diff --git a/apps/main/src/lend/store/createLoanCollateralRemoveSlice.ts b/apps/main/src/lend/store/createLoanCollateralRemoveSlice.ts
index 906c13f276..928ac49b78 100644
--- a/apps/main/src/lend/store/createLoanCollateralRemoveSlice.ts
+++ b/apps/main/src/lend/store/createLoanCollateralRemoveSlice.ts
@@ -1,8 +1,8 @@
import lodash from 'lodash'
import { StoreApi } from 'zustand'
-import type { FormStatus, FormValues } from '@/lend/components/PageLoanManage/LoanCollateralRemove/types'
-import type { FormDetailInfo, FormEstGas } from '@/lend/components/PageLoanManage/types'
-import { DEFAULT_FORM_EST_GAS, DEFAULT_FORM_STATUS as FORM_STATUS } from '@/lend/components/PageLoanManage/utils'
+import type { FormStatus, FormValues } from '@/lend/components/PageLendMarket/LoanCollateralRemove/types'
+import type { FormDetailInfo, FormEstGas } from '@/lend/components/PageLendMarket/types'
+import { DEFAULT_FORM_EST_GAS, DEFAULT_FORM_STATUS as FORM_STATUS } from '@/lend/components/PageLendMarket/utils'
import { invalidateMarketDetails } from '@/lend/entities/market-details'
import { invalidateAllUserBorrowDetails } from '@/lend/entities/user-loan-details'
import apiLending, { helpers } from '@/lend/lib/apiLending'
diff --git a/apps/main/src/lend/store/createLoanCreateSlice.ts b/apps/main/src/lend/store/createLoanCreateSlice.ts
index b6ead6dd6b..d6c34588ae 100644
--- a/apps/main/src/lend/store/createLoanCreateSlice.ts
+++ b/apps/main/src/lend/store/createLoanCreateSlice.ts
@@ -6,9 +6,13 @@ import type {
FormEstGas,
FormStatus,
FormValues,
-} from '@/lend/components/PageLoanCreate/types'
-import { _parseValue, DEFAULT_FORM_STATUS, DEFAULT_FORM_VALUES } from '@/lend/components/PageLoanCreate/utils'
-import { DEFAULT_FORM_EST_GAS } from '@/lend/components/PageLoanManage/utils'
+} from '@/lend/components/PageLendMarket/types'
+import {
+ _parseValue,
+ DEFAULT_FORM_EST_GAS,
+ DEFAULT_CREATE_FORM_STATUS,
+ DEFAULT_FORM_VALUES,
+} from '@/lend/components/PageLendMarket/utils'
import { invalidateMarketDetails } from '@/lend/entities/market-details'
import { invalidateAllUserBorrowDetails } from '@/lend/entities/user-loan-details'
import apiLending, { helpers } from '@/lend/lib/apiLending'
@@ -73,7 +77,7 @@ const DEFAULT_STATE: SliceState = {
detailInfo: {},
detailInfoLeverage: {},
formEstGas: {},
- formStatus: DEFAULT_FORM_STATUS,
+ formStatus: DEFAULT_CREATE_FORM_STATUS,
formValues: DEFAULT_FORM_VALUES,
liqRanges: {},
liqRangesMapper: {},
@@ -224,7 +228,7 @@ const createLoanCreate = (set: StoreApi['setState'], get: StoreApi
debtError: '',
}
const cFormStatus: FormStatus = {
- ...DEFAULT_FORM_STATUS,
+ ...DEFAULT_CREATE_FORM_STATUS,
isApproved: formStatus.isApproved,
isApprovedCompleted: formStatus.isApprovedCompleted,
}
@@ -267,7 +271,7 @@ const createLoanCreate = (set: StoreApi['setState'], get: StoreApi
if (!provider) return setMissingProvider(get()[sliceKey])
// update formStatus
- sliceState.setStateByKey('formStatus', { ...DEFAULT_FORM_STATUS, isInProgress: true, step: 'APPROVAL' })
+ sliceState.setStateByKey('formStatus', { ...DEFAULT_CREATE_FORM_STATUS, isInProgress: true, step: 'APPROVAL' })
// api calls
const { userCollateral, userBorrowed } = formValues
@@ -283,7 +287,7 @@ const createLoanCreate = (set: StoreApi['setState'], get: StoreApi
if (resp.activeKey === get()[sliceKey].activeKey) {
// update formStatus
sliceState.setStateByKey('formStatus', {
- ...DEFAULT_FORM_STATUS,
+ ...DEFAULT_CREATE_FORM_STATUS,
isApproved: !error,
isApprovedCompleted: !error,
stepError: error,
@@ -304,7 +308,7 @@ const createLoanCreate = (set: StoreApi['setState'], get: StoreApi
// update formStatus
sliceState.setStateByKey('formStatus', {
- ...DEFAULT_FORM_STATUS,
+ ...DEFAULT_CREATE_FORM_STATUS,
isApproved: true,
isApprovedCompleted: formStatus.isApprovedCompleted,
isInProgress: true,
@@ -354,7 +358,7 @@ const createLoanCreate = (set: StoreApi['setState'], get: StoreApi
// update formStatus
sliceState.setStateByKeys({
...DEFAULT_STATE,
- formStatus: { ...DEFAULT_FORM_STATUS, isApproved: true, isComplete: true },
+ formStatus: { ...DEFAULT_CREATE_FORM_STATUS, isApproved: true, isComplete: true },
})
}
invalidateMarketDetails({ chainId: api.chainId, marketId: market.id })
diff --git a/apps/main/src/lend/store/createLoanRepaySlice.ts b/apps/main/src/lend/store/createLoanRepaySlice.ts
index 25598979b1..00651cc13f 100644
--- a/apps/main/src/lend/store/createLoanRepaySlice.ts
+++ b/apps/main/src/lend/store/createLoanRepaySlice.ts
@@ -1,13 +1,13 @@
import lodash from 'lodash'
import type { StoreApi } from 'zustand'
-import type { FormDetailInfoLeverage, FormStatus, FormValues } from '@/lend/components/PageLoanManage/LoanRepay/types'
+import type { FormDetailInfoLeverage, FormStatus, FormValues } from '@/lend/components/PageLendMarket/LoanRepay/types'
import {
_parseValues,
DEFAULT_FORM_STATUS,
DEFAULT_FORM_VALUES,
-} from '@/lend/components/PageLoanManage/LoanRepay/utils'
-import type { FormDetailInfo, FormEstGas } from '@/lend/components/PageLoanManage/types'
-import { DEFAULT_FORM_EST_GAS } from '@/lend/components/PageLoanManage/utils'
+} from '@/lend/components/PageLendMarket/LoanRepay/utils'
+import type { FormDetailInfo, FormEstGas } from '@/lend/components/PageLendMarket/types'
+import { DEFAULT_FORM_EST_GAS } from '@/lend/components/PageLendMarket/utils'
import { invalidateMarketDetails } from '@/lend/entities/market-details'
import { invalidateAllUserBorrowDetails } from '@/lend/entities/user-loan-details'
import apiLending, { helpers } from '@/lend/lib/apiLending'
diff --git a/apps/main/src/lend/store/createLoanSelfLiquidationSlice.ts b/apps/main/src/lend/store/createLoanSelfLiquidationSlice.ts
index 5f6396986e..a731bd1cd9 100644
--- a/apps/main/src/lend/store/createLoanSelfLiquidationSlice.ts
+++ b/apps/main/src/lend/store/createLoanSelfLiquidationSlice.ts
@@ -1,8 +1,8 @@
import lodash from 'lodash'
import type { StoreApi } from 'zustand'
-import type { FormStatus } from '@/lend/components/PageLoanManage/LoanSelfLiquidation/types'
-import type { FormEstGas } from '@/lend/components/PageLoanManage/types'
-import { DEFAULT_FORM_EST_GAS, DEFAULT_FORM_STATUS as FORM_STATUS } from '@/lend/components/PageLoanManage/utils'
+import type { FormStatus } from '@/lend/components/PageLendMarket/LoanSelfLiquidation/types'
+import type { FormEstGas } from '@/lend/components/PageLendMarket/types'
+import { DEFAULT_FORM_EST_GAS, DEFAULT_FORM_STATUS as FORM_STATUS } from '@/lend/components/PageLendMarket/utils'
import { invalidateMarketDetails } from '@/lend/entities/market-details'
import { invalidateAllUserBorrowDetails } from '@/lend/entities/user-loan-details'
import apiLending from '@/lend/lib/apiLending'
diff --git a/apps/main/src/lend/store/createVaultClaimSlice.ts b/apps/main/src/lend/store/createVaultClaimSlice.ts
index f8c1082384..5ab8220a06 100644
--- a/apps/main/src/lend/store/createVaultClaimSlice.ts
+++ b/apps/main/src/lend/store/createVaultClaimSlice.ts
@@ -1,6 +1,6 @@
import lodash from 'lodash'
import type { StoreApi } from 'zustand'
-import type { FormEstGas } from '@/lend/components/PageLoanManage/types'
+import type { FormEstGas } from '@/lend/components/PageLendMarket/types'
import type { FormStatus, RewardType } from '@/lend/components/PageVault/VaultClaim/types'
import { DEFAULT_FORM_STATUS } from '@/lend/components/PageVault/VaultClaim/utils'
import apiLending from '@/lend/lib/apiLending'
diff --git a/apps/main/src/lend/store/createVaultDepositMintSlice.ts b/apps/main/src/lend/store/createVaultDepositMintSlice.ts
index 1929371c29..f3c90ce1fd 100644
--- a/apps/main/src/lend/store/createVaultDepositMintSlice.ts
+++ b/apps/main/src/lend/store/createVaultDepositMintSlice.ts
@@ -1,7 +1,7 @@
import lodash from 'lodash'
import type { StoreApi } from 'zustand'
-import type { FormEstGas } from '@/lend/components/PageLoanManage/types'
-import { DEFAULT_FORM_EST_GAS, DEFAULT_FORM_STATUS as FORM_STATUS } from '@/lend/components/PageLoanManage/utils'
+import type { FormEstGas } from '@/lend/components/PageLendMarket/types'
+import { DEFAULT_FORM_EST_GAS, DEFAULT_FORM_STATUS as FORM_STATUS } from '@/lend/components/PageLendMarket/utils'
import type { FormStatus, FormValues } from '@/lend/components/PageVault/VaultDepositMint/types'
import { DEFAULT_FORM_STATUS, DEFAULT_FORM_VALUES } from '@/lend/components/PageVault/VaultDepositMint/utils'
import { invalidateMarketDetails } from '@/lend/entities/market-details'
diff --git a/apps/main/src/lend/store/createVaultStakeSlice.ts b/apps/main/src/lend/store/createVaultStakeSlice.ts
index c9af5b09c3..07fcd2660c 100644
--- a/apps/main/src/lend/store/createVaultStakeSlice.ts
+++ b/apps/main/src/lend/store/createVaultStakeSlice.ts
@@ -1,7 +1,7 @@
import lodash from 'lodash'
import type { StoreApi } from 'zustand'
-import type { FormEstGas } from '@/lend/components/PageLoanManage/types'
-import { DEFAULT_FORM_EST_GAS, DEFAULT_FORM_STATUS as FORM_STATUS } from '@/lend/components/PageLoanManage/utils'
+import type { FormEstGas } from '@/lend/components/PageLendMarket/types'
+import { DEFAULT_FORM_EST_GAS, DEFAULT_FORM_STATUS as FORM_STATUS } from '@/lend/components/PageLendMarket/utils'
import type { FormStatus, FormValues } from '@/lend/components/PageVault/VaultStake/types'
import { DEFAULT_FORM_STATUS, DEFAULT_FORM_VALUES } from '@/lend/components/PageVault/VaultStake/utils'
import { invalidateMarketDetails } from '@/lend/entities/market-details'
diff --git a/apps/main/src/lend/store/createVaultUnstakeSlice.ts b/apps/main/src/lend/store/createVaultUnstakeSlice.ts
index 7d3cd6116e..077027aaee 100644
--- a/apps/main/src/lend/store/createVaultUnstakeSlice.ts
+++ b/apps/main/src/lend/store/createVaultUnstakeSlice.ts
@@ -1,7 +1,7 @@
import lodash from 'lodash'
import type { StoreApi } from 'zustand'
-import type { FormEstGas } from '@/lend/components/PageLoanManage/types'
-import { DEFAULT_FORM_EST_GAS } from '@/lend/components/PageLoanManage/utils'
+import type { FormEstGas } from '@/lend/components/PageLendMarket/types'
+import { DEFAULT_FORM_EST_GAS } from '@/lend/components/PageLendMarket/utils'
import type { FormStatus, FormValues } from '@/lend/components/PageVault/VaultUnstake/types'
import { DEFAULT_FORM_STATUS, DEFAULT_FORM_VALUES } from '@/lend/components/PageVault/VaultUnstake/utils'
import { invalidateMarketDetails } from '@/lend/entities/market-details'
diff --git a/apps/main/src/lend/store/createVaultWithdrawRedeemSlice.ts b/apps/main/src/lend/store/createVaultWithdrawRedeemSlice.ts
index 432e068006..c126108801 100644
--- a/apps/main/src/lend/store/createVaultWithdrawRedeemSlice.ts
+++ b/apps/main/src/lend/store/createVaultWithdrawRedeemSlice.ts
@@ -1,7 +1,7 @@
import lodash from 'lodash'
import type { StoreApi } from 'zustand'
-import type { FormEstGas } from '@/lend/components/PageLoanManage/types'
-import { DEFAULT_FORM_EST_GAS } from '@/lend/components/PageLoanManage/utils'
+import type { FormEstGas } from '@/lend/components/PageLendMarket/types'
+import { DEFAULT_FORM_EST_GAS } from '@/lend/components/PageLendMarket/utils'
import type { FormStatus, FormValues } from '@/lend/components/PageVault/VaultWithdrawRedeem/types'
import { DEFAULT_FORM_STATUS, DEFAULT_FORM_VALUES } from '@/lend/components/PageVault/VaultWithdrawRedeem/utils'
import { invalidateAllUserBorrowDetails } from '@/lend/entities/user-loan-details'
diff --git a/apps/main/src/lend/types/lend.types.ts b/apps/main/src/lend/types/lend.types.ts
index 9f3639f2af..30350ce79f 100644
--- a/apps/main/src/lend/types/lend.types.ts
+++ b/apps/main/src/lend/types/lend.types.ts
@@ -240,3 +240,12 @@ export enum FormError {
LiquidationMode = 'error-liquidation-mode',
TotalSupply = 'error-total-supply',
}
+
+export type FormStatus = {
+ isApproved: boolean
+ isApprovedCompleted: boolean
+ isComplete: boolean
+ isInProgress: boolean
+ error: string
+ stepError: string
+}
diff --git a/apps/main/src/lend/utils/helpers.ts b/apps/main/src/lend/utils/helpers.ts
index 141a72dd62..49c210636d 100644
--- a/apps/main/src/lend/utils/helpers.ts
+++ b/apps/main/src/lend/utils/helpers.ts
@@ -53,7 +53,3 @@ export function _parseActiveKey(api: Api | null, market: OneWayMarketTemplate |
const parsedSignerAddress = signerAddress.slice(0, 10)
return `${chainId}-${parsedSignerAddress}${market?.id}`
}
-
-export function _showNoLoanFound(signerAddress: string | undefined, isComplete: boolean, loanExists?: boolean) {
- if (!!signerAddress && !isComplete && typeof loanExists !== 'undefined' && !loanExists) return true
-}
diff --git a/apps/main/src/lend/utils/utilsRouter.ts b/apps/main/src/lend/utils/utilsRouter.ts
index ac2bbde7c8..dbdc3143f8 100644
--- a/apps/main/src/lend/utils/utilsRouter.ts
+++ b/apps/main/src/lend/utils/utilsRouter.ts
@@ -12,11 +12,8 @@ export const getCollateralListPathname = ({ network }: NetworkUrlParams) =>
const getMarketPathname = ({ network }: UrlParams, marketId: string, page: LendMarketRoute) =>
`${getInternalUrl('lend', network, ROUTE.PAGE_MARKETS)}/${marketId}${page}`
-export const getLoanCreatePathname = (params: UrlParams, marketId: string) =>
- getMarketPathname(params, marketId, ROUTE.PAGE_CREATE)
-
-export const getLoanManagePathname = (params: UrlParams, marketId: string) =>
- getMarketPathname(params, marketId, ROUTE.PAGE_MANAGE)
+export const getLoanPathname = (params: UrlParams, marketId: string) =>
+ getMarketPathname(params, marketId, ROUTE.PAGE_LOAN)
export const getVaultPathname = (params: UrlParams, marketId: string) =>
getMarketPathname(params, marketId, ROUTE.PAGE_VAULT)
diff --git a/apps/main/src/routes/lend.routes.tsx b/apps/main/src/routes/lend.routes.tsx
index 6b0a942f70..99d1faad16 100644
--- a/apps/main/src/routes/lend.routes.tsx
+++ b/apps/main/src/routes/lend.routes.tsx
@@ -1,13 +1,13 @@
import '@/global-extensions'
import PageIntegrations from '@/lend/components/PageIntegrations/Page'
-import PageLoanCreate from '@/lend/components/PageLoanCreate/Page'
-import PageLoanManage from '@/lend/components/PageLoanManage/Page'
+import { LendMarketPage } from '@/lend/components/PageLendMarket/LendMarketPage'
import PageVault from '@/lend/components/PageVault/Page'
+import { LendLayout } from '@/lend/LendLayout'
+import type { MarketUrlParams } from '@/lend/types/lend.types'
import Skeleton from '@mui/material/Skeleton'
import { createRoute } from '@tanstack/react-router'
import { SizesAndSpaces } from '@ui-kit/themes/design/1_sizes_spaces'
import { LegalPage } from '@ui-kit/widgets/Legal'
-import { LendLayout } from '../lend/LendLayout'
import { rootRoute } from './root.routes'
import { redirectTo } from './util'
@@ -63,33 +63,22 @@ export const lendRoutes = lendLayoutRoute.addChildren([
}),
createRoute({
path: '$network/markets/$market',
- loader: ({ params: { network, market } }) => redirectTo(`/lend/${network}/markets/${market}/manage`),
- ...layoutProps,
- }),
- createRoute({
- path: '$network/markets/$market/create/$formType',
- loader: ({ params: { network, market } }) => redirectTo(`/lend/${network}/markets/${market}/create`),
- ...layoutProps,
- }),
- createRoute({
- path: '$network/markets/$market/create',
- component: PageLoanCreate,
+ component: LendMarketPage,
head: ({ params }) => ({
- meta: [{ title: `Create - ${params.market} - Curve Llamalend` }],
+ meta: [{ title: `${params.market} - Curve Llamalend` }],
}),
...layoutProps,
}),
createRoute({
- path: '$network/markets/$market/manage/$formType',
- loader: ({ params: { network, market } }) => redirectTo(`/lend/${network}/markets/${market}/manage`),
+ path: '$network/markets/$market/create/{-$formType}',
+ loader: ({ params: { network, market } }: { params: MarketUrlParams }) =>
+ redirectTo(`/lend/${network}/markets/${market}`),
...layoutProps,
}),
createRoute({
- path: '$network/markets/$market/manage',
- component: PageLoanManage,
- head: ({ params }) => ({
- meta: [{ title: `Manage - ${params.market} - Curve Llamalend` }],
- }),
+ path: '$network/markets/$market/manage/{-$formType}',
+ loader: ({ params: { network, market } }: { params: MarketUrlParams }) =>
+ redirectTo(`/lend/${network}/markets/${market}`),
...layoutProps,
}),
createRoute({
diff --git a/tests/cypress/e2e/llamalend/llamalend-markets.cy.ts b/tests/cypress/e2e/llamalend/llamalend-markets.cy.ts
index c6c30936c2..8d0014c691 100644
--- a/tests/cypress/e2e/llamalend/llamalend-markets.cy.ts
+++ b/tests/cypress/e2e/llamalend/llamalend-markets.cy.ts
@@ -273,7 +273,7 @@ describe(`LlamaLend Markets`, () => {
it(`should navigate to market details`, () => {
const [type, urlRegex] = oneOf(
['mint', /\/crvusd\/\w+\/markets\/[\w-]+\/?$/],
- ['lend', /\/lend\/\w+\/markets\/.+\/create/],
+ ['lend', /\/lend\/\w+\/markets\/.+\/?$/],
)
withFilterChips(() => {
cy.get(`[data-testid="chip-${type}"]`).click()
diff --git a/tests/cypress/support/routes.ts b/tests/cypress/support/routes.ts
index 79d8167c02..878e95812c 100644
--- a/tests/cypress/support/routes.ts
+++ b/tests/cypress/support/routes.ts
@@ -1,3 +1,4 @@
+import { MARKET_ROUTES } from '@/lend/constants'
import { recordValues } from '@curvefi/prices-api/objects.util'
import { oneAddress, oneOf } from '@cy/support/generators'
import { type AppPath, oneAppPath } from '@cy/support/ui'
@@ -22,8 +23,10 @@ export const oneAppRoute = () =>
lend: () =>
`lend/ethereum${oneOf(
...recordValues(LEND_ROUTES).map((r) =>
- // use market detail page, the list page redirects to the llamalend app
- r == LEND_ROUTES.PAGE_MARKETS ? `${LEND_ROUTES.PAGE_MARKETS}/${SDOLA_LEND_POOL}/create` : r,
+ r == LEND_ROUTES.PAGE_MARKETS
+ ? // use market detail page, the list page redirects to the llamalend app
+ `${LEND_ROUTES.PAGE_MARKETS}/${SDOLA_LEND_POOL}${oneOf(...recordValues(MARKET_ROUTES))}`
+ : r,
),
)}`,
crvusd: () =>