Skip to content

Commit

Permalink
refactor: extract useGetOrdersToCheckPendingPermit
Browse files Browse the repository at this point in the history
  • Loading branch information
alfetopito committed Oct 10, 2023
1 parent 3263718 commit a432bf6
Showing 1 changed file with 25 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { useAtomValue, useSetAtom } from 'jotai'
import { useCallback, useEffect, useMemo } from 'react'

import { GP_VAULT_RELAYER } from '@cowprotocol/common-const'
import { SupportedChainId } from '@cowprotocol/cow-sdk'
import { useIsSafeViaWc, useWalletDetails, useWalletInfo } from '@cowprotocol/wallet'

import { useLocation, useNavigate } from 'react-router-dom'
Expand All @@ -18,7 +19,7 @@ import { useSelectReceiptOrder } from 'modules/ordersTable/containers/OrdersRece
import { OrderActions } from 'modules/ordersTable/pure/OrdersTableContainer/types'
import { buildOrdersTableUrl, parseOrdersTableUrl } from 'modules/ordersTable/utils/buildOrdersTableUrl'
import { PendingPermitUpdater, useGetOrdersPermitStatus } from 'modules/permit'
import { useBalancesAndAllowances } from 'modules/tokens'
import { BalancesAndAllowances, useBalancesAndAllowances } from 'modules/tokens'

import { useCancelOrder } from 'common/hooks/useCancelOrder'
import { useCategorizeRecentActivity } from 'common/hooks/useCategorizeRecentActivity'
Expand Down Expand Up @@ -57,6 +58,28 @@ const ContentWrapper = styled.div`
width: 100%;
`

function useGetOrdersToCheckPendingPermit(
ordersList: OrdersTableList,
chainId: SupportedChainId,
balancesAndAllowances: BalancesAndAllowances
) {
return useMemo(() => {
// Pick only the pending orders
return ordersList.pending.reduce((acc: ParsedOrder[], item) => {
// Only do it for regular orders (not TWAP)
if (isParsedOrder(item)) {
const { hasEnoughAllowance } = getOrderParams(chainId, balancesAndAllowances, item)

// Only if the order has not enough allowance
if (hasEnoughAllowance === false) {
acc.push(item)
}
}
return acc
}, [])
}, [balancesAndAllowances, chainId, ordersList.pending])
}

export interface OrdersTableWidgetProps {
displayOrdersOnlyForSafeApp: boolean
orders: Order[]
Expand Down Expand Up @@ -156,19 +179,7 @@ export function OrdersTableWidget({

useValidatePageUrlParams(orders.length, currentTabId, currentPageNumber)

const ordersToCheckPendingPermit = useMemo(() => {
// TODO: hook for this, or filter it inside the updater?
return ordersList.pending.reduce((acc: ParsedOrder[], item) => {
if (isParsedOrder(item)) {
const { hasEnoughAllowance } = getOrderParams(chainId, balancesAndAllowances, item)

if (hasEnoughAllowance === false) {
acc.push(item)
}
}
return acc
}, [])
}, [balancesAndAllowances, chainId, ordersList.pending])
const ordersToCheckPendingPermit = useGetOrdersToCheckPendingPermit(ordersList, chainId, balancesAndAllowances)

return (
<>
Expand Down

0 comments on commit a432bf6

Please sign in to comment.