From 25eb4b5e79f049f0cec0b2cc6541cc7a58e93215 Mon Sep 17 00:00:00 2001 From: Alexander Khramov Date: Thu, 21 Dec 2023 18:42:50 +0300 Subject: [PATCH 01/15] feat: add metamask wallet adapter --- packages/wallets/metamask/.eslintrc.json | 9 +++ packages/wallets/metamask/package.json | 43 ++++++++++++++ packages/wallets/metamask/rollup.config.js | 57 +++++++++++++++++++ packages/wallets/metamask/src/custom.d.ts | 4 ++ packages/wallets/metamask/src/icons/index.ts | 2 + .../metamask/src/icons/metamask-inverted.svg | 32 +++++++++++ .../wallets/metamask/src/icons/metamask.svg | 32 +++++++++++ packages/wallets/metamask/src/index.ts | 22 +++++++ packages/wallets/metamask/tsconfig.json | 8 +++ 9 files changed, 209 insertions(+) create mode 100644 packages/wallets/metamask/.eslintrc.json create mode 100644 packages/wallets/metamask/package.json create mode 100644 packages/wallets/metamask/rollup.config.js create mode 100644 packages/wallets/metamask/src/custom.d.ts create mode 100644 packages/wallets/metamask/src/icons/index.ts create mode 100644 packages/wallets/metamask/src/icons/metamask-inverted.svg create mode 100644 packages/wallets/metamask/src/icons/metamask.svg create mode 100644 packages/wallets/metamask/src/index.ts create mode 100644 packages/wallets/metamask/tsconfig.json diff --git a/packages/wallets/metamask/.eslintrc.json b/packages/wallets/metamask/.eslintrc.json new file mode 100644 index 00000000..06342be5 --- /dev/null +++ b/packages/wallets/metamask/.eslintrc.json @@ -0,0 +1,9 @@ +{ + "root": true, + "extends": [ + "custom" + ], + "rules": { + "import/no-extraneous-dependencies": "warn" + } +} diff --git a/packages/wallets/metamask/package.json b/packages/wallets/metamask/package.json new file mode 100644 index 00000000..8e135142 --- /dev/null +++ b/packages/wallets/metamask/package.json @@ -0,0 +1,43 @@ +{ + "name": "@reef-knot/wallet-adapter-metamask", + "version": "1.0.0", + "main": "dist/index.js", + "types": "dist/index.d.ts", + "exports": { + ".": "./dist/index.js" + }, + "typesVersions": { + "*": { + ".": [ + "dist/index.d.ts" + ] + } + }, + "type": "module", + "files": [ + "dist" + ], + "license": "MIT", + "homepage": "https://github.com/lidofinance/reef-knot", + "bugs": { + "url": "https://github.com/lidofinance/reef-knot/issues" + }, + "publishConfig": { + "registry": "https://registry.npmjs.org/", + "access": "public" + }, + "scripts": { + "build": "rollup -c", + "dev": "dev=on rollup -c -w", + "lint": "eslint --ext ts,tsx,js,mjs ." + }, + "devDependencies": { + "@reef-knot/types": "^1.3.0", + "@svgr/rollup": "^6.5.1", + "eslint-config-custom": "*" + }, + "peerDependencies": { + "wagmi": "^0.12.19", + "@reef-knot/types": "^1.2.1" + } +} diff --git a/packages/wallets/metamask/rollup.config.js b/packages/wallets/metamask/rollup.config.js new file mode 100644 index 00000000..a91f4d4a --- /dev/null +++ b/packages/wallets/metamask/rollup.config.js @@ -0,0 +1,57 @@ +import * as process from 'node:process'; +import fs from 'node:fs'; +import ts from 'typescript'; +import { defineConfig } from 'rollup'; +import del from 'rollup-plugin-delete'; +import resolve from '@rollup/plugin-node-resolve'; +import typescript from 'rollup-plugin-typescript2'; +import { babel } from '@rollup/plugin-babel'; +import svgr from '@svgr/rollup'; + +const extensions = ['.js', '.jsx', '.ts', '.tsx', '.svg']; +const { dependencies = {}, peerDependencies = {} } = + JSON.parse(fs.readFileSync('package.json', 'utf-8')); +const commonExternal = [ + 'react/jsx-runtime', + // Do not include in the bundle subpath exports like: + /^@reef-knot\/.*/, // e.g. @reef-knot// + /^reef-knot\/.*/, // e.g. reef-knot/wallets-icons/react +]; +const external = [ + ...commonExternal, + ...Object.keys({ ...dependencies, ...peerDependencies }), + /node_modules/ +]; +const isDevMode = process.env.dev === 'on'; + +export default defineConfig({ + input: './src/index', + output: { + format: 'es', + dir: 'dist', + preserveModules: true, + preserveModulesRoot: 'src', + generatedCode: 'es2015' + }, + plugins: [ + isDevMode ? null : del({ targets: 'dist/*', runOnce: true }), + resolve({ extensions, preferBuiltins: true }), + svgr({ + typescript: true, + prettier: false, + memo: true, + svgo: false, + }), + typescript({ + typescript: ts, + tsconfig: 'tsconfig.json', + check: false, + }), + babel({ + exclude: 'node_modules/**', + babelHelpers: 'bundled', + extensions, + }), + ], + external, +}); diff --git a/packages/wallets/metamask/src/custom.d.ts b/packages/wallets/metamask/src/custom.d.ts new file mode 100644 index 00000000..006534e2 --- /dev/null +++ b/packages/wallets/metamask/src/custom.d.ts @@ -0,0 +1,4 @@ +declare module '*.svg' { + const content: React.FunctionComponent>; + export default content; +} diff --git a/packages/wallets/metamask/src/icons/index.ts b/packages/wallets/metamask/src/icons/index.ts new file mode 100644 index 00000000..1d5a94ff --- /dev/null +++ b/packages/wallets/metamask/src/icons/index.ts @@ -0,0 +1,2 @@ +export { default as WalletIcon } from './metamask.svg'; +export { default as WalletIconInverted } from './metamask-inverted.svg'; diff --git a/packages/wallets/metamask/src/icons/metamask-inverted.svg b/packages/wallets/metamask/src/icons/metamask-inverted.svg new file mode 100644 index 00000000..b0822d37 --- /dev/null +++ b/packages/wallets/metamask/src/icons/metamask-inverted.svg @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/wallets/metamask/src/icons/metamask.svg b/packages/wallets/metamask/src/icons/metamask.svg new file mode 100644 index 00000000..8cd45b8d --- /dev/null +++ b/packages/wallets/metamask/src/icons/metamask.svg @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/wallets/metamask/src/index.ts b/packages/wallets/metamask/src/index.ts new file mode 100644 index 00000000..7a090984 --- /dev/null +++ b/packages/wallets/metamask/src/index.ts @@ -0,0 +1,22 @@ +import { WalletAdapterType } from '@reef-knot/types'; +import { MetaMaskConnector } from 'wagmi/connectors/metaMask'; +import { WalletIcon, WalletIconInverted } from './icons/index.js'; + +export const MetaMask: WalletAdapterType = ({ chains }) => ({ + walletName: 'MetaMask', + walletId: 'metamask', + icon: { + light: WalletIcon, + dark: WalletIconInverted, + }, + detector: () => !!globalThis.window?.ethereum?.isMetaMask, + downloadURLs: { + default: 'https://metamask.app.link/dapp/', + }, + connector: new MetaMaskConnector({ + chains, + options: { + UNSTABLE_shimOnConnectSelectAccount: true, // allows to select a different MetaMask account + }, + }), +}); diff --git a/packages/wallets/metamask/tsconfig.json b/packages/wallets/metamask/tsconfig.json new file mode 100644 index 00000000..23709e73 --- /dev/null +++ b/packages/wallets/metamask/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "tsconfig/react-library.json", + "include": ["src/**/*"], + "exclude": ["node_modules", "dist", "**/*.test.*"], + "compilerOptions": { + "rootDir": "src", + } +} From b009385501d37703612a67d6cb666b5d70b18b9d Mon Sep 17 00:00:00 2001 From: Alexander Khramov Date: Thu, 21 Dec 2023 18:45:33 +0300 Subject: [PATCH 02/15] feat: add browserExtension wallet adapter --- .../wallets/browserExtension/.eslintrc.json | 9 +++ .../wallets/browserExtension/package.json | 43 ++++++++++++++ .../wallets/browserExtension/rollup.config.js | 57 +++++++++++++++++++ .../wallets/browserExtension/src/custom.d.ts | 4 ++ .../src/icons/browserExtension.svg | 10 ++++ .../browserExtension/src/icons/index.ts | 1 + .../wallets/browserExtension/src/index.ts | 20 +++++++ .../wallets/browserExtension/tsconfig.json | 8 +++ 8 files changed, 152 insertions(+) create mode 100644 packages/wallets/browserExtension/.eslintrc.json create mode 100644 packages/wallets/browserExtension/package.json create mode 100644 packages/wallets/browserExtension/rollup.config.js create mode 100644 packages/wallets/browserExtension/src/custom.d.ts create mode 100644 packages/wallets/browserExtension/src/icons/browserExtension.svg create mode 100644 packages/wallets/browserExtension/src/icons/index.ts create mode 100644 packages/wallets/browserExtension/src/index.ts create mode 100644 packages/wallets/browserExtension/tsconfig.json diff --git a/packages/wallets/browserExtension/.eslintrc.json b/packages/wallets/browserExtension/.eslintrc.json new file mode 100644 index 00000000..06342be5 --- /dev/null +++ b/packages/wallets/browserExtension/.eslintrc.json @@ -0,0 +1,9 @@ +{ + "root": true, + "extends": [ + "custom" + ], + "rules": { + "import/no-extraneous-dependencies": "warn" + } +} diff --git a/packages/wallets/browserExtension/package.json b/packages/wallets/browserExtension/package.json new file mode 100644 index 00000000..c4e18133 --- /dev/null +++ b/packages/wallets/browserExtension/package.json @@ -0,0 +1,43 @@ +{ + "name": "@reef-knot/wallet-adapter-browserExtension", + "version": "1.0.0", + "main": "dist/index.js", + "types": "dist/index.d.ts", + "exports": { + ".": "./dist/index.js" + }, + "typesVersions": { + "*": { + ".": [ + "dist/index.d.ts" + ] + } + }, + "type": "module", + "files": [ + "dist" + ], + "license": "MIT", + "homepage": "https://github.com/lidofinance/reef-knot", + "bugs": { + "url": "https://github.com/lidofinance/reef-knot/issues" + }, + "publishConfig": { + "registry": "https://registry.npmjs.org/", + "access": "public" + }, + "scripts": { + "build": "rollup -c", + "dev": "dev=on rollup -c -w", + "lint": "eslint --ext ts,tsx,js,mjs ." + }, + "devDependencies": { + "@reef-knot/types": "^1.3.0", + "@svgr/rollup": "^6.5.1", + "eslint-config-custom": "*" + }, + "peerDependencies": { + "wagmi": "^0.12.19", + "@reef-knot/types": "^1.2.1" + } +} diff --git a/packages/wallets/browserExtension/rollup.config.js b/packages/wallets/browserExtension/rollup.config.js new file mode 100644 index 00000000..a91f4d4a --- /dev/null +++ b/packages/wallets/browserExtension/rollup.config.js @@ -0,0 +1,57 @@ +import * as process from 'node:process'; +import fs from 'node:fs'; +import ts from 'typescript'; +import { defineConfig } from 'rollup'; +import del from 'rollup-plugin-delete'; +import resolve from '@rollup/plugin-node-resolve'; +import typescript from 'rollup-plugin-typescript2'; +import { babel } from '@rollup/plugin-babel'; +import svgr from '@svgr/rollup'; + +const extensions = ['.js', '.jsx', '.ts', '.tsx', '.svg']; +const { dependencies = {}, peerDependencies = {} } = + JSON.parse(fs.readFileSync('package.json', 'utf-8')); +const commonExternal = [ + 'react/jsx-runtime', + // Do not include in the bundle subpath exports like: + /^@reef-knot\/.*/, // e.g. @reef-knot// + /^reef-knot\/.*/, // e.g. reef-knot/wallets-icons/react +]; +const external = [ + ...commonExternal, + ...Object.keys({ ...dependencies, ...peerDependencies }), + /node_modules/ +]; +const isDevMode = process.env.dev === 'on'; + +export default defineConfig({ + input: './src/index', + output: { + format: 'es', + dir: 'dist', + preserveModules: true, + preserveModulesRoot: 'src', + generatedCode: 'es2015' + }, + plugins: [ + isDevMode ? null : del({ targets: 'dist/*', runOnce: true }), + resolve({ extensions, preferBuiltins: true }), + svgr({ + typescript: true, + prettier: false, + memo: true, + svgo: false, + }), + typescript({ + typescript: ts, + tsconfig: 'tsconfig.json', + check: false, + }), + babel({ + exclude: 'node_modules/**', + babelHelpers: 'bundled', + extensions, + }), + ], + external, +}); diff --git a/packages/wallets/browserExtension/src/custom.d.ts b/packages/wallets/browserExtension/src/custom.d.ts new file mode 100644 index 00000000..006534e2 --- /dev/null +++ b/packages/wallets/browserExtension/src/custom.d.ts @@ -0,0 +1,4 @@ +declare module '*.svg' { + const content: React.FunctionComponent>; + export default content; +} diff --git a/packages/wallets/browserExtension/src/icons/browserExtension.svg b/packages/wallets/browserExtension/src/icons/browserExtension.svg new file mode 100644 index 00000000..874c8223 --- /dev/null +++ b/packages/wallets/browserExtension/src/icons/browserExtension.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/packages/wallets/browserExtension/src/icons/index.ts b/packages/wallets/browserExtension/src/icons/index.ts new file mode 100644 index 00000000..51357a8d --- /dev/null +++ b/packages/wallets/browserExtension/src/icons/index.ts @@ -0,0 +1 @@ +export { default as WalletIcon } from './browserExtension.svg'; diff --git a/packages/wallets/browserExtension/src/index.ts b/packages/wallets/browserExtension/src/index.ts new file mode 100644 index 00000000..26c977d3 --- /dev/null +++ b/packages/wallets/browserExtension/src/index.ts @@ -0,0 +1,20 @@ +import { WalletAdapterType } from '@reef-knot/types'; +import { InjectedConnector } from 'wagmi/connectors/injected'; +import { WalletIcon } from './icons/index.js'; + +const id = 'browserExtension'; +const name = 'Browser'; + +export class BrowserExtensionConnector extends InjectedConnector { + readonly id = id; + readonly name = name; +} + +export const BrowserExtension: WalletAdapterType = ({ chains }) => ({ + walletName: name, + walletId: id, + icon: WalletIcon, + connector: new BrowserExtensionConnector({ + chains, + }), +}); diff --git a/packages/wallets/browserExtension/tsconfig.json b/packages/wallets/browserExtension/tsconfig.json new file mode 100644 index 00000000..23709e73 --- /dev/null +++ b/packages/wallets/browserExtension/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "tsconfig/react-library.json", + "include": ["src/**/*"], + "exclude": ["node_modules", "dist", "**/*.test.*"], + "compilerOptions": { + "rootDir": "src", + } +} From 8ba1d8c26633c1774f3a7735e565eb88ea957a4d Mon Sep 17 00:00:00 2001 From: Alexander Khramov Date: Thu, 21 Dec 2023 18:49:50 +0300 Subject: [PATCH 03/15] feat(wallets-list): add metamask, browserExtension --- packages/wallets-list/package.json | 4 +++- packages/wallets-list/src/ethereum.ts | 6 +++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/packages/wallets-list/package.json b/packages/wallets-list/package.json index e4a69d19..05b63892 100644 --- a/packages/wallets-list/package.json +++ b/packages/wallets-list/package.json @@ -37,8 +37,10 @@ "lint": "eslint --ext ts,tsx,js,mjs ." }, "dependencies": { - "@reef-knot/wallet-adapter-exodus": "1.2.4", + "@reef-knot/wallet-adapter-browserExtension": "1.0.0", + "@reef-knot/wallet-adapter-metamask": "1.0.0", "@reef-knot/wallet-adapter-okx": "1.3.1", + "@reef-knot/wallet-adapter-exodus": "1.2.4", "@reef-knot/wallet-adapter-walletconnect": "1.2.4", "@reef-knot/wallet-adapter-ambire": "1.2.4", "@reef-knot/wallet-adapter-bitkeep": "1.1.1", diff --git a/packages/wallets-list/src/ethereum.ts b/packages/wallets-list/src/ethereum.ts index ef197782..9eed1b36 100644 --- a/packages/wallets-list/src/ethereum.ts +++ b/packages/wallets-list/src/ethereum.ts @@ -1,6 +1,8 @@ import { WalletsListType } from '@reef-knot/types'; -import { Exodus } from '@reef-knot/wallet-adapter-exodus'; +import { BrowserExtension } from '@reef-knot/wallet-adapter-browserExtension'; +import { MetaMask } from '@reef-knot/wallet-adapter-metamask'; import { Okx } from '@reef-knot/wallet-adapter-okx'; +import { Exodus } from '@reef-knot/wallet-adapter-exodus'; import { WalletConnect } from '@reef-knot/wallet-adapter-walletconnect'; import { Ambire } from '@reef-knot/wallet-adapter-ambire'; import { BitKeep } from '@reef-knot/wallet-adapter-bitkeep'; @@ -13,6 +15,8 @@ import { Coinbase } from '@reef-knot/wallet-adapter-coinbase'; import { Ledger } from '@reef-knot/wallet-adapter-ledger-hid'; export const WalletsListEthereum: WalletsListType = { + browserExtension: BrowserExtension, + metamask: MetaMask, okx: Okx, walletconnect: WalletConnect, ledgerHID: Ledger, From 4ba24fb0cbd3da5345737b1b8e61a25003dbd8e5 Mon Sep 17 00:00:00 2001 From: Alexander Khramov Date: Thu, 21 Dec 2023 18:55:04 +0300 Subject: [PATCH 04/15] feat(connect-wallet-modal): use mm and browser adapters, refactor --- packages/connect-wallet-modal/package.json | 2 - .../components/WalletsModal/WalletsModal.tsx | 13 ++- .../WalletsModal/WalletsModalForEth.tsx | 36 +++++++ .../WalletsModal/getWalletsButtons.ts | 64 +++++++++++++ .../src/components/WalletsModal/index.ts | 1 + .../src/components/WalletsModal/types.ts | 11 ++- .../WalletsModalForEth/WalletsModalForEth.tsx | 94 ------------------- .../components/WalletsModalForEth/index.ts | 1 - .../components/WalletsModalForEth/types.ts | 5 - .../src/components/index.ts | 1 - .../src/connectButtons/ConnectBrowser.tsx | 81 ++++++++++++++++ .../src/connectButtons/connectMetamask.tsx | 76 --------------- .../src/connectButtons/index.ts | 2 +- .../src/constants/conflictChecks.ts | 21 ----- .../src/constants/index.ts | 2 - .../src/constants/wallets.ts | 6 -- .../src/helpers/checkConflicts.tsx | 19 ---- .../src/helpers/user-agents.ts | 10 -- packages/connect-wallet-modal/src/index.ts | 1 - 19 files changed, 203 insertions(+), 243 deletions(-) create mode 100644 packages/connect-wallet-modal/src/components/WalletsModal/WalletsModalForEth.tsx create mode 100644 packages/connect-wallet-modal/src/components/WalletsModal/getWalletsButtons.ts delete mode 100644 packages/connect-wallet-modal/src/components/WalletsModalForEth/WalletsModalForEth.tsx delete mode 100644 packages/connect-wallet-modal/src/components/WalletsModalForEth/index.ts delete mode 100644 packages/connect-wallet-modal/src/components/WalletsModalForEth/types.ts create mode 100644 packages/connect-wallet-modal/src/connectButtons/ConnectBrowser.tsx delete mode 100644 packages/connect-wallet-modal/src/connectButtons/connectMetamask.tsx delete mode 100644 packages/connect-wallet-modal/src/constants/conflictChecks.ts delete mode 100644 packages/connect-wallet-modal/src/constants/index.ts delete mode 100644 packages/connect-wallet-modal/src/constants/wallets.ts delete mode 100644 packages/connect-wallet-modal/src/helpers/checkConflicts.tsx diff --git a/packages/connect-wallet-modal/package.json b/packages/connect-wallet-modal/package.json index 9dbd52af..38e0e9b4 100644 --- a/packages/connect-wallet-modal/package.json +++ b/packages/connect-wallet-modal/package.json @@ -49,7 +49,6 @@ "@reef-knot/types": "^1.4.0", "@reef-knot/ui-react": "^1.0.7", "@reef-knot/wallets-helpers": "^1.1.5", - "@reef-knot/wallets-icons": "^1.5.0", "@reef-knot/web3-react": "^1.12.0", "@reef-knot/ledger-connector": "^2.0.0", "@types/ua-parser-js": "^0.7.36", @@ -64,7 +63,6 @@ "@reef-knot/types": "^1.2.1", "@reef-knot/ui-react": "^1.0.4", "@reef-knot/wallets-helpers": "^1.1.2", - "@reef-knot/wallets-icons": "^1.0.0", "@reef-knot/web3-react": "^1.12.0", "@reef-knot/ledger-connector": "^2.0.0", "react": ">=18", diff --git a/packages/connect-wallet-modal/src/components/WalletsModal/WalletsModal.tsx b/packages/connect-wallet-modal/src/components/WalletsModal/WalletsModal.tsx index 4e79eeb3..31a1c5ac 100644 --- a/packages/connect-wallet-modal/src/components/WalletsModal/WalletsModal.tsx +++ b/packages/connect-wallet-modal/src/components/WalletsModal/WalletsModal.tsx @@ -14,6 +14,7 @@ import { WalletsButtonsContainer } from './styles'; import { NOOP, useLocalStorage } from '../../helpers'; import { LedgerModal } from '../Ledger'; import { AcceptTermsModal } from './components'; +import { getWalletsButtons } from './getWalletsButtons'; export function WalletsModal(props: WalletsModalProps) { const { @@ -23,6 +24,9 @@ export function WalletsModal(props: WalletsModalProps) { metrics, termsLink, privacyNoticeLink, + buttonComponentsByConnectorId, + walletDataList, + hiddenWallets, } = props; const [termsChecked, setTermsChecked] = useLocalStorage( @@ -133,12 +137,17 @@ export function WalletsModal(props: WalletsModalProps) { > - {props.children(buttonsCommonProps)} + {getWalletsButtons({ + commonProps: buttonsCommonProps, + buttonComponentsByConnectorId, + hiddenWallets, + walletDataList, + })} ); } } - // eslint-disable-next-line react/jsx-no-useless-fragment + return <>; } diff --git a/packages/connect-wallet-modal/src/components/WalletsModal/WalletsModalForEth.tsx b/packages/connect-wallet-modal/src/components/WalletsModal/WalletsModalForEth.tsx new file mode 100644 index 00000000..26d946b6 --- /dev/null +++ b/packages/connect-wallet-modal/src/components/WalletsModal/WalletsModalForEth.tsx @@ -0,0 +1,36 @@ +import React from 'react'; +import { useReefKnotContext } from '@reef-knot/core-react'; +import { + ConnectInjected, + ConnectLedger, + ConnectWC, + ConnectCoinbase, + ConnectBrowser, +} from '../../connectButtons'; +import { WalletsModal } from './WalletsModal'; +import type { ButtonComponentsByConnectorId, WalletsModalProps } from './types'; + +const buttonComponentsByConnectorId: ButtonComponentsByConnectorId = { + default: ConnectInjected, // fallback + browserExtension: ConnectBrowser, + walletConnect: ConnectWC, + coinbaseWallet: ConnectCoinbase, + ledgerHID: ConnectLedger, +}; + +type WalletsModalForEthProps = Omit< + WalletsModalProps, + 'buttonComponentsByConnectorId' | 'walletDataList' +>; + +export function WalletsModalForEth(props: WalletsModalForEthProps) { + const { walletDataList } = useReefKnotContext(); + + return ( + + ); +} diff --git a/packages/connect-wallet-modal/src/components/WalletsModal/getWalletsButtons.ts b/packages/connect-wallet-modal/src/components/WalletsModal/getWalletsButtons.ts new file mode 100644 index 00000000..f6c9d5a3 --- /dev/null +++ b/packages/connect-wallet-modal/src/components/WalletsModal/getWalletsButtons.ts @@ -0,0 +1,64 @@ +import React from 'react'; +import { + ButtonComponentsByConnectorId, + ButtonsCommonProps, + WalletsModalProps, +} from './types'; +import { WalletAdapterData } from '@reef-knot/types'; + +export function addWalletTo( + walletsList: string[], + walletId: string, + condition: boolean, // meant to be a wallet-detector function result +) { + // If condition is true (usually means that a wallet is detected), + // move it to the first place in the wallets list, so a user can see it right away + if (condition) { + walletsList.unshift(walletId); + } else { + walletsList.push(walletId); + } +} + +export function getWalletsButtons({ + commonProps, + buttonComponentsByConnectorId, + walletDataList = [], + hiddenWallets = [], +}: { + commonProps: ButtonsCommonProps; + buttonComponentsByConnectorId: ButtonComponentsByConnectorId; + walletDataList: WalletAdapterData[]; + hiddenWallets: WalletsModalProps['hiddenWallets']; +}) { + let wallets: string[] = []; + + walletDataList.forEach((walletData) => { + const { walletId, detector } = walletData; + addWalletTo(wallets, walletId, !!detector?.()); + }); + + wallets = [...wallets].filter( + // Filtering wallets marked as hidden + (wallet) => !hiddenWallets.includes(wallet), + ); + + return wallets.map((walletId) => { + // Handle new wallet adapters + const walletData = walletDataList.find( + (data) => data.walletId === walletId, + ); + if (!walletData) throw 'walletData is not found in the walletDataList'; + const connectorId = walletData.connector.id; + + const component = + buttonComponentsByConnectorId[connectorId] ?? + buttonComponentsByConnectorId.default; + + return React.createElement(component, { + key: walletId, + ...commonProps, + ...walletData, + }); + }); +} diff --git a/packages/connect-wallet-modal/src/components/WalletsModal/index.ts b/packages/connect-wallet-modal/src/components/WalletsModal/index.ts index 45b87053..7ee8971e 100644 --- a/packages/connect-wallet-modal/src/components/WalletsModal/index.ts +++ b/packages/connect-wallet-modal/src/components/WalletsModal/index.ts @@ -1,2 +1,3 @@ export * from './WalletsModal'; +export * from './WalletsModalForEth'; export * from './types'; diff --git a/packages/connect-wallet-modal/src/components/WalletsModal/types.ts b/packages/connect-wallet-modal/src/components/WalletsModal/types.ts index 42045f3e..e53c5e98 100644 --- a/packages/connect-wallet-modal/src/components/WalletsModal/types.ts +++ b/packages/connect-wallet-modal/src/components/WalletsModal/types.ts @@ -1,5 +1,6 @@ -import { ReactNode } from 'react'; +import React, { ReactNode } from 'react'; import { ModalProps } from '@reef-knot/ui-react'; +import { WalletAdapterData } from '@reef-knot/types'; export type RequirementsData = { icon?: ReactNode; @@ -14,8 +15,14 @@ export type Metrics = { }; }; +export type ButtonComponentsByConnectorId = { + [K: string]: React.ComponentType; +}; + export type WalletsModalProps = ModalProps & { - children: (props: ButtonsCommonProps) => ReactNode; + buttonComponentsByConnectorId: ButtonComponentsByConnectorId; + walletDataList: WalletAdapterData[]; + hiddenWallets?: string[]; shouldInvertWalletIcon?: boolean; buttonsFullWidth?: boolean; metrics?: Metrics; diff --git a/packages/connect-wallet-modal/src/components/WalletsModalForEth/WalletsModalForEth.tsx b/packages/connect-wallet-modal/src/components/WalletsModalForEth/WalletsModalForEth.tsx deleted file mode 100644 index c5fa9d26..00000000 --- a/packages/connect-wallet-modal/src/components/WalletsModalForEth/WalletsModalForEth.tsx +++ /dev/null @@ -1,94 +0,0 @@ -import React from 'react'; -import { useReefKnotContext } from '@reef-knot/core-react'; -import { WalletAdapterData } from '@reef-knot/types'; -import { - ConnectInjected, - ConnectLedger, - ConnectMetamask, - ConnectWC, - ConnectCoinbase, -} from '../../connectButtons'; -import { ButtonsCommonProps, WalletsModal } from '../WalletsModal'; -import { WalletsModalForEthProps } from './types'; -import { WALLET_IDS, WalletId } from '../../constants'; - -const walletsButtons: { [K in WalletId | string]: React.ComponentType } = { - default: ConnectInjected, - injected: ConnectInjected, - walletConnect: ConnectWC, - coinbaseWallet: ConnectCoinbase, - ledgerHID: ConnectLedger, - [WALLET_IDS.METAMASK]: ConnectMetamask, -}; - -function getWalletButton( - walletId: keyof typeof walletsButtons, - reactKey: string, - props: ButtonsCommonProps, -) { - const component = walletsButtons[walletId] ?? walletsButtons.default; - return React.createElement(component, { - key: reactKey, - ...props, - }); -} - -function addWalletTo( - walletsList: string[], - walletId: string, - condition: boolean, // meant to be a wallet-detector function result -) { - // If condition is true (usually means that a wallet is detected), - // move it to the first place in the wallets list, so a user can see it right away - if (condition) { - walletsList.unshift(walletId); - } else { - walletsList.push(walletId); - } -} - -function getWalletsButtons( - commonProps: ButtonsCommonProps, - walletDataList: WalletAdapterData[] = [], - hiddenWallets: WalletsModalForEthProps['hiddenWallets'] = [], -) { - let wallets: WalletId[] = [WALLET_IDS.METAMASK]; - - walletDataList.forEach((walletData) => { - const { walletId, detector } = walletData; - addWalletTo(wallets, walletId, !!detector?.()); - }); - - wallets = [...wallets].filter( - // Filtering wallets marked as hidden - (wallet) => !hiddenWallets.includes(wallet), - ); - - return wallets.map((walletId) => { - // Handle new wallet adapters - const walletData = walletDataList.find( - (data) => data.walletId === walletId, - ); - if (walletData) { - const connectorId = walletData.connector.id; - return getWalletButton(connectorId, walletId, { - ...commonProps, - ...walletData, - }); - } - // Handle legacy wallets - return getWalletButton(walletId, walletId, commonProps); - }); -} - -export function WalletsModalForEth(props: WalletsModalForEthProps) { - const { walletDataList } = useReefKnotContext(); - - return ( - - {(commonProps: ButtonsCommonProps) => - getWalletsButtons(commonProps, walletDataList, props.hiddenWallets) - } - - ); -} diff --git a/packages/connect-wallet-modal/src/components/WalletsModalForEth/index.ts b/packages/connect-wallet-modal/src/components/WalletsModalForEth/index.ts deleted file mode 100644 index be359369..00000000 --- a/packages/connect-wallet-modal/src/components/WalletsModalForEth/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './WalletsModalForEth'; diff --git a/packages/connect-wallet-modal/src/components/WalletsModalForEth/types.ts b/packages/connect-wallet-modal/src/components/WalletsModalForEth/types.ts deleted file mode 100644 index 59e200f7..00000000 --- a/packages/connect-wallet-modal/src/components/WalletsModalForEth/types.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { WalletsModalProps } from '../WalletsModal'; - -export type WalletsModalForEthProps = Omit & { - hiddenWallets?: string[]; -}; diff --git a/packages/connect-wallet-modal/src/components/index.ts b/packages/connect-wallet-modal/src/components/index.ts index ab1aead9..77d44238 100644 --- a/packages/connect-wallet-modal/src/components/index.ts +++ b/packages/connect-wallet-modal/src/components/index.ts @@ -1,4 +1,3 @@ export * from './WalletsModal'; -export * from './WalletsModalForEth'; export * from './Terms'; export * from './ConnectButton'; diff --git a/packages/connect-wallet-modal/src/connectButtons/ConnectBrowser.tsx b/packages/connect-wallet-modal/src/connectButtons/ConnectBrowser.tsx new file mode 100644 index 00000000..b689bda4 --- /dev/null +++ b/packages/connect-wallet-modal/src/connectButtons/ConnectBrowser.tsx @@ -0,0 +1,81 @@ +import React, { ElementType, FC, useCallback } from 'react'; +import { useConnect } from 'wagmi'; +import { useDisconnect } from '@reef-knot/web3-react'; +import { WalletAdapterIcons } from '@reef-knot/types'; +import { ConnectButton } from '../components/ConnectButton'; +import { capitalize } from '../helpers'; +import { ConnectInjectedProps } from './types'; + +export const ConnectBrowser: FC = ( + props: ConnectInjectedProps, +) => { + const { + onConnect, + onBeforeConnect, + setRequirements, + shouldInvertWalletIcon, + metrics, + walletId, + walletName, + icon: WalletIcon, + connector, + ...rest + } = props; + + const web3ProviderIsDetected = !!globalThis.window?.ethereum; + const walletIdCapitalized = capitalize(walletId); + const metricsOnConnect = + metrics?.events?.connect?.handlers[`onConnect${walletIdCapitalized}`]; + const metricsOnClick = + metrics?.events?.click?.handlers[`onClick${walletIdCapitalized}`]; + + const { connectAsync } = useConnect({ + onSuccess() { + onConnect?.(); + metricsOnConnect?.(); + }, + }); + const { disconnect } = useDisconnect(); + + const ButtonIcon: ElementType = + (WalletIcon as ElementType) || (WalletIcon as WalletAdapterIcons)?.light; + + const handleConnect = useCallback(async () => { + onBeforeConnect?.(); + metricsOnClick?.(); + + if (web3ProviderIsDetected) { + disconnect?.(); + await connectAsync({ connector }); + } else { + setRequirements(true, { + icon: , + title: 'No wallets have been detected', + text: + 'This button is intended for generic connection of browser extension wallets,' + + ' but no default injected web3 provider has been detected.' + + ' Please install a suitable browser extension wallet or ensure that it is enabled, and reload the page.', + }); + } + }, [ + ButtonIcon, + connectAsync, + connector, + disconnect, + metricsOnClick, + onBeforeConnect, + setRequirements, + web3ProviderIsDetected, + ]); + + return ( + + {walletName} + + ); +}; diff --git a/packages/connect-wallet-modal/src/connectButtons/connectMetamask.tsx b/packages/connect-wallet-modal/src/connectButtons/connectMetamask.tsx deleted file mode 100644 index 53033919..00000000 --- a/packages/connect-wallet-modal/src/connectButtons/connectMetamask.tsx +++ /dev/null @@ -1,76 +0,0 @@ -import React, { FC, useCallback } from 'react'; -import { useConnectorMetamask } from '@reef-knot/web3-react'; -import { - MetaMaskCircle, - MetaMaskCircleInversion, -} from '@reef-knot/wallets-icons/react'; -import { CONFLICTS } from '../constants/conflictChecks'; -import { ConnectWalletProps } from './types'; -import { ConnectButton } from '../components/ConnectButton'; -import checkConflicts from '../helpers/checkConflicts'; - -const ConnectMetamask: FC = (props: ConnectWalletProps) => { - const { - onConnect, - onBeforeConnect, - shouldInvertWalletIcon, - setRequirements, - metrics, - ...rest - } = props; - const onConnectMetamask = - metrics?.events?.connect?.handlers.onConnectMetamask; - const onClickMetamask = metrics?.events?.click?.handlers.onClickMetamask; - const { connect } = useConnectorMetamask({ - onConnect: () => { - onConnect?.(); - onConnectMetamask?.(); - }, - }); - const WalletIcon = shouldInvertWalletIcon - ? MetaMaskCircleInversion - : MetaMaskCircle; - - const handleConnect = useCallback(async () => { - onBeforeConnect?.(); - onClickMetamask?.(); - - const { hasConflicts, conflictingApps, conflictingAppsArray } = - checkConflicts([ - CONFLICTS.Xdefi, - CONFLICTS.Exodus, - CONFLICTS.Coin98, - CONFLICTS.Tally, - CONFLICTS.Trust, - ]); - - if (hasConflicts) { - setRequirements(true, { - icon: , - title: "MetaMask couldn't connect", - text: - conflictingAppsArray.length > 1 ? ( -
- Your browser has these extensions turned-on:
- {conflictingApps}
- Please, turn them off and reload the page to enable MetaMask. -
- ) : ( - `Your browser has a turned-on “${conflictingApps}” extension.` + - ' Please, turn off this extension and reload the page to enable MetaMask.' - ), - }); - return; - } - - await connect(); - }, [connect, onBeforeConnect, onClickMetamask, setRequirements, WalletIcon]); - - return ( - - MetaMask - - ); -}; - -export default ConnectMetamask; diff --git a/packages/connect-wallet-modal/src/connectButtons/index.ts b/packages/connect-wallet-modal/src/connectButtons/index.ts index aa981c0f..6bdd6c95 100644 --- a/packages/connect-wallet-modal/src/connectButtons/index.ts +++ b/packages/connect-wallet-modal/src/connectButtons/index.ts @@ -1,5 +1,5 @@ export * from './ConnectLedger'; -export { default as ConnectMetamask } from './connectMetamask'; export * from './ConnectInjected'; export * from './ConnectWC'; export * from './ConnectCoinbase'; +export * from './ConnectBrowser'; diff --git a/packages/connect-wallet-modal/src/constants/conflictChecks.ts b/packages/connect-wallet-modal/src/constants/conflictChecks.ts deleted file mode 100644 index b31529b3..00000000 --- a/packages/connect-wallet-modal/src/constants/conflictChecks.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { helpers } from '@reef-knot/web3-react'; - -export type ConflictCheck = [checkerFn: () => boolean, walletName: string]; - -export type ConflictChecks = { - Tally: ConflictCheck; - Exodus: ConflictCheck; - Coin98: ConflictCheck; - Coinbase: ConflictCheck; - Xdefi: ConflictCheck; - Trust: ConflictCheck; -}; - -export const CONFLICTS: ConflictChecks = { - Tally: [helpers.isTallyProvider, 'Taho'], - Exodus: [helpers.isExodusProvider, 'Exodus'], - Coin98: [helpers.isCoin98Provider, 'Coin98'], - Coinbase: [helpers.isCoinbaseProvider, 'Coinbase'], - Xdefi: [helpers.isXdefiProvider, 'XDEFI'], - Trust: [helpers.isTrustProvider, 'Trust'], -}; diff --git a/packages/connect-wallet-modal/src/constants/index.ts b/packages/connect-wallet-modal/src/constants/index.ts deleted file mode 100644 index aac5bca9..00000000 --- a/packages/connect-wallet-modal/src/constants/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './wallets'; -export * from './conflictChecks'; diff --git a/packages/connect-wallet-modal/src/constants/wallets.ts b/packages/connect-wallet-modal/src/constants/wallets.ts deleted file mode 100644 index 053eb421..00000000 --- a/packages/connect-wallet-modal/src/constants/wallets.ts +++ /dev/null @@ -1,6 +0,0 @@ -export const WALLET_IDS = { - METAMASK: 'Metamask', - COINBASE: 'Coinbase', -} as const; - -export type WalletId = (typeof WALLET_IDS)[keyof typeof WALLET_IDS] | string; diff --git a/packages/connect-wallet-modal/src/helpers/checkConflicts.tsx b/packages/connect-wallet-modal/src/helpers/checkConflicts.tsx deleted file mode 100644 index dcab8eb4..00000000 --- a/packages/connect-wallet-modal/src/helpers/checkConflicts.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import { ConflictCheck } from '../constants/conflictChecks'; - -type ConflictsCheckResult = { - hasConflicts: boolean; - conflictingAppsArray: string[]; - conflictingApps: string; -}; - -const checkConflicts = (checks: ConflictCheck[]): ConflictsCheckResult => { - const conflictingAppsArray = checks - .filter(([checkerFn]) => checkerFn()) - .map(([, appName]) => appName); - const conflictingApps = conflictingAppsArray.join(', '); - const hasConflicts = conflictingAppsArray.length > 0; - - return { hasConflicts, conflictingApps, conflictingAppsArray }; -}; - -export default checkConflicts; diff --git a/packages/connect-wallet-modal/src/helpers/user-agents.ts b/packages/connect-wallet-modal/src/helpers/user-agents.ts index a1e290bd..c6fe553a 100644 --- a/packages/connect-wallet-modal/src/helpers/user-agents.ts +++ b/packages/connect-wallet-modal/src/helpers/user-agents.ts @@ -5,13 +5,3 @@ const parser = new UAParser(); export const os = parser.getOS(); export const isIOS = os.name === 'iOS'; export const isAndroid = os.name === 'Android'; - -export const device = parser.getDevice(); -export const isMobile = device.type === 'mobile'; -export const isTablet = device.type === 'tablet'; -export const isMobileOrTablet = isMobile || isTablet; - -export const checkIfBraveBrowser = async (): Promise => - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - (navigator.brave && (await navigator.brave.isBrave())) || false; diff --git a/packages/connect-wallet-modal/src/index.ts b/packages/connect-wallet-modal/src/index.ts index 15ff02d2..523d0c01 100644 --- a/packages/connect-wallet-modal/src/index.ts +++ b/packages/connect-wallet-modal/src/index.ts @@ -1,3 +1,2 @@ export * from './components'; export * from './connectButtons'; -export * from './constants'; From d9911898e860259010b29ecea6b36213dd8f7324 Mon Sep 17 00:00:00 2001 From: Alexander Khramov Date: Thu, 21 Dec 2023 21:24:16 +0300 Subject: [PATCH 05/15] fix: typings --- .../core-react/src/context/acceptTermsModal.tsx | 8 ++++++-- packages/core-react/src/context/reefKnot.tsx | 5 +++-- .../WCWarnBanner/WCWarnBannerContextProvider.tsx | 8 ++++++-- packages/web3-react/src/context/web3.tsx | 14 ++++++++------ 4 files changed, 23 insertions(+), 12 deletions(-) diff --git a/packages/core-react/src/context/acceptTermsModal.tsx b/packages/core-react/src/context/acceptTermsModal.tsx index fd66662a..3a79db55 100644 --- a/packages/core-react/src/context/acceptTermsModal.tsx +++ b/packages/core-react/src/context/acceptTermsModal.tsx @@ -1,4 +1,4 @@ -import React, { createContext, FC, useMemo, useState } from 'react'; +import React, { createContext, useMemo, useState } from 'react'; export type AcceptTermsModalContextValue = { acceptTermsModal: { @@ -21,7 +21,11 @@ export const AcceptTermsModalContext = createContext({ }, } as AcceptTermsModalContextValue); -export const AcceptTermsModalContextProvider: FC = ({ children }) => { +export const AcceptTermsModalContextProvider = ({ + children, +}: { + children: React.ReactNode; +}) => { const [isAcceptTermsModalVisible, setIsAcceptTermsModalVisible] = useState( isVisibleDefaultValue, ); diff --git a/packages/core-react/src/context/reefKnot.tsx b/packages/core-react/src/context/reefKnot.tsx index 7a19f675..21cf7aae 100644 --- a/packages/core-react/src/context/reefKnot.tsx +++ b/packages/core-react/src/context/reefKnot.tsx @@ -1,4 +1,4 @@ -import React, { createContext, FC, useMemo } from 'react'; +import React, { createContext, FC, ReactNode, useMemo } from 'react'; import { WalletAdapterData } from '@reef-knot/types'; import { Chain } from 'wagmi/chains'; import { WCWarnBannerContextProvider } from '@reef-knot/ui-react'; @@ -9,7 +9,8 @@ export interface ReefKnotContextProps { rpc: Record; walletconnectProjectId?: string; chains: Chain[]; - defaultChain?: Chain; + defaultChain: Chain; + children?: ReactNode; } export type ReefKnotContextValue = { diff --git a/packages/ui-react/src/components/WCWarnBanner/WCWarnBannerContextProvider.tsx b/packages/ui-react/src/components/WCWarnBanner/WCWarnBannerContextProvider.tsx index 8f3aa42f..27719059 100644 --- a/packages/ui-react/src/components/WCWarnBanner/WCWarnBannerContextProvider.tsx +++ b/packages/ui-react/src/components/WCWarnBanner/WCWarnBannerContextProvider.tsx @@ -1,10 +1,14 @@ -import React, { FC, useEffect, useMemo, useState } from 'react'; +import React, { useEffect, useMemo, useState } from 'react'; import { createPortal } from 'react-dom'; import { WCWarnBannerContext } from './WCWarnBannerContext'; import { WCWarnBanner } from './WCWarnBanner'; import { WCWarnBannerAutoRequest } from './WCWarnBannerAutoRequest'; -export const WCWarnBannerContextProvider: FC = ({ children }) => { +export const WCWarnBannerContextProvider = ({ + children, +}: { + children: React.ReactNode; +}) => { const [counter, setCounter] = useState(0); const [portalTarget, setPortalTarget] = useState(); const providerValue = useMemo( diff --git a/packages/web3-react/src/context/web3.tsx b/packages/web3-react/src/context/web3.tsx index 0dfda39d..87576692 100644 --- a/packages/web3-react/src/context/web3.tsx +++ b/packages/web3-react/src/context/web3.tsx @@ -18,6 +18,7 @@ import { POLLING_INTERVAL } from '../constants'; import ProviderConnectors, { ConnectorsContextProps } from './connectors'; export interface ProviderWeb3Props extends ConnectorsContextProps { + children: React.ReactNode; defaultChainId: CHAINS; supportedChainIds: CHAINS[]; swrConfig?: SWRConfiguration; @@ -32,7 +33,7 @@ function getLibrary(provider: ExternalProvider | JsonRpcFetchFunc) { return library; } -const ProviderSDK: FC = (props) => { +const ProviderSDK = (props: ProviderWeb3Props) => { const { rpc, defaultChainId, @@ -97,6 +98,7 @@ const ProviderSDK: FC = (props) => { ); return ( + // @ts-expect-error Property children does not exist on type IntrinsicAttributes & SDKContextProps = (props) => { ); }; -const ProviderWeb3: FC = (props) => { +const ProviderWeb3 = (props: ProviderWeb3Props) => { const { children, rpc, @@ -126,9 +128,9 @@ const ProviderWeb3: FC = (props) => { const supportedWagmiChains = wagmiChainsArray.filter((chain) => supportedChainIds.includes(chain.id), ); - const defaultWagmiChain = wagmiChainsArray.find( - (chain) => chain.id === defaultChainId, - ); + const defaultWagmiChain = + wagmiChainsArray.find((chain) => chain.id === defaultChainId) || + wagmiChainsArray[0]; return ( @@ -148,4 +150,4 @@ const ProviderWeb3: FC = (props) => { ); }; -export default memo>(ProviderWeb3); +export default memo(ProviderWeb3); From 4f74b8247bb4c4b1972e44f295ffb8e5440923fe Mon Sep 17 00:00:00 2001 From: Alexander Khramov Date: Thu, 21 Dec 2023 21:24:54 +0300 Subject: [PATCH 06/15] chore: deprecate wallets-icons --- packages/reef-knot/package.json | 1 - packages/reef-knot/src/index.ts | 1 - packages/reef-knot/src/packages/wallets-icons.ts | 1 - packages/wallets-icons/README.md | 8 ++++---- 4 files changed, 4 insertions(+), 7 deletions(-) delete mode 100644 packages/reef-knot/src/packages/wallets-icons.ts diff --git a/packages/reef-knot/package.json b/packages/reef-knot/package.json index 23405d7e..8ee10205 100644 --- a/packages/reef-knot/package.json +++ b/packages/reef-knot/package.json @@ -45,7 +45,6 @@ "@reef-knot/core-react": "1.8.0", "@reef-knot/web3-react": "1.12.0", "@reef-knot/ui-react": "1.0.7", - "@reef-knot/wallets-icons": "1.5.0", "@reef-knot/wallets-list": "1.10.0", "@reef-knot/wallets-helpers": "1.1.5", "@reef-knot/types": "1.4.0", diff --git a/packages/reef-knot/src/index.ts b/packages/reef-knot/src/index.ts index 461068ad..4b8915fc 100644 --- a/packages/reef-knot/src/index.ts +++ b/packages/reef-knot/src/index.ts @@ -1,6 +1,5 @@ export * as ConnectWalletModal from './packages/connect-wallet-modal'; export * as Web3React from './packages/web3-react'; export * as UIReact from './packages/ui-react'; -export * as WalletsIcons from './packages/wallets-icons'; export * as CoreReact from './packages/core-react'; export * as WalletsList from './packages/wallets'; diff --git a/packages/reef-knot/src/packages/wallets-icons.ts b/packages/reef-knot/src/packages/wallets-icons.ts deleted file mode 100644 index 9f9ab129..00000000 --- a/packages/reef-knot/src/packages/wallets-icons.ts +++ /dev/null @@ -1 +0,0 @@ -export * from '@reef-knot/wallets-icons'; diff --git a/packages/wallets-icons/README.md b/packages/wallets-icons/README.md index 9ab97fa9..3dca2cc8 100644 --- a/packages/wallets-icons/README.md +++ b/packages/wallets-icons/README.md @@ -1,5 +1,5 @@ -# Wallets Icons +# Wallets Icons [Deprecated] -Legacy package for storing icons for wallets. -It is planned to store such icons in wallet adapter packages. -Therefore, try not to use this package if you are adding a new wallet. +## Deprecation notice +The icons from this package is moved to wallet adapters. +Do not use this package. From 209a79a71bb29880ba274524ac393b974741fc78 Mon Sep 17 00:00:00 2001 From: Alexander Khramov Date: Thu, 21 Dec 2023 21:26:01 +0300 Subject: [PATCH 07/15] fix(demo-react): typings --- apps/demo-react/components/ConnectDisconnect.tsx | 2 +- apps/demo-react/components/MainSection.tsx | 2 +- apps/demo-react/components/ProviderWeb3WithProps.tsx | 2 +- apps/demo-react/components/contractTesting/Wrap.tsx | 4 ++-- apps/demo-react/components/info/WalletInfo.tsx | 5 +++-- apps/demo-react/hooks/useWithdrawalsData.ts | 2 +- 6 files changed, 9 insertions(+), 8 deletions(-) diff --git a/apps/demo-react/components/ConnectDisconnect.tsx b/apps/demo-react/components/ConnectDisconnect.tsx index d86aced5..eb8aa856 100644 --- a/apps/demo-react/components/ConnectDisconnect.tsx +++ b/apps/demo-react/components/ConnectDisconnect.tsx @@ -15,7 +15,7 @@ const ConnectDisconnect = (props: { handleOpen: () => void }) => { {account ? ( <> Wallet connected - + ) : (