Skip to content

Commit

Permalink
feat: more token to wallet response messages
Browse files Browse the repository at this point in the history
  • Loading branch information
bobunderforest committed Nov 20, 2024
1 parent 03b5812 commit a61d070
Showing 1 changed file with 30 additions and 6 deletions.
36 changes: 30 additions & 6 deletions shared/components/token-to-wallet/token-to-wallet.tsx
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
import { ToastInfo, Tooltip } from '@lidofinance/lido-ui';
import { ToastError, ToastInfo, Tooltip } from '@lidofinance/lido-ui';
import { TokenToWalletStyle } from './styles';

import { Component } from 'types';
import { useWalletClient, useWatchAsset } from 'wagmi';
import { Address, getContract } from 'viem';
import { useConnectorInfo } from 'reef-knot/core-react';

export type TokenToWalletComponent = Component<'button', { address?: string }>;

Expand All @@ -27,10 +26,9 @@ const ERC20_METADATA_ABI = [

export const TokenToWallet: TokenToWalletComponent = ({ address, ...rest }) => {
const { watchAssetAsync } = useWatchAsset();
const { isInjected } = useConnectorInfo();
const { data: walletClient } = useWalletClient();

if (!walletClient || !address || !isInjected) return null;
if (!walletClient || !address) return null;

const onClickHandler = async () => {
if (!address) return;
Expand All @@ -51,10 +49,36 @@ export const TokenToWallet: TokenToWalletComponent = ({ address, ...rest }) => {
type: 'ERC20',
options: { address, decimals, symbol },
});
if (!result) return;

ToastInfo('Tokens were successfully added to your wallet', {});
if (result) {
ToastInfo('Tokens were successfully added to your wallet', {});
} else {
ToastInfo('User rejected the request');
}
} catch (error) {
// Associating error code to UI messages
if (error && typeof error === 'object' && 'code' in error) {
if (
error?.code === -32602 // Trust
) {
ToastInfo('Tokens already existed');
} else if (
error?.code === 4001 || // Metamask, coin98, okx
error?.code === -32603 // Bitget
) {
ToastInfo('User rejected the request');
} else if (
error?.code === -1 || // LL and Safe through WC
error?.code === -32601 // LL in Discover
) {
ToastError('The wallet does not support adding a token');
} else {
ToastError(
'An error occurred while adding token to wallet\nThe wallet probably does not support adding a token',
);
}
}

console.warn('[TokenToWallet] error adding token to wallet', error);
}
};
Expand Down

0 comments on commit a61d070

Please sign in to comment.