fix: universal getSigner helper for WalletConnect + extension signing

Replace all web3FromAddress calls with getSigner() that auto-detects
walletSource and uses WC signer or extension signer accordingly.
This fixes all signing operations when connected via WalletConnect.
This commit is contained in:
2026-02-23 07:01:18 +03:00
parent fc9a92f58c
commit 3d1c1405e5
21 changed files with 139 additions and 142 deletions
+5 -8
View File
@@ -1,7 +1,7 @@
import React, { useState, useEffect } from 'react';
import { useTranslation } from 'react-i18next';
import { X, Lock, Unlock, Gift, AlertCircle, Loader2, Info } from 'lucide-react';
import { web3Enable, web3FromAddress } from '@pezkuwi/extension-dapp';
import { getSigner } from '@/lib/get-signer';
import { usePezkuwi } from '@/contexts/PezkuwiContext';
import { Button } from '@/components/ui/button';
import { Alert, AlertDescription } from '@/components/ui/alert';
@@ -31,7 +31,7 @@ const LP_TOKEN_NAMES: Record<number, string> = {
};
export const LPStakingModal: React.FC<LPStakingModalProps> = ({ isOpen, onClose }) => {
const { assetHubApi, selectedAccount, isAssetHubReady } = usePezkuwi();
const { assetHubApi, selectedAccount, isAssetHubReady, walletSource } = usePezkuwi();
const { t } = useTranslation();
const [pools, setPools] = useState<StakingPool[]>([]);
const [isLoading, setIsLoading] = useState(true);
@@ -143,8 +143,7 @@ export const LPStakingModal: React.FC<LPStakingModalProps> = ({ isOpen, onClose
if (!pool) throw new Error('Pool not found');
const amountBN = BigInt(Math.floor(parseFloat(stakeAmount) * 1e12));
await web3Enable('PezkuwiChain');
const injector = await web3FromAddress(selectedAccount.address);
const injector = await getSigner(selectedAccount.address, walletSource, assetHubApi);
const tx = assetHubApi.tx.assetRewards.stake(selectedPool, amountBN.toString());
@@ -190,8 +189,7 @@ export const LPStakingModal: React.FC<LPStakingModalProps> = ({ isOpen, onClose
if (!pool) throw new Error('Pool not found');
const amountBN = BigInt(Math.floor(parseFloat(unstakeAmount) * 1e12));
await web3Enable('PezkuwiChain');
const injector = await web3FromAddress(selectedAccount.address);
const injector = await getSigner(selectedAccount.address, walletSource, assetHubApi);
const tx = assetHubApi.tx.assetRewards.unstake(selectedPool, amountBN.toString());
@@ -233,8 +231,7 @@ export const LPStakingModal: React.FC<LPStakingModalProps> = ({ isOpen, onClose
setSuccess(null);
try {
await web3Enable('PezkuwiChain');
const injector = await web3FromAddress(selectedAccount.address);
const injector = await getSigner(selectedAccount.address, walletSource, assetHubApi);
const tx = assetHubApi.tx.assetRewards.harvestRewards(selectedPool);
await new Promise<void>((resolve, reject) => {