Skip to content

Commit

Permalink
Merge branch 'main' into refactor/handler-types
Browse files Browse the repository at this point in the history
  • Loading branch information
agualis committed Jan 10, 2024
2 parents 651d8b3 + e0b2f82 commit ead1bab
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 13 deletions.
2 changes: 2 additions & 0 deletions app/(app)/pools/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ interface Props {
poolTypes?: string
networks?: string
textSearch?: string
userAddress?: string
}
}

Expand All @@ -39,6 +40,7 @@ export default async function Pools({ searchParams }: Props) {
where: {
poolTypeIn: mappedPoolTypes,
chainIn: networks.length > 0 ? networks : PROJECT_CONFIG.supportedNetworks,
userAddress: poolListQueryStateParsers.userAddress.parseServerSide(searchParams.userAddress),
},
textSearch: poolListQueryStateParsers.textSearch.parseServerSide(searchParams.textSearch),
}
Expand Down
17 changes: 12 additions & 5 deletions lib/modules/pool/PoolList/PoolListFilters.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,8 @@ const FilterButton = forwardRef<ButtonProps, 'button'>((props, ref) => {
})

export function PoolListFilters() {
const { isConnected } = useUserAccount()

return (
<VStack align="flex-start" w="full">
<HStack w="full">
Expand All @@ -139,11 +141,16 @@ export function PoolListFilters() {
<PopoverCloseButton />
<PopoverBody p="md">
<VStack align="start">
<Heading as="h3" size="sm" mb="1.5">
My Liquidity
</Heading>
<UserPoolFilter />
<Divider />
{isConnected && (
<>
<Heading as="h3" size="sm" mb="1.5">
My Liquidity
</Heading>
<UserPoolFilter />
<Divider />
</>
)}

<Heading as="h3" size="sm" mb="1.5">
Pool types
</Heading>
Expand Down
15 changes: 13 additions & 2 deletions lib/modules/pool/PoolList/usePoolList.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
'use client'

import { createContext, ReactNode } from 'react'
import { createContext, ReactNode, useEffect } from 'react'
import {
GetPoolsDocument,
GetPoolsQuery,
Expand All @@ -10,9 +10,12 @@ import { useQuery } from '@apollo/experimental-nextjs-app-support/ssr'
import { usePoolListQueryState } from './usePoolListQueryState'
import { useMandatoryContext } from '@/lib/shared/utils/contexts'
import { useSeedApolloCache } from '@/lib/shared/hooks/useSeedApolloCache'
import { useUserAccount } from '../../web3/useUserAccount'
import { isAddress } from 'viem'

export function _usePoolList() {
const { queryVariables } = usePoolListQueryState()
const { queryVariables, toggleUserAddress } = usePoolListQueryState()
const { userAddress } = useUserAccount()

const { data, loading, previousData, refetch, networkStatus, error } = useQuery(
GetPoolsDocument,
Expand All @@ -21,6 +24,14 @@ export function _usePoolList() {

const pools = loading && previousData ? previousData.pools : data?.pools || []

// If the user has previously selected to filter by their liquidity and then
// changes their connected wallet, we want to automatically update the filter.
useEffect(() => {
if (isAddress(userAddress) && isAddress(queryVariables.where.userAddress || '')) {
toggleUserAddress(true, userAddress)
}
}, [userAddress])

return {
pools,
count: data?.count || previousData?.count,
Expand Down
10 changes: 4 additions & 6 deletions lib/modules/pool/PoolList/usePoolOrderByState.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,15 @@ import { GqlPoolOrderBy } from '@/lib/shared/services/api/generated/graphql'
import { useState, useEffect } from 'react'
import { usePoolListQueryState } from './usePoolListQueryState'

const defaultOrderBy = [GqlPoolOrderBy.TotalLiquidity, GqlPoolOrderBy.Volume24h, GqlPoolOrderBy.Apr]

export function usePoolOrderByState() {
const { sorting, setSorting, userAddress } = usePoolListQueryState()
const [orderBy, setOrderBy] = useState([
GqlPoolOrderBy.TotalLiquidity,
GqlPoolOrderBy.Volume24h,
GqlPoolOrderBy.Apr,
])
const [orderBy, setOrderBy] = useState(defaultOrderBy)

useEffect(() => {
if (userAddress) {
setOrderBy([GqlPoolOrderBy.UserbalanceUsd, ...orderBy])
setOrderBy([GqlPoolOrderBy.UserbalanceUsd, ...defaultOrderBy])
setSorting([{ id: GqlPoolOrderBy.UserbalanceUsd, desc: true }])
} else {
setOrderBy(orderBy.filter(item => item !== GqlPoolOrderBy.UserbalanceUsd))
Expand Down

0 comments on commit ead1bab

Please sign in to comment.