Skip to content

Commit f2f32f5

Browse files
authored
fix: whitelisted zero apy yields (#513)
* fix(yields): allow whitelisted zero-rate yields * fix: minor styles
1 parent cc64fae commit f2f32f5

6 files changed

Lines changed: 28 additions & 5 deletions

File tree

.changeset/tidy-files-type.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@stakekit/widget": patch
3+
---
4+
5+
fix(yields): allow whitelisted zero-rate yields

packages/widget/src/components/molecules/select-opportunity-list-item/index.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import { Box } from "../../atoms/box";
99
import { SelectModalItem } from "../../atoms/select-modal";
1010
import { ProviderIcon } from "../../atoms/token-icon/provider-icon";
1111
import { Text } from "../../atoms/typography/text";
12-
import { selectItemText } from "./styles.css";
12+
import { noWrap, selectItemText } from "./styles.css";
1313

1414
export const SelectOpportunityListItem = ({
1515
item,
@@ -53,7 +53,7 @@ export const SelectOpportunityListItem = ({
5353
</Box>
5454

5555
<Box>
56-
<Text>
56+
<Text className={noWrap}>
5757
{getRewardRateFormatted({
5858
rewardRate: item.rewardRate,
5959
rewardType: item.rewardType,

packages/widget/src/components/molecules/select-opportunity-list-item/styles.css.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,7 @@ export const selectItemText = style([
77
fontWeight: "tokenSelect",
88
}),
99
]);
10+
11+
export const noWrap = style({
12+
whiteSpace: "nowrap",
13+
});

packages/widget/src/domain/types/yields.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,14 @@ export const isEthenaUsdeStaking = (yieldId: string) =>
179179
export const isBittensorStaking = (yieldId: string) =>
180180
yieldId === "bittensor-native-staking";
181181

182+
const zeroRewardRateYieldIdWhitelist = new Set<string>([
183+
"optimism-usdc-gtusdcb-0x4ffc4e5f1f1f5c43dc9bc27b53728da13b02be35-4626-vault",
184+
]);
185+
186+
export const isNonZeroRewardRateYield = (
187+
yieldDto: Pick<YieldDto, "id" | "rewardRate">
188+
) => yieldDto.rewardRate > 0 || zeroRewardRateYieldIdWhitelist.has(yieldDto.id);
189+
182190
export const getComputedRewardRate = (yieldDto: YieldDto) => {
183191
const liveFeeConfigurations = yieldDto.feeConfigurations.filter(
184192
(fc) => fc.status === "LIVE"

packages/widget/src/hooks/api/use-multi-yields.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,10 @@ import {
3131
type PreferredTokenYieldsPerNetwork,
3232
} from "../../domain/types/stake";
3333
import type { SKWallet } from "../../domain/types/wallet";
34-
import type { ValidatorsConfig } from "../../domain/types/yields";
34+
import {
35+
isNonZeroRewardRateYield,
36+
type ValidatorsConfig,
37+
} from "../../domain/types/yields";
3538
import { useSKQueryClient } from "../../providers/query-client";
3639
import { useSKWallet } from "../../providers/sk-wallet";
3740
import { useSavedRef } from "../use-saved-ref";
@@ -192,7 +195,9 @@ const firstEligibleYield$ = (args: {
192195

193196
const successStream = multipleYields$(args).pipe(
194197
tap((v) => {
195-
defaultYield = v;
198+
if (isNonZeroRewardRateYield(v) || !defaultYield) {
199+
defaultYield = v;
200+
}
196201
}),
197202
filter((y) => {
198203
const preferredYieldId = Maybe.fromNullable(

packages/widget/src/pages/details/earn-page/state/earn-page-context.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import {
3232
getYieldTypeLabels,
3333
getYieldTypesSortRank,
3434
isBittensorStaking,
35+
isNonZeroRewardRateYield,
3536
} from "../../../../domain/types/yields";
3637
import { useDefaultTokens } from "../../../../hooks/api/use-default-tokens";
3738
import { useStreamMultiYields } from "../../../../hooks/api/use-multi-yields";
@@ -236,7 +237,7 @@ export const EarnPageContextProvider = ({ children }: PropsWithChildren) => {
236237
() =>
237238
Maybe.of(multiYields)
238239
.map((val) => [...val].sort((a, b) => b.rewardRate - a.rewardRate))
239-
.map((val) => val.filter((v) => v.rewardRate > 0))
240+
.map((val) => val.filter(isNonZeroRewardRateYield))
240241
.chain((yieldDtos) =>
241242
Maybe.of(deferredStakeSearch)
242243
.chain((val) =>

0 commit comments

Comments
 (0)