Skip to content

Commit 66f68af

Browse files
authored
Merge pull request #185 from radixdlt/gateway-api-config-method
Gateway api client config
2 parents 5efbeb3 + bf8f1b5 commit 66f68af

File tree

8 files changed

+93
-26
lines changed

8 files changed

+93
-26
lines changed

examples/simple-dapp/package.json

+1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
"deploy": "sst deploy"
1111
},
1212
"dependencies": {
13+
"@radixdlt/babylon-gateway-api-sdk": "^1.4.1",
1314
"@radixdlt/radix-dapp-toolkit": "*"
1415
},
1516
"devDependencies": {

examples/simple-dapp/src/main.ts

+20-3
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { GatewayApiClient } from '@radixdlt/babylon-gateway-api-sdk'
12
import './style.css'
23
import {
34
RadixDappToolkit,
@@ -28,6 +29,8 @@ content.innerHTML = `
2829
<pre id="walletResponse"></pre>
2930
<pre id="requests"></pre>
3031
<pre id="state"></pre>
32+
<pre id="gatewayConfig"></pre>
33+
<pre id="gatewayStatus"></pre>
3134
<pre id="device"></pre>
3235
<pre id="logs"></pre>
3336
`
@@ -39,6 +42,8 @@ const walletResponse = document.getElementById('walletResponse')!
3942
const device = document.getElementById('device')!
4043
const logs = document.getElementById('logs')!
4144
const state = document.getElementById('state')!
45+
const gatewayConfig = document.getElementById('gatewayConfig')!
46+
const gatewayStatus = document.getElementById('gatewayStatus')!
4247

4348
const logger = Logger()
4449

@@ -56,7 +61,7 @@ const requestItemClient = RequestItemClient({
5661
})
5762

5863
const dAppToolkit = RadixDappToolkit({
59-
dAppDefinitionAddress,
64+
applicationDappDefinitionAddress: dAppDefinitionAddress,
6065
networkId,
6166
enableMobile: true,
6267
providers: {
@@ -69,6 +74,10 @@ const dAppToolkit = RadixDappToolkit({
6974
logger,
7075
})
7176

77+
const gatewayApi = GatewayApiClient.initialize(
78+
dAppToolkit.gatewayApi.clientConfig,
79+
)
80+
7281
dAppToolkit.walletApi.provideChallengeGenerator(async () =>
7382
[...window.crypto.getRandomValues(new Uint8Array(32))]
7483
.map((x) => x.toString(16).padStart(2, '0'))
@@ -77,6 +86,10 @@ dAppToolkit.walletApi.provideChallengeGenerator(async () =>
7786

7887
dAppToolkit.walletApi.setRequestData(DataRequestBuilder.persona().withProof())
7988

89+
gatewayConfig.innerHTML = `
90+
[Gateway]
91+
${JSON.stringify(dAppToolkit.gatewayApi.clientConfig, null, 2)}`
92+
8093
resetButton.onclick = () => {
8194
sessionStore.clear()
8295
requestsStore.clear()
@@ -96,9 +109,13 @@ setInterval(() => {
96109
sessionStore.getItemList().map((value: any) => {
97110
sessions.innerHTML = JSON.stringify({ sessions: value }, null, 2)
98111
})
99-
// storageClient.getPartition('identities')
112+
gatewayApi.status
113+
.getCurrent()
114+
.then(
115+
(status) => (gatewayStatus.innerHTML = JSON.stringify(status, null, 2)),
116+
) // storageClient.getPartition('identities')
100117
// .getState((state) => {
101-
// keyPairs.innerHTML = JSON.stringify(state, null, 2)
118+
// keyPairs.innerHTML = JSON.stringify(state, null, 2)
102119
// debugger
103120
// })
104121
// .map((items) => {

examples/simple-dapp/src/style.css

-1
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,6 @@ header {
9898
}
9999

100100
pre {
101-
width: 300px;
102101
text-align: left;
103102
overflow: auto;
104103
}

package-lock.json

+6
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/dapp-toolkit/src/_types.ts

+21-3
Original file line numberDiff line numberDiff line change
@@ -95,10 +95,21 @@ export type OptionalRadixDappToolkitOptions = {
9595
enableMobile: boolean
9696
}
9797

98-
export type RadixDappToolkitOptions = {
98+
type RequiredRadixDappToolkitOptions = {
9999
networkId: number
100-
dAppDefinitionAddress: string
101-
} & Partial<OptionalRadixDappToolkitOptions>
100+
} & (
101+
| {
102+
dAppDefinitionAddress: string
103+
applicationDappDefinitionAddress?: never
104+
}
105+
| {
106+
dAppDefinitionAddress?: never
107+
applicationDappDefinitionAddress: string
108+
}
109+
)
110+
111+
export type RadixDappToolkitOptions = Partial<OptionalRadixDappToolkitOptions> &
112+
RequiredRadixDappToolkitOptions
102113

103114
export type SendTransactionResult = ResultAsync<
104115
{
@@ -194,3 +205,10 @@ export type TransportProvider = {
194205
disconnect: () => void
195206
destroy: () => void
196207
}
208+
209+
export type GatewayApiClientConfig = {
210+
basePath: string
211+
applicationName: string
212+
applicationVersion: string
213+
applicationDappDefinitionAddress: string
214+
}

packages/dapp-toolkit/src/gateway/gateway-api.ts

+6-10
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,16 @@
11
import { EntityMetadataItem, TransactionStatus } from './types'
22
import { fetchWrapper } from '../helpers'
33
import { __VERSION__ } from '../version'
4+
import { GatewayApiClientConfig } from '../_types'
45

56
export type GatewayApiClient = ReturnType<typeof GatewayApiClient>
67

78
export const GatewayApiClient = ({
89
basePath,
9-
dAppDefinitionAddress,
1010
applicationName,
1111
applicationVersion,
12-
}: {
13-
basePath: string
14-
dAppDefinitionAddress?: string
15-
applicationVersion?: string
16-
applicationName?: string
17-
}) => {
12+
applicationDappDefinitionAddress,
13+
}: GatewayApiClientConfig) => {
1814
const fetchWithHeaders = <T>(url: string, body: any) =>
1915
fetchWrapper<T>(
2016
fetch(`${basePath}${url}`, {
@@ -24,9 +20,9 @@ export const GatewayApiClient = ({
2420
'Content-Type': 'application/json',
2521
'RDX-Client-Name': '@radixdlt/radix-dapp-toolkit',
2622
'RDX-Client-Version': __VERSION__,
27-
'RDX-App-Name': applicationName ?? 'Unknown',
28-
'RDX-App-Version': applicationVersion ?? 'Unknown',
29-
'RDX-App-Dapp-Definition': dAppDefinitionAddress ?? 'Unknown',
23+
'RDX-App-Name': applicationName,
24+
'RDX-App-Version': applicationVersion,
25+
'RDX-App-Dapp-Definition': applicationDappDefinitionAddress,
3026
} as Record<string, string>,
3127
}),
3228
).map((response) => response.data)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import { RadixNetworkConfigById } from '../gateway'
2+
3+
export const generateGatewayApiClientConfig = ({
4+
networkId,
5+
dAppDefinitionAddress,
6+
gatewayBaseUrl,
7+
applicationName,
8+
applicationVersion,
9+
}: {
10+
networkId: number
11+
dAppDefinitionAddress: string
12+
gatewayBaseUrl?: string
13+
applicationName?: string
14+
applicationVersion?: string
15+
}) => ({
16+
basePath: gatewayBaseUrl ?? RadixNetworkConfigById[networkId].gatewayUrl,
17+
applicationName: applicationName ?? 'Unknown',
18+
applicationVersion: applicationVersion ?? 'Unknown',
19+
applicationDappDefinitionAddress: dAppDefinitionAddress,
20+
})

packages/dapp-toolkit/src/radix-dapp-toolkit.ts

+19-9
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { ConnectButtonClient } from './connect-button/connect-button-client'
22
import {
33
ButtonApi,
4+
GatewayApiClientConfig,
45
RadixDappToolkitOptions,
56
SendTransactionInput,
67
WalletApi,
@@ -10,20 +11,24 @@ import { GatewayClient } from './gateway/gateway'
1011
import { GatewayApiClient } from './gateway/gateway-api'
1112
import { WalletRequestClient } from './wallet-request'
1213
import { StateClient, WalletData } from './state'
13-
import { RadixNetworkConfigById } from './gateway/types'
14+
import { generateGatewayApiClientConfig } from './helpers/generate-gateway-api-config'
1415

1516
export type RadixDappToolkit = {
1617
walletApi: WalletApi
1718
buttonApi: ButtonApi
19+
gatewayApi: {
20+
clientConfig: GatewayApiClientConfig
21+
}
1822
disconnect: () => void
1923
destroy: () => void
2024
}
2125

2226
export const RadixDappToolkit = (
2327
options: RadixDappToolkitOptions,
2428
): RadixDappToolkit => {
29+
const dAppDefinitionAddress =
30+
options.dAppDefinitionAddress ?? options.applicationDappDefinitionAddress
2531
const {
26-
dAppDefinitionAddress,
2732
networkId,
2833
providers,
2934
logger,
@@ -48,17 +53,19 @@ export const RadixDappToolkit = (
4853
},
4954
})
5055

56+
const gatewayApiClientConfig = generateGatewayApiClientConfig({
57+
networkId,
58+
dAppDefinitionAddress,
59+
gatewayBaseUrl,
60+
applicationName,
61+
applicationVersion,
62+
})
63+
5164
const gatewayClient =
5265
providers?.gatewayClient ??
5366
GatewayClient({
5467
logger,
55-
gatewayApi: GatewayApiClient({
56-
basePath:
57-
gatewayBaseUrl ?? RadixNetworkConfigById[networkId].gatewayUrl,
58-
dAppDefinitionAddress,
59-
applicationName,
60-
applicationVersion,
61-
}),
68+
gatewayApi: GatewayApiClient(gatewayApiClientConfig),
6269
})
6370

6471
const walletRequestClient =
@@ -122,6 +129,9 @@ export const RadixDappToolkit = (
122129
setMode: connectButtonClient.setMode,
123130
status$: connectButtonClient.status$,
124131
},
132+
gatewayApi: {
133+
clientConfig: gatewayApiClientConfig,
134+
},
125135
disconnect: () => {
126136
walletRequestClient.disconnect()
127137
connectButtonClient.disconnect()

0 commit comments

Comments
 (0)