Skip to content

Commit a6898ae

Browse files
authored
Fix infinite loop due to missing fiat values (#1692)
* Revert "Temporarily disable sorting (#1691)" This reverts commit 799271f. * Fallback to presentValue in base when fiat value doesnt exist
1 parent 799271f commit a6898ae

File tree

6 files changed

+32
-25
lines changed

6 files changed

+32
-25
lines changed

.vscode/settings.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
"editor.defaultFormatter": "esbenp.prettier-vscode"
99
},
1010
"[typescript]": {
11-
"editor.defaultFormatter": "esbenp.prettier-vscode"
11+
"editor.defaultFormatter": "ms-vsliveshare.vsliveshare"
1212
},
1313
"[javascriptreact]": {
1414
"editor.defaultFormatter": "esbenp.prettier-vscode"

apps/hyperdrive-trading/src/ui/hyperdrive/hooks/usePresentValue.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,8 +92,9 @@ export function getPresentValue({
9292
chainId: baseToken.chainId,
9393
publicClient,
9494
tokenAddress: baseToken.address,
95-
})
95+
}).catch(() => undefined)
9696
: Promise.resolve(undefined);
97+
9798
return Promise.all([readHyperdrive.getPresentValue(), fiatPricePromise]).then(
9899
([presentValue, fiatPrice]) => {
99100
const presentValueFiat = fiatPrice

apps/hyperdrive-trading/src/ui/hyperdrive/hooks/useUnpausedPools.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import {
44
HyperdriveConfig,
55
} from "@delvtech/hyperdrive-appconfig";
66
import { getHyperdrive } from "@delvtech/hyperdrive-js";
7-
import { QueryStatus, useQuery } from "@tanstack/react-query";
7+
import { useQuery } from "@tanstack/react-query";
88
import { getPublicClient } from "@wagmi/core";
99
import { makeQueryKey2 } from "src/base/makeQueryKey";
1010
import { getDrift } from "src/drift/getDrift";
@@ -24,7 +24,6 @@ const HIDDEN_POOLS = [
2424
*/
2525
export function useUnpausedPools(): {
2626
unpausedPools: HyperdriveConfig[] | undefined;
27-
status: QueryStatus;
2827
} {
2928
// Only show testnet and fork pools if the user is connected to a testnet
3029
// chain
@@ -33,7 +32,7 @@ export function useUnpausedPools(): {
3332
// Use the chain id in the query key to make sure the pools list updates when
3433
// you switch chains
3534
const connectedChainId = useChainId();
36-
const { data: unpausedPools, status } = useQuery({
35+
const { data: unpausedPools } = useQuery({
3736
queryKey: makeQueryKey2({
3837
namespace: "hyperdrive",
3938
queryId: "unpausedPools",
@@ -77,5 +76,5 @@ export function useUnpausedPools(): {
7776
return unpausedPools;
7877
},
7978
});
80-
return { unpausedPools, status };
79+
return { unpausedPools };
8180
}

apps/hyperdrive-trading/src/ui/markets/PoolRow/PoolRow.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ export function PoolRow({ hyperdrive }: PoolRowProps): ReactElement {
4646
chainId: hyperdrive.chainId,
4747
hyperdriveAddress: hyperdrive.address,
4848
});
49-
const isFiatSupported = !isTestnetChain(chainInfo.id);
49+
const isFiatSupported = !isTestnetChain(chainInfo.id) && presentValue?.fiat;
5050
let tvlLabel = `${formatCompact({
5151
value: presentValue?.base || 0n,
5252
decimals: hyperdrive.decimals,

apps/hyperdrive-trading/src/ui/markets/PoolsList/PoolsList.tsx

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,19 @@
11
import { appConfig } from "@delvtech/hyperdrive-appconfig";
2-
import { AdjustmentsHorizontalIcon } from "@heroicons/react/20/solid";
2+
import {
3+
AdjustmentsHorizontalIcon,
4+
BarsArrowDownIcon,
5+
} from "@heroicons/react/20/solid";
36
import { ArrowUpIcon } from "@heroicons/react/24/outline";
47
import { useNavigate, useSearch } from "@tanstack/react-router";
8+
import classNames from "classnames";
59
import { ReactElement, ReactNode } from "react";
610
import LoadingState from "src/ui/base/components/LoadingState";
711
import { MultiSelect } from "src/ui/base/components/MultiSelect";
812
import { NonIdealState } from "src/ui/base/components/NonIdealState";
913
import { Well } from "src/ui/base/components/Well/Well";
1014
import { LANDING_ROUTE } from "src/ui/landing/routes";
1115
import { PoolRow } from "src/ui/markets/PoolRow/PoolRow";
12-
import { usePoolsList } from "src/ui/markets/hooks/usePoolsList";
16+
import { sortOptions, usePoolsList } from "src/ui/markets/hooks/usePoolsList";
1317
import { useAccount } from "wagmi";
1418

1519
export function PoolsList(): ReactElement {
@@ -150,7 +154,7 @@ export function PoolsList(): ReactElement {
150154
</div>
151155

152156
{/* Sorting */}
153-
{/* <div className="daisy-dropdown daisy-dropdown-end">
157+
<div className="daisy-dropdown daisy-dropdown-end">
154158
<div
155159
tabIndex={0}
156160
role="button"
@@ -187,7 +191,7 @@ export function PoolsList(): ReactElement {
187191
</li>
188192
))}
189193
</ul>
190-
</div> */}
194+
</div>
191195
</div>
192196

193197
{!pools.length ? (

apps/hyperdrive-trading/src/ui/markets/hooks/usePoolsList.ts

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ export function usePoolsList({
5757
sortOption: SortOption | undefined;
5858
setSortOption: (option: SortOption | undefined) => void;
5959
} {
60-
const { unpausedPools, status } = useUnpausedPools();
60+
const { unpausedPools } = useUnpausedPools();
6161

6262
const filters = usePoolListFilters({ hyperdrives: unpausedPools });
6363

@@ -73,18 +73,15 @@ export function usePoolsList({
7373
// responsible for fetching the specific data they need.
7474
const [sortOption, setSortOption] = useState<SortOption | undefined>();
7575
const isFetching = useIsFetching({ stale: true });
76-
// const isSortingEnabled = !isFetching;
77-
const isSortingEnabled = false; // TODO: Figure out why this puts us into infinite loops
78-
79-
// const { sortedPools, status } = useSortedPools({
80-
// pools: selectedPools,
81-
// enabled: isSortingEnabled,
82-
// sortOption,
83-
// });
76+
const isSortingEnabled = !isFetching;
77+
const { sortedPools, status } = useSortedPools({
78+
pools: selectedPools,
79+
enabled: isSortingEnabled,
80+
sortOption,
81+
});
8482

8583
return {
86-
// pools: isSortingEnabled ? sortedPools : selectedPools,
87-
pools: selectedPools,
84+
pools: isSortingEnabled ? sortedPools : selectedPools,
8885
filters,
8986
status,
9087
sortOption,
@@ -172,9 +169,15 @@ function useSortedPools({
172169
calculateMarketYieldMultiplier(a.longPrice).bigint,
173170
);
174171
case "TVL":
175-
return fixed(b.tvl.fiat ?? 0)
176-
.sub(a.tvl.fiat ?? 0)
177-
.toNumber();
172+
const tvlA =
173+
b.tvl.fiat ??
174+
fixed(b.tvl.base).div(b.hyperdrive.decimals, 0) ??
175+
0;
176+
const tvlB =
177+
a.tvl.fiat ??
178+
fixed(a.tvl.base).div(a.hyperdrive.decimals, 0) ??
179+
0;
180+
return fixed(tvlA).sub(tvlB).toNumber();
178181
default:
179182
return 0;
180183
}

0 commit comments

Comments
 (0)