Skip to content

Commit 939c372

Browse files
authored
Merge pull request #5159 from cowprotocol/release/2024-12-05
Release 2024-12-05
2 parents 54800f9 + d186042 commit 939c372

File tree

8 files changed

+35
-29
lines changed

8 files changed

+35
-29
lines changed

apps/cowswap-frontend/src/api/cowProtocol/hooks.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ import { useSWROrdersRequest } from 'modules/orders/hooks/useSWROrdersRequest'
88

99
import { getOrders } from './api'
1010

11+
const emptyOrders: EnrichedOrder[] = []
12+
1113
export function useOrdersFromOrderBook(): EnrichedOrder[] {
1214
const { chainId } = useWalletInfo()
1315

@@ -17,8 +19,8 @@ export function useOrdersFromOrderBook(): EnrichedOrder[] {
1719
const { data: currentEnvOrders } = useSWR(
1820
requestParams && chainId ? ['orders', requestParams, chainId] : null,
1921
([, params, _chainId]) => getOrders(params, { chainId: _chainId }),
20-
{ refreshInterval: ORDER_BOOK_API_UPDATE_INTERVAL }
22+
{ refreshInterval: ORDER_BOOK_API_UPDATE_INTERVAL, fallbackData: emptyOrders },
2123
)
2224

23-
return currentEnvOrders || []
25+
return currentEnvOrders
2426
}

apps/cowswap-frontend/src/modules/limitOrders/containers/TradeRateDetails/index.tsx

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import React, { useState, useCallback } from 'react'
22

3-
import { useInjectedWidgetParams } from 'modules/injectedWidget'
43
import { TradeTotalCostsDetails, PartnerFeeRow } from 'modules/trade'
54
import { useUsdAmount } from 'modules/usdAmount'
65
import { useVolumeFee, useVolumeFeeTooltip } from 'modules/volumeFee'
@@ -15,7 +14,6 @@ interface TradeRateDetailsProps {
1514

1615
export function TradeRateDetails({ rateInfoParams }: TradeRateDetailsProps) {
1716
const [isFeeDetailsOpen, setFeeDetailsOpen] = useState(false)
18-
const widgetParams = useInjectedWidgetParams()
1917
const volumeFee = useVolumeFee()
2018
const partnerFeeAmount = useLimitOrderPartnerFeeAmount()
2119
const volumeFeeTooltip = useVolumeFeeTooltip()
@@ -33,7 +31,6 @@ export function TradeRateDetails({ rateInfoParams }: TradeRateDetailsProps) {
3331
partnerFeeUsd={partnerFeeUsd}
3432
partnerFeeAmount={partnerFeeAmount}
3533
partnerFeeBps={partnerFeeBps}
36-
widgetContent={widgetParams.content}
3734
volumeFeeTooltip={volumeFeeTooltip}
3835
/>
3936
)

apps/cowswap-frontend/src/modules/trade/containers/TradeBasicConfirmDetails/index.tsx

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import { Percent, Price } from '@uniswap/sdk-core'
66

77
import { Nullish } from 'types'
88

9-
import { useInjectedWidgetParams } from 'modules/injectedWidget'
109
import { useUsdAmount } from 'modules/usdAmount'
1110
import { useVolumeFeeTooltip } from 'modules/volumeFee'
1211

@@ -64,7 +63,6 @@ export function TradeBasicConfirmDetails(props: Props) {
6463
account,
6564
} = props
6665
const isInvertedState = useState(false)
67-
const widgetParams = useInjectedWidgetParams()
6866
const volumeFeeTooltip = useVolumeFeeTooltip()
6967
const { amountAfterFees, amountAfterSlippage } = getOrderTypeReceiveAmounts(receiveAmountInfo)
7068
const { networkCostsSuffix, networkCostsTooltipSuffix } = labelsAndTooltips || {}
@@ -106,7 +104,6 @@ export function TradeBasicConfirmDetails(props: Props) {
106104

107105
<TradeFeesAndCosts
108106
receiveAmountInfo={receiveAmountInfo}
109-
widgetParams={widgetParams}
110107
withTimelineDot={withTimelineDot}
111108
alwaysRow={alwaysRow}
112109
networkCostsSuffix={networkCostsSuffix}

apps/cowswap-frontend/src/modules/trade/containers/TradeFeesAndCosts/index.tsx

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
import { ReactNode } from 'react'
22

3-
import { CowSwapWidgetAppParams } from '@cowprotocol/widget-lib'
4-
53
import { useUsdAmount } from 'modules/usdAmount'
4+
import { VolumeFeeTooltip } from 'modules/volumeFee'
65

76
import { NetworkCostsRow } from '../../pure/NetworkCostsRow'
87
import { PartnerFeeRow } from '../../pure/PartnerFeeRow'
@@ -11,18 +10,16 @@ import { getOrderTypeReceiveAmounts } from '../../utils/getReceiveAmountInfo'
1110

1211
interface TradeFeesAndCostsProps {
1312
receiveAmountInfo: ReceiveAmountInfo | null
14-
widgetParams: Partial<CowSwapWidgetAppParams>
1513
networkCostsSuffix?: ReactNode
1614
networkCostsTooltipSuffix?: ReactNode
1715
withTimelineDot?: boolean
1816
alwaysRow?: boolean
19-
volumeFeeTooltip?: string
17+
volumeFeeTooltip: VolumeFeeTooltip
2018
}
2119

2220
export function TradeFeesAndCosts(props: TradeFeesAndCostsProps) {
2321
const {
2422
receiveAmountInfo,
25-
widgetParams,
2623
networkCostsSuffix,
2724
networkCostsTooltipSuffix,
2825
withTimelineDot = true,
@@ -47,7 +44,6 @@ export function TradeFeesAndCosts(props: TradeFeesAndCostsProps) {
4744
partnerFeeUsd={partnerFeeUsd}
4845
partnerFeeAmount={partnerFeeAmount}
4946
partnerFeeBps={partnerFeeBps}
50-
widgetContent={widgetParams.content}
5147
volumeFeeTooltip={volumeFeeTooltip}
5248
/>
5349

apps/cowswap-frontend/src/modules/trade/pure/PartnerFeeRow/index.tsx

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import { bpsToPercent, formatPercent, FractionUtils } from '@cowprotocol/common-utils'
2-
import { CowSwapWidgetContent } from '@cowprotocol/widget-lib'
32
import { Currency, CurrencyAmount } from '@uniswap/sdk-core'
43

54
import { Nullish } from 'types'
65

76
import { WidgetMarkdownContent } from 'modules/injectedWidget'
7+
import { VolumeFeeTooltip } from 'modules/volumeFee'
88

99
import * as styledEl from '../../containers/TradeBasicConfirmDetails/styled'
1010
import { ReviewOrderModalAmountRow } from '../ReviewOrderModalAmountRow'
@@ -15,8 +15,7 @@ interface PartnerFeeRowProps {
1515
partnerFeeBps: number | undefined
1616
withTimelineDot: boolean
1717
alwaysRow?: boolean
18-
widgetContent?: CowSwapWidgetContent
19-
volumeFeeTooltip?: string
18+
volumeFeeTooltip: VolumeFeeTooltip
2019
}
2120

2221
export function PartnerFeeRow({
@@ -25,7 +24,6 @@ export function PartnerFeeRow({
2524
partnerFeeBps,
2625
withTimelineDot,
2726
alwaysRow,
28-
widgetContent,
2927
volumeFeeTooltip,
3028
}: PartnerFeeRowProps) {
3129
const feeAsPercent = partnerFeeBps ? formatPercent(bpsToPercent(partnerFeeBps)) : null
@@ -40,8 +38,8 @@ export function PartnerFeeRow({
4038
fiatAmount={partnerFeeUsd}
4139
alwaysRow={alwaysRow}
4240
tooltip={
43-
volumeFeeTooltip ? (
44-
<WidgetMarkdownContent>{volumeFeeTooltip}</WidgetMarkdownContent>
41+
volumeFeeTooltip.content ? (
42+
<WidgetMarkdownContent>{volumeFeeTooltip.content}</WidgetMarkdownContent>
4543
) : (
4644
<>
4745
This fee helps pay for maintenance & improvements to the trade experience.
@@ -51,7 +49,7 @@ export function PartnerFeeRow({
5149
</>
5250
)
5351
}
54-
label={`${widgetContent?.feeLabel || 'Total fee'} (${feeAsPercent}%)`}
52+
label={`${volumeFeeTooltip.label} (${feeAsPercent}%)`}
5553
/>
5654
) : (
5755
<ReviewOrderModalAmountRow

apps/cowswap-frontend/src/modules/tradeWidgetAddons/containers/TradeRateDetails/index.tsx

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ import React, { useMemo, useState, useCallback, ReactElement } from 'react'
22

33
import { CurrencyAmount } from '@uniswap/sdk-core'
44

5-
import { useInjectedWidgetParams } from 'modules/injectedWidget'
65
import {
76
getTotalCosts,
87
TradeFeesAndCosts,
@@ -50,7 +49,6 @@ export function TradeRateDetails({ rateInfoParams, deadline, isTradePriceUpdatin
5049
return CurrencyAmount.fromRawAmount(inputCurrency, costsExceedFeeRaw)
5150
}, [costsExceedFeeRaw, inputCurrency])
5251

53-
const widgetParams = useInjectedWidgetParams()
5452
const volumeFeeTooltip = useVolumeFeeTooltip()
5553
const networkFeeAmountUsd = useUsdAmount(networkFeeAmount).value
5654

@@ -86,7 +84,6 @@ export function TradeRateDetails({ rateInfoParams, deadline, isTradePriceUpdatin
8684
>
8785
<TradeFeesAndCosts
8886
receiveAmountInfo={receiveAmountInfo}
89-
widgetParams={widgetParams}
9087
withTimelineDot={false}
9188
networkCostsSuffix={shouldPayGas ? <NetworkCostsSuffix /> : null}
9289
networkCostsTooltipSuffix={<NetworkCostsTooltipSuffix />}
Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,34 @@
11
import { useAtomValue } from 'jotai'
2+
import { useMemo } from 'react'
3+
4+
import { useInjectedWidgetParams } from 'modules/injectedWidget'
25

3-
import { useInjectedWidgetParams } from '../../injectedWidget'
46
import { safeAppFeeAtom } from '../state/safeAppFeeAtom'
57

6-
const SAFE_FEE_TOOLTIP =
8+
const SAFE_FEE_TOOLTIP_CONTENT =
79
'The Safe App License Fee incurred here is charged by the Safe Foundation for the display of the app within their Safe Store. The fee is automatically calculated in this quote. Part of the fees will contribute to the CoW DAO treasury that supports the CoW Community.'
10+
const SAFE_FEE_LABEL = 'Safe App License Fee'
11+
12+
const SAFE_TOOLTIP = {
13+
content: SAFE_FEE_TOOLTIP_CONTENT,
14+
label: SAFE_FEE_LABEL,
15+
}
16+
17+
export interface VolumeFeeTooltip {
18+
content: string | undefined
19+
label: string
20+
}
821

9-
export function useVolumeFeeTooltip() {
22+
export function useVolumeFeeTooltip(): VolumeFeeTooltip {
1023
const safeAppFee = useAtomValue(safeAppFeeAtom)
1124
const widgetParams = useInjectedWidgetParams()
1225

13-
if (safeAppFee) return SAFE_FEE_TOOLTIP
26+
return useMemo(() => {
27+
if (safeAppFee) return SAFE_TOOLTIP
1428

15-
return widgetParams.content?.feeTooltipMarkdown
29+
return {
30+
content: widgetParams.content?.feeTooltipMarkdown,
31+
label: widgetParams.content?.feeLabel || 'Total fee',
32+
}
33+
}, [safeAppFee, widgetParams])
1634
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
export { useVolumeFee } from './hooks/useVolumeFee'
22
export { useVolumeFeeTooltip } from './hooks/useVolumeFeeTooltip'
3+
export type { VolumeFeeTooltip } from './hooks/useVolumeFeeTooltip'
34
export { volumeFeeAtom } from './state/volumeFeeAtom'
45
export * from './types'

0 commit comments

Comments
 (0)