From d1053674b3d639192d3aa3caa1656376102612ed Mon Sep 17 00:00:00 2001 From: chendatony31 <31647753@qq.com> Date: Wed, 5 Jul 2023 16:27:13 +0800 Subject: [PATCH] feat: Add TokenPocket Wallet support --- packages/connectkit/src/assets/logos.tsx | 28 +++++++++++++++++++ packages/connectkit/src/utils/index.ts | 11 ++++++++ .../src/wallets/connectors/tokenPocket.tsx | 27 ++++++++++++++++++ packages/connectkit/src/wallets/index.ts | 2 ++ .../src/wallets/useDefaultWallets.tsx | 3 +- 5 files changed, 70 insertions(+), 1 deletion(-) create mode 100644 packages/connectkit/src/wallets/connectors/tokenPocket.tsx diff --git a/packages/connectkit/src/assets/logos.tsx b/packages/connectkit/src/assets/logos.tsx index 3e423f6e..151d0226 100644 --- a/packages/connectkit/src/assets/logos.tsx +++ b/packages/connectkit/src/assets/logos.tsx @@ -987,6 +987,33 @@ const Rabby = ({ ...props }) => ( ); +const TokenPocket = ({ ...props }) => ( + + + + + + + + + + + + + + + + + + + + + + +); + export const OtherWallets = ({ ...props }) => { const column: React.CSSProperties = { position: 'relative', @@ -1053,4 +1080,5 @@ export default { Frame, Dawn, Rabby, + TokenPocket, }; diff --git a/packages/connectkit/src/utils/index.ts b/packages/connectkit/src/utils/index.ts index 96d32884..04cb0862 100644 --- a/packages/connectkit/src/utils/index.ts +++ b/packages/connectkit/src/utils/index.ts @@ -118,6 +118,9 @@ const isMetaMask = () => { const isRabby = Boolean(ethereum.isRabby); if (isRabby) return false; + const isTokenPocket = Boolean(ethereum.isTokenPocket); + if (isTokenPocket) return false; + if (isPhantom()) return false; return true; @@ -174,6 +177,13 @@ const isRabby = () => { ); }; +const isTokenPocket = () => { + if (typeof window === 'undefined') return false; + const { ethereum } = window; + + return Boolean(ethereum?.isTokenPocket); +} + type ReactChildArray = ReturnType; function flattenChildren(children: React.ReactNode): ReactChildArray { const childrenArray = React.Children.toArray(children); @@ -220,5 +230,6 @@ export { isFrame, isPhantom, isRabby, + isTokenPocket, flattenChildren, }; diff --git a/packages/connectkit/src/wallets/connectors/tokenPocket.tsx b/packages/connectkit/src/wallets/connectors/tokenPocket.tsx new file mode 100644 index 00000000..a70190a9 --- /dev/null +++ b/packages/connectkit/src/wallets/connectors/tokenPocket.tsx @@ -0,0 +1,27 @@ +import { WalletProps } from '../wallet'; + +import { isTokenPocket } from '../../utils'; +import Logos from '../../assets/logos'; + +export const tokenPocket = (): WalletProps => { + const isInstalled = isTokenPocket(); + + return { + id: 'tokenPocket', + name: 'TokenPocket Wallet', + logos: { + default: + }, + logoBackground: '#2980FE', + scannable: false, + downloadUrls: { + website: 'https://www.tokenpocket.pro/en/download/app', + download: 'https://www.tokenpocket.pro/en/download/app', + android: 'https://play.google.com/store/apps/details?id=vip.mytokenpocket', + ios: 'https://apps.apple.com/us/app/tp-global-wallet/id6444625622', + chrome: + 'https://chrome.google.com/webstore/detail/tokenpocket/mfgccjchihfkkindfppnaooecgfneiii', + }, + installed: isInstalled, + }; +}; diff --git a/packages/connectkit/src/wallets/index.ts b/packages/connectkit/src/wallets/index.ts index 4cf82905..4915e28e 100644 --- a/packages/connectkit/src/wallets/index.ts +++ b/packages/connectkit/src/wallets/index.ts @@ -20,6 +20,7 @@ import { frame } from './connectors/frame'; import { phantom } from './connectors/phantom'; import { dawn } from './connectors/dawn'; import { rabby } from './connectors/rabby'; +import { tokenPocket } from './connectors/tokenPocket'; export const getWallets = () => { return [ @@ -47,5 +48,6 @@ export const getWallets = () => { phantom(), dawn(), rabby(), + tokenPocket(), ]; }; diff --git a/packages/connectkit/src/wallets/useDefaultWallets.tsx b/packages/connectkit/src/wallets/useDefaultWallets.tsx index 79fc4514..0bc485fc 100644 --- a/packages/connectkit/src/wallets/useDefaultWallets.tsx +++ b/packages/connectkit/src/wallets/useDefaultWallets.tsx @@ -33,7 +33,8 @@ function useDefaultWallets(): WalletProps[] | any { 'frame', 'phantom', 'dawn', - 'rabby' + 'rabby', + 'tokenPocket' ); const wallets = getWallets();