From a17457204462382ad7cc3907d820555e0440caef Mon Sep 17 00:00:00 2001 From: Davide Carpini Date: Thu, 8 Feb 2024 16:36:31 +0100 Subject: [PATCH 1/3] fix: add empty ts-config back --- .../dapp-kit/src/classes/certificate-wallet.ts | 18 ++++++++++++++---- .../dapp-kit/src/classes/wallet-manager.ts | 10 +++++++--- packages/dapp-kit/src/types/types.d.ts | 4 ++++ packages/dapp-kit/src/utils/create-wallet.ts | 13 ++++++++++--- tsconfig.json | 3 +++ 5 files changed, 38 insertions(+), 10 deletions(-) create mode 100644 tsconfig.json diff --git a/packages/dapp-kit/src/classes/certificate-wallet.ts b/packages/dapp-kit/src/classes/certificate-wallet.ts index 8203096a..79eaa2d0 100644 --- a/packages/dapp-kit/src/classes/certificate-wallet.ts +++ b/packages/dapp-kit/src/classes/certificate-wallet.ts @@ -6,17 +6,27 @@ import { DEFAULT_CONNECT_CERT_MESSAGE } from '../constants'; * A `ConnexWallet` for wallet's that use a certificate connection */ class CertificateBasedWallet implements ConnexWallet { - constructor(private readonly wallet: BaseWallet) {} + constructor( + private readonly wallet: BaseWallet, + private readonly connectionCertificateData?: { + message?: Connex.Vendor.CertMessage; + options?: Connex.Signer.CertOptions; + }, + ) {} connect = async (): Promise => { - const cert = DEFAULT_CONNECT_CERT_MESSAGE; + const certificateMessage = + this.connectionCertificateData?.message || + DEFAULT_CONNECT_CERT_MESSAGE; + const certificateOptions = + this.connectionCertificateData?.options || {}; const { annex: { domain, signer, timestamp }, signature, - } = await this.signCert(cert, {}); + } = await this.signCert(certificateMessage, certificateOptions); const connectionCertificate = { - ...cert, + ...certificateMessage, signature, signer, domain, diff --git a/packages/dapp-kit/src/classes/wallet-manager.ts b/packages/dapp-kit/src/classes/wallet-manager.ts index 1526f21a..f4e4064a 100644 --- a/packages/dapp-kit/src/classes/wallet-manager.ts +++ b/packages/dapp-kit/src/classes/wallet-manager.ts @@ -68,14 +68,18 @@ class WalletManager { // this is needed for wallet connect connections when a connection certificate is required signConnectionCertificate = async (): Promise => { - const cert = DEFAULT_CONNECT_CERT_MESSAGE; + const certificateMessage = + this.options.connectionCertificate?.message || + DEFAULT_CONNECT_CERT_MESSAGE; + const certificateOptions = + this.options.connectionCertificate?.options || {}; const { annex: { domain, signer, timestamp }, signature, - } = await this.wallet.signCert(cert, {}); + } = await this.wallet.signCert(certificateMessage, certificateOptions); const connectionCertificate = { - ...cert, + ...certificateMessage, signature, signer, domain, diff --git a/packages/dapp-kit/src/types/types.d.ts b/packages/dapp-kit/src/types/types.d.ts index 8032a4e0..eaf997b9 100644 --- a/packages/dapp-kit/src/types/types.d.ts +++ b/packages/dapp-kit/src/types/types.d.ts @@ -37,6 +37,10 @@ interface DAppKitOptions { useFirstDetectedSource?: boolean; logLevel?: LogLevel; requireCertificate?: boolean; + connectionCertificate?: { + message?: Connex.Vendor.CertMessage; + options?: Connex.Signer.CertOptions; + }; } type BaseWallet = Connex.Signer & { diff --git a/packages/dapp-kit/src/utils/create-wallet.ts b/packages/dapp-kit/src/utils/create-wallet.ts index 3e4c40b5..9bce28f0 100644 --- a/packages/dapp-kit/src/utils/create-wallet.ts +++ b/packages/dapp-kit/src/utils/create-wallet.ts @@ -25,6 +25,7 @@ export const createWallet = ({ genesis, walletConnectOptions, onDisconnected, + connectionCertificate, }: ICreateWallet): ConnexWallet => { const genesisId = normalizeGenesisId(genesis); @@ -38,12 +39,18 @@ export const createWallet = ({ const vendor = new ConnexLib.Connex.Vendor(genesisId, 'sync'); - return new CertificateBasedWallet(convertVendorToSigner(vendor)); + return new CertificateBasedWallet( + convertVendorToSigner(vendor), + connectionCertificate, + ); } case 'sync2': { const vendor = new ConnexLib.Connex.Vendor(genesisId, 'sync2'); - return new CertificateBasedWallet(convertVendorToSigner(vendor)); + return new CertificateBasedWallet( + convertVendorToSigner(vendor), + connectionCertificate, + ); } case 'veworld': { if (!window.vechain) { @@ -52,7 +59,7 @@ export const createWallet = ({ const signer = window.vechain.newConnexSigner(genesisId); - return new CertificateBasedWallet(signer); + return new CertificateBasedWallet(signer, connectionCertificate); } case 'wallet-connect': { if (!walletConnectOptions) { diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 00000000..cd727e8c --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,3 @@ +{ + "compilerOptions": {} +} From c224701ce659a8c70bb328a0f819bc9be97997a9 Mon Sep 17 00:00:00 2001 From: Davide Carpini Date: Thu, 8 Feb 2024 16:50:06 +0100 Subject: [PATCH 2/3] fix: dapp kit type exports and fix react connection certificate data --- examples/sample-react-app/src/main.tsx | 9 +++++++++ packages/dapp-kit-react/src/DAppKitProvider.tsx | 3 +++ packages/dapp-kit-react/src/types.ts | 2 ++ tsconfig.json | 2 +- 4 files changed, 15 insertions(+), 1 deletion(-) diff --git a/examples/sample-react-app/src/main.tsx b/examples/sample-react-app/src/main.tsx index d16d2546..373218e5 100644 --- a/examples/sample-react-app/src/main.tsx +++ b/examples/sample-react-app/src/main.tsx @@ -23,6 +23,15 @@ ReactDOM.createRoot(document.getElementById('root')!).render( genesis={'test'} usePersistence walletConnectOptions={walletConnectOptions} + connectionCertificate={{ + message: { + purpose: 'identification', + payload: { + type: 'text', + content: `Sign this message to confirm that you own this wallet: GINOOOOOO`, + }, + }, + }} > diff --git a/packages/dapp-kit-react/src/DAppKitProvider.tsx b/packages/dapp-kit-react/src/DAppKitProvider.tsx index 7f8a625c..8d8a8655 100644 --- a/packages/dapp-kit-react/src/DAppKitProvider.tsx +++ b/packages/dapp-kit-react/src/DAppKitProvider.tsx @@ -31,6 +31,7 @@ export const DAppKitProvider: React.FC = ({ language, modalParent, onSourceClick, + connectionCertificate: connectionCertificateData, }): React.ReactElement => { const connex = useMemo( () => @@ -47,6 +48,7 @@ export const DAppKitProvider: React.FC = ({ language, modalParent, onSourceClick, + connectionCertificate: connectionCertificateData, }), [ nodeUrl, @@ -61,6 +63,7 @@ export const DAppKitProvider: React.FC = ({ language, modalParent, onSourceClick, + connectionCertificateData, ], ); diff --git a/packages/dapp-kit-react/src/types.ts b/packages/dapp-kit-react/src/types.ts index 0bac2d26..087fa32f 100644 --- a/packages/dapp-kit-react/src/types.ts +++ b/packages/dapp-kit-react/src/types.ts @@ -3,6 +3,8 @@ import type React from 'react'; import * as ThorDevkit from 'thor-devkit'; import type { ConnectResponse, WalletSource } from '@vechain/dapp-kit'; import { type DAppKitUIOptions } from '@vechain/dapp-kit-ui'; +export type { WalletConnectOptions, DAppKitOptions } from '@vechain/dapp-kit'; +export type { DAppKitUIOptions } from '@vechain/dapp-kit-ui'; export interface AccountState { address: string | null; diff --git a/tsconfig.json b/tsconfig.json index cd727e8c..d02c2e89 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,3 +1,3 @@ { - "compilerOptions": {} + "extends": "@vechain/repo-config/src/tsconfig/base.json" } From 38ecf45666527d51d088b98c315cee21bf34fc67 Mon Sep 17 00:00:00 2001 From: Davide Carpini Date: Thu, 8 Feb 2024 16:52:48 +0100 Subject: [PATCH 3/3] fix: remove certificate in the sample dapp --- examples/sample-react-app/src/main.tsx | 9 --------- 1 file changed, 9 deletions(-) diff --git a/examples/sample-react-app/src/main.tsx b/examples/sample-react-app/src/main.tsx index 373218e5..d16d2546 100644 --- a/examples/sample-react-app/src/main.tsx +++ b/examples/sample-react-app/src/main.tsx @@ -23,15 +23,6 @@ ReactDOM.createRoot(document.getElementById('root')!).render( genesis={'test'} usePersistence walletConnectOptions={walletConnectOptions} - connectionCertificate={{ - message: { - purpose: 'identification', - payload: { - type: 'text', - content: `Sign this message to confirm that you own this wallet: GINOOOOOO`, - }, - }, - }} >