From e245c4e6332edb4acd3aa653d62922c3e8c67848 Mon Sep 17 00:00:00 2001 From: Darren Kelly Date: Tue, 28 Nov 2023 16:31:08 +0000 Subject: [PATCH 1/8] fix: extension wasn't working unless running without ssr --- .github/workflows/publish-wallet-kit.yaml | 28 +++++++-- apps/sample-next-app/src/app/layout.tsx | 33 +---------- apps/sample-next-app/src/app/page.tsx | 22 +++---- .../src/app/pages/homepage.tsx | 58 +++++++++++++++++++ 4 files changed, 89 insertions(+), 52 deletions(-) create mode 100644 apps/sample-next-app/src/app/pages/homepage.tsx diff --git a/.github/workflows/publish-wallet-kit.yaml b/.github/workflows/publish-wallet-kit.yaml index 073e18eb..9a5dbddd 100644 --- a/.github/workflows/publish-wallet-kit.yaml +++ b/.github/workflows/publish-wallet-kit.yaml @@ -15,20 +15,36 @@ jobs: permissions: contents: read packages: write - strategy: - matrix: - package: [ dapp-kit, dapp-kit-ui, dapp-kit-react ] steps: - uses: actions/checkout@v3 - uses: actions/setup-node@v3 with: node-version: 18 registry-url: https://npm.pkg.github.com/ + - run: yarn install:all - - run: yarn build - - run: | - cd packages/${{ matrix.package }} + + - name: Publish DApp-Kit + run: | + cd packages/dapp-kit + yarn version --no-git-tag-version --new-version ${{ github.ref_name }} + yarn publish + env: + NODE_AUTH_TOKEN: ${{secrets.GITHUB_TOKEN}} + + - name: Publish DApp-Kit-UI + run: | + cd packages/dapp-kit-ui yarn version --no-git-tag-version --new-version ${{ github.ref_name }} yarn publish env: NODE_AUTH_TOKEN: ${{secrets.GITHUB_TOKEN}} + + - name: Publish DApp-Kit-React + run: | + cd packages/dapp-kit-react + yarn version --no-git-tag-version --new-version ${{ github.ref_name }} + yarn publish + env: + NODE_AUTH_TOKEN: ${{secrets.GITHUB_TOKEN}} + diff --git a/apps/sample-next-app/src/app/layout.tsx b/apps/sample-next-app/src/app/layout.tsx index 5eaaaaa2..b41cacdb 100644 --- a/apps/sample-next-app/src/app/layout.tsx +++ b/apps/sample-next-app/src/app/layout.tsx @@ -3,28 +3,6 @@ import { Inter } from 'next/font/google'; import './globals.css'; -import type { Options } from '@vechain/connex'; -import { ConnexProvider } from '@vechainfoundation/dapp-kit-react'; -import type { WalletConnectOptions } from '@vechainfoundation/dapp-kit'; - -const nodeOptions: Omit = { - node: 'https://testnet.vechain.org/', - network: 'test', -}; - -const walletConnectOptions: WalletConnectOptions = { - projectId: 'a0b855ceaf109dbc8426479a4c3d38d8', - metadata: { - name: 'Sample VeChain dApp', - description: 'A sample VeChain dApp', - url: typeof window !== 'undefined' ? window.location.origin : '', - icons: [ - typeof window !== 'undefined' - ? `${window.location.origin}/images/logo/my-dapp.png` - : '', - ], - }, -}; const inter = Inter({ subsets: ['latin'] }); @@ -36,16 +14,7 @@ export default function RootLayout({ }): React.ReactElement { return ( - - - {children} - - + {children} ); } diff --git a/apps/sample-next-app/src/app/page.tsx b/apps/sample-next-app/src/app/page.tsx index 3e232d78..de684f70 100644 --- a/apps/sample-next-app/src/app/page.tsx +++ b/apps/sample-next-app/src/app/page.tsx @@ -1,23 +1,17 @@ 'use client'; // This is a client component -import { - ConnectWalletButtonWithModal, - useWallet, -} from '@vechainfoundation/dapp-kit-react'; -import React, { useEffect } from 'react'; +import React from 'react'; +import dynamic from 'next/dynamic'; -// eslint-disable-next-line @typescript-eslint/explicit-function-return-type, import/no-default-export -export default function Home() { - const { account } = useWallet(); - - useEffect(() => { - // eslint-disable-next-line no-console - console.log('account', account); - }, [account]); +const ConnectWalletButton = dynamic(() => import('./pages/homepage'), { + ssr: false, +}); +// eslint-disable-next-line import/no-default-export +export default function Page() { return (
- +
); } diff --git a/apps/sample-next-app/src/app/pages/homepage.tsx b/apps/sample-next-app/src/app/pages/homepage.tsx new file mode 100644 index 00000000..dd12f319 --- /dev/null +++ b/apps/sample-next-app/src/app/pages/homepage.tsx @@ -0,0 +1,58 @@ +import { + ConnectWalletButtonWithModal, + ConnexProvider, + useWallet, +} from '@vechainfoundation/dapp-kit-react'; +import type { Options } from '@vechain/connex'; +import type { WalletConnectOptions } from '@vechainfoundation/dapp-kit'; +import { useEffect } from 'react'; + +const nodeOptions: Omit = { + node: 'https://testnet.vechain.org/', + network: 'test', +}; + +const walletConnectOptions: WalletConnectOptions = { + projectId: 'a0b855ceaf109dbc8426479a4c3d38d8', + metadata: { + name: 'Sample VeChain dApp', + description: 'A sample VeChain dApp', + url: typeof window !== 'undefined' ? window.location.origin : '', + icons: [ + typeof window !== 'undefined' + ? `${window.location.origin}/images/logo/my-dapp.png` + : '', + ], + }, +}; + +// eslint-disable-next-line func-style +function ConnectWallet() { + const { account } = useWallet(); + + useEffect(() => { + if (account) { + // eslint-disable-next-line no-console + console.log('account', account); + } + }, [account]); + + return ; +} + +// eslint-disable-next-line func-style +function HomePage() { + return ( + + + + ); +} + +// eslint-disable-next-line import/no-default-export +export default HomePage; From 3e8c62dd41e6afc17dae3395add1ff7dc6b4ee94 Mon Sep 17 00:00:00 2001 From: Darren Kelly Date: Tue, 28 Nov 2023 17:15:02 +0000 Subject: [PATCH 2/8] feat: add modal only component --- .../ConnectWalletModal/ConnectWalletModal.tsx | 16 ++++++++++++++++ .../src/Components/ConnectWalletModal/index.ts | 1 + packages/dapp-kit-react/src/Components/index.ts | 1 + 3 files changed, 18 insertions(+) create mode 100644 packages/dapp-kit-react/src/Components/ConnectWalletModal/ConnectWalletModal.tsx create mode 100644 packages/dapp-kit-react/src/Components/ConnectWalletModal/index.ts diff --git a/packages/dapp-kit-react/src/Components/ConnectWalletModal/ConnectWalletModal.tsx b/packages/dapp-kit-react/src/Components/ConnectWalletModal/ConnectWalletModal.tsx new file mode 100644 index 00000000..3382da16 --- /dev/null +++ b/packages/dapp-kit-react/src/Components/ConnectWalletModal/ConnectWalletModal.tsx @@ -0,0 +1,16 @@ +import React, { useMemo } from 'react'; +import { createComponent } from '@lit/react'; +import { ConnectModal } from '@vechainfoundation/dapp-kit-ui'; + +export const createButtonWithModal = () => + createComponent({ + tagName: 'vwk-connect-modal', + elementClass: ConnectModal, + react: React, + }); + +export const ConnectWalletModal: React.FC = () => { + const Modal = useMemo(() => createButtonWithModal(), []); + + return ; +}; diff --git a/packages/dapp-kit-react/src/Components/ConnectWalletModal/index.ts b/packages/dapp-kit-react/src/Components/ConnectWalletModal/index.ts new file mode 100644 index 00000000..423a5eae --- /dev/null +++ b/packages/dapp-kit-react/src/Components/ConnectWalletModal/index.ts @@ -0,0 +1 @@ +export * from './ConnectWalletModal'; diff --git a/packages/dapp-kit-react/src/Components/index.ts b/packages/dapp-kit-react/src/Components/index.ts index 590adc22..2c610c67 100644 --- a/packages/dapp-kit-react/src/Components/index.ts +++ b/packages/dapp-kit-react/src/Components/index.ts @@ -1 +1,2 @@ export * from './ConnectWalletButtonWithModal'; +export * from './ConnectWalletModal'; From 87943bfbc888a9f1218b9681f2737f6e0682d6b1 Mon Sep 17 00:00:00 2001 From: Darren Kelly Date: Tue, 28 Nov 2023 17:25:22 +0000 Subject: [PATCH 3/8] fix: components for react --- .../ConnectWalletModal/ConnectWalletModal.tsx | 35 ++++++++++++++-- .../SelectWalletModal/SelectWalletModal.tsx | 42 +++++++++++++++++++ .../src/Components/SelectWalletModal/index.ts | 1 + 3 files changed, 75 insertions(+), 3 deletions(-) create mode 100644 packages/dapp-kit-react/src/Components/SelectWalletModal/SelectWalletModal.tsx create mode 100644 packages/dapp-kit-react/src/Components/SelectWalletModal/index.ts diff --git a/packages/dapp-kit-react/src/Components/ConnectWalletModal/ConnectWalletModal.tsx b/packages/dapp-kit-react/src/Components/ConnectWalletModal/ConnectWalletModal.tsx index 3382da16..24c1ac86 100644 --- a/packages/dapp-kit-react/src/Components/ConnectWalletModal/ConnectWalletModal.tsx +++ b/packages/dapp-kit-react/src/Components/ConnectWalletModal/ConnectWalletModal.tsx @@ -1,6 +1,9 @@ -import React, { useMemo } from 'react'; +import React, { useCallback, useMemo } from 'react'; import { createComponent } from '@lit/react'; +import type { SourceInfo } from '@vechainfoundation/dapp-kit-ui'; import { ConnectModal } from '@vechainfoundation/dapp-kit-ui'; +import type { ConnectResponse } from '@vechainfoundation/dapp-kit/src'; +import { useWallet } from '../../ConnexProvider'; export const createButtonWithModal = () => createComponent({ @@ -9,8 +12,34 @@ export const createButtonWithModal = () => react: React, }); -export const ConnectWalletModal: React.FC = () => { +interface ConnectWalletProps { + onConnectError?: (err: unknown) => void; + onConnected?: (res: ConnectResponse) => void; +} + +/** + * ConnectWalletModal + * + * This component allows the user to select a wallet and then connect. The account address should be available after the connection is successful. + */ + +export const ConnectWalletModal: React.FC = ({ + onConnectError, + onConnected, +}) => { const Modal = useMemo(() => createButtonWithModal(), []); - return ; + const { setSource, connect } = useWallet(); + + const onSourceClick = useCallback( + (source?: SourceInfo) => { + if (source) { + setSource(source.id); + connect().then(onConnected).catch(onConnectError); + } + }, + [onConnectError, onConnected, connect, setSource], + ); + + return ; }; diff --git a/packages/dapp-kit-react/src/Components/SelectWalletModal/SelectWalletModal.tsx b/packages/dapp-kit-react/src/Components/SelectWalletModal/SelectWalletModal.tsx new file mode 100644 index 00000000..466f5154 --- /dev/null +++ b/packages/dapp-kit-react/src/Components/SelectWalletModal/SelectWalletModal.tsx @@ -0,0 +1,42 @@ +import React, { useCallback, useMemo } from 'react'; +import { createComponent } from '@lit/react'; +import type { SourceInfo } from '@vechainfoundation/dapp-kit-ui'; +import { ConnectModal } from '@vechainfoundation/dapp-kit-ui'; +import type { WalletSource } from '@vechainfoundation/dapp-kit/src'; +import { useWallet } from '../../ConnexProvider'; + +export const createButtonWithModal = () => + createComponent({ + tagName: 'vwk-connect-modal', + elementClass: ConnectModal, + react: React, + }); + +interface SelectWalletProps { + onSelected?: (source: WalletSource) => void; +} + +/** + * SelectWalletModal + * + * This component is used to select the wallet source. It will not attempt to connect to the wallet + */ +export const SelectWalletModal: React.FC = ({ + onSelected, +}) => { + const Modal = useMemo(() => createButtonWithModal(), []); + + const { setSource } = useWallet(); + + const onSourceClick = useCallback( + (source?: SourceInfo) => { + if (source) { + setSource(source.id); + onSelected?.(source.id); + } + }, + [onSelected, setSource], + ); + + return ; +}; diff --git a/packages/dapp-kit-react/src/Components/SelectWalletModal/index.ts b/packages/dapp-kit-react/src/Components/SelectWalletModal/index.ts new file mode 100644 index 00000000..48f33157 --- /dev/null +++ b/packages/dapp-kit-react/src/Components/SelectWalletModal/index.ts @@ -0,0 +1 @@ +export * from './SelectWalletModal'; From d34db1e94d2da7651ddba3af1216f805d2241d9d Mon Sep 17 00:00:00 2001 From: Darren Kelly Date: Tue, 28 Nov 2023 17:27:16 +0000 Subject: [PATCH 4/8] fix: components for react --- .../src/Components/ConnectWalletModal/ConnectWalletModal.tsx | 2 +- .../src/Components/SelectWalletModal/SelectWalletModal.tsx | 2 +- packages/dapp-kit-react/src/Components/index.ts | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/dapp-kit-react/src/Components/ConnectWalletModal/ConnectWalletModal.tsx b/packages/dapp-kit-react/src/Components/ConnectWalletModal/ConnectWalletModal.tsx index 24c1ac86..fc05226a 100644 --- a/packages/dapp-kit-react/src/Components/ConnectWalletModal/ConnectWalletModal.tsx +++ b/packages/dapp-kit-react/src/Components/ConnectWalletModal/ConnectWalletModal.tsx @@ -5,7 +5,7 @@ import { ConnectModal } from '@vechainfoundation/dapp-kit-ui'; import type { ConnectResponse } from '@vechainfoundation/dapp-kit/src'; import { useWallet } from '../../ConnexProvider'; -export const createButtonWithModal = () => +const createButtonWithModal = () => createComponent({ tagName: 'vwk-connect-modal', elementClass: ConnectModal, diff --git a/packages/dapp-kit-react/src/Components/SelectWalletModal/SelectWalletModal.tsx b/packages/dapp-kit-react/src/Components/SelectWalletModal/SelectWalletModal.tsx index 466f5154..075b7b4b 100644 --- a/packages/dapp-kit-react/src/Components/SelectWalletModal/SelectWalletModal.tsx +++ b/packages/dapp-kit-react/src/Components/SelectWalletModal/SelectWalletModal.tsx @@ -5,7 +5,7 @@ import { ConnectModal } from '@vechainfoundation/dapp-kit-ui'; import type { WalletSource } from '@vechainfoundation/dapp-kit/src'; import { useWallet } from '../../ConnexProvider'; -export const createButtonWithModal = () => +const createButtonWithModal = () => createComponent({ tagName: 'vwk-connect-modal', elementClass: ConnectModal, diff --git a/packages/dapp-kit-react/src/Components/index.ts b/packages/dapp-kit-react/src/Components/index.ts index 2c610c67..7ff0f4ee 100644 --- a/packages/dapp-kit-react/src/Components/index.ts +++ b/packages/dapp-kit-react/src/Components/index.ts @@ -1,2 +1,3 @@ export * from './ConnectWalletButtonWithModal'; export * from './ConnectWalletModal'; +export * from './SelectWalletModal'; From 4d6de0a12ba369a93c39449629529746a75abfe0 Mon Sep 17 00:00:00 2001 From: Darren Kelly Date: Wed, 29 Nov 2023 09:03:05 +0000 Subject: [PATCH 5/8] chore: rename vewold-extensnion to veworld --- .../src/Components/AccountDetailBody.tsx | 2 +- .../src/Constants/Constants.ts | 30 ------------------- apps/sample-react-app/src/Constants/index.ts | 1 - .../src/connex/ConnexProvider.vue | 2 +- package.json | 2 +- packages/dapp-kit-react/README.md | 4 +-- .../src/components/vwk-connect-modal/index.ts | 28 ++++++++--------- packages/dapp-kit-ui/src/constants/sources.ts | 30 ++++++++----------- packages/dapp-kit/README.md | 6 ++-- packages/dapp-kit/src/create-wallet.ts | 2 +- packages/dapp-kit/src/types.d.ts | 2 +- packages/dapp-kit/src/wallet-manager.ts | 4 +-- packages/dapp-kit/src/wallet.ts | 2 +- packages/dapp-kit/test/create-wallet.test.ts | 6 ++-- packages/dapp-kit/test/wallet-manager.test.ts | 6 ++-- .../dapp-kit/test/wallet-tests/sync.test.ts | 2 +- .../wallet-tests/veworld-extension.test.ts | 24 +++++++-------- 17 files changed, 57 insertions(+), 96 deletions(-) delete mode 100644 apps/sample-react-app/src/Constants/Constants.ts delete mode 100644 apps/sample-react-app/src/Constants/index.ts diff --git a/apps/sample-react-app/src/Components/AccountDetailBody.tsx b/apps/sample-react-app/src/Components/AccountDetailBody.tsx index d0b86356..802fd14b 100644 --- a/apps/sample-react-app/src/Components/AccountDetailBody.tsx +++ b/apps/sample-react-app/src/Components/AccountDetailBody.tsx @@ -1,7 +1,7 @@ import { Button, HStack, Image, Text, VStack } from '@chakra-ui/react'; import React, { useMemo } from 'react'; import type { WalletSource } from '@vechainfoundation/dapp-kit'; -import { WalletSources } from '../Constants'; +import { WalletSources } from '@vechainfoundation/dapp-kit-ui'; import { AddressButton } from './AddressButton'; interface AccountDetailBodyProps { diff --git a/apps/sample-react-app/src/Constants/Constants.ts b/apps/sample-react-app/src/Constants/Constants.ts deleted file mode 100644 index acec15eb..00000000 --- a/apps/sample-react-app/src/Constants/Constants.ts +++ /dev/null @@ -1,30 +0,0 @@ -import type { WalletSource } from '@vechainfoundation/dapp-kit'; - -export const NODE_URL = 'https://testnet.vechain.org/'; -export const NODE_NETWORK = 'test'; - -interface SourceInfo { - name: string; - logo: string; -} - -const baseLogoUrl = `${process.env.PUBLIC_URL}/images/logo`; - -export const WalletSources: Record = { - 'wallet-connect': { - name: 'Wallet Connect', - logo: `${baseLogoUrl}/wallet-connect-logo.png`, - }, - 'veworld-extension': { - name: 'VeWorld Extension', - logo: `${baseLogoUrl}/veworld_black.png`, - }, - sync: { - name: 'Sync', - logo: `${baseLogoUrl}/sync.png`, - }, - sync2: { - name: 'Sync 2', - logo: `${baseLogoUrl}/sync2.png`, - }, -}; diff --git a/apps/sample-react-app/src/Constants/index.ts b/apps/sample-react-app/src/Constants/index.ts deleted file mode 100644 index a719bffa..00000000 --- a/apps/sample-react-app/src/Constants/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './Constants'; diff --git a/apps/sample-vue-app/src/connex/ConnexProvider.vue b/apps/sample-vue-app/src/connex/ConnexProvider.vue index a1f41428..3eaa4398 100644 --- a/apps/sample-vue-app/src/connex/ConnexProvider.vue +++ b/apps/sample-vue-app/src/connex/ConnexProvider.vue @@ -22,7 +22,7 @@ const initWallets = (hasWcOptions: boolean) => { } if (window.vechain) { - wallets.push('veworld-extension'); + wallets.push('veworld'); } if (hasWcOptions) { diff --git a/package.json b/package.json index 27af5de6..6498bd6e 100755 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "build:deps": "turbo build --no-daemon --filter='@vechainfoundation/*'", "clean": "rm -rf .turbo .parcel-cache build && npx turbo@latest run clean", "cucumber": "yarn && cucumber-js", - "dev": "turbo run dev", + "dev": "turbo run dev --filter='@vechainfoundation/*'", "format": "prettier --write \"**/*.{ts,tsx,md,json,js,jsx}\"", "install:all": "yarn && yarn run build:deps", "lint": "turbo run lint", diff --git a/packages/dapp-kit-react/README.md b/packages/dapp-kit-react/README.md index 237ae686..363d1cd2 100644 --- a/packages/dapp-kit-react/README.md +++ b/packages/dapp-kit-react/README.md @@ -75,8 +75,8 @@ export const App = (): JSX.Element => { import { useWallet, useConnex } from '@vechainfoundation/dapp-kit-react'; import type { WalletSource } from '@vechainfoundation/dapp-kit'; -// type WalletSource = 'wallet-connect' | 'veworld-extension' | 'sync2' | 'sync'; -const mySource: WalletSource = 'veworld-extension'; +// type WalletSource = 'wallet-connect' | 'veworld' | 'sync2' | 'sync'; +const mySource: WalletSource = 'veworld'; const { connect, setSource } = useWallet(); diff --git a/packages/dapp-kit-ui/src/components/vwk-connect-modal/index.ts b/packages/dapp-kit-ui/src/components/vwk-connect-modal/index.ts index c29af957..ee80f9cb 100644 --- a/packages/dapp-kit-ui/src/components/vwk-connect-modal/index.ts +++ b/packages/dapp-kit-ui/src/components/vwk-connect-modal/index.ts @@ -116,26 +116,12 @@ export class ConnectModal extends LitElement { private get availableSources(): SourceInfo[] { const availableSources = DAppKit.connex.wallet.getAvailableSources(); - return WalletSources.filter((src) => { - return availableSources.includes(src.id); - }); + return availableSources.map((source) => WalletSources[source]); } @property({ type: Function }) onClose: () => void = () => nothing; - private onBack = (): void => { - this.walletConnectQRcode = undefined; - }; - - private handleClose = (): void => { - // this timeout is to avoid flickering on close modal animation when the user is in the wallet connect modal - setTimeout(() => { - this.onBack(); - }, 500); - this.onClose(); - }; - override render(): TemplateResult { return html` @@ -190,6 +176,18 @@ export class ConnectModal extends LitElement { `; } + + private onBack = (): void => { + this.walletConnectQRcode = undefined; + }; + + private handleClose = (): void => { + // this timeout is to avoid flickering on close modal animation when the user is in the wallet connect modal + setTimeout(() => { + this.onBack(); + }, 500); + this.onClose(); + }; } declare global { diff --git a/packages/dapp-kit-ui/src/constants/sources.ts b/packages/dapp-kit-ui/src/constants/sources.ts index 124dfb41..52968421 100644 --- a/packages/dapp-kit-ui/src/constants/sources.ts +++ b/packages/dapp-kit-ui/src/constants/sources.ts @@ -1,37 +1,31 @@ +import type { WalletSource } from '@vechainfoundation/dapp-kit'; import { Sync2Logo, SyncLogo, VeWorldLogo, WalletConnectLogo } from '../assets'; -enum WalletSource { - WalletConnect = 'wallet-connect', - VeWorldExtension = 'veworld-extension', - Sync2 = 'sync2', - Sync = 'sync', -} - export interface SourceInfo { id: WalletSource; name: string; logo: string; } -export const WalletSources: SourceInfo[] = [ - { - id: WalletSource.WalletConnect, +export const WalletSources: Record = { + 'wallet-connect': { + id: 'wallet-connect', name: 'Wallet Connect', logo: WalletConnectLogo, }, - { - id: WalletSource.VeWorldExtension, - name: 'VeWorld Extension', + veworld: { + id: 'veworld', + name: 'VeWorld', logo: VeWorldLogo, }, - { - id: WalletSource.Sync, + sync: { + id: 'sync', name: 'Sync', logo: SyncLogo, }, - { - id: WalletSource.Sync2, + sync2: { + id: 'sync2', name: 'Sync 2', logo: Sync2Logo, }, -]; +}; diff --git a/packages/dapp-kit/README.md b/packages/dapp-kit/README.md index 62ac3d35..5562fba3 100644 --- a/packages/dapp-kit/README.md +++ b/packages/dapp-kit/README.md @@ -57,10 +57,10 @@ const { thor, vendor, wallet } = new MultiWalletConnex({ ```typescript import type { WalletSource } from '@vechainfoundation/dapp-kit'; -// type WalletSource = 'wallet-connect' | 'veworld-extension' | 'sync2' | 'sync'; -const mySource: WalletSource = 'veworld-extension'; +// type WalletSource = 'wallet-connect' | 'veworld' | 'sync2' | 'sync'; +const mySource: WalletSource = 'veworld'; -wallet.setSource('veworld-extension'); +wallet.setSource('veworld'); ``` - Connect to the wallet. This will return the user's address diff --git a/packages/dapp-kit/src/create-wallet.ts b/packages/dapp-kit/src/create-wallet.ts index 3aed4269..b42f4e64 100644 --- a/packages/dapp-kit/src/create-wallet.ts +++ b/packages/dapp-kit/src/create-wallet.ts @@ -35,7 +35,7 @@ export const createWallet = ({ return new CertificateBasedWallet(convertVendorToSigner(vendor)); } - case 'veworld-extension': { + case 'veworld': { if (!window.vechain) { throw new Error('VeWorld Extension is not installed'); } diff --git a/packages/dapp-kit/src/types.d.ts b/packages/dapp-kit/src/types.d.ts index 4a91641e..891fc461 100644 --- a/packages/dapp-kit/src/types.d.ts +++ b/packages/dapp-kit/src/types.d.ts @@ -10,7 +10,7 @@ declare global { } } -type WalletSource = 'wallet-connect' | 'veworld-extension' | 'sync2' | 'sync'; +type WalletSource = 'wallet-connect' | 'veworld' | 'sync2' | 'sync'; interface WalletConfig { requiresCertificate: boolean; diff --git a/packages/dapp-kit/src/wallet-manager.ts b/packages/dapp-kit/src/wallet-manager.ts index c6b3f1ae..7055ec0a 100644 --- a/packages/dapp-kit/src/wallet-manager.ts +++ b/packages/dapp-kit/src/wallet-manager.ts @@ -84,7 +84,7 @@ class WalletManager { throw new Error('WalletConnect options are not provided'); } - if (src === 'veworld-extension' && !window.vechain) { + if (src === 'veworld' && !window.vechain) { throw new Error('VeWorld Extension is not installed'); } @@ -102,7 +102,7 @@ class WalletManager { const wallets: WalletSource[] = ['sync2']; if (window.vechain) { - wallets.push('veworld-extension'); + wallets.push('veworld'); } if (window.connex) { diff --git a/packages/dapp-kit/src/wallet.ts b/packages/dapp-kit/src/wallet.ts index 26c63419..40630ecd 100644 --- a/packages/dapp-kit/src/wallet.ts +++ b/packages/dapp-kit/src/wallet.ts @@ -12,7 +12,7 @@ const WalletMapping: Record = { 'wallet-connect': { requiresCertificate: false, }, - 'veworld-extension': DEFAULT_CONFIG, + veworld: DEFAULT_CONFIG, sync2: DEFAULT_CONFIG, sync: DEFAULT_CONFIG, }; diff --git a/packages/dapp-kit/test/create-wallet.test.ts b/packages/dapp-kit/test/create-wallet.test.ts index 8e3fdc43..9141d3cc 100644 --- a/packages/dapp-kit/test/create-wallet.test.ts +++ b/packages/dapp-kit/test/create-wallet.test.ts @@ -42,12 +42,12 @@ describe('createWallet', () => { }); }); - describe('veworld-extension', () => { + describe('veworld', () => { it('is not installed', () => { window.vechain = undefined; expect(() => { - createWallet(createOptions('veworld-extension')); + createWallet(createOptions('veworld')); }).toThrowError('VeWorld Extension is not installed'); }); @@ -56,7 +56,7 @@ describe('createWallet', () => { newConnexSigner: () => ({} as Connex.Signer), }; - const wallet = createWallet(createOptions('veworld-extension')); + const wallet = createWallet(createOptions('veworld')); expect(wallet).toBeDefined(); }); diff --git a/packages/dapp-kit/test/wallet-manager.test.ts b/packages/dapp-kit/test/wallet-manager.test.ts index fc89df84..9ef5c895 100644 --- a/packages/dapp-kit/test/wallet-manager.test.ts +++ b/packages/dapp-kit/test/wallet-manager.test.ts @@ -45,7 +45,7 @@ describe('WalletManager', () => { describe('signTx', () => { it('should sign the tx', async () => { const walletManager = newWalletManager(); - walletManager.setSource('veworld-extension'); + walletManager.setSource('veworld'); const res = await walletManager.signTx([], {}); expect(res.txid).toBeDefined(); @@ -55,7 +55,7 @@ describe('WalletManager', () => { describe('signCert', () => { it('should sign the cert', async () => { const walletManager = newWalletManager(); - walletManager.setSource('veworld-extension'); + walletManager.setSource('veworld'); const res = await walletManager.signCert( { payload: { content: 'Hello world', type: 'text' }, @@ -80,7 +80,7 @@ describe('WalletManager', () => { it('from remote', async () => { const walletManager = newWalletManager(); - walletManager.setSource('veworld-extension'); + walletManager.setSource('veworld'); await walletManager.disconnect(true); diff --git a/packages/dapp-kit/test/wallet-tests/sync.test.ts b/packages/dapp-kit/test/wallet-tests/sync.test.ts index b99b4669..ef68a384 100644 --- a/packages/dapp-kit/test/wallet-tests/sync.test.ts +++ b/packages/dapp-kit/test/wallet-tests/sync.test.ts @@ -73,7 +73,7 @@ describe('sync', () => { ); }); - it('get available sources - should not include veworld-extension', () => { + it('get available sources - should not include veworld', () => { const connex = createUnitTestConnex(); const sources = connex.wallet.getAvailableSources(); diff --git a/packages/dapp-kit/test/wallet-tests/veworld-extension.test.ts b/packages/dapp-kit/test/wallet-tests/veworld-extension.test.ts index 275d331a..1575aebc 100644 --- a/packages/dapp-kit/test/wallet-tests/veworld-extension.test.ts +++ b/packages/dapp-kit/test/wallet-tests/veworld-extension.test.ts @@ -2,8 +2,8 @@ import { beforeEach, expect } from 'vitest'; import { mockedConnexSigner } from '../helpers/mocked-signer'; import { createUnitTestConnex } from '../helpers/connex-helper'; -describe('veworld-extension', () => { - describe('is in veworld-extension browser', () => { +describe('veworld', () => { + describe('is in veworld browser', () => { beforeEach(() => { window.vechain = { newConnexSigner: (): Connex.Signer => mockedConnexSigner, @@ -13,7 +13,7 @@ describe('veworld-extension', () => { it('should connect', async () => { const connex = createUnitTestConnex(); - connex.wallet.setSource('veworld-extension'); + connex.wallet.setSource('veworld'); const res = await connex.wallet.connect(); @@ -23,7 +23,7 @@ describe('veworld-extension', () => { it('can disconnect', async () => { const connex = createUnitTestConnex(); - connex.wallet.setSource('veworld-extension'); + connex.wallet.setSource('veworld'); await connex.wallet.disconnect(); @@ -32,16 +32,16 @@ describe('veworld-extension', () => { expect(currentSource).toBe(null); }); - it('get available sources - should include veworld-extension', () => { + it('get available sources - should include veworld', () => { const connex = createUnitTestConnex(); const sources = connex.wallet.getAvailableSources(); - expect(sources).toContain('veworld-extension'); + expect(sources).toContain('veworld'); }); }); - describe('is NOT in veworld-extension browser', () => { + describe('is NOT in veworld browser', () => { beforeEach(() => { window.vechain = undefined; }); @@ -49,17 +49,17 @@ describe('veworld-extension', () => { it('not installed - should throw error', () => { const connex = createUnitTestConnex(); - expect(() => - connex.wallet.setSource('veworld-extension'), - ).toThrowError('VeWorld Extension is not installed'); + expect(() => connex.wallet.setSource('veworld')).toThrowError( + 'VeWorld Extension is not installed', + ); }); - it('get available sources - should not include veworld-extension', () => { + it('get available sources - should not include veworld', () => { const connex = createUnitTestConnex(); const sources = connex.wallet.getAvailableSources(); - expect(sources).not.toContain('veworld-extension'); + expect(sources).not.toContain('veworld'); }); }); }); From 0f37bde8f2b68131d51be3f023ce718ea742be60 Mon Sep 17 00:00:00 2001 From: Darren Kelly Date: Wed, 29 Nov 2023 09:45:30 +0000 Subject: [PATCH 6/8] fix: publish only relevant files --- packages/dapp-kit-react/package.json | 5 +++++ packages/dapp-kit-ui/package.json | 5 +++++ packages/dapp-kit/package.json | 5 +++++ 3 files changed, 15 insertions(+) diff --git a/packages/dapp-kit-react/package.json b/packages/dapp-kit-react/package.json index 63a615ab..21b7ba43 100644 --- a/packages/dapp-kit-react/package.json +++ b/packages/dapp-kit-react/package.json @@ -7,6 +7,11 @@ "type": "module", "main": "./dist/index.js", "types": "./dist/index.d.ts", + "files": [ + "dist", + "package.json", + "README.md" + ], "scripts": { "build": "tsup src/index.tsx --format esm --dts --external react", "clean": "rm -rf dist .turbo", diff --git a/packages/dapp-kit-ui/package.json b/packages/dapp-kit-ui/package.json index cfe9e5f2..b392ca1e 100644 --- a/packages/dapp-kit-ui/package.json +++ b/packages/dapp-kit-ui/package.json @@ -14,6 +14,11 @@ "type": "module", "main": "dist/index.js", "types": "dist/index.d.ts", + "files": [ + "dist", + "package.json", + "README.md" + ], "scripts": { "build": "tsup", "clean": "rm -rf dist .turbo", diff --git a/packages/dapp-kit/package.json b/packages/dapp-kit/package.json index 3a0c3eba..2fa8951e 100644 --- a/packages/dapp-kit/package.json +++ b/packages/dapp-kit/package.json @@ -5,6 +5,11 @@ "type": "module", "main": "./dist/index.js", "types": "./dist/index.d.ts", + "files": [ + "dist", + "package.json", + "README.md" + ], "scripts": { "build": "tsup src/index.ts --format cjs,esm --dts", "clean": "rm -rf dist .turbo", From 927d7ce698e9f09790a8f4dd1358f435361b172c Mon Sep 17 00:00:00 2001 From: Darren Kelly Date: Wed, 29 Nov 2023 09:46:48 +0000 Subject: [PATCH 7/8] chore: add license to publish --- packages/dapp-kit-react/LICENSE | 21 +++++++++++++++++++++ packages/dapp-kit-react/package.json | 3 ++- packages/dapp-kit-ui/package.json | 3 ++- packages/dapp-kit/LICENSE | 21 +++++++++++++++++++++ packages/dapp-kit/package.json | 3 ++- 5 files changed, 48 insertions(+), 3 deletions(-) create mode 100644 packages/dapp-kit-react/LICENSE create mode 100644 packages/dapp-kit/LICENSE diff --git a/packages/dapp-kit-react/LICENSE b/packages/dapp-kit-react/LICENSE new file mode 100644 index 00000000..329efe3f --- /dev/null +++ b/packages/dapp-kit-react/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 Vechain + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/packages/dapp-kit-react/package.json b/packages/dapp-kit-react/package.json index 21b7ba43..47cec779 100644 --- a/packages/dapp-kit-react/package.json +++ b/packages/dapp-kit-react/package.json @@ -10,7 +10,8 @@ "files": [ "dist", "package.json", - "README.md" + "README.md", + "LICENSE" ], "scripts": { "build": "tsup src/index.tsx --format esm --dts --external react", diff --git a/packages/dapp-kit-ui/package.json b/packages/dapp-kit-ui/package.json index b392ca1e..1f4eeb29 100644 --- a/packages/dapp-kit-ui/package.json +++ b/packages/dapp-kit-ui/package.json @@ -17,7 +17,8 @@ "files": [ "dist", "package.json", - "README.md" + "README.md", + "LICENSE" ], "scripts": { "build": "tsup", diff --git a/packages/dapp-kit/LICENSE b/packages/dapp-kit/LICENSE new file mode 100644 index 00000000..329efe3f --- /dev/null +++ b/packages/dapp-kit/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 Vechain + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/packages/dapp-kit/package.json b/packages/dapp-kit/package.json index 2fa8951e..28f75406 100644 --- a/packages/dapp-kit/package.json +++ b/packages/dapp-kit/package.json @@ -8,7 +8,8 @@ "files": [ "dist", "package.json", - "README.md" + "README.md", + "LICENSE" ], "scripts": { "build": "tsup src/index.ts --format cjs,esm --dts", From 0fbe5e15c99f9b3657bd8064f5977ad6b10830a1 Mon Sep 17 00:00:00 2001 From: Darren Kelly <107671032+darrenvechain@users.noreply.github.com> Date: Wed, 29 Nov 2023 09:51:07 +0000 Subject: [PATCH 8/8] add react components (#109) (#112) * fix: extension wasn't working unless running without ssr * feat: add modal only component * fix: components for react * fix: components for react * chore: rename vewold-extensnion to veworld