From 7dad0028879f9cc4ffab3f6d30752ad14e0dde86 Mon Sep 17 00:00:00 2001 From: Amin Sammara Date: Thu, 4 Jun 2026 04:18:21 -0400 Subject: [PATCH] feat: remove rewards locked state from UI Rewards are no longer locked, so remove all "rewards are currently locked" banners, disabled states, and the isRewardsClaimable hook usage across the dashboard. Claim buttons are now always enabled when rewards > 0. --- .../ATPDetailsDelegationItem.tsx | 25 +++++-------- .../ATPDetailsDirectStakeItem.tsx | 15 ++------ .../ATPStakingOverview/ATPStakingOverview.tsx | 5 --- .../ATPStakingOverviewClaimableRewards.tsx | 17 ++------- .../ATPStakingOverviewDelegationItem.tsx | 15 ++------ .../ATPStakingOverviewDirectStakeItem.tsx | 14 ++------ .../ClaimAllDelegationRewardsButton.tsx | 4 +-- .../ClaimAllRewardsModal.tsx | 5 --- .../ClaimAllRewardsSummary.tsx | 27 ++------------ .../ClaimSelfStakeRewardsModal.tsx | 17 +-------- .../RewardsManagement/CoinbaseAddressList.tsx | 36 ++++++++----------- .../ManageRewardsAddressesModal.tsx | 12 ------- .../RewardsManagement/RewardsLockedBanner.tsx | 24 ------------- .../RewardsManagement/SplitContractList.tsx | 18 ++-------- .../src/components/RewardsManagement/index.ts | 1 - .../WalletDelegationItem.tsx | 26 +++++--------- staking-dashboard/src/hooks/rollup/index.ts | 1 - 17 files changed, 47 insertions(+), 215 deletions(-) delete mode 100644 staking-dashboard/src/components/RewardsManagement/RewardsLockedBanner.tsx diff --git a/staking-dashboard/src/components/ATPDetailsModal/ATPDetailsDelegationItem.tsx b/staking-dashboard/src/components/ATPDetailsModal/ATPDetailsDelegationItem.tsx index 64e5f9f02..1beee2a91 100644 --- a/staking-dashboard/src/components/ATPDetailsModal/ATPDetailsDelegationItem.tsx +++ b/staking-dashboard/src/components/ATPDetailsModal/ATPDetailsDelegationItem.tsx @@ -13,7 +13,6 @@ import { getValidatorDashboardValidatorUrl } from "@/utils/validatorDashboardUti import { getExplorerTxUrl, getExplorerAddressUrl } from "@/utils/explorerUtils" import { useSequencerStatus, SequencerStatus } from "@/hooks/rollup/useSequencerStatus" import { useStakeHealth } from "@/hooks/rollup/useStakeHealth" -import { useIsRewardsClaimable } from "@/hooks/rollup/useIsRewardsClaimable" import { useGovernanceConfig } from "@/hooks/governance" import { useClaimAllContext } from "@/contexts/ClaimAllContext" import { WithdrawalActions } from "./WithdrawalActions" @@ -58,8 +57,6 @@ export const ATPDetailsDelegationItem = ({ const { symbol, decimals } = useStakingAssetTokenDetails() const { date, time } = formatBlockTimestamp(delegation.timestamp) const { getSplitStatus, claimAllHook } = useClaimAllContext() - const { isRewardsClaimable } = useIsRewardsClaimable() - const { status, statusLabel, isLoading: isLoadingStatus, canFinalize, actualUnlockTime, refetch: refetchStatus } = useSequencerStatus(delegation.operatorAddress as Address) const { withdrawalDelayDays } = useGovernanceConfig() @@ -445,16 +442,14 @@ export const ATPDetailsDelegationItem = ({ providerTakeRate: delegation.providerTakeRate, providerRewardsRecipient: delegation.providerRewardsRecipient })} - disabled={delegationRewards.userRewards === 0n || isInBatch || isRewardsClaimable === false} + disabled={delegationRewards.userRewards === 0n || isInBatch} className="px-3 py-1.5 border font-oracle-standard text-xs font-bold uppercase tracking-wide whitespace-nowrap transition-colors disabled:opacity-50 disabled:cursor-not-allowed disabled:bg-parchment/10 disabled:border-parchment/30 disabled:text-parchment/60 border-chartreuse bg-chartreuse text-ink hover:bg-chartreuse/90" title={ - isRewardsClaimable === false - ? "Rewards are currently locked by the network protocol" - : delegationRewards.userRewards === 0n - ? "No rewards to claim" - : isInBatch - ? "Processing in batch" - : "Claim delegation rewards" + delegationRewards.userRewards === 0n + ? "No rewards to claim" + : isInBatch + ? "Processing in batch" + : "Claim delegation rewards" } > {isProcessingInBatch ? ( @@ -466,13 +461,9 @@ export const ATPDetailsDelegationItem = ({ 'Claim Rewards' )} - {(delegationRewards.userRewards === 0n || isRewardsClaimable === false) && ( + {delegationRewards.userRewards === 0n && ( diff --git a/staking-dashboard/src/components/ATPDetailsModal/ATPDetailsDirectStakeItem.tsx b/staking-dashboard/src/components/ATPDetailsModal/ATPDetailsDirectStakeItem.tsx index fa0ce6534..af356579d 100644 --- a/staking-dashboard/src/components/ATPDetailsModal/ATPDetailsDirectStakeItem.tsx +++ b/staking-dashboard/src/components/ATPDetailsModal/ATPDetailsDirectStakeItem.tsx @@ -12,7 +12,6 @@ import { getValidatorDashboardValidatorUrl } from "@/utils/validatorDashboardUti import { getExplorerTxUrl } from "@/utils/explorerUtils" import { useSequencerStatus, SequencerStatus } from "@/hooks/rollup/useSequencerStatus" import { useStakeHealth } from "@/hooks/rollup/useStakeHealth" -import { useIsRewardsClaimable } from "@/hooks/rollup/useIsRewardsClaimable" import { useGovernanceConfig } from "@/hooks/governance" import { ClaimSelfStakeRewardsModal } from "@/components/ClaimSelfStakeRewardsModal" import { WithdrawalActions } from "./WithdrawalActions" @@ -41,8 +40,6 @@ export const ATPDetailsDirectStakeItem = ({ stake, stakerAddress, rollupVersion, const [isClaimModalOpen, setIsClaimModalOpen] = useState(false) const { symbol, decimals } = useStakingAssetTokenDetails() const { date, time } = formatBlockTimestamp(stake.timestamp) - const { isRewardsClaimable } = useIsRewardsClaimable() - const { status, statusLabel, isLoading: isLoadingStatus, canFinalize, actualUnlockTime, refetch: refetchStatus } = useSequencerStatus(stake.attesterAddress as Address) const { withdrawalDelayDays } = useGovernanceConfig() @@ -366,19 +363,11 @@ export const ATPDetailsDirectStakeItem = ({ stake, stakerAddress, rollupVersion,
- {isRewardsClaimable === false && ( - - )}
)} diff --git a/staking-dashboard/src/components/ATPStakingOverview/ATPStakingOverview.tsx b/staking-dashboard/src/components/ATPStakingOverview/ATPStakingOverview.tsx index f036b4d82..615805144 100644 --- a/staking-dashboard/src/components/ATPStakingOverview/ATPStakingOverview.tsx +++ b/staking-dashboard/src/components/ATPStakingOverview/ATPStakingOverview.tsx @@ -2,7 +2,6 @@ import { useState, useEffect, useRef } from "react" import { useAggregatedStakingData } from "@/hooks/atp/useAggregatedStakingData" import { useMultipleStakeableAmounts } from "@/hooks/atp/useMultipleStakeableAmounts" import { useStakingAssetTokenDetails } from "@/hooks/stakingRegistry" -import { useIsRewardsClaimable } from "@/hooks/rollup/useIsRewardsClaimable" import { useCoinbaseAddresses, useMultipleCoinbaseRewards } from "@/hooks/rewards" import { ATPDetailsModal } from "@/components/ATPDetailsModal" import { ATPStakingOverviewSkeleton } from "./ATPStakingOverviewSkeleton" @@ -58,9 +57,6 @@ export const ATPStakingOverview = ({ atpData, walletBalance = 0n }: ATPStakingOv isLoading: isLoadingStakeable, } = useMultipleStakeableAmounts(atpData) - // Check if rewards are claimable - const { isRewardsClaimable } = useIsRewardsClaimable() - // Get coinbase addresses and their rewards for self-stake tracking const { coinbaseAddresses } = useCoinbaseAddresses() const { totalCoinbaseRewards, coinbaseBreakdown, refetch: refetchCoinbaseRewards } = useMultipleCoinbaseRewards(coinbaseAddresses as Address[]) @@ -179,7 +175,6 @@ export const ATPStakingOverview = ({ atpData, walletBalance = 0n }: ATPStakingOv totalRewards={totalRewards} selfStakeRewards={totalCoinbaseRewards} pendingWarehouseWithdrawal={pendingWarehouseWithdrawal} - isRewardsClaimable={isRewardsClaimable} isExpanded={isTotalRewardsExpanded} onToggle={() => setIsTotalRewardsExpanded(!isTotalRewardsExpanded)} decimals={decimals} diff --git a/staking-dashboard/src/components/ATPStakingOverview/ATPStakingOverviewClaimableRewards.tsx b/staking-dashboard/src/components/ATPStakingOverview/ATPStakingOverviewClaimableRewards.tsx index d057fb0dc..bdcf4e92b 100644 --- a/staking-dashboard/src/components/ATPStakingOverview/ATPStakingOverviewClaimableRewards.tsx +++ b/staking-dashboard/src/components/ATPStakingOverview/ATPStakingOverviewClaimableRewards.tsx @@ -11,7 +11,6 @@ interface ATPStakingOverviewClaimableRewardsProps { totalRewards: bigint selfStakeRewards?: bigint pendingWarehouseWithdrawal?: bigint - isRewardsClaimable?: boolean isExpanded: boolean onToggle: () => void decimals: number @@ -25,7 +24,7 @@ interface ATPStakingOverviewClaimableRewardsProps { * Displays claimable delegation rewards and self-stake rewards */ export const ATPStakingOverviewClaimableRewards = forwardRef( - ({ totalRewards, selfStakeRewards = 0n, pendingWarehouseWithdrawal = 0n, isRewardsClaimable = true, isExpanded, onToggle, decimals, symbol, delegationBreakdown = [], coinbaseBreakdown = [], onClaimSuccess }, ref) => { + ({ totalRewards, selfStakeRewards = 0n, pendingWarehouseWithdrawal = 0n, isExpanded, onToggle, decimals, symbol, delegationBreakdown = [], coinbaseBreakdown = [], onClaimSuccess }, ref) => { const [isManageModalOpen, setIsManageModalOpen] = useState(false) const [isClaimAllModalOpen, setIsClaimAllModalOpen] = useState(false) @@ -85,18 +84,6 @@ export const ATPStakingOverviewClaimableRewards = forwardRef - {/* Rewards Locked Warning */} - {!isRewardsClaimable && ( -
-
- - - Rewards are currently locked - -
-
- )} - {/* Info message when no rewards */} {combinedTotalRewards === 0n && (
@@ -117,7 +104,7 @@ export const ATPStakingOverviewClaimableRewards = forwardRef diff --git a/staking-dashboard/src/components/ATPStakingOverview/ATPStakingOverviewDelegationItem.tsx b/staking-dashboard/src/components/ATPStakingOverview/ATPStakingOverviewDelegationItem.tsx index 343b18bcd..13f32dba1 100644 --- a/staking-dashboard/src/components/ATPStakingOverview/ATPStakingOverviewDelegationItem.tsx +++ b/staking-dashboard/src/components/ATPStakingOverview/ATPStakingOverviewDelegationItem.tsx @@ -4,7 +4,6 @@ import { Icon } from "@/components/Icon" import { formatTokenAmount } from "@/utils/atpFormatters" import { getValidatorDashboardValidatorUrl } from "@/utils/validatorDashboardUtils" import { getExplorerTxUrl } from "@/utils/explorerUtils" -import { useIsRewardsClaimable } from "@/hooks/rollup/useIsRewardsClaimable" import { useClaimAllContext } from "@/contexts/ClaimAllContext" import type { ATPData } from "@/hooks/atp" import type { DelegationBreakdown, Erc20DelegationBreakdown } from "@/hooks/atp/useAggregatedStakingData" @@ -35,7 +34,6 @@ export const ATPStakingOverviewDelegationItem = ({ onClaimClick }: ATPStakingOverviewDelegationItemProps) => { const { getSplitStatus, claimAllHook } = useClaimAllContext() - const { isRewardsClaimable } = useIsRewardsClaimable() const isWallet = variant === 'wallet' const splitStatus = getSplitStatus(delegation.splitContract as Address) @@ -152,12 +150,10 @@ export const ATPStakingOverviewDelegationItem = ({
- {isRewardsClaimable === false && ( - - )} )} diff --git a/staking-dashboard/src/components/ATPStakingOverview/ATPStakingOverviewDirectStakeItem.tsx b/staking-dashboard/src/components/ATPStakingOverview/ATPStakingOverviewDirectStakeItem.tsx index a8e732a38..dff98cd99 100644 --- a/staking-dashboard/src/components/ATPStakingOverview/ATPStakingOverviewDirectStakeItem.tsx +++ b/staking-dashboard/src/components/ATPStakingOverview/ATPStakingOverviewDirectStakeItem.tsx @@ -4,7 +4,6 @@ import { Icon } from "@/components/Icon" import { formatTokenAmount } from "@/utils/atpFormatters" import { getValidatorDashboardValidatorUrl } from "@/utils/validatorDashboardUtils" import { getExplorerTxUrl } from "@/utils/explorerUtils" -import { useIsRewardsClaimable } from "@/hooks/rollup/useIsRewardsClaimable" import type { ATPData } from "@/hooks/atp" import type { DirectStakeBreakdown, Erc20DirectStakeBreakdown } from "@/hooks/atp/useAggregatedStakingData" @@ -32,7 +31,6 @@ export const ATPStakingOverviewDirectStakeItem = ({ onWalletClick, onClaimClick }: ATPStakingOverviewDirectStakeItemProps) => { - const { isRewardsClaimable } = useIsRewardsClaimable() const isWallet = variant === 'wallet' return ( @@ -119,19 +117,11 @@ export const ATPStakingOverviewDirectStakeItem = ({
- {isRewardsClaimable === false && ( - - )}
)} diff --git a/staking-dashboard/src/components/ClaimAllDelegationRewardsButton/ClaimAllDelegationRewardsButton.tsx b/staking-dashboard/src/components/ClaimAllDelegationRewardsButton/ClaimAllDelegationRewardsButton.tsx index f7338a9ef..e108c43ce 100644 --- a/staking-dashboard/src/components/ClaimAllDelegationRewardsButton/ClaimAllDelegationRewardsButton.tsx +++ b/staking-dashboard/src/components/ClaimAllDelegationRewardsButton/ClaimAllDelegationRewardsButton.tsx @@ -1,7 +1,6 @@ import { useEffect, useMemo } from "react" import { useAccount } from "wagmi" import { useStakingAssetTokenDetails } from "@/hooks/stakingRegistry" -import { useIsRewardsClaimable } from "@/hooks/rollup/useIsRewardsClaimable" import { useClaimAllContext } from "@/contexts/ClaimAllContext" import { useAlert } from "@/contexts/AlertContext" import type { Address } from "viem" @@ -28,7 +27,6 @@ export const ClaimAllDelegationRewardsButton = ({ }: ClaimAllDelegationRewardsButtonProps) => { const { address: beneficiary } = useAccount() // TODO : should get the address from atp.beneficiary to handle the condition where the connected address is operator const { stakingAssetAddress: tokenAddress } = useStakingAssetTokenDetails() - const { isRewardsClaimable } = useIsRewardsClaimable() const { claimAllHook } = useClaimAllContext() const { showAlert } = useAlert() @@ -81,7 +79,7 @@ export const ClaimAllDelegationRewardsButton = ({ claimAllHook.claimAll(tasks) } - if (delegationsWithRewards.length === 0 || isRewardsClaimable === false) { + if (delegationsWithRewards.length === 0) { return null } diff --git a/staking-dashboard/src/components/ClaimAllRewardsModal/ClaimAllRewardsModal.tsx b/staking-dashboard/src/components/ClaimAllRewardsModal/ClaimAllRewardsModal.tsx index ae3555689..16246b868 100644 --- a/staking-dashboard/src/components/ClaimAllRewardsModal/ClaimAllRewardsModal.tsx +++ b/staking-dashboard/src/components/ClaimAllRewardsModal/ClaimAllRewardsModal.tsx @@ -3,7 +3,6 @@ import { createPortal } from "react-dom" import { Icon } from "@/components/Icon" import { useClaimAllRewards } from "@/hooks/rewards" import { useStakingAssetTokenDetails } from "@/hooks/stakingRegistry" -import { useIsRewardsClaimable } from "@/hooks/rollup/useIsRewardsClaimable" import { ClaimAllRewardsSummary } from "./ClaimAllRewardsSummary" import { ClaimAllRewardsProgress } from "./ClaimAllRewardsProgress" import { ClaimAllRewardsSuccess } from "./ClaimAllRewardsSuccess" @@ -38,9 +37,6 @@ export const ClaimAllRewardsModal = ({ // Token details const { symbol, decimals } = useStakingAssetTokenDetails() - // Check if rewards are claimable - const { isRewardsClaimable } = useIsRewardsClaimable() - // Claim hook const claimAllRewards = useClaimAllRewards() @@ -154,7 +150,6 @@ export const ClaimAllRewardsModal = ({ pendingWarehouseWithdrawal={pendingWarehouseWithdrawal} decimals={decimals ?? 18} symbol={symbol ?? ""} - isRewardsClaimable={isRewardsClaimable ?? false} onStartClaiming={handleStartClaiming} isDisabled={false} /> diff --git a/staking-dashboard/src/components/ClaimAllRewardsModal/ClaimAllRewardsSummary.tsx b/staking-dashboard/src/components/ClaimAllRewardsModal/ClaimAllRewardsSummary.tsx index 9237690da..f5f003197 100644 --- a/staking-dashboard/src/components/ClaimAllRewardsModal/ClaimAllRewardsSummary.tsx +++ b/staking-dashboard/src/components/ClaimAllRewardsModal/ClaimAllRewardsSummary.tsx @@ -9,7 +9,6 @@ interface ClaimAllRewardsSummaryProps { pendingWarehouseWithdrawal?: bigint decimals: number symbol: string - isRewardsClaimable: boolean onStartClaiming: () => void isDisabled: boolean } @@ -23,7 +22,6 @@ export const ClaimAllRewardsSummary = ({ pendingWarehouseWithdrawal = 0n, decimals, symbol, - isRewardsClaimable, onStartClaiming, isDisabled }: ClaimAllRewardsSummaryProps) => { @@ -41,21 +39,6 @@ export const ClaimAllRewardsSummary = ({ return (
- {/* Rewards Locked Warning */} - {!isRewardsClaimable && ( -
-
- -
-

Rewards Locked

-

- Rewards are currently locked and cannot be claimed. Check back later. -

-
-
-
- )} - {/* Total */}
@@ -187,18 +170,14 @@ export const ClaimAllRewardsSummary = ({ {/* Claim Button */} {/* Transaction Info */} - {hasRewards && isRewardsClaimable && ( + {hasRewards && (

This will require multiple transactions. Each claim will prompt for approval.

diff --git a/staking-dashboard/src/components/ClaimSelfStakeRewardsModal/ClaimSelfStakeRewardsModal.tsx b/staking-dashboard/src/components/ClaimSelfStakeRewardsModal/ClaimSelfStakeRewardsModal.tsx index 19d09f749..ddbad6d91 100644 --- a/staking-dashboard/src/components/ClaimSelfStakeRewardsModal/ClaimSelfStakeRewardsModal.tsx +++ b/staking-dashboard/src/components/ClaimSelfStakeRewardsModal/ClaimSelfStakeRewardsModal.tsx @@ -7,7 +7,6 @@ import { debounce } from "@/utils/debounce" import { useStakingAssetTokenDetails } from "@/hooks/stakingRegistry" import { useSequencerRewards } from "@/hooks/rollup/useSequencerRewards" import { useClaimSequencerRewards } from "@/hooks/rollup/useClaimSequencerRewards" -import { useIsRewardsClaimable } from "@/hooks/rollup/useIsRewardsClaimable" import { useAlert } from "@/contexts/AlertContext" import type { ATPData } from "@/hooks/atp" import type { Address } from "viem" @@ -58,8 +57,6 @@ export const ClaimSelfStakeRewardsModal = ({ reset } = useClaimSequencerRewards() - const { isRewardsClaimable } = useIsRewardsClaimable() - // Create debounced check function that manages debouncing state const debouncedCheckRewards = useMemo( () => debounce(() => { @@ -232,17 +229,6 @@ export const ClaimSelfStakeRewardsModal = ({
)} - {/* Rewards Not Claimable Warning */} - {isRewardsClaimable === false && ( -
-
- Rewards Currently Locked -
-
- All rewards are currently locked by the network protocol (rollup). Claiming will be enabled once the protocol unlocks rewards. -
-
- )} )} @@ -270,8 +256,7 @@ export const ClaimSelfStakeRewardsModal = ({ !rewards || rewards === 0n || isPending || - isConfirming || - isRewardsClaimable === false + isConfirming } className="px-6 py-3 bg-chartreuse text-ink font-oracle-standard font-bold text-sm uppercase tracking-wider hover:bg-chartreuse/90 transition-all disabled:opacity-50 disabled:cursor-not-allowed" > diff --git a/staking-dashboard/src/components/RewardsManagement/CoinbaseAddressList.tsx b/staking-dashboard/src/components/RewardsManagement/CoinbaseAddressList.tsx index 47f3862e7..4a71fa76d 100644 --- a/staking-dashboard/src/components/RewardsManagement/CoinbaseAddressList.tsx +++ b/staking-dashboard/src/components/RewardsManagement/CoinbaseAddressList.tsx @@ -9,7 +9,6 @@ interface CoinbaseAddressListProps { coinbaseBreakdown: CoinbaseBreakdown[] decimals: number symbol: string - isRewardsClaimable: boolean isLoading?: boolean onRefetch?: () => void } @@ -21,7 +20,6 @@ export const CoinbaseAddressList = ({ coinbaseBreakdown, decimals, symbol, - isRewardsClaimable, isLoading, onRefetch }: CoinbaseAddressListProps) => { @@ -100,26 +98,20 @@ export const CoinbaseAddressList = ({ {/* Claim Button */} {item.rewards > 0n && (
- {isRewardsClaimable ? ( - - ) : ( -
- Rewards are currently locked -
- )} +
)}
diff --git a/staking-dashboard/src/components/RewardsManagement/ManageRewardsAddressesModal.tsx b/staking-dashboard/src/components/RewardsManagement/ManageRewardsAddressesModal.tsx index 25ef5dcb9..6113487a0 100644 --- a/staking-dashboard/src/components/RewardsManagement/ManageRewardsAddressesModal.tsx +++ b/staking-dashboard/src/components/RewardsManagement/ManageRewardsAddressesModal.tsx @@ -2,7 +2,6 @@ import { useState, useMemo } from "react" import { createPortal } from "react-dom" import { Icon } from "@/components/Icon" import { useStakingAssetTokenDetails } from "@/hooks/stakingRegistry" -import { useIsRewardsClaimable } from "@/hooks/rollup/useIsRewardsClaimable" import { useAggregatedStakingData } from "@/hooks/atp/useAggregatedStakingData" import { useCoinbaseAddresses, @@ -14,7 +13,6 @@ import { import { AddAddressForm } from "./AddAddressForm" import { CoinbaseAddressList } from "./CoinbaseAddressList" import { SplitContractList } from "./SplitContractList" -import { RewardsLockedBanner } from "./RewardsLockedBanner" import type { Address } from "viem" import type { SplitContractWithSource } from "./types" @@ -38,9 +36,6 @@ export const ManageRewardsAddressesModal = ({ // Token details const { symbol, decimals, stakingAssetAddress: tokenAddress } = useStakingAssetTokenDetails() - // Check if rewards are claimable - const { isRewardsClaimable } = useIsRewardsClaimable() - // Coinbase addresses const { coinbaseAddresses, @@ -154,11 +149,6 @@ export const ManageRewardsAddressesModal = ({
- {/* Rewards Locked Banner */} - {isRewardsClaimable === false && ( - - )} - {/* Tabs */}
@@ -145,7 +137,6 @@ interface SplitContractListProps { decimals: number symbol: string tokenAddress: Address | undefined - isRewardsClaimable: boolean isLoading?: boolean onRefetch?: () => void } @@ -158,7 +149,6 @@ export const SplitContractList = ({ decimals, symbol, tokenAddress, - isRewardsClaimable, isLoading, onRefetch }: SplitContractListProps) => { @@ -218,7 +208,6 @@ export const SplitContractList = ({ decimals={decimals} symbol={symbol} tokenAddress={tokenAddress} - isRewardsClaimable={isRewardsClaimable} isRemoving={isRemoving} /> ))} @@ -240,7 +229,6 @@ export const SplitContractList = ({ decimals={decimals} symbol={symbol} tokenAddress={tokenAddress} - isRewardsClaimable={isRewardsClaimable} onRemove={() => handleRemove(split.address)} isRemoving={isRemoving} /> diff --git a/staking-dashboard/src/components/RewardsManagement/index.ts b/staking-dashboard/src/components/RewardsManagement/index.ts index 6d28d29fd..48d6e9896 100644 --- a/staking-dashboard/src/components/RewardsManagement/index.ts +++ b/staking-dashboard/src/components/RewardsManagement/index.ts @@ -2,4 +2,3 @@ export { ManageRewardsAddressesModal } from "./ManageRewardsAddressesModal" export { AddAddressForm } from "./AddAddressForm" export { CoinbaseAddressList } from "./CoinbaseAddressList" export { SplitContractList } from "./SplitContractList" -export { RewardsLockedBanner } from "./RewardsLockedBanner" diff --git a/staking-dashboard/src/components/WalletStakesDetailsModal/WalletDelegationItem.tsx b/staking-dashboard/src/components/WalletStakesDetailsModal/WalletDelegationItem.tsx index 621f3daf7..5a908ba79 100644 --- a/staking-dashboard/src/components/WalletStakesDetailsModal/WalletDelegationItem.tsx +++ b/staking-dashboard/src/components/WalletStakesDetailsModal/WalletDelegationItem.tsx @@ -12,7 +12,7 @@ import { formatBlockTimestamp } from "@/utils/dateFormatters" import { useStakingAssetTokenDetails } from "@/hooks/stakingRegistry" import { getValidatorDashboardValidatorUrl } from "@/utils/validatorDashboardUtils" import { getExplorerTxUrl, getExplorerAddressUrl } from "@/utils/explorerUtils" -import { useSequencerStatus, SequencerStatus, useStakeHealth, useIsRewardsClaimable } from "@/hooks/rollup" +import { useSequencerStatus, SequencerStatus, useStakeHealth } from "@/hooks/rollup" import { useGovernanceConfig } from "@/hooks/governance" import { useClaimAllContext } from "@/contexts/ClaimAllContext" import { WalletWithdrawalActions } from "./WalletWithdrawalActions" @@ -43,8 +43,6 @@ export const WalletDelegationItem = ({ const { symbol, decimals } = useStakingAssetTokenDetails() const { date, time } = formatBlockTimestamp(delegation.timestamp) const { getSplitStatus, claimAllHook } = useClaimAllContext() - const { isRewardsClaimable } = useIsRewardsClaimable() - const { status, statusLabel, isLoading: isLoadingStatus, canFinalize, actualUnlockTime, refetch: refetchStatus } = useSequencerStatus(delegation.attesterAddress as Address) const { withdrawalDelayDays } = useGovernanceConfig() @@ -339,16 +337,14 @@ export const WalletDelegationItem = ({ providerTakeRate: delegation.providerTakeRate, providerRewardsRecipient: delegation.providerRewardsRecipient })} - disabled={delegation.rewards === 0n || isInBatch || isRewardsClaimable === false} + disabled={delegation.rewards === 0n || isInBatch} className="px-3 py-1.5 border font-oracle-standard text-xs font-bold uppercase tracking-wide whitespace-nowrap transition-colors disabled:opacity-50 disabled:cursor-not-allowed disabled:bg-parchment/10 disabled:border-parchment/30 disabled:text-parchment/60 border-chartreuse bg-chartreuse text-ink hover:bg-chartreuse/90" title={ - isRewardsClaimable === false - ? "Rewards are currently locked by the network protocol" - : delegation.rewards === 0n - ? "No rewards to claim" - : isInBatch - ? "Processing in batch" - : "Claim delegation rewards" + delegation.rewards === 0n + ? "No rewards to claim" + : isInBatch + ? "Processing in batch" + : "Claim delegation rewards" } > {isProcessingInBatch ? ( @@ -360,13 +356,9 @@ export const WalletDelegationItem = ({ 'Claim Rewards' )} - {(delegation.rewards === 0n || isRewardsClaimable === false) && ( + {delegation.rewards === 0n && ( diff --git a/staking-dashboard/src/hooks/rollup/index.ts b/staking-dashboard/src/hooks/rollup/index.ts index d35471714..0d14b5085 100644 --- a/staking-dashboard/src/hooks/rollup/index.ts +++ b/staking-dashboard/src/hooks/rollup/index.ts @@ -2,7 +2,6 @@ export { useRollupData } from "./useRollupData"; export { useActivationThresholdFormatted } from "./useActivationThresholdFormatted"; export { useSequencerRewards } from "./useSequencerRewards"; export { useClaimSequencerRewards } from "./useClaimSequencerRewards"; -export { useIsRewardsClaimable } from "./useIsRewardsClaimable"; export { useEjectionThreshold } from "./useEjectionThreshold"; export { useStakeHealth } from "./useStakeHealth"; export type { StakeHealth } from "./useStakeHealth";