From 300f18b109483bb1367db524dd08ab1bc23c8059 Mon Sep 17 00:00:00 2001 From: Azizi <64193693+azizi-a@users.noreply.github.com> Date: Fri, 26 Apr 2024 14:15:51 +0100 Subject: [PATCH 1/2] feat: add alternate init dapp-definition field name --- packages/dapp-toolkit/src/_types.ts | 17 ++++++++++++++--- packages/dapp-toolkit/src/radix-dapp-toolkit.ts | 3 ++- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/packages/dapp-toolkit/src/_types.ts b/packages/dapp-toolkit/src/_types.ts index d1d2dbff..9f47b815 100644 --- a/packages/dapp-toolkit/src/_types.ts +++ b/packages/dapp-toolkit/src/_types.ts @@ -95,10 +95,21 @@ export type OptionalRadixDappToolkitOptions = { enableMobile: boolean } -export type RadixDappToolkitOptions = { +type RequiredRadixDappToolkitOptions = { networkId: number - dAppDefinitionAddress: string -} & Partial<OptionalRadixDappToolkitOptions> +} & ( + | { + dAppDefinitionAddress: string + applicationDappDefinitionAddress?: never + } + | { + dAppDefinitionAddress?: never + applicationDappDefinitionAddress: string + } +) + +export type RadixDappToolkitOptions = Partial<OptionalRadixDappToolkitOptions> & + RequiredRadixDappToolkitOptions export type SendTransactionResult = ResultAsync< { diff --git a/packages/dapp-toolkit/src/radix-dapp-toolkit.ts b/packages/dapp-toolkit/src/radix-dapp-toolkit.ts index 2db52ae2..99ad1c08 100644 --- a/packages/dapp-toolkit/src/radix-dapp-toolkit.ts +++ b/packages/dapp-toolkit/src/radix-dapp-toolkit.ts @@ -22,8 +22,9 @@ export type RadixDappToolkit = { export const RadixDappToolkit = ( options: RadixDappToolkitOptions, ): RadixDappToolkit => { + const dAppDefinitionAddress = + options.dAppDefinitionAddress ?? options.applicationDappDefinitionAddress const { - dAppDefinitionAddress, networkId, providers, logger, From bf8f1b58ccfaf5dafe41d7338769f1ab56af3e9f Mon Sep 17 00:00:00 2001 From: Azizi <64193693+azizi-a@users.noreply.github.com> Date: Mon, 29 Apr 2024 11:00:07 +0100 Subject: [PATCH 2/2] feat: add gateway api client config --- examples/simple-dapp/package.json | 1 + examples/simple-dapp/src/main.ts | 23 ++++++++++++++--- examples/simple-dapp/src/style.css | 1 - package-lock.json | 6 +++++ packages/dapp-toolkit/src/_types.ts | 7 ++++++ .../dapp-toolkit/src/gateway/gateway-api.ts | 16 +++++------- .../helpers/generate-gateway-api-config.ts | 20 +++++++++++++++ .../dapp-toolkit/src/radix-dapp-toolkit.ts | 25 +++++++++++++------ 8 files changed, 77 insertions(+), 22 deletions(-) create mode 100644 packages/dapp-toolkit/src/helpers/generate-gateway-api-config.ts diff --git a/examples/simple-dapp/package.json b/examples/simple-dapp/package.json index 70df0d05..a993c923 100644 --- a/examples/simple-dapp/package.json +++ b/examples/simple-dapp/package.json @@ -10,6 +10,7 @@ "deploy": "sst deploy" }, "dependencies": { + "@radixdlt/babylon-gateway-api-sdk": "^1.4.1", "@radixdlt/radix-dapp-toolkit": "*" }, "devDependencies": { diff --git a/examples/simple-dapp/src/main.ts b/examples/simple-dapp/src/main.ts index 7d533821..856ae5cc 100644 --- a/examples/simple-dapp/src/main.ts +++ b/examples/simple-dapp/src/main.ts @@ -1,3 +1,4 @@ +import { GatewayApiClient } from '@radixdlt/babylon-gateway-api-sdk' import './style.css' import { RadixDappToolkit, @@ -28,6 +29,8 @@ content.innerHTML = ` <pre id="walletResponse"></pre> <pre id="requests"></pre> <pre id="state"></pre> + <pre id="gatewayConfig"></pre> + <pre id="gatewayStatus"></pre> <pre id="device"></pre> <pre id="logs"></pre> ` @@ -39,6 +42,8 @@ const walletResponse = document.getElementById('walletResponse')! const device = document.getElementById('device')! const logs = document.getElementById('logs')! const state = document.getElementById('state')! +const gatewayConfig = document.getElementById('gatewayConfig')! +const gatewayStatus = document.getElementById('gatewayStatus')! const logger = Logger() @@ -56,7 +61,7 @@ const requestItemClient = RequestItemClient({ }) const dAppToolkit = RadixDappToolkit({ - dAppDefinitionAddress, + applicationDappDefinitionAddress: dAppDefinitionAddress, networkId, enableMobile: true, providers: { @@ -69,6 +74,10 @@ const dAppToolkit = RadixDappToolkit({ logger, }) +const gatewayApi = GatewayApiClient.initialize( + dAppToolkit.gatewayApi.clientConfig, +) + dAppToolkit.walletApi.provideChallengeGenerator(async () => [...window.crypto.getRandomValues(new Uint8Array(32))] .map((x) => x.toString(16).padStart(2, '0')) @@ -77,6 +86,10 @@ dAppToolkit.walletApi.provideChallengeGenerator(async () => dAppToolkit.walletApi.setRequestData(DataRequestBuilder.persona().withProof()) +gatewayConfig.innerHTML = ` +[Gateway] +${JSON.stringify(dAppToolkit.gatewayApi.clientConfig, null, 2)}` + resetButton.onclick = () => { sessionStore.clear() requestsStore.clear() @@ -96,9 +109,13 @@ setInterval(() => { sessionStore.getItemList().map((value: any) => { sessions.innerHTML = JSON.stringify({ sessions: value }, null, 2) }) - // storageClient.getPartition('identities') + gatewayApi.status + .getCurrent() + .then( + (status) => (gatewayStatus.innerHTML = JSON.stringify(status, null, 2)), + ) // storageClient.getPartition('identities') // .getState((state) => { - // keyPairs.innerHTML = JSON.stringify(state, null, 2) + // keyPairs.innerHTML = JSON.stringify(state, null, 2) // debugger // }) // .map((items) => { diff --git a/examples/simple-dapp/src/style.css b/examples/simple-dapp/src/style.css index 3040e7bb..336f2e34 100644 --- a/examples/simple-dapp/src/style.css +++ b/examples/simple-dapp/src/style.css @@ -98,7 +98,6 @@ header { } pre { - width: 300px; text-align: left; overflow: auto; } diff --git a/package-lock.json b/package-lock.json index 874bfbbd..6768b549 100644 --- a/package-lock.json +++ b/package-lock.json @@ -76,6 +76,7 @@ "examples/simple-dapp": { "version": "0.0.0", "dependencies": { + "@radixdlt/babylon-gateway-api-sdk": "^1.4.1", "@radixdlt/radix-dapp-toolkit": "*" }, "devDependencies": { @@ -8147,6 +8148,11 @@ "@babel/runtime": "^7.13.10" } }, + "node_modules/@radixdlt/babylon-gateway-api-sdk": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@radixdlt/babylon-gateway-api-sdk/-/babylon-gateway-api-sdk-1.4.1.tgz", + "integrity": "sha512-oXkhGe80mZ5rGW1ZNnB1H03YpK7E2lhjW4P4Rw+zEC9QtgYl4xv5dVUjL4+g+yEPeXRKHNxkj4ko5v7jW+sh8A==" + }, "node_modules/@radixdlt/connect-button": { "resolved": "packages/connect-button", "link": true diff --git a/packages/dapp-toolkit/src/_types.ts b/packages/dapp-toolkit/src/_types.ts index 9f47b815..cda17b7f 100644 --- a/packages/dapp-toolkit/src/_types.ts +++ b/packages/dapp-toolkit/src/_types.ts @@ -205,3 +205,10 @@ export type TransportProvider = { disconnect: () => void destroy: () => void } + +export type GatewayApiClientConfig = { + basePath: string + applicationName: string + applicationVersion: string + applicationDappDefinitionAddress: string +} diff --git a/packages/dapp-toolkit/src/gateway/gateway-api.ts b/packages/dapp-toolkit/src/gateway/gateway-api.ts index 1763f5a6..9dde3afa 100644 --- a/packages/dapp-toolkit/src/gateway/gateway-api.ts +++ b/packages/dapp-toolkit/src/gateway/gateway-api.ts @@ -1,20 +1,16 @@ import { EntityMetadataItem, TransactionStatus } from './types' import { fetchWrapper } from '../helpers' import { __VERSION__ } from '../version' +import { GatewayApiClientConfig } from '../_types' export type GatewayApiClient = ReturnType<typeof GatewayApiClient> export const GatewayApiClient = ({ basePath, - dAppDefinitionAddress, applicationName, applicationVersion, -}: { - basePath: string - dAppDefinitionAddress?: string - applicationVersion?: string - applicationName?: string -}) => { + applicationDappDefinitionAddress, +}: GatewayApiClientConfig) => { const fetchWithHeaders = <T>(url: string, body: any) => fetchWrapper<T>( fetch(`${basePath}${url}`, { @@ -24,9 +20,9 @@ export const GatewayApiClient = ({ 'Content-Type': 'application/json', 'RDX-Client-Name': '@radixdlt/radix-dapp-toolkit', 'RDX-Client-Version': __VERSION__, - 'RDX-App-Name': applicationName ?? 'Unknown', - 'RDX-App-Version': applicationVersion ?? 'Unknown', - 'RDX-App-Dapp-Definition': dAppDefinitionAddress ?? 'Unknown', + 'RDX-App-Name': applicationName, + 'RDX-App-Version': applicationVersion, + 'RDX-App-Dapp-Definition': applicationDappDefinitionAddress, } as Record<string, string>, }), ).map((response) => response.data) diff --git a/packages/dapp-toolkit/src/helpers/generate-gateway-api-config.ts b/packages/dapp-toolkit/src/helpers/generate-gateway-api-config.ts new file mode 100644 index 00000000..b3791169 --- /dev/null +++ b/packages/dapp-toolkit/src/helpers/generate-gateway-api-config.ts @@ -0,0 +1,20 @@ +import { RadixNetworkConfigById } from '../gateway' + +export const generateGatewayApiClientConfig = ({ + networkId, + dAppDefinitionAddress, + gatewayBaseUrl, + applicationName, + applicationVersion, +}: { + networkId: number + dAppDefinitionAddress: string + gatewayBaseUrl?: string + applicationName?: string + applicationVersion?: string +}) => ({ + basePath: gatewayBaseUrl ?? RadixNetworkConfigById[networkId].gatewayUrl, + applicationName: applicationName ?? 'Unknown', + applicationVersion: applicationVersion ?? 'Unknown', + applicationDappDefinitionAddress: dAppDefinitionAddress, +}) diff --git a/packages/dapp-toolkit/src/radix-dapp-toolkit.ts b/packages/dapp-toolkit/src/radix-dapp-toolkit.ts index 99ad1c08..dd119298 100644 --- a/packages/dapp-toolkit/src/radix-dapp-toolkit.ts +++ b/packages/dapp-toolkit/src/radix-dapp-toolkit.ts @@ -1,6 +1,7 @@ import { ConnectButtonClient } from './connect-button/connect-button-client' import { ButtonApi, + GatewayApiClientConfig, RadixDappToolkitOptions, SendTransactionInput, WalletApi, @@ -10,11 +11,14 @@ import { GatewayClient } from './gateway/gateway' import { GatewayApiClient } from './gateway/gateway-api' import { WalletRequestClient } from './wallet-request' import { StateClient, WalletData } from './state' -import { RadixNetworkConfigById } from './gateway/types' +import { generateGatewayApiClientConfig } from './helpers/generate-gateway-api-config' export type RadixDappToolkit = { walletApi: WalletApi buttonApi: ButtonApi + gatewayApi: { + clientConfig: GatewayApiClientConfig + } disconnect: () => void destroy: () => void } @@ -49,17 +53,19 @@ export const RadixDappToolkit = ( }, }) + const gatewayApiClientConfig = generateGatewayApiClientConfig({ + networkId, + dAppDefinitionAddress, + gatewayBaseUrl, + applicationName, + applicationVersion, + }) + const gatewayClient = providers?.gatewayClient ?? GatewayClient({ logger, - gatewayApi: GatewayApiClient({ - basePath: - gatewayBaseUrl ?? RadixNetworkConfigById[networkId].gatewayUrl, - dAppDefinitionAddress, - applicationName, - applicationVersion, - }), + gatewayApi: GatewayApiClient(gatewayApiClientConfig), }) const walletRequestClient = @@ -123,6 +129,9 @@ export const RadixDappToolkit = ( setMode: connectButtonClient.setMode, status$: connectButtonClient.status$, }, + gatewayApi: { + clientConfig: gatewayApiClientConfig, + }, disconnect: () => { walletRequestClient.disconnect() connectButtonClient.disconnect()