From 9409b818ffc75a3f5537f16ca3c8b7da3deff11f Mon Sep 17 00:00:00 2001 From: Karim Yassine Date: Thu, 12 Jan 2023 22:21:39 -0300 Subject: [PATCH 01/21] feat: create trust wallet SDK --- packages/trust/README.md | 31 +++++++++++++++++ packages/trust/package.json | 66 ++++++++++++++++++++++++++++++++++++ packages/trust/src/icon.ts | 8 +++++ packages/trust/src/index.ts | 33 ++++++++++++++++++ packages/trust/src/types.ts | 7 ++++ packages/trust/tsconfig.json | 15 ++++++++ 6 files changed, 160 insertions(+) create mode 100644 packages/trust/README.md create mode 100644 packages/trust/package.json create mode 100644 packages/trust/src/icon.ts create mode 100644 packages/trust/src/index.ts create mode 100644 packages/trust/src/types.ts create mode 100644 packages/trust/tsconfig.json diff --git a/packages/trust/README.md b/packages/trust/README.md new file mode 100644 index 000000000..2f0ec3efd --- /dev/null +++ b/packages/trust/README.md @@ -0,0 +1,31 @@ +# @web3-onboard/trust + +## Wallet module for connecting Trust Wallet through web3-onboard + +### Install + +**NPM** +`npm i @web3-onboard/core @web3-onboard/trust` + +**Yarn** +`yarn add @web3-onboard/core @web3-onboard/trust` + +## Usage + +```typescript +import Onboard from '@web3-onboard/core' +import trustModule from '@web3-onboard/trust' + +const trust = trustModule() + +const onboard = Onboard({ + // ... other Onboard options + wallets: [ + trust + //... other wallets + ] +}) + +const connectedWallets = await onboard.connectWallet() +console.log(connectedWallets) +``` diff --git a/packages/trust/package.json b/packages/trust/package.json new file mode 100644 index 000000000..33fc6a163 --- /dev/null +++ b/packages/trust/package.json @@ -0,0 +1,66 @@ +{ + "name": "@web3-onboard/trust", + "version": "2.0.0", + "description": "Trust Wallet SDK wallet module for connecting to Web3-Onboard. Web3-Onboard makes it simple to connect Ethereum hardware and software wallets to your dapp. Features standardised spec compliant web3 providers for all supported wallets, framework agnostic modern javascript UI with code splitting, CSS customization, multi-chain and multi-account support, reactive wallet state subscriptions and real-time transaction state change notifications.", + "keywords": [ + "Ethereum", + "Web3", + "EVM", + "dapp", + "Multichain", + "Wallet", + "Transaction", + "Provider", + "Hardware Wallet", + "Notifications", + "React", + "Svelte", + "Vue", + "Next", + "Nuxt", + "MetaMask", + "Coinbase", + "WalletConnect", + "Ledger", + "Trezor", + "Connect Wallet", + "Ethereum Hooks", + "Blocknative", + "Mempool", + "pending", + "confirmed", + "Injected Wallet", + "Crypto", + "Crypto Wallet", + "Enkrypt", + "Trust" + ], + "repository": { + "type": "git", + "url": "https://github.com/blocknative/web3-onboard.git", + "directory": "packages/trust" + }, + "homepage": "https://www.blocknative.com/onboard", + "bugs": "https://github.com/blocknative/web3-onboard/issues", + "module": "dist/index.js", + "browser": "dist/index.js", + "main": "dist/index.js", + "type": "module", + "typings": "dist/index.d.ts", + "files": [ + "dist" + ], + "scripts": { + "build": "tsc", + "dev": "tsc -w", + "type-check": "tsc --noEmit" + }, + "license": "MIT", + "devDependencies": { + "@types/node": "^17.0.21", + "typescript": "^4.5.5" + }, + "dependencies": { + "@web3-onboard/common": "^2.2.3" + } +} diff --git a/packages/trust/src/icon.ts b/packages/trust/src/icon.ts new file mode 100644 index 000000000..64890a79d --- /dev/null +++ b/packages/trust/src/icon.ts @@ -0,0 +1,8 @@ +export default ` + + + +` diff --git a/packages/trust/src/index.ts b/packages/trust/src/index.ts new file mode 100644 index 000000000..53e0bd17e --- /dev/null +++ b/packages/trust/src/index.ts @@ -0,0 +1,33 @@ +import type { WalletInit, EIP1193Provider } from '@web3-onboard/common' +import { createEIP1193Provider } from '@web3-onboard/common' +import { CustomWindow } from './types.js' +declare const window: CustomWindow + +function trust(): WalletInit { + if (typeof window === 'undefined') return () => null + + return () => { + return { + label: 'Trust Wallet', + getIcon: async () => (await import('./icon.js')).default, + getInterface: async () => { + const trustExists = + window.hasOwnProperty('trustwallet') && window.ethereum?.isTrust + + if (trustExists) { + const enkryptProvider: EIP1193Provider = window.trustwallet + const provider = createEIP1193Provider(enkryptProvider) + + return { + provider + } + } else { + window.open('https://trustwallet.com/browser-extension', '_blank') + throw new Error('Please Install Trust to use this wallet') + } + } + } + } +} + +export default trust diff --git a/packages/trust/src/types.ts b/packages/trust/src/types.ts new file mode 100644 index 000000000..6395bed84 --- /dev/null +++ b/packages/trust/src/types.ts @@ -0,0 +1,7 @@ +import { EIP1193Provider } from '@web3-onboard/common' +export interface CustomWindow extends Window { + ethereum: { + isTrust?: boolean + } + trustwallet: EIP1193Provider +} diff --git a/packages/trust/tsconfig.json b/packages/trust/tsconfig.json new file mode 100644 index 000000000..09ae989f9 --- /dev/null +++ b/packages/trust/tsconfig.json @@ -0,0 +1,15 @@ +{ + "extends": "../../tsconfig.json", + "include": ["src/**/*"], + + "compilerOptions": { + "outDir": "dist", + "rootDir": "src", + "declaration": true, + "declarationDir": "dist", + "paths": { + "*": ["./src/*", "./node_modules/*"] + }, + "typeRoots": ["node_modules/@types"] + } +} \ No newline at end of file From 4fa907bafbe93f4432c1dd415d051dfdfed44fbe Mon Sep 17 00:00:00 2001 From: Karim Yassine Date: Thu, 12 Jan 2023 22:22:30 -0300 Subject: [PATCH 02/21] docs: add Trust wallet SDK docs link --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 9b3ef6eda..12921a80c 100644 --- a/README.md +++ b/README.md @@ -88,6 +88,7 @@ For full documentation, check out the README.md for each package: **SDK Wallets** - [Coinbase](packages/coinbase/README.md) +- [Trust](packages/trust/README.md) - [WalletConnect](packages/walletconnect/README.md) - [Gnosis](packages/gnosis/README.md) - [Magic](packages/magic/README.md) From 015afcacf2fa4923369b32cbd6d4f4c41c7c516a Mon Sep 17 00:00:00 2001 From: Karim Yassine Date: Thu, 12 Jan 2023 22:26:50 -0300 Subject: [PATCH 03/21] docs: add trust SDK option --- .github/ISSUE_TEMPLATE/BUG.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/ISSUE_TEMPLATE/BUG.yml b/.github/ISSUE_TEMPLATE/BUG.yml index 0bdee4011..a34cdb1c7 100644 --- a/.github/ISSUE_TEMPLATE/BUG.yml +++ b/.github/ISSUE_TEMPLATE/BUG.yml @@ -56,6 +56,7 @@ body: - "@web3-onboard/react" - "@web3-onboard/torus" - "@web3-onboard/trezor" + - "@web3-onboard/trust" - "@web3-onboard/vue" - "@web3-onboard/walletconnect" - "@web3-onboard/walletlink" From a75d45d388b13402a46ba603ddb36373b844b092 Mon Sep 17 00:00:00 2001 From: Karim Yassine Date: Thu, 12 Jan 2023 22:31:31 -0300 Subject: [PATCH 04/21] docs: add trust SDK option --- packages/core/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/core/README.md b/packages/core/README.md index 1571a250d..bc8aee3b3 100644 --- a/packages/core/README.md +++ b/packages/core/README.md @@ -10,7 +10,7 @@ Install the core module: If you would like to support all wallets, then you can install all of the wallet modules: -`npm i @web3-onboard/injected-wallets @web3-onboard/coinbase @web3-onboard/ledger @web3-onboard/trezor @web3-onboard/keepkey @web3-onboard/walletconnect @web3-onboard/web3auth @web3-onboard/torus @web3-onboard/portis @web3-onboard/mew @web3-onboard/gnosis @web3-onboard/magic @web3-onboard/fortmatic @web3-onboard/dcent` +`npm i @web3-onboard/injected-wallets @web3-onboard/coinbase @web3-onboard/trust @web3-onboard/ledger @web3-onboard/trezor @web3-onboard/keepkey @web3-onboard/walletconnect @web3-onboard/web3auth @web3-onboard/torus @web3-onboard/portis @web3-onboard/mew @web3-onboard/gnosis @web3-onboard/magic @web3-onboard/fortmatic @web3-onboard/dcent` Note: From 32ddd639727374d5150bdb451fcec117c0eb0afd Mon Sep 17 00:00:00 2001 From: Karim Yassine Date: Thu, 12 Jan 2023 22:36:33 -0300 Subject: [PATCH 05/21] chore: add trust SDK jobs --- .circleci/config.yml | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/.circleci/config.yml b/.circleci/config.yml index 3676a8dc5..969e971df 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -243,6 +243,12 @@ jobs: working_directory: ~/web3-onboard-monorepo/packages/trezor steps: - node-build-steps + build-trust: + docker: + - image: cimg/node:16.13.1 + working_directory: ~/web3-onboard-monorepo/packages/trust + steps: + - node-build-steps build-walletconnect: docker: - image: cimg/node:16.13.1 @@ -425,6 +431,12 @@ jobs: working_directory: ~/web3-onboard-monorepo/packages/trezor steps: - node-staging-build-steps + build-staging-trust: + docker: + - image: cimg/node:16.13.1 + working_directory: ~/web3-onboard-monorepo/packages/trust + steps: + - node-staging-build-steps build-staging-walletconnect: docker: - image: cimg/node:16.13.1 @@ -609,6 +621,12 @@ workflows: <<: *deploy_production_filters - build-staging-trezor: <<: *deploy_staging_filters + trust: + jobs: + - build-trust: + <<: *deploy_production_filters + - build-staging-trust: + <<: *deploy_staging_filters walletconnect: jobs: - build-walletconnect: From 50c392be6f17496ce2eb9ed3e9aca27e87a67ee8 Mon Sep 17 00:00:00 2001 From: Karim Yassine Date: Thu, 12 Jan 2023 22:37:26 -0300 Subject: [PATCH 06/21] feat: add trust as part of the default wallets --- packages/demo/src/App.svelte | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/demo/src/App.svelte b/packages/demo/src/App.svelte index 9d2b699d4..f770a4404 100644 --- a/packages/demo/src/App.svelte +++ b/packages/demo/src/App.svelte @@ -23,6 +23,7 @@ import mewWalletModule from '@web3-onboard/mew-wallet' import uauthModule from '@web3-onboard/uauth' import phantomModule from '@web3-onboard/phantom' + import trustModule from '@web3-onboard/trust' import { recoverAddress, arrayify, @@ -99,6 +100,7 @@ const tallyho = tallyHoModule() const zeal = zealModule() const phantom = phantomModule() + const trust = trustModule() const trezorOptions = { email: 'test@test.com', @@ -135,6 +137,7 @@ ledger, trezor, walletConnect, + trust, enkrypt, mewWallet, keepkey, @@ -262,7 +265,7 @@ }, position: 'topRight' } - }, + } // containerElements: { // El must be present at time of JS script execution // See ../public/index.html for element example From cb476fa8786e7b4fa40dfe257e96b28384934ba4 Mon Sep 17 00:00:00 2001 From: Karim Yassine Date: Thu, 12 Jan 2023 22:37:42 -0300 Subject: [PATCH 07/21] feat: add trust type --- packages/injected/src/constants.ts | 3 ++- packages/injected/src/types.ts | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/injected/src/constants.ts b/packages/injected/src/constants.ts index 53ede9960..a33132dce 100644 --- a/packages/injected/src/constants.ts +++ b/packages/injected/src/constants.ts @@ -16,5 +16,6 @@ export const WALLET_NAMES: { [key: string]: string } = { bitkeep: 'BitKeep', sequence: 'Sequence', core: 'Core', - enkrypt: 'Enkrypt' + enkrypt: 'Enkrypt', + trust: 'Trust Wallet' } diff --git a/packages/injected/src/types.ts b/packages/injected/src/types.ts index 81dde19ec..fdb583b22 100644 --- a/packages/injected/src/types.ts +++ b/packages/injected/src/types.ts @@ -119,7 +119,8 @@ export enum InjectedNameSpace { Bitski = 'Bitski', Enkrypt = 'enkrypt', Zeal = 'zeal', - Phantom = 'phantom' + Phantom = 'phantom', + Trust = 'trustwallet' } export interface CustomWindow extends Window { From 594f5a4529622f3f3aa51aef26c864be3895a019 Mon Sep 17 00:00:00 2001 From: Karim Yassine Date: Thu, 12 Jan 2023 22:39:26 -0300 Subject: [PATCH 08/21] fix: not identifying injected trust wallet --- packages/injected/src/wallets.ts | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/packages/injected/src/wallets.ts b/packages/injected/src/wallets.ts index 8c7a0f147..cec87b4be 100644 --- a/packages/injected/src/wallets.ts +++ b/packages/injected/src/wallets.ts @@ -176,21 +176,12 @@ const detected: InjectedWalletModule = { const trust: InjectedWalletModule = { label: ProviderLabel.Trust, - injectedNamespace: InjectedNameSpace.Ethereum, + injectedNamespace: InjectedNameSpace.Trust, checkProviderIdentity: ({ provider }) => - !!provider && - !!provider[ProviderIdentityFlag.Trust] && - !!provider && - !provider[ProviderIdentityFlag.TokenPocket], - + !!provider && !!provider[ProviderIdentityFlag.Trust], getIcon: async () => (await import('./icons/trust.js')).default, - getInterface: async () => ({ - provider: createEIP1193Provider(window.ethereum, { - wallet_switchEthereumChain: UNSUPPORTED_METHOD, - eth_selectAccounts: UNSUPPORTED_METHOD - }) - }), - platforms: ['mobile'] + getInterface: getInjectedInterface(ProviderIdentityFlag.Trust), + platforms: ['all'] } const opera: InjectedWalletModule = { From 2b363117607233b5e5181072716ef2566e728c72 Mon Sep 17 00:00:00 2001 From: Karim Yassine Date: Thu, 12 Jan 2023 23:01:35 -0300 Subject: [PATCH 09/21] fix: building error --- packages/injected/src/types.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/injected/src/types.ts b/packages/injected/src/types.ts index 3eb9b7bd9..b879305dc 100644 --- a/packages/injected/src/types.ts +++ b/packages/injected/src/types.ts @@ -149,6 +149,7 @@ export interface CustomWindow extends Window { phantom: { ethereum: InjectedProvider } + trustwallet: InjectedProvider } export type InjectedProvider = ExternalProvider & From 5982c569dcfb7ef39675493153c2f38a3fc3c86f Mon Sep 17 00:00:00 2001 From: Karim Yassine Date: Thu, 12 Jan 2023 23:08:10 -0300 Subject: [PATCH 10/21] fix: only verify if trustwallet exists --- packages/trust/src/index.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/trust/src/index.ts b/packages/trust/src/index.ts index 53e0bd17e..b0f697d6d 100644 --- a/packages/trust/src/index.ts +++ b/packages/trust/src/index.ts @@ -11,8 +11,7 @@ function trust(): WalletInit { label: 'Trust Wallet', getIcon: async () => (await import('./icon.js')).default, getInterface: async () => { - const trustExists = - window.hasOwnProperty('trustwallet') && window.ethereum?.isTrust + const trustExists = window.hasOwnProperty('trustwallet') if (trustExists) { const enkryptProvider: EIP1193Provider = window.trustwallet From 171627c26dad11eb556dc9902c32342b9bfd125b Mon Sep 17 00:00:00 2001 From: Karim Yassine Date: Fri, 13 Jan 2023 00:56:25 -0300 Subject: [PATCH 11/21] fix: wallets conflicting with each other --- packages/injected/src/wallets.ts | 20 +++++++++++++++++++- packages/trust/src/index.ts | 22 ++++++++++++++-------- packages/trust/src/types.ts | 2 +- 3 files changed, 34 insertions(+), 10 deletions(-) diff --git a/packages/injected/src/wallets.ts b/packages/injected/src/wallets.ts index cec87b4be..21b61e179 100644 --- a/packages/injected/src/wallets.ts +++ b/packages/injected/src/wallets.ts @@ -180,7 +180,25 @@ const trust: InjectedWalletModule = { checkProviderIdentity: ({ provider }) => !!provider && !!provider[ProviderIdentityFlag.Trust], getIcon: async () => (await import('./icons/trust.js')).default, - getInterface: getInjectedInterface(ProviderIdentityFlag.Trust), + getInterface: async () => { + const ethereumInjectionExists = window.hasOwnProperty( + InjectedNameSpace.Ethereum + ) + + let provider: EIP1193Provider + + // check if trust is injected into window.ethereum + if (ethereumInjectionExists && window[InjectedNameSpace.Ethereum].isTrust) { + provider = window[InjectedNameSpace.Ethereum] + } else { + // directly use the window.trustwallet injection + provider = window[InjectedNameSpace.Trust] + } + + return { + provider + } + }, platforms: ['all'] } diff --git a/packages/trust/src/index.ts b/packages/trust/src/index.ts index b0f697d6d..5c7b4414a 100644 --- a/packages/trust/src/index.ts +++ b/packages/trust/src/index.ts @@ -1,5 +1,4 @@ import type { WalletInit, EIP1193Provider } from '@web3-onboard/common' -import { createEIP1193Provider } from '@web3-onboard/common' import { CustomWindow } from './types.js' declare const window: CustomWindow @@ -11,19 +10,26 @@ function trust(): WalletInit { label: 'Trust Wallet', getIcon: async () => (await import('./icon.js')).default, getInterface: async () => { - const trustExists = window.hasOwnProperty('trustwallet') + const ethereumInjectionExists = window.hasOwnProperty('ethereum') - if (trustExists) { - const enkryptProvider: EIP1193Provider = window.trustwallet - const provider = createEIP1193Provider(enkryptProvider) + let provider: EIP1193Provider - return { - provider - } + // check if trust is injected into window.ethereum + if (ethereumInjectionExists && window['ethereum'].isTrust) { + provider = window['ethereum'] + } else if (window['trustwallet']) { + // directly use the window.trustwallet injection + provider = window['trustwallet'] } else { + // trustwallet extension is not installed + // send user to install page window.open('https://trustwallet.com/browser-extension', '_blank') throw new Error('Please Install Trust to use this wallet') } + + return { + provider + } } } } diff --git a/packages/trust/src/types.ts b/packages/trust/src/types.ts index 6395bed84..faed9ea7f 100644 --- a/packages/trust/src/types.ts +++ b/packages/trust/src/types.ts @@ -1,6 +1,6 @@ import { EIP1193Provider } from '@web3-onboard/common' export interface CustomWindow extends Window { - ethereum: { + ethereum: EIP1193Provider & { isTrust?: boolean } trustwallet: EIP1193Provider From 4f2abb6c452b6e876dfbfe5cbcd5a676957dac43 Mon Sep 17 00:00:00 2001 From: Karim Yassine Date: Fri, 13 Jan 2023 01:47:21 -0300 Subject: [PATCH 12/21] chore: increment version --- packages/injected/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/injected/package.json b/packages/injected/package.json index f6ee8a4af..decb9aeea 100644 --- a/packages/injected/package.json +++ b/packages/injected/package.json @@ -1,6 +1,6 @@ { "name": "@web3-onboard/injected-wallets", - "version": "2.6.0-alpha.1", + "version": "2.6.0-alpha.2", "description": "Injected wallet module for connecting browser extension and mobile wallets to Web3-Onboard. Web3-Onboard makes it simple to connect Ethereum hardware and software wallets to your dapp. Features standardised spec compliant web3 providers for all supported wallets, framework agnostic modern javascript UI with code splitting, CSS customization, multi-chain and multi-account support, reactive wallet state subscriptions and real-time transaction state change notifications.", "keywords": [ "Ethereum", From 023d2f8785da9ecb6de098728b0cd205da7b23b5 Mon Sep 17 00:00:00 2001 From: Karim Yassine Date: Fri, 13 Jan 2023 02:14:52 -0300 Subject: [PATCH 13/21] chore: revert version --- packages/injected/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/injected/package.json b/packages/injected/package.json index decb9aeea..f6ee8a4af 100644 --- a/packages/injected/package.json +++ b/packages/injected/package.json @@ -1,6 +1,6 @@ { "name": "@web3-onboard/injected-wallets", - "version": "2.6.0-alpha.2", + "version": "2.6.0-alpha.1", "description": "Injected wallet module for connecting browser extension and mobile wallets to Web3-Onboard. Web3-Onboard makes it simple to connect Ethereum hardware and software wallets to your dapp. Features standardised spec compliant web3 providers for all supported wallets, framework agnostic modern javascript UI with code splitting, CSS customization, multi-chain and multi-account support, reactive wallet state subscriptions and real-time transaction state change notifications.", "keywords": [ "Ethereum", From bbfc201b62fff87547fb6225fdc8f29a749f0952 Mon Sep 17 00:00:00 2001 From: Karim Yassine Date: Fri, 13 Jan 2023 12:54:05 -0300 Subject: [PATCH 14/21] docs: update documentation with Trust example --- .../examples/connect-wallet/ReactConnectWallet.md | 5 +++-- .../examples/connect-wallet/SvelteConnectWallet.md | 3 +++ docs/src/lib/services/onboard.js | 8 +++++--- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/docs/src/lib/components/examples/connect-wallet/ReactConnectWallet.md b/docs/src/lib/components/examples/connect-wallet/ReactConnectWallet.md index be9c1d57d..ffbe37bd4 100644 --- a/docs/src/lib/components/examples/connect-wallet/ReactConnectWallet.md +++ b/docs/src/lib/components/examples/connect-wallet/ReactConnectWallet.md @@ -1,4 +1,3 @@ - ## Step 1: Import + Configure Import the libraries and any wallets you would like to use. For this example, we are going to use the injected wallets module. You can easily add more wallet support to your dapp via our other wallet modules. Additionally, we'll setup web3-onboard to support 2 chains: Ethereum mainnet and Polygon mainnet. @@ -22,6 +21,7 @@ import web3authModule from '@web3-onboard/web3auth' import dcentModule from '@web3-onboard/dcent' import sequenceModule from '@web3-onboard/sequence' import tallyHoModule from '@web3-onboard/tallyho' +import trustModule from '@web3-onboard/trust' const INFURA_KEY = '' @@ -44,6 +44,7 @@ const keepkey = keepkeyModule() const gnosis = gnosisModule() const sequence = sequenceModule() const tally = tallyModule() +const trust = trustModule() const trezorOptions = { email: 'test@test.com', @@ -63,6 +64,7 @@ const wallets = [ keepkey, sequence, injected, + trust, tally, ledger, coinbase, @@ -230,4 +232,3 @@ export default function ConnectWallet() { ) } ``` - diff --git a/docs/src/lib/components/examples/connect-wallet/SvelteConnectWallet.md b/docs/src/lib/components/examples/connect-wallet/SvelteConnectWallet.md index 1c2179345..2c2a10947 100644 --- a/docs/src/lib/components/examples/connect-wallet/SvelteConnectWallet.md +++ b/docs/src/lib/components/examples/connect-wallet/SvelteConnectWallet.md @@ -21,6 +21,7 @@ import web3authModule from '@web3-onboard/web3auth' import dcentModule from '@web3-onboard/dcent' import sequenceModule from '@web3-onboard/sequence' import tallyHoModule from '@web3-onboard/tallyho' +import trustModule from '@web3-onboard/trust' const INFURA_KEY = '' @@ -43,6 +44,7 @@ const keepkey = keepkeyModule() const gnosis = gnosisModule() const sequence = sequenceModule() const tally = tallyModule() +const trust = trustModule() const trezorOptions = { email: 'test@test.com', @@ -66,6 +68,7 @@ const wallets = [ ledger, coinbase, dcent, + trust, trezor, walletConnect, enkrypt, diff --git a/docs/src/lib/services/onboard.js b/docs/src/lib/services/onboard.js index 55ace93a8..4ec9fc60f 100644 --- a/docs/src/lib/services/onboard.js +++ b/docs/src/lib/services/onboard.js @@ -28,6 +28,7 @@ const intiOnboard = async () => { const { default: torusModule } = await import('@web3-onboard/torus') const { default: web3authModule } = await import('@web3-onboard/web3auth') const { default: uauthModule } = await import('@web3-onboard/uauth') + const { default: trustModule } = await import('@web3-onboard/trust') const INFURA_ID = '8b60d52405694345a99bcb82e722e0af' const injected = injectedModule() @@ -43,6 +44,7 @@ const intiOnboard = async () => { const mewWallet = mewWalletModule() const tally = tallyModule() const torus = torusModule() + const trust = trustModule() const portis = portisModule({ apiKey: 'b2b7586f-2b1e-4c30-a7fb-c2d1533b153b' @@ -66,11 +68,10 @@ const intiOnboard = async () => { const uauthOptions = { clientID: 'a25c3a65-a1f2-46cc-a515-a46fe7acb78c', redirectUri: 'http://localhost:8080/', - scope: - 'openid wallet email:optional humanity_check:optional profile:optional social:optional' + scope: 'openid wallet email:optional humanity_check:optional profile:optional social:optional' } const uauth = uauthModule(uauthOptions) - + const magic = magicModule({ apiKey: 'pk_live_02207D744E81C2BA' }) @@ -82,6 +83,7 @@ const intiOnboard = async () => { coinbase, ledger, trezor, + trust, gnosis, uauth, tally, From 785b9d50d7fa08661f93e464152220b0522bc2c0 Mon Sep 17 00:00:00 2001 From: karim-yassine <118207693+karim-yassine@users.noreply.github.com> Date: Fri, 13 Jan 2023 14:20:35 -0300 Subject: [PATCH 15/21] docs: update description Co-authored-by: Adam Carpenter --- packages/trust/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/trust/README.md b/packages/trust/README.md index 2f0ec3efd..e88fb34a4 100644 --- a/packages/trust/README.md +++ b/packages/trust/README.md @@ -2,6 +2,8 @@ ## Wallet module for connecting Trust Wallet through web3-onboard +Trust Wallet SDK wallet module for connecting to Web3-Onboard. Web3-Onboard makes it simple to connect Ethereum hardware and software wallets to your dapp. Features standardized spec compliant web3 providers for all supported wallets, framework agnostic modern javascript UI with code splitting, CSS customization, multi-chain and multi-account support, reactive wallet state subscriptions and real-time transaction state change notifications. + ### Install **NPM** From eece2f8c8d8dbac5a63a8d6d083403636ed5417b Mon Sep 17 00:00:00 2001 From: karim-yassine <118207693+karim-yassine@users.noreply.github.com> Date: Fri, 13 Jan 2023 14:22:03 -0300 Subject: [PATCH 16/21] chore: update version Co-authored-by: Adam Carpenter --- packages/trust/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/trust/package.json b/packages/trust/package.json index 33fc6a163..949c80f41 100644 --- a/packages/trust/package.json +++ b/packages/trust/package.json @@ -1,6 +1,6 @@ { "name": "@web3-onboard/trust", - "version": "2.0.0", + "version": "2.0.0-alpha.1", "description": "Trust Wallet SDK wallet module for connecting to Web3-Onboard. Web3-Onboard makes it simple to connect Ethereum hardware and software wallets to your dapp. Features standardised spec compliant web3 providers for all supported wallets, framework agnostic modern javascript UI with code splitting, CSS customization, multi-chain and multi-account support, reactive wallet state subscriptions and real-time transaction state change notifications.", "keywords": [ "Ethereum", From f6ec3ec9309fdc1002194bda9e24b5662168a510 Mon Sep 17 00:00:00 2001 From: karim-yassine <118207693+karim-yassine@users.noreply.github.com> Date: Fri, 13 Jan 2023 14:22:24 -0300 Subject: [PATCH 17/21] docs: resolve typo Co-authored-by: Adam Carpenter --- packages/trust/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/trust/package.json b/packages/trust/package.json index 949c80f41..ed5b13d51 100644 --- a/packages/trust/package.json +++ b/packages/trust/package.json @@ -1,7 +1,7 @@ { "name": "@web3-onboard/trust", "version": "2.0.0-alpha.1", - "description": "Trust Wallet SDK wallet module for connecting to Web3-Onboard. Web3-Onboard makes it simple to connect Ethereum hardware and software wallets to your dapp. Features standardised spec compliant web3 providers for all supported wallets, framework agnostic modern javascript UI with code splitting, CSS customization, multi-chain and multi-account support, reactive wallet state subscriptions and real-time transaction state change notifications.", + "description": "Trust Wallet SDK wallet module for connecting to Web3-Onboard. Web3-Onboard makes it simple to connect Ethereum hardware and software wallets to your dapp. Features standardized spec compliant web3 providers for all supported wallets, framework agnostic modern javascript UI with code splitting, CSS customization, multi-chain and multi-account support, reactive wallet state subscriptions and real-time transaction state change notifications.", "keywords": [ "Ethereum", "Web3", From deb72ef57e07a9cb990f3d70e1b92d2c81e4a177 Mon Sep 17 00:00:00 2001 From: Karim Yassine Date: Fri, 27 Jan 2023 15:54:22 +0100 Subject: [PATCH 18/21] fix: incorrectly checking providers --- packages/injected/src/helpers.ts | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/packages/injected/src/helpers.ts b/packages/injected/src/helpers.ts index 6075e1a8a..6cd04d0a9 100644 --- a/packages/injected/src/helpers.ts +++ b/packages/injected/src/helpers.ts @@ -22,11 +22,18 @@ export const isWalletAvailable = ( checkProviderIdentity: InjectedWalletModule['checkProviderIdentity'], device: Device ): boolean => { - if (provider && provider.providers && Array.isArray(provider.providers)) { - return !!provider.providers.filter(provider => - checkProviderIdentity({ provider, device }) - ).length - } else { - return checkProviderIdentity({ provider, device }) + // No injected providers exist. + if (!provider) { + return false } + + // Many injected providers add their own object into window. + if (checkProviderIdentity({ provider, device })) { + return true + } + + // For multiple injected providers, check providers array + return !!provider.providers?.some(provider => + checkProviderIdentity({ provider, device }) + ) } From 798590509fb31714588374c5e6fd7caf18aee5ec Mon Sep 17 00:00:00 2001 From: Adam Carpenter Date: Fri, 27 Jan 2023 10:08:24 -0700 Subject: [PATCH 19/21] Add trust to docs site --- docs/package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/package.json b/docs/package.json index 13de43f20..588169fd1 100644 --- a/docs/package.json +++ b/docs/package.json @@ -72,6 +72,7 @@ "@web3-onboard/tallyho": "^2.0.1", "@web3-onboard/torus": "^2.2.0", "@web3-onboard/trezor": "^2.3.3", + "@web3-onboard/trust": "^2.0.0-alpha.1", "@web3-onboard/uauth": "^2.0.1", "@web3-onboard/walletconnect": "^2.2.1", "@web3-onboard/web3auth": "^2.1.4", From 56fc9bbe79a603ed8fb42fc4915f575aa4c1d713 Mon Sep 17 00:00:00 2001 From: Adam Carpenter Date: Fri, 27 Jan 2023 10:17:22 -0700 Subject: [PATCH 20/21] Add docs and bump version --- packages/demo/package.json | 2 +- packages/injected/package.json | 2 +- packages/injected/src/helpers.ts | 4 +++- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/demo/package.json b/packages/demo/package.json index cb3e0544c..9fa95d2ed 100644 --- a/packages/demo/package.json +++ b/packages/demo/package.json @@ -34,7 +34,7 @@ "@web3-onboard/keepkey": "^2.3.3", "@web3-onboard/keystone": "^2.3.3", "@web3-onboard/ledger": "^2.4.2", - "@web3-onboard/injected-wallets": "^2.6.2-alpha.1", + "@web3-onboard/injected-wallets": "^2.6.2-alpha.2", "@web3-onboard/magic": "^2.1.3", "@web3-onboard/phantom": "^2.0.0-alpha.1", "@web3-onboard/portis": "^2.1.3", diff --git a/packages/injected/package.json b/packages/injected/package.json index f22eeb132..151a21ee8 100644 --- a/packages/injected/package.json +++ b/packages/injected/package.json @@ -1,6 +1,6 @@ { "name": "@web3-onboard/injected-wallets", - "version": "2.6.2-alpha.1", + "version": "2.6.2-alpha.2", "description": "Injected wallet module for connecting browser extension and mobile wallets to Web3-Onboard. Web3-Onboard makes it simple to connect Ethereum hardware and software wallets to your dapp. Features standardised spec compliant web3 providers for all supported wallets, framework agnostic modern javascript UI with code splitting, CSS customization, multi-chain and multi-account support, reactive wallet state subscriptions and real-time transaction state change notifications.", "keywords": [ "Ethereum", diff --git a/packages/injected/src/helpers.ts b/packages/injected/src/helpers.ts index 6cd04d0a9..5f863be96 100644 --- a/packages/injected/src/helpers.ts +++ b/packages/injected/src/helpers.ts @@ -32,7 +32,9 @@ export const isWalletAvailable = ( return true } - // For multiple injected providers, check providers array + // For multiple injected providers, check providers array + // example coinbase inj wallet pushes over-ridden wallets + // into a providers array at window.ethereum return !!provider.providers?.some(provider => checkProviderIdentity({ provider, device }) ) From 495961e5887ae7b876a1ea68e0c61bce42631d64 Mon Sep 17 00:00:00 2001 From: Adam Carpenter Date: Fri, 27 Jan 2023 10:36:45 -0700 Subject: [PATCH 21/21] Fix deploy config --- .circleci/config.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.circleci/config.yml b/.circleci/config.yml index 315bb60e1..592235c1b 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -247,6 +247,8 @@ jobs: docker: - image: cimg/node:16.13.1 working_directory: ~/web3-onboard-monorepo/packages/trust + steps: + - node-build-steps build-frontier: docker: - image: cimg/node:16.13.1 @@ -439,6 +441,8 @@ jobs: docker: - image: cimg/node:16.13.1 working_directory: ~/web3-onboard-monorepo/packages/trust + steps: + - node-staging-build-steps build-staging-frontier: docker: - image: cimg/node:16.13.1