-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
15 changed files
with
387 additions
and
66 deletions.
There are no files selected for viewing
1 change: 0 additions & 1 deletion
1
apps/frontend-v3/app/(app)/pools/[chain]/[variant]/[id]/stake/page.tsx
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
44 changes: 44 additions & 0 deletions
44
apps/frontend-v3/app/(app)/pools/[chain]/[variant]/[id]/swap/[[...txHash]]/page.tsx
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
'use client' | ||
|
||
import { PoolActionsLayout } from '@repo/lib/modules/pool/actions/PoolActionsLayout' | ||
import { getPoolTokens } from '@repo/lib/modules/pool/pool.helpers' | ||
import { usePoolRedirect } from '@repo/lib/modules/pool/pool.hooks' | ||
import { chainToSlugMap } from '@repo/lib/modules/pool/pool.utils' | ||
import { usePool } from '@repo/lib/modules/pool/PoolProvider' | ||
import { SwapForm } from '@repo/lib/modules/swap/SwapForm' | ||
import SwapLayout from '@repo/lib/modules/swap/SwapLayout' | ||
import { PathParams } from '@repo/lib/modules/swap/SwapProvider' | ||
import { useTokens } from '@repo/lib/modules/tokens/TokensProvider' | ||
import { Hash } from 'viem' | ||
|
||
type Props = { | ||
params: { txHash?: string[] } | ||
} | ||
// Page for swapping from a pool page | ||
export default function PoolSwapPage({ params: { txHash } }: Props) { | ||
const { getToken } = useTokens() | ||
const { pool, isLoading } = usePool() | ||
const { redirectToPoolPage } = usePoolRedirect(pool) | ||
|
||
const poolTokens = getPoolTokens(pool, getToken) | ||
|
||
const maybeTxHash = (txHash?.[0] as Hash) || undefined | ||
|
||
const pathParams: PathParams = { | ||
chain: chainToSlugMap[pool.chain], | ||
tokenIn: poolTokens[0].address, | ||
tokenOut: poolTokens[1].address, | ||
poolTokens, | ||
urlTxHash: maybeTxHash, | ||
} | ||
|
||
return ( | ||
<PoolActionsLayout> | ||
{isLoading ? null : ( | ||
<SwapLayout pathParams={pathParams}> | ||
<SwapForm redirectToPoolPage={redirectToPoolPage} /> | ||
</SwapLayout> | ||
)} | ||
</PoolActionsLayout> | ||
) | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,44 +1,20 @@ | ||
'use client' | ||
|
||
import { ChainSlug, slugToChainMap } from '@repo/lib/modules/pool/pool.utils' | ||
import { SwapProvider } from '@repo/lib/modules/swap/SwapProvider' | ||
import { TokenBalancesProvider } from '@repo/lib/modules/tokens/TokenBalancesProvider' | ||
import { TokenInputsValidationProvider } from '@repo/lib/modules/tokens/TokenInputsValidationProvider' | ||
import { useTokens } from '@repo/lib/modules/tokens/TokensProvider' | ||
import { TransactionStateProvider } from '@repo/lib/modules/transactions/transaction-steps/TransactionStateProvider' | ||
import { GqlChain } from '@repo/lib/shared/services/api/generated/graphql' | ||
import { PropsWithChildren } from 'react' | ||
import { PriceImpactProvider } from '@repo/lib/modules/price-impact/PriceImpactProvider' | ||
import { DefaultPageContainer } from '@repo/lib/shared/components/containers/DefaultPageContainer' | ||
import { getSwapPathParams } from '@repo/lib/modules/swap/getSwapPathParams' | ||
import { RelayerSignatureProvider } from '@repo/lib/modules/relayer/RelayerSignatureProvider' | ||
import SwapLayout from '../../../../../../packages/lib/modules/swap/SwapLayout' | ||
import { DefaultPageContainer } from '@repo/lib/shared/components/containers/DefaultPageContainer' | ||
|
||
type Props = PropsWithChildren<{ | ||
params: { slug?: string[] } | ||
}> | ||
|
||
export default function SwapLayout({ params: { slug }, children }: Props) { | ||
export default function Layout({ params: { slug }, children }: Props) { | ||
const pathParams = getSwapPathParams(slug) | ||
|
||
const { getTokensByChain } = useTokens() | ||
const initChain = pathParams.chain | ||
? slugToChainMap[pathParams.chain as ChainSlug] | ||
: GqlChain.Mainnet | ||
const initTokens = getTokensByChain(initChain) | ||
|
||
return ( | ||
<DefaultPageContainer minH="100vh"> | ||
<TransactionStateProvider> | ||
<RelayerSignatureProvider> | ||
<TokenInputsValidationProvider> | ||
<TokenBalancesProvider initTokens={initTokens}> | ||
<PriceImpactProvider> | ||
<SwapProvider pathParams={{ ...pathParams }}>{children}</SwapProvider> | ||
</PriceImpactProvider> | ||
</TokenBalancesProvider> | ||
</TokenInputsValidationProvider> | ||
</RelayerSignatureProvider> | ||
</TransactionStateProvider> | ||
<SwapLayout pathParams={pathParams}> {children} </SwapLayout> | ||
</DefaultPageContainer> | ||
) | ||
} |
70 changes: 70 additions & 0 deletions
70
packages/lib/modules/pool/PoolDetail/PoolHeader/PoolAdvancedOptions.tsx
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,70 @@ | ||
'use client' | ||
|
||
import { | ||
Box, | ||
Button, | ||
HStack, | ||
Link, | ||
Popover, | ||
PopoverArrow, | ||
PopoverBody, | ||
PopoverCloseButton, | ||
PopoverContent, | ||
PopoverTrigger, | ||
VStack, | ||
} from '@chakra-ui/react' | ||
import { SwapIcon } from '@repo/lib/shared/components/icons/SwapIcon' | ||
import { staggeredFadeInUp } from '@repo/lib/shared/utils/animations' | ||
import { AnimatePresence, motion } from 'framer-motion' | ||
import NextLink from 'next/link' | ||
import { usePathname } from 'next/navigation' | ||
import { useState } from 'react' | ||
import { MoreVertical } from 'react-feather' | ||
|
||
export function PoolAdvancedOptions() { | ||
const [isPopoverOpen, setIsPopoverOpen] = useState(false) | ||
const pathname = usePathname() | ||
|
||
return ( | ||
<Popover | ||
isOpen={isPopoverOpen} | ||
onOpen={() => setIsPopoverOpen(true)} | ||
onClose={() => setIsPopoverOpen(false)} | ||
placement="bottom-end" | ||
> | ||
<PopoverTrigger> | ||
<Button variant="tertiary" size="lg" color="grayText"> | ||
{<MoreVertical size={16} />} | ||
</Button> | ||
</PopoverTrigger > | ||
<Box zIndex="popover" shadow="2xl" width="max"> | ||
<PopoverContent> | ||
<PopoverArrow bg="background.level3" /> | ||
<PopoverCloseButton top="sm" /> | ||
<PopoverBody p="lg"> | ||
<AnimatePresence> | ||
{isPopoverOpen && ( | ||
<VStack | ||
align="start" | ||
spacing="xxs" | ||
as={motion.div} | ||
initial="hidden" | ||
animate="show" | ||
exit="exit" | ||
variants={staggeredFadeInUp} | ||
> | ||
<HStack> | ||
<SwapIcon size={24} /> | ||
<Link as={NextLink} href={`${pathname}/swap`} prefetch={true} variant="nav"> | ||
Swap tokens directly via this pool | ||
</Link> | ||
</HStack> | ||
</VStack> | ||
)} | ||
</AnimatePresence> | ||
</PopoverBody> | ||
</PopoverContent> | ||
</Box> | ||
</Popover> | ||
) | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
import { VStack, Card, HStack, Text } from '@chakra-ui/react' | ||
import { BalAlert } from '@repo/lib/shared/components/alerts/BalAlert' | ||
import { BalAlertContent } from '@repo/lib/shared/components/alerts/BalAlertContent' | ||
import { NetworkIcon } from '@repo/lib/shared/components/icons/NetworkIcon' | ||
import { usePool } from '../pool/PoolProvider' | ||
|
||
export function PoolSwapCard() { | ||
const { pool } = usePool() | ||
return ( | ||
<VStack> | ||
<BalAlert | ||
status="warning" | ||
content={ | ||
<BalAlertContent | ||
title="Direct single pool swap (expert option)" | ||
description="This swap routes through a single pool only. Better rates are usually available through the standard swap UI." | ||
forceColumnMode | ||
/> | ||
} | ||
/> | ||
<Card h="full"> | ||
<HStack> | ||
<NetworkIcon chain={pool.chain} size={6} /> | ||
<Text>{pool.name} (swap route)</Text> | ||
</HStack> | ||
</Card> | ||
</VStack> | ||
) | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
'use client' | ||
|
||
import { ChainSlug, slugToChainMap } from '@repo/lib/modules/pool/pool.utils' | ||
import { PriceImpactProvider } from '@repo/lib/modules/price-impact/PriceImpactProvider' | ||
import { RelayerSignatureProvider } from '@repo/lib/modules/relayer/RelayerSignatureProvider' | ||
import { PathParams, SwapProvider } from '@repo/lib/modules/swap/SwapProvider' | ||
import { TokenBalancesProvider } from '@repo/lib/modules/tokens/TokenBalancesProvider' | ||
import { TokenInputsValidationProvider } from '@repo/lib/modules/tokens/TokenInputsValidationProvider' | ||
import { useTokens } from '@repo/lib/modules/tokens/TokensProvider' | ||
import { TransactionStateProvider } from '@repo/lib/modules/transactions/transaction-steps/TransactionStateProvider' | ||
import { GqlChain } from '@repo/lib/shared/services/api/generated/graphql' | ||
import { PropsWithChildren } from 'react' | ||
|
||
type Props = PropsWithChildren<{ | ||
pathParams: PathParams | ||
}> | ||
|
||
// Layout shared by standard swap page (/swap) and pool swap page (/poolid/swap) | ||
export default function SwapLayout({ pathParams, children }: Props) { | ||
const { getTokensByChain } = useTokens() | ||
const initChain = pathParams.chain | ||
? slugToChainMap[pathParams.chain as ChainSlug] | ||
: GqlChain.Mainnet | ||
const initTokens = pathParams.poolTokens || getTokensByChain(initChain) | ||
|
||
return ( | ||
<TransactionStateProvider> | ||
<RelayerSignatureProvider> | ||
<TokenInputsValidationProvider> | ||
<TokenBalancesProvider initTokens={initTokens}> | ||
<PriceImpactProvider> | ||
<SwapProvider pathParams={{ ...pathParams }}>{children}</SwapProvider> | ||
</PriceImpactProvider> | ||
</TokenBalancesProvider> | ||
</TokenInputsValidationProvider> | ||
</RelayerSignatureProvider> | ||
</TransactionStateProvider> | ||
) | ||
} |
Oops, something went wrong.