fix(ledger): reject when ledger wallet

This commit is contained in:
kyranjamie
2023-06-29 12:29:43 +02:00
committed by kyranjamie
parent d46b310884
commit 574d618d17
5 changed files with 46 additions and 16 deletions

View File

@@ -0,0 +1,37 @@
import { useMemo } from 'react';
import { RpcErrorCode } from '@btckit/types';
import { WalletMethodMap, makeRpcErrorResponse } from '@shared/rpc/rpc-methods';
import { useDefaultRequestParams } from './hooks/use-default-request-search-params';
import { initialSearchParams } from './initial-search-params';
import { useWalletType } from './use-wallet-type';
export function useRpcRequestParams() {
const defaultParams = useDefaultRequestParams();
return useMemo(
() => ({
...defaultParams,
requestId: initialSearchParams.get('requestId') ?? '',
}),
[defaultParams]
);
}
export function useRejectIfLedgerWallet(request: keyof WalletMethodMap) {
const { walletType } = useWalletType();
const { tabId, requestId } = useRpcRequestParams();
if (walletType !== 'ledger' || !tabId) return;
chrome.tabs.sendMessage(
tabId,
makeRpcErrorResponse(request, {
id: requestId,
error: {
code: RpcErrorCode.INTERNAL_ERROR,
message: 'Ledger wallet is not supported',
},
})
);
window.close();
}

View File

@@ -1,5 +1,3 @@
import { useMemo } from 'react';
import { BtcAddress } from '@btckit/types';
import { bytesToHex } from '@stacks/common';
@@ -8,24 +6,12 @@ import { logger } from '@shared/logger';
import { makeRpcSuccessResponse } from '@shared/rpc/rpc-methods';
import { useAnalytics } from '@app/common/hooks/analytics/use-analytics';
import { useDefaultRequestParams } from '@app/common/hooks/use-default-request-search-params';
import { initialSearchParams } from '@app/common/initial-search-params';
import { useRpcRequestParams } from '@app/common/rpc-helpers';
import { useCurrentAccountNativeSegwitIndexZeroSigner } from '@app/store/accounts/blockchain/bitcoin/native-segwit-account.hooks';
import { useCurrentAccountTaprootIndexZeroSigner } from '@app/store/accounts/blockchain/bitcoin/taproot-account.hooks';
import { useCurrentStacksAccount } from '@app/store/accounts/blockchain/stacks/stacks-account.hooks';
import { useAppPermissions } from '@app/store/app-permissions/app-permissions.slice';
function useRpcRequestParams() {
const defaultParams = useDefaultRequestParams();
return useMemo(
() => ({
...defaultParams,
requestId: initialSearchParams.get('requestId') ?? '',
}),
[defaultParams]
);
}
export function useGetAddresses() {
const analytics = useAnalytics();

View File

@@ -3,6 +3,7 @@ import BigNumber from 'bignumber.js';
import { createMoney } from '@shared/models/money.model';
import { formatMoneyPadded } from '@app/common/money/format-money';
import { useRejectIfLedgerWallet } from '@app/common/rpc-helpers';
import { useCurrentAccountNativeSegwitIndexZeroSigner } from '@app/store/accounts/blockchain/bitcoin/native-segwit-account.hooks';
import { SendTransferActions } from './components/send-transfer-actions';
@@ -11,9 +12,10 @@ import { SendTransferHeader } from './components/send-transfer-header';
import { useRpcSendTransfer } from './use-rpc-send-transfer';
export function RpcSendTransfer() {
useRejectIfLedgerWallet('sendTransfer');
const nativeSegwitSigner = useCurrentAccountNativeSegwitIndexZeroSigner();
const { address, amount, onChooseTransferFee, origin } = useRpcSendTransfer();
const amountAsMoney = createMoney(new BigNumber(amount), 'BTC');
const formattedMoney = formatMoneyPadded(amountAsMoney);
const requester = new URL(origin ?? '').host;

View File

@@ -1,6 +1,7 @@
import { truncateMiddle } from '@stacks/ui-utils';
import { useRouteHeader } from '@app/common/hooks/use-route-header';
import { useRejectIfLedgerWallet } from '@app/common/rpc-helpers';
import { Disclaimer } from '@app/components/disclaimer';
import { NoFeesWarningRow } from '@app/components/no-fees-warning-row';
import { PopupHeader } from '@app/features/current-account/popup-header';
@@ -25,6 +26,7 @@ export function RpcSignBip322MessageRoute() {
function RpcSignBip322Message() {
useRouteHeader(<PopupHeader displayAddresssBalanceOf="all" />);
useRejectIfLedgerWallet('signMessage');
const {
origin,

View File

@@ -9,10 +9,13 @@ import { makeRpcErrorResponse, makeRpcSuccessResponse } from '@shared/rpc/rpc-me
import { isDefined, undefinedIfLengthZero } from '@shared/utils';
import { useDefaultRequestParams } from '@app/common/hooks/use-default-request-search-params';
import { useRejectIfLedgerWallet } from '@app/common/rpc-helpers';
import { usePsbtSigner } from '@app/features/psbt-signer/hooks/use-psbt-signer';
import { PsbtSigner } from '@app/features/psbt-signer/psbt-signer';
function useRpcSignPsbtParams() {
useRejectIfLedgerWallet('signPsbt');
const [searchParams] = useSearchParams();
const { origin, tabId } = useDefaultRequestParams();
const requestId = searchParams.get('requestId');