mirror of
https://github.com/lux-tel/websites.git
synced 2026-10-30 20:31:36 +00:00
67 lines
2.3 KiB
TypeScript
67 lines
2.3 KiB
TypeScript
'use client';
|
|
|
|
import { ClaimTokensDialog } from '@/app/mystakes/modules/claim/ClaimTokensDialog';
|
|
import type { AddressModuleProps } from '@/app/mystakes/modules/types';
|
|
import ModuleButtonDialogTrigger from '@/components/ModuleButtonDialogTrigger';
|
|
import { useNetworkBalances } from '@/hooks/useNetworkBalances';
|
|
import { REMOTE_FEATURE_FLAG } from '@/lib/feature-flags';
|
|
import { useRemoteFeatureFlagQuery } from '@/lib/feature-flags-client';
|
|
import { ButtonDataTestId } from '@/testing/data-test-ids';
|
|
import type { PresentIcon } from '@session/ui/icons/PresentIcon';
|
|
import { useWalletTokenBalance } from '@session/wallet/components/WalletButton';
|
|
import { useWallet } from '@session/wallet/hooks/useWallet';
|
|
import { useTranslations } from 'next-intl';
|
|
|
|
export type ClaimDict = ReturnType<typeof useTranslations<'modules.claim'>>;
|
|
|
|
export type ClaimTokensModuleProps = AddressModuleProps & {
|
|
dictionary?: ClaimDict;
|
|
textClassName?: string;
|
|
iconOverride?: typeof PresentIcon;
|
|
iconStrokeForFill?: boolean;
|
|
refetchBalance?: () => void;
|
|
};
|
|
|
|
export default function ClaimTokensModule({
|
|
addressOverride,
|
|
dictionary,
|
|
iconOverride,
|
|
iconStrokeForFill,
|
|
textClassName,
|
|
refetchBalance,
|
|
}: ClaimTokensModuleProps) {
|
|
const { address: connectedAddress } = useWallet();
|
|
const { refetch } = useWalletTokenBalance();
|
|
const fallbackDict = useTranslations('modules.claim');
|
|
const dict = dictionary ?? fallbackDict;
|
|
|
|
const { canClaim } = useNetworkBalances({ addressOverride });
|
|
|
|
const { enabled: isClaimRewardsDisabled, isLoading: isRemoteFlagLoading } =
|
|
useRemoteFeatureFlagQuery(REMOTE_FEATURE_FLAG.DISABLE_CLAIM_REWARDS);
|
|
|
|
const address = addressOverride ?? connectedAddress;
|
|
const disabled = !address || !canClaim || isRemoteFlagLoading || isClaimRewardsDisabled;
|
|
|
|
return (
|
|
<ModuleButtonDialogTrigger
|
|
dialogContent={
|
|
address ? (
|
|
<ClaimTokensDialog
|
|
address={address}
|
|
dictionary={dict}
|
|
refetchBalance={refetchBalance ?? refetch}
|
|
/>
|
|
) : null
|
|
}
|
|
dialogTitle={dict('title')}
|
|
label={dict('title')}
|
|
data-testid={ButtonDataTestId.Claim_Tokens_Open_Dialog}
|
|
disabled={disabled}
|
|
IconComp={iconOverride}
|
|
textClassName={textClassName}
|
|
iconStrokeForFill={iconStrokeForFill}
|
|
/>
|
|
);
|
|
}
|