From 0b2a989cac9d131e13e2dcffcfc9be09318c4ece Mon Sep 17 00:00:00 2001 From: Pawel Stepien Date: Wed, 3 Dec 2025 13:39:56 +0100 Subject: [PATCH 01/11] extend StatusEvent with network and session fields Signed-off-by: Pawel Stepien --- api-specs/openrpc-dapp-api.json | 48 ++++++++++++++++-- api-specs/openrpc-dapp-remote-api.json | 48 ++++++++++++++++-- .../src/index.ts | 50 ++++++++++++++++++- .../src/openrpc.json | 48 ++++++++++++++++-- core/wallet-dapp-rpc-client/src/index.ts | 50 ++++++++++++++++++- core/wallet-dapp-rpc-client/src/openrpc.json | 48 ++++++++++++++++-- sdk/dapp-sdk/src/dapp-api/rpc-gen/typings.ts | 50 ++++++++++++++++++- .../extension/src/dapp-api/rpc-gen/typings.ts | 50 ++++++++++++++++++- .../remote/src/dapp-api/rpc-gen/typings.ts | 50 ++++++++++++++++++- 9 files changed, 421 insertions(+), 21 deletions(-) diff --git a/api-specs/openrpc-dapp-api.json b/api-specs/openrpc-dapp-api.json index 3ee12b681..a9870ca7d 100644 --- a/api-specs/openrpc-dapp-api.json +++ b/api-specs/openrpc-dapp-api.json @@ -529,10 +529,50 @@ "type": "string", "description": "If not connected to a network, the reason why." }, - "networkId": { - "title": "networkId", - "type": "string", - "description": "A CAIP-2 compliant chain ID, e.g. 'canton:da-mainnet'." + "network": { + "title": "network", + "type": "object", + "description": "Network information, if connected to a network.", + "properties": { + "networkId": { + "title": "networkId", + "type": "string", + "description": "A CAIP-2 compliant chain ID, e.g. 'canton:da-mainnet'." + }, + "ledgerApi": { + "title": "LedgerApiConfig", + "type": "object", + "description": "Ledger API configuration.", + "properties": { + "baseUrl": { + "title": "baseUrl", + "type": "string", + "format": "uri", + "description": "The base URL of the ledger API." + } + }, + "required": ["baseUrl"] + } + }, + "required": ["networkId", "ledgerApi"] + }, + "session": { + "title": "session", + "type": "object", + "description": "Session information, if authenticated.", + "properties": { + "accessToken": { + "title": "accessToken", + "type": "string", + "description": "JWT authentication token." + }, + "userId": { + "title": "userId", + "type": "string", + "description": "The user identifier." + } + }, + "required": ["accessToken", "userId"] } }, "required": ["kernel", "isConnected", "isNetworkConnected"] diff --git a/api-specs/openrpc-dapp-remote-api.json b/api-specs/openrpc-dapp-remote-api.json index aecf7a2e8..d8660a9ac 100644 --- a/api-specs/openrpc-dapp-remote-api.json +++ b/api-specs/openrpc-dapp-remote-api.json @@ -558,10 +558,50 @@ "type": "string", "description": "If not connected to a network, the reason why." }, - "networkId": { - "title": "networkId", - "type": "string", - "description": "A CAIP-2 compliant chain ID, e.g. 'canton:da-mainnet'." + "network": { + "title": "network", + "type": "object", + "description": "Network information, if connected to a network.", + "properties": { + "networkId": { + "title": "networkId", + "type": "string", + "description": "A CAIP-2 compliant chain ID, e.g. 'canton:da-mainnet'." + }, + "ledgerApi": { + "title": "LedgerApiConfig", + "type": "object", + "description": "Ledger API configuration.", + "properties": { + "baseUrl": { + "title": "baseUrl", + "type": "string", + "format": "uri", + "description": "The base URL of the ledger API." + } + }, + "required": ["baseUrl"] + } + }, + "required": ["networkId", "ledgerApi"] + }, + "session": { + "title": "session", + "type": "object", + "description": "Session information, if authenticated.", + "properties": { + "accessToken": { + "title": "accessToken", + "type": "string", + "description": "JWT authentication token." + }, + "userId": { + "title": "userId", + "type": "string", + "description": "The user identifier." + } + }, + "required": ["accessToken", "userId"] } }, "required": ["kernel", "isConnected", "isNetworkConnected"] diff --git a/core/wallet-dapp-remote-rpc-client/src/index.ts b/core/wallet-dapp-remote-rpc-client/src/index.ts index a7d878d91..c0b83283b 100644 --- a/core/wallet-dapp-remote-rpc-client/src/index.ts +++ b/core/wallet-dapp-remote-rpc-client/src/index.ts @@ -140,12 +140,60 @@ export type NetworkReason = string * */ export type NetworkId = string +/** + * + * The base URL of the ledger API. + * + */ +export type BaseUrl = string +/** + * + * Ledger API configuration. + * + */ +export interface LedgerApiConfig { + baseUrl: BaseUrl + [k: string]: any +} +/** + * + * Network information, if connected to a network. + * + */ +export interface Network { + networkId: NetworkId + ledgerApi: LedgerApiConfig + [k: string]: any +} +/** + * + * JWT authentication token. + * + */ +export type AccessToken = string +/** + * + * The user identifier. + * + */ +export type UserId = string +/** + * + * Session information, if authenticated. + * + */ +export interface Session { + accessToken: AccessToken + userId: UserId + [k: string]: any +} export interface StatusEvent { kernel: KernelInfo isConnected: IsConnected isNetworkConnected: IsNetworkConnected networkReason?: NetworkReason - networkId?: NetworkId + network?: Network + session?: Session [k: string]: any } /** diff --git a/core/wallet-dapp-remote-rpc-client/src/openrpc.json b/core/wallet-dapp-remote-rpc-client/src/openrpc.json index aecf7a2e8..d8660a9ac 100644 --- a/core/wallet-dapp-remote-rpc-client/src/openrpc.json +++ b/core/wallet-dapp-remote-rpc-client/src/openrpc.json @@ -558,10 +558,50 @@ "type": "string", "description": "If not connected to a network, the reason why." }, - "networkId": { - "title": "networkId", - "type": "string", - "description": "A CAIP-2 compliant chain ID, e.g. 'canton:da-mainnet'." + "network": { + "title": "network", + "type": "object", + "description": "Network information, if connected to a network.", + "properties": { + "networkId": { + "title": "networkId", + "type": "string", + "description": "A CAIP-2 compliant chain ID, e.g. 'canton:da-mainnet'." + }, + "ledgerApi": { + "title": "LedgerApiConfig", + "type": "object", + "description": "Ledger API configuration.", + "properties": { + "baseUrl": { + "title": "baseUrl", + "type": "string", + "format": "uri", + "description": "The base URL of the ledger API." + } + }, + "required": ["baseUrl"] + } + }, + "required": ["networkId", "ledgerApi"] + }, + "session": { + "title": "session", + "type": "object", + "description": "Session information, if authenticated.", + "properties": { + "accessToken": { + "title": "accessToken", + "type": "string", + "description": "JWT authentication token." + }, + "userId": { + "title": "userId", + "type": "string", + "description": "The user identifier." + } + }, + "required": ["accessToken", "userId"] } }, "required": ["kernel", "isConnected", "isNetworkConnected"] diff --git a/core/wallet-dapp-rpc-client/src/index.ts b/core/wallet-dapp-rpc-client/src/index.ts index 1de3feb32..600ae88dc 100644 --- a/core/wallet-dapp-rpc-client/src/index.ts +++ b/core/wallet-dapp-rpc-client/src/index.ts @@ -147,12 +147,60 @@ export type NetworkReason = string * */ export type NetworkId = string +/** + * + * The base URL of the ledger API. + * + */ +export type BaseUrl = string +/** + * + * Ledger API configuration. + * + */ +export interface LedgerApiConfig { + baseUrl: BaseUrl + [k: string]: any +} +/** + * + * Network information, if connected to a network. + * + */ +export interface Network { + networkId: NetworkId + ledgerApi: LedgerApiConfig + [k: string]: any +} +/** + * + * JWT authentication token. + * + */ +export type AccessToken = string +/** + * + * The user identifier. + * + */ +export type UserId = string +/** + * + * Session information, if authenticated. + * + */ +export interface Session { + accessToken: AccessToken + userId: UserId + [k: string]: any +} export interface StatusEvent { kernel: KernelInfo isConnected: IsConnected isNetworkConnected: IsNetworkConnected networkReason?: NetworkReason - networkId?: NetworkId + network?: Network + session?: Session [k: string]: any } /** diff --git a/core/wallet-dapp-rpc-client/src/openrpc.json b/core/wallet-dapp-rpc-client/src/openrpc.json index 3ee12b681..a9870ca7d 100644 --- a/core/wallet-dapp-rpc-client/src/openrpc.json +++ b/core/wallet-dapp-rpc-client/src/openrpc.json @@ -529,10 +529,50 @@ "type": "string", "description": "If not connected to a network, the reason why." }, - "networkId": { - "title": "networkId", - "type": "string", - "description": "A CAIP-2 compliant chain ID, e.g. 'canton:da-mainnet'." + "network": { + "title": "network", + "type": "object", + "description": "Network information, if connected to a network.", + "properties": { + "networkId": { + "title": "networkId", + "type": "string", + "description": "A CAIP-2 compliant chain ID, e.g. 'canton:da-mainnet'." + }, + "ledgerApi": { + "title": "LedgerApiConfig", + "type": "object", + "description": "Ledger API configuration.", + "properties": { + "baseUrl": { + "title": "baseUrl", + "type": "string", + "format": "uri", + "description": "The base URL of the ledger API." + } + }, + "required": ["baseUrl"] + } + }, + "required": ["networkId", "ledgerApi"] + }, + "session": { + "title": "session", + "type": "object", + "description": "Session information, if authenticated.", + "properties": { + "accessToken": { + "title": "accessToken", + "type": "string", + "description": "JWT authentication token." + }, + "userId": { + "title": "userId", + "type": "string", + "description": "The user identifier." + } + }, + "required": ["accessToken", "userId"] } }, "required": ["kernel", "isConnected", "isNetworkConnected"] diff --git a/sdk/dapp-sdk/src/dapp-api/rpc-gen/typings.ts b/sdk/dapp-sdk/src/dapp-api/rpc-gen/typings.ts index f3c0985ba..bb23b1651 100644 --- a/sdk/dapp-sdk/src/dapp-api/rpc-gen/typings.ts +++ b/sdk/dapp-sdk/src/dapp-api/rpc-gen/typings.ts @@ -147,12 +147,60 @@ export type NetworkReason = string * */ export type NetworkId = string +/** + * + * The base URL of the ledger API. + * + */ +export type BaseUrl = string +/** + * + * Ledger API configuration. + * + */ +export interface LedgerApiConfig { + baseUrl: BaseUrl + [k: string]: any +} +/** + * + * Network information, if connected to a network. + * + */ +export interface Network { + networkId: NetworkId + ledgerApi: LedgerApiConfig + [k: string]: any +} +/** + * + * JWT authentication token. + * + */ +export type AccessToken = string +/** + * + * The user identifier. + * + */ +export type UserId = string +/** + * + * Session information, if authenticated. + * + */ +export interface Session { + accessToken: AccessToken + userId: UserId + [k: string]: any +} export interface StatusEvent { kernel: KernelInfo isConnected: IsConnected isNetworkConnected: IsNetworkConnected networkReason?: NetworkReason - networkId?: NetworkId + network?: Network + session?: Session [k: string]: any } /** diff --git a/wallet-gateway/extension/src/dapp-api/rpc-gen/typings.ts b/wallet-gateway/extension/src/dapp-api/rpc-gen/typings.ts index f3c0985ba..bb23b1651 100644 --- a/wallet-gateway/extension/src/dapp-api/rpc-gen/typings.ts +++ b/wallet-gateway/extension/src/dapp-api/rpc-gen/typings.ts @@ -147,12 +147,60 @@ export type NetworkReason = string * */ export type NetworkId = string +/** + * + * The base URL of the ledger API. + * + */ +export type BaseUrl = string +/** + * + * Ledger API configuration. + * + */ +export interface LedgerApiConfig { + baseUrl: BaseUrl + [k: string]: any +} +/** + * + * Network information, if connected to a network. + * + */ +export interface Network { + networkId: NetworkId + ledgerApi: LedgerApiConfig + [k: string]: any +} +/** + * + * JWT authentication token. + * + */ +export type AccessToken = string +/** + * + * The user identifier. + * + */ +export type UserId = string +/** + * + * Session information, if authenticated. + * + */ +export interface Session { + accessToken: AccessToken + userId: UserId + [k: string]: any +} export interface StatusEvent { kernel: KernelInfo isConnected: IsConnected isNetworkConnected: IsNetworkConnected networkReason?: NetworkReason - networkId?: NetworkId + network?: Network + session?: Session [k: string]: any } /** diff --git a/wallet-gateway/remote/src/dapp-api/rpc-gen/typings.ts b/wallet-gateway/remote/src/dapp-api/rpc-gen/typings.ts index 25cd6c112..88ef92049 100644 --- a/wallet-gateway/remote/src/dapp-api/rpc-gen/typings.ts +++ b/wallet-gateway/remote/src/dapp-api/rpc-gen/typings.ts @@ -140,12 +140,60 @@ export type NetworkReason = string * */ export type NetworkId = string +/** + * + * The base URL of the ledger API. + * + */ +export type BaseUrl = string +/** + * + * Ledger API configuration. + * + */ +export interface LedgerApiConfig { + baseUrl: BaseUrl + [k: string]: any +} +/** + * + * Network information, if connected to a network. + * + */ +export interface Network { + networkId: NetworkId + ledgerApi: LedgerApiConfig + [k: string]: any +} +/** + * + * JWT authentication token. + * + */ +export type AccessToken = string +/** + * + * The user identifier. + * + */ +export type UserId = string +/** + * + * Session information, if authenticated. + * + */ +export interface Session { + accessToken: AccessToken + userId: UserId + [k: string]: any +} export interface StatusEvent { kernel: KernelInfo isConnected: IsConnected isNetworkConnected: IsNetworkConnected networkReason?: NetworkReason - networkId?: NetworkId + network?: Network + session?: Session [k: string]: any } /** From 68d9c5c24717c5c28cd3ec0382e5314320aa3759 Mon Sep 17 00:00:00 2001 From: Pawel Stepien Date: Wed, 3 Dec 2025 17:01:04 +0100 Subject: [PATCH 02/11] adjust UI to changes. add missing userUrl prop in specs Signed-off-by: Pawel Stepien --- api-specs/openrpc-dapp-api.json | 10 +++++++- api-specs/openrpc-dapp-remote-api.json | 10 +++++++- .../package.json | 6 +---- .../src/index.ts | 13 ++++++----- .../src/openrpc.json | 10 +++++++- core/wallet-dapp-rpc-client/package.json | 6 +---- core/wallet-dapp-rpc-client/src/index.ts | 1 + core/wallet-dapp-rpc-client/src/openrpc.json | 10 +++++++- examples/ping/src/App.tsx | 4 ++-- sdk/dapp-sdk/src/dapp-api/rpc-gen/typings.ts | 1 + .../extension/src/dapp-api/rpc-gen/typings.ts | 1 + .../remote/src/dapp-api/controller.ts | 23 ++++++++++++++++++- .../remote/src/dapp-api/rpc-gen/typings.ts | 13 ++++++----- 13 files changed, 79 insertions(+), 29 deletions(-) diff --git a/api-specs/openrpc-dapp-api.json b/api-specs/openrpc-dapp-api.json index a9870ca7d..028c94913 100644 --- a/api-specs/openrpc-dapp-api.json +++ b/api-specs/openrpc-dapp-api.json @@ -529,6 +529,9 @@ "type": "string", "description": "If not connected to a network, the reason why." }, + "userUrl": { + "$ref": "#/components/schemas/UserUrl" + }, "network": { "title": "network", "type": "object", @@ -575,7 +578,12 @@ "required": ["accessToken", "userId"] } }, - "required": ["kernel", "isConnected", "isNetworkConnected"] + "required": [ + "kernel", + "isConnected", + "isNetworkConnected", + "userUrl" + ] } } } diff --git a/api-specs/openrpc-dapp-remote-api.json b/api-specs/openrpc-dapp-remote-api.json index d8660a9ac..30eecbacd 100644 --- a/api-specs/openrpc-dapp-remote-api.json +++ b/api-specs/openrpc-dapp-remote-api.json @@ -558,6 +558,9 @@ "type": "string", "description": "If not connected to a network, the reason why." }, + "userUrl": { + "$ref": "#/components/schemas/UserUrl" + }, "network": { "title": "network", "type": "object", @@ -604,7 +607,12 @@ "required": ["accessToken", "userId"] } }, - "required": ["kernel", "isConnected", "isNetworkConnected"] + "required": [ + "kernel", + "isConnected", + "isNetworkConnected", + "userUrl" + ] } } } diff --git a/core/wallet-dapp-remote-rpc-client/package.json b/core/wallet-dapp-remote-rpc-client/package.json index a363aa164..ac60a3964 100644 --- a/core/wallet-dapp-remote-rpc-client/package.json +++ b/core/wallet-dapp-remote-rpc-client/package.json @@ -3,6 +3,7 @@ "version": "0.9.1", "type": "module", "description": "TypeScript client generated by OpenRPC", + "repository": "github:hyperledger-labs/splice-wallet-kernel", "license": "Apache-2.0", "main": "dist/index.cjs", "module": "dist/index.js", @@ -43,10 +44,5 @@ "tsup": "^8.5.1", "typedoc": "^0.28.14", "typescript": "^5.9.3" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/hyperledger-labs/splice-wallet-kernel.git", - "directory": "core/wallet-dapp-remote-rpc-client" } } diff --git a/core/wallet-dapp-remote-rpc-client/src/index.ts b/core/wallet-dapp-remote-rpc-client/src/index.ts index c0b83283b..4196e0c28 100644 --- a/core/wallet-dapp-remote-rpc-client/src/index.ts +++ b/core/wallet-dapp-remote-rpc-client/src/index.ts @@ -134,6 +134,12 @@ export type IsNetworkConnected = boolean * */ export type NetworkReason = string +/** + * + * A URL that points to a user interface. + * + */ +export type UserUrl = string /** * * The network ID the wallet corresponds to. @@ -192,6 +198,7 @@ export interface StatusEvent { isConnected: IsConnected isNetworkConnected: IsNetworkConnected networkReason?: NetworkReason + userUrl: UserUrl network?: Network session?: Session [k: string]: any @@ -226,12 +233,6 @@ export interface JsPrepareSubmissionResponse { preparedTransactionHash?: PreparedTransactionHash [k: string]: any } -/** - * - * A URL that points to a user interface. - * - */ -export type UserUrl = string export type Response = string /** * diff --git a/core/wallet-dapp-remote-rpc-client/src/openrpc.json b/core/wallet-dapp-remote-rpc-client/src/openrpc.json index d8660a9ac..30eecbacd 100644 --- a/core/wallet-dapp-remote-rpc-client/src/openrpc.json +++ b/core/wallet-dapp-remote-rpc-client/src/openrpc.json @@ -558,6 +558,9 @@ "type": "string", "description": "If not connected to a network, the reason why." }, + "userUrl": { + "$ref": "#/components/schemas/UserUrl" + }, "network": { "title": "network", "type": "object", @@ -604,7 +607,12 @@ "required": ["accessToken", "userId"] } }, - "required": ["kernel", "isConnected", "isNetworkConnected"] + "required": [ + "kernel", + "isConnected", + "isNetworkConnected", + "userUrl" + ] } } } diff --git a/core/wallet-dapp-rpc-client/package.json b/core/wallet-dapp-rpc-client/package.json index 6f6c0430a..25d7d1293 100644 --- a/core/wallet-dapp-rpc-client/package.json +++ b/core/wallet-dapp-rpc-client/package.json @@ -3,6 +3,7 @@ "version": "0.15.1", "type": "module", "description": "TypeScript client generated by OpenRPC", + "repository": "github:hyperledger-labs/splice-wallet-kernel", "license": "Apache-2.0", "main": "dist/index.cjs", "module": "dist/index.js", @@ -43,10 +44,5 @@ "tsup": "^8.5.1", "typedoc": "^0.28.14", "typescript": "^5.9.3" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/hyperledger-labs/splice-wallet-kernel.git", - "directory": "core/wallet-dapp-rpc-client" } } diff --git a/core/wallet-dapp-rpc-client/src/index.ts b/core/wallet-dapp-rpc-client/src/index.ts index 600ae88dc..b3581d43f 100644 --- a/core/wallet-dapp-rpc-client/src/index.ts +++ b/core/wallet-dapp-rpc-client/src/index.ts @@ -199,6 +199,7 @@ export interface StatusEvent { isConnected: IsConnected isNetworkConnected: IsNetworkConnected networkReason?: NetworkReason + userUrl: UserUrl network?: Network session?: Session [k: string]: any diff --git a/core/wallet-dapp-rpc-client/src/openrpc.json b/core/wallet-dapp-rpc-client/src/openrpc.json index a9870ca7d..028c94913 100644 --- a/core/wallet-dapp-rpc-client/src/openrpc.json +++ b/core/wallet-dapp-rpc-client/src/openrpc.json @@ -529,6 +529,9 @@ "type": "string", "description": "If not connected to a network, the reason why." }, + "userUrl": { + "$ref": "#/components/schemas/UserUrl" + }, "network": { "title": "network", "type": "object", @@ -575,7 +578,12 @@ "required": ["accessToken", "userId"] } }, - "required": ["kernel", "isConnected", "isNetworkConnected"] + "required": [ + "kernel", + "isConnected", + "isNetworkConnected", + "userUrl" + ] } } } diff --git a/examples/ping/src/App.tsx b/examples/ping/src/App.tsx index b47e24aa2..97002c3bb 100644 --- a/examples/ping/src/App.tsx +++ b/examples/ping/src/App.tsx @@ -224,10 +224,10 @@ function App() {
connected:{' '} {status.isConnected ? '🟢' : '🔴'} - {status.networkId && ( + {status.network && (
- network: {status.networkId} + network ID: {status.network.networkId}
)} {ledgerApiVersion && ( diff --git a/sdk/dapp-sdk/src/dapp-api/rpc-gen/typings.ts b/sdk/dapp-sdk/src/dapp-api/rpc-gen/typings.ts index bb23b1651..b391224bb 100644 --- a/sdk/dapp-sdk/src/dapp-api/rpc-gen/typings.ts +++ b/sdk/dapp-sdk/src/dapp-api/rpc-gen/typings.ts @@ -199,6 +199,7 @@ export interface StatusEvent { isConnected: IsConnected isNetworkConnected: IsNetworkConnected networkReason?: NetworkReason + userUrl: UserUrl network?: Network session?: Session [k: string]: any diff --git a/wallet-gateway/extension/src/dapp-api/rpc-gen/typings.ts b/wallet-gateway/extension/src/dapp-api/rpc-gen/typings.ts index bb23b1651..b391224bb 100644 --- a/wallet-gateway/extension/src/dapp-api/rpc-gen/typings.ts +++ b/wallet-gateway/extension/src/dapp-api/rpc-gen/typings.ts @@ -199,6 +199,7 @@ export interface StatusEvent { isConnected: IsConnected isNetworkConnected: IsNetworkConnected networkReason?: NetworkReason + userUrl: UserUrl network?: Network session?: Session [k: string]: any diff --git a/wallet-gateway/remote/src/dapp-api/controller.ts b/wallet-gateway/remote/src/dapp-api/controller.ts index da283aa39..50a040513 100644 --- a/wallet-gateway/remote/src/dapp-api/controller.ts +++ b/wallet-gateway/remote/src/dapp-api/controller.ts @@ -64,6 +64,16 @@ export const dappController = ( isNetworkConnected: status.isConnected, networkReason: status.reason ? status.reason : 'OK', userUrl: `${userUrl}/login/`, + network: { + networkId: network.id, + ledgerApi: { + baseUrl: network.ledgerApi.baseUrl, + }, + }, + session: { + accessToken: context.accessToken, + userId: context.userId, + }, }, } }, @@ -204,6 +214,7 @@ export const dappController = ( isConnected: false, isNetworkConnected: false, networkReason: 'Unauthenticated', + userUrl: `${userUrl}/login/`, } } @@ -220,7 +231,17 @@ export const dappController = ( isConnected: true, isNetworkConnected: status.isConnected, networkReason: status.reason ? status.reason : 'OK', - networkId: (await store.getCurrentNetwork()).id, + userUrl: `${userUrl}/login/`, + network: { + networkId: network.id, + ledgerApi: { + baseUrl: network.ledgerApi.baseUrl, + }, + }, + session: { + accessToken: context.accessToken, + userId: context.userId, + }, } }, onConnected: async () => { diff --git a/wallet-gateway/remote/src/dapp-api/rpc-gen/typings.ts b/wallet-gateway/remote/src/dapp-api/rpc-gen/typings.ts index 88ef92049..83c1abf44 100644 --- a/wallet-gateway/remote/src/dapp-api/rpc-gen/typings.ts +++ b/wallet-gateway/remote/src/dapp-api/rpc-gen/typings.ts @@ -134,6 +134,12 @@ export type IsNetworkConnected = boolean * */ export type NetworkReason = string +/** + * + * A URL that points to a user interface. + * + */ +export type UserUrl = string /** * * The network ID the wallet corresponds to. @@ -192,6 +198,7 @@ export interface StatusEvent { isConnected: IsConnected isNetworkConnected: IsNetworkConnected networkReason?: NetworkReason + userUrl: UserUrl network?: Network session?: Session [k: string]: any @@ -226,12 +233,6 @@ export interface JsPrepareSubmissionResponse { preparedTransactionHash?: PreparedTransactionHash [k: string]: any } -/** - * - * A URL that points to a user interface. - * - */ -export type UserUrl = string export type Response = string /** * From 66d9b87749481cd83d1522c7f6dceb6651a1eceb Mon Sep 17 00:00:00 2001 From: Pawel Stepien Date: Thu, 4 Dec 2025 09:17:58 +0100 Subject: [PATCH 03/11] make prettier happy Signed-off-by: Pawel Stepien --- examples/ping/src/App.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/examples/ping/src/App.tsx b/examples/ping/src/App.tsx index 97002c3bb..ec67b412f 100644 --- a/examples/ping/src/App.tsx +++ b/examples/ping/src/App.tsx @@ -227,7 +227,8 @@ function App() { {status.network && (
- network ID: {status.network.networkId} + network ID:{' '} + {status.network.networkId}
)} {ledgerApiVersion && ( From 2178086dd3bf9082efeaefe561a1594030f94a25 Mon Sep 17 00:00:00 2001 From: Pawel Stepien Date: Thu, 4 Dec 2025 10:00:31 +0100 Subject: [PATCH 04/11] rollback userUrl addition in status method. reflect changes to dapp-api specs in extension Signed-off-by: Pawel Stepien --- api-specs/openrpc-dapp-api.json | 7 +------ api-specs/openrpc-dapp-remote-api.json | 7 +------ core/wallet-dapp-remote-rpc-client/src/index.ts | 2 +- core/wallet-dapp-remote-rpc-client/src/openrpc.json | 7 +------ core/wallet-dapp-rpc-client/src/index.ts | 2 +- core/wallet-dapp-rpc-client/src/openrpc.json | 7 +------ sdk/dapp-sdk/src/dapp-api/rpc-gen/typings.ts | 2 +- sdk/dapp-sdk/src/provider.ts | 5 ++--- wallet-gateway/extension/src/dapp-api/controller.ts | 11 ++++++++++- .../extension/src/dapp-api/rpc-gen/typings.ts | 2 +- wallet-gateway/remote/src/dapp-api/controller.ts | 2 -- wallet-gateway/remote/src/dapp-api/rpc-gen/typings.ts | 2 +- 12 files changed, 21 insertions(+), 35 deletions(-) diff --git a/api-specs/openrpc-dapp-api.json b/api-specs/openrpc-dapp-api.json index 028c94913..e5f836c89 100644 --- a/api-specs/openrpc-dapp-api.json +++ b/api-specs/openrpc-dapp-api.json @@ -578,12 +578,7 @@ "required": ["accessToken", "userId"] } }, - "required": [ - "kernel", - "isConnected", - "isNetworkConnected", - "userUrl" - ] + "required": ["kernel", "isConnected", "isNetworkConnected"] } } } diff --git a/api-specs/openrpc-dapp-remote-api.json b/api-specs/openrpc-dapp-remote-api.json index 30eecbacd..c2bc54418 100644 --- a/api-specs/openrpc-dapp-remote-api.json +++ b/api-specs/openrpc-dapp-remote-api.json @@ -607,12 +607,7 @@ "required": ["accessToken", "userId"] } }, - "required": [ - "kernel", - "isConnected", - "isNetworkConnected", - "userUrl" - ] + "required": ["kernel", "isConnected", "isNetworkConnected"] } } } diff --git a/core/wallet-dapp-remote-rpc-client/src/index.ts b/core/wallet-dapp-remote-rpc-client/src/index.ts index 4196e0c28..fea948965 100644 --- a/core/wallet-dapp-remote-rpc-client/src/index.ts +++ b/core/wallet-dapp-remote-rpc-client/src/index.ts @@ -198,7 +198,7 @@ export interface StatusEvent { isConnected: IsConnected isNetworkConnected: IsNetworkConnected networkReason?: NetworkReason - userUrl: UserUrl + userUrl?: UserUrl network?: Network session?: Session [k: string]: any diff --git a/core/wallet-dapp-remote-rpc-client/src/openrpc.json b/core/wallet-dapp-remote-rpc-client/src/openrpc.json index 30eecbacd..c2bc54418 100644 --- a/core/wallet-dapp-remote-rpc-client/src/openrpc.json +++ b/core/wallet-dapp-remote-rpc-client/src/openrpc.json @@ -607,12 +607,7 @@ "required": ["accessToken", "userId"] } }, - "required": [ - "kernel", - "isConnected", - "isNetworkConnected", - "userUrl" - ] + "required": ["kernel", "isConnected", "isNetworkConnected"] } } } diff --git a/core/wallet-dapp-rpc-client/src/index.ts b/core/wallet-dapp-rpc-client/src/index.ts index b3581d43f..f82af6220 100644 --- a/core/wallet-dapp-rpc-client/src/index.ts +++ b/core/wallet-dapp-rpc-client/src/index.ts @@ -199,7 +199,7 @@ export interface StatusEvent { isConnected: IsConnected isNetworkConnected: IsNetworkConnected networkReason?: NetworkReason - userUrl: UserUrl + userUrl?: UserUrl network?: Network session?: Session [k: string]: any diff --git a/core/wallet-dapp-rpc-client/src/openrpc.json b/core/wallet-dapp-rpc-client/src/openrpc.json index 028c94913..e5f836c89 100644 --- a/core/wallet-dapp-rpc-client/src/openrpc.json +++ b/core/wallet-dapp-rpc-client/src/openrpc.json @@ -578,12 +578,7 @@ "required": ["accessToken", "userId"] } }, - "required": [ - "kernel", - "isConnected", - "isNetworkConnected", - "userUrl" - ] + "required": ["kernel", "isConnected", "isNetworkConnected"] } } } diff --git a/sdk/dapp-sdk/src/dapp-api/rpc-gen/typings.ts b/sdk/dapp-sdk/src/dapp-api/rpc-gen/typings.ts index b391224bb..d8449a98e 100644 --- a/sdk/dapp-sdk/src/dapp-api/rpc-gen/typings.ts +++ b/sdk/dapp-sdk/src/dapp-api/rpc-gen/typings.ts @@ -199,7 +199,7 @@ export interface StatusEvent { isConnected: IsConnected isNetworkConnected: IsNetworkConnected networkReason?: NetworkReason - userUrl: UserUrl + userUrl?: UserUrl network?: Network session?: Session [k: string]: any diff --git a/sdk/dapp-sdk/src/provider.ts b/sdk/dapp-sdk/src/provider.ts index 37c0762b3..3046ecbe1 100644 --- a/sdk/dapp-sdk/src/provider.ts +++ b/sdk/dapp-sdk/src/provider.ts @@ -163,7 +163,7 @@ export const dappController = (provider: SpliceProvider) => }) if (!response.status.isConnected) - openKernelUserUI('remote', response.status.userUrl) + openKernelUserUI('remote', response.status.userUrl ?? '') const promise = new Promise( (resolve, reject) => { @@ -207,8 +207,7 @@ export const dappController = (provider: SpliceProvider) => params, }) - if (!response.isConnected) - openKernelUserUI('remote', response.userUrl) + if (response.userUrl) openKernelUserUI('remote', response.userUrl) const promise = new Promise( (resolve, reject) => { diff --git a/wallet-gateway/extension/src/dapp-api/controller.ts b/wallet-gateway/extension/src/dapp-api/controller.ts index 74deec4d7..c5488d2d1 100644 --- a/wallet-gateway/extension/src/dapp-api/controller.ts +++ b/wallet-gateway/extension/src/dapp-api/controller.ts @@ -30,8 +30,17 @@ export const dappController = (store?: Store) => isConnected: false, isNetworkConnected: false, networkReason: 'Unauthenticated', - networkId: 'default-network-id', userUrl: Browser.runtime.getURL('pages/user.html'), + network: { + networkId: 'default-network-id', + ledgerApi: { + baseUrl: 'http://default-ledger-api', + }, + }, + session: { + accessToken: 'default-access-token', + userId: 'default-user-id', + }, }, sessionToken: 'default-session-token', }), diff --git a/wallet-gateway/extension/src/dapp-api/rpc-gen/typings.ts b/wallet-gateway/extension/src/dapp-api/rpc-gen/typings.ts index b391224bb..d8449a98e 100644 --- a/wallet-gateway/extension/src/dapp-api/rpc-gen/typings.ts +++ b/wallet-gateway/extension/src/dapp-api/rpc-gen/typings.ts @@ -199,7 +199,7 @@ export interface StatusEvent { isConnected: IsConnected isNetworkConnected: IsNetworkConnected networkReason?: NetworkReason - userUrl: UserUrl + userUrl?: UserUrl network?: Network session?: Session [k: string]: any diff --git a/wallet-gateway/remote/src/dapp-api/controller.ts b/wallet-gateway/remote/src/dapp-api/controller.ts index 50a040513..3fc176591 100644 --- a/wallet-gateway/remote/src/dapp-api/controller.ts +++ b/wallet-gateway/remote/src/dapp-api/controller.ts @@ -214,7 +214,6 @@ export const dappController = ( isConnected: false, isNetworkConnected: false, networkReason: 'Unauthenticated', - userUrl: `${userUrl}/login/`, } } @@ -231,7 +230,6 @@ export const dappController = ( isConnected: true, isNetworkConnected: status.isConnected, networkReason: status.reason ? status.reason : 'OK', - userUrl: `${userUrl}/login/`, network: { networkId: network.id, ledgerApi: { diff --git a/wallet-gateway/remote/src/dapp-api/rpc-gen/typings.ts b/wallet-gateway/remote/src/dapp-api/rpc-gen/typings.ts index 83c1abf44..a86eba548 100644 --- a/wallet-gateway/remote/src/dapp-api/rpc-gen/typings.ts +++ b/wallet-gateway/remote/src/dapp-api/rpc-gen/typings.ts @@ -198,7 +198,7 @@ export interface StatusEvent { isConnected: IsConnected isNetworkConnected: IsNetworkConnected networkReason?: NetworkReason - userUrl: UserUrl + userUrl?: UserUrl network?: Network session?: Session [k: string]: any From 103a7e5ad22d2d83440058d54240eabe90b6bf86 Mon Sep 17 00:00:00 2001 From: Pawel Stepien Date: Thu, 4 Dec 2025 13:41:31 +0100 Subject: [PATCH 05/11] add network and session to onConnected Signed-off-by: Pawel Stepien --- wallet-gateway/remote/src/user-api/controller.ts | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/wallet-gateway/remote/src/user-api/controller.ts b/wallet-gateway/remote/src/user-api/controller.ts index 6309e87c3..704125ca9 100644 --- a/wallet-gateway/remote/src/user-api/controller.ts +++ b/wallet-gateway/remote/src/user-api/controller.ts @@ -591,7 +591,16 @@ export const userController = ( isConnected: true, isNetworkConnected: status.isConnected, networkReason: status.reason ? status.reason : 'OK', - networkId: network.id, + network: { + networkId: network.id, + ledgerApi: { + baseUrl: network.ledgerApi.baseUrl, + }, + }, + session: { + accessToken: accessToken, + userId: userId, + }, }, sessionToken: accessToken, }) From b70dc7ba7171c7844b25ca858d8e741d037456c6 Mon Sep 17 00:00:00 2001 From: Pawel Stepien Date: Thu, 4 Dec 2025 13:58:12 +0100 Subject: [PATCH 06/11] fix rpc generators overwriting package.json repository field Signed-off-by: Pawel Stepien --- core/rpc-generator/src/components/client.ts | 15 +++++++++++++-- core/wallet-dapp-remote-rpc-client/package.json | 6 +++++- core/wallet-dapp-rpc-client/package.json | 6 +++++- 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/core/rpc-generator/src/components/client.ts b/core/rpc-generator/src/components/client.ts index e1c174ca1..35878ef1a 100644 --- a/core/rpc-generator/src/components/client.ts +++ b/core/rpc-generator/src/components/client.ts @@ -63,6 +63,7 @@ export const stripAnyOfTypes = (content: string): string => { } const versionMap = new Map() +const repositoryMap = new Map() const hooks: IHooks = { afterCopyStatic: [ @@ -86,7 +87,12 @@ const hooks: IHooks = { const pkg = JSON.parse(fileContents.toString()) // eslint-disable-next-line @typescript-eslint/no-explicit-any const currentVersion = (pkg as any).version + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const currentRepository = (pkg as any).repository versionMap.set(component.name, currentVersion!) + if (currentRepository) { + repositoryMap.set(component.name, currentRepository) + } } }, ], @@ -96,13 +102,18 @@ const hooks: IHooks = { const packagePath = path.join(dest, 'package.json') const fileContents = await readFile(packagePath) const pkg = JSON.parse(fileContents.toString()) - const updatedPkg = JSON.stringify({ + const preservedRepository = repositoryMap.get(component.name) + const updatedPkgObj: Record = { ...pkg, name: component.name, version: versionMap.get(component.name) ?? openrpcDocument.info.version, - }) + } + if (preservedRepository) { + updatedPkgObj.repository = preservedRepository + } + const updatedPkg = JSON.stringify(updatedPkgObj) execSync(`yarn prettier --write ${dest}/src/**/*`) return await writeFile(packagePath, updatedPkg) } diff --git a/core/wallet-dapp-remote-rpc-client/package.json b/core/wallet-dapp-remote-rpc-client/package.json index ac60a3964..674c992ec 100644 --- a/core/wallet-dapp-remote-rpc-client/package.json +++ b/core/wallet-dapp-remote-rpc-client/package.json @@ -3,7 +3,11 @@ "version": "0.9.1", "type": "module", "description": "TypeScript client generated by OpenRPC", - "repository": "github:hyperledger-labs/splice-wallet-kernel", + "repository": { + "type": "git", + "url": "git+https://github.com/hyperledger-labs/splice-wallet-kernel.git", + "directory": "core/wallet-dapp-remote-rpc-client" + }, "license": "Apache-2.0", "main": "dist/index.cjs", "module": "dist/index.js", diff --git a/core/wallet-dapp-rpc-client/package.json b/core/wallet-dapp-rpc-client/package.json index fb80fa6aa..49a24eba9 100644 --- a/core/wallet-dapp-rpc-client/package.json +++ b/core/wallet-dapp-rpc-client/package.json @@ -3,7 +3,11 @@ "version": "0.15.2", "type": "module", "description": "TypeScript client generated by OpenRPC", - "repository": "github:hyperledger-labs/splice-wallet-kernel", + "repository": { + "type": "git", + "url": "git+https://github.com/hyperledger-labs/splice-wallet-kernel.git", + "directory": "core/wallet-dapp-rpc-client" + }, "license": "Apache-2.0", "main": "dist/index.cjs", "module": "dist/index.js", From d21e2e5aff48f87433aea64bd31749599ad81f03 Mon Sep 17 00:00:00 2001 From: Pawel Stepien Date: Thu, 4 Dec 2025 16:19:28 +0100 Subject: [PATCH 07/11] automatic derivation of package.json repository field in generated rpc clients Signed-off-by: Pawel Stepien --- core/rpc-generator/src/components/client.ts | 45 +++++++++++++++---- .../templates/client/typescript/_package.json | 4 +- .../package.json | 10 ++--- core/wallet-dapp-rpc-client/package.json | 10 ++--- 4 files changed, 48 insertions(+), 21 deletions(-) diff --git a/core/rpc-generator/src/components/client.ts b/core/rpc-generator/src/components/client.ts index 35878ef1a..49fba98d8 100644 --- a/core/rpc-generator/src/components/client.ts +++ b/core/rpc-generator/src/components/client.ts @@ -63,7 +63,33 @@ export const stripAnyOfTypes = (content: string): string => { } const versionMap = new Map() -const repositoryMap = new Map() + +// Derives the repository directory path from the destination path relative to repo root +const getRepositoryDirectory = (destPath: string): string | null => { + let currentPath = destPath + const maxDepth = 10 + for (let i = 0; i < maxDepth; i++) { + const packageJsonPath = path.join(currentPath, 'package.json') + try { + if (fs.existsSync(packageJsonPath)) { + const pkgContent = fs.readFileSync(packageJsonPath, 'utf-8') + const pkg = JSON.parse(pkgContent) + if (pkg.workspaces || pkg.name === 'splice-wallet-kernel') { + const relativePath = path.relative(currentPath, destPath) + return relativePath.replace(/\\/g, '/') // Normalize to forward slashes + } + } + } catch { + // Continue searching + } + const parentPath = path.dirname(currentPath) + if (parentPath === currentPath) { + break + } + currentPath = parentPath + } + return null +} const hooks: IHooks = { afterCopyStatic: [ @@ -87,12 +113,7 @@ const hooks: IHooks = { const pkg = JSON.parse(fileContents.toString()) // eslint-disable-next-line @typescript-eslint/no-explicit-any const currentVersion = (pkg as any).version - // eslint-disable-next-line @typescript-eslint/no-explicit-any - const currentRepository = (pkg as any).repository versionMap.set(component.name, currentVersion!) - if (currentRepository) { - repositoryMap.set(component.name, currentRepository) - } } }, ], @@ -102,7 +123,6 @@ const hooks: IHooks = { const packagePath = path.join(dest, 'package.json') const fileContents = await readFile(packagePath) const pkg = JSON.parse(fileContents.toString()) - const preservedRepository = repositoryMap.get(component.name) const updatedPkgObj: Record = { ...pkg, name: component.name, @@ -110,9 +130,16 @@ const hooks: IHooks = { versionMap.get(component.name) ?? openrpcDocument.info.version, } - if (preservedRepository) { - updatedPkgObj.repository = preservedRepository + + const repositoryDirectory = getRepositoryDirectory(dest) + if (repositoryDirectory) { + updatedPkgObj.repository = { + type: 'git', + url: 'git+https://github.com/hyperledger-labs/splice-wallet-kernel.git', + directory: repositoryDirectory, + } } + // else - fallback to repository field in template const updatedPkg = JSON.stringify(updatedPkgObj) execSync(`yarn prettier --write ${dest}/src/**/*`) return await writeFile(packagePath, updatedPkg) diff --git a/core/rpc-generator/templates/client/typescript/_package.json b/core/rpc-generator/templates/client/typescript/_package.json index bb73e0291..7e379e9e4 100644 --- a/core/rpc-generator/templates/client/typescript/_package.json +++ b/core/rpc-generator/templates/client/typescript/_package.json @@ -3,7 +3,6 @@ "version": "0.0.0", "type": "module", "description": "TypeScript client generated by OpenRPC", - "repository": "github:hyperledger-labs/splice-wallet-kernel", "license": "Apache-2.0", "main": "dist/index.cjs", "module": "dist/index.js", @@ -42,5 +41,6 @@ "tsup": "^8.5.1", "typedoc": "^0.28.14", "typescript": "^5.9.3" - } + }, + "repository": "github:hyperledger-labs/splice-wallet-kernel" } diff --git a/core/wallet-dapp-remote-rpc-client/package.json b/core/wallet-dapp-remote-rpc-client/package.json index 674c992ec..a363aa164 100644 --- a/core/wallet-dapp-remote-rpc-client/package.json +++ b/core/wallet-dapp-remote-rpc-client/package.json @@ -3,11 +3,6 @@ "version": "0.9.1", "type": "module", "description": "TypeScript client generated by OpenRPC", - "repository": { - "type": "git", - "url": "git+https://github.com/hyperledger-labs/splice-wallet-kernel.git", - "directory": "core/wallet-dapp-remote-rpc-client" - }, "license": "Apache-2.0", "main": "dist/index.cjs", "module": "dist/index.js", @@ -48,5 +43,10 @@ "tsup": "^8.5.1", "typedoc": "^0.28.14", "typescript": "^5.9.3" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/hyperledger-labs/splice-wallet-kernel.git", + "directory": "core/wallet-dapp-remote-rpc-client" } } diff --git a/core/wallet-dapp-rpc-client/package.json b/core/wallet-dapp-rpc-client/package.json index 49a24eba9..a84e569c8 100644 --- a/core/wallet-dapp-rpc-client/package.json +++ b/core/wallet-dapp-rpc-client/package.json @@ -3,11 +3,6 @@ "version": "0.15.2", "type": "module", "description": "TypeScript client generated by OpenRPC", - "repository": { - "type": "git", - "url": "git+https://github.com/hyperledger-labs/splice-wallet-kernel.git", - "directory": "core/wallet-dapp-rpc-client" - }, "license": "Apache-2.0", "main": "dist/index.cjs", "module": "dist/index.js", @@ -48,5 +43,10 @@ "tsup": "^8.5.1", "typedoc": "^0.28.14", "typescript": "^5.9.3" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/hyperledger-labs/splice-wallet-kernel.git", + "directory": "core/wallet-dapp-rpc-client" } } From 8ac1ab0ca6e7658bf0a7939b8b284220555624cd Mon Sep 17 00:00:00 2001 From: Pawel Stepien Date: Fri, 5 Dec 2025 09:44:49 +0100 Subject: [PATCH 08/11] optional network.ledgerApi prop Signed-off-by: Pawel Stepien --- api-specs/openrpc-dapp-api.json | 2 +- api-specs/openrpc-dapp-remote-api.json | 2 +- core/wallet-dapp-remote-rpc-client/src/index.ts | 2 +- core/wallet-dapp-remote-rpc-client/src/openrpc.json | 2 +- core/wallet-dapp-rpc-client/src/index.ts | 2 +- core/wallet-dapp-rpc-client/src/openrpc.json | 2 +- sdk/dapp-sdk/src/dapp-api/rpc-gen/typings.ts | 2 +- wallet-gateway/extension/src/dapp-api/rpc-gen/typings.ts | 2 +- wallet-gateway/remote/src/dapp-api/rpc-gen/typings.ts | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/api-specs/openrpc-dapp-api.json b/api-specs/openrpc-dapp-api.json index e5f836c89..00f1f7f25 100644 --- a/api-specs/openrpc-dapp-api.json +++ b/api-specs/openrpc-dapp-api.json @@ -557,7 +557,7 @@ "required": ["baseUrl"] } }, - "required": ["networkId", "ledgerApi"] + "required": ["networkId"] }, "session": { "title": "session", diff --git a/api-specs/openrpc-dapp-remote-api.json b/api-specs/openrpc-dapp-remote-api.json index c2bc54418..2fffdf3cf 100644 --- a/api-specs/openrpc-dapp-remote-api.json +++ b/api-specs/openrpc-dapp-remote-api.json @@ -586,7 +586,7 @@ "required": ["baseUrl"] } }, - "required": ["networkId", "ledgerApi"] + "required": ["networkId"] }, "session": { "title": "session", diff --git a/core/wallet-dapp-remote-rpc-client/src/index.ts b/core/wallet-dapp-remote-rpc-client/src/index.ts index fea948965..5fc16f445 100644 --- a/core/wallet-dapp-remote-rpc-client/src/index.ts +++ b/core/wallet-dapp-remote-rpc-client/src/index.ts @@ -168,7 +168,7 @@ export interface LedgerApiConfig { */ export interface Network { networkId: NetworkId - ledgerApi: LedgerApiConfig + ledgerApi?: LedgerApiConfig [k: string]: any } /** diff --git a/core/wallet-dapp-remote-rpc-client/src/openrpc.json b/core/wallet-dapp-remote-rpc-client/src/openrpc.json index c2bc54418..2fffdf3cf 100644 --- a/core/wallet-dapp-remote-rpc-client/src/openrpc.json +++ b/core/wallet-dapp-remote-rpc-client/src/openrpc.json @@ -586,7 +586,7 @@ "required": ["baseUrl"] } }, - "required": ["networkId", "ledgerApi"] + "required": ["networkId"] }, "session": { "title": "session", diff --git a/core/wallet-dapp-rpc-client/src/index.ts b/core/wallet-dapp-rpc-client/src/index.ts index f82af6220..951b27190 100644 --- a/core/wallet-dapp-rpc-client/src/index.ts +++ b/core/wallet-dapp-rpc-client/src/index.ts @@ -169,7 +169,7 @@ export interface LedgerApiConfig { */ export interface Network { networkId: NetworkId - ledgerApi: LedgerApiConfig + ledgerApi?: LedgerApiConfig [k: string]: any } /** diff --git a/core/wallet-dapp-rpc-client/src/openrpc.json b/core/wallet-dapp-rpc-client/src/openrpc.json index e5f836c89..00f1f7f25 100644 --- a/core/wallet-dapp-rpc-client/src/openrpc.json +++ b/core/wallet-dapp-rpc-client/src/openrpc.json @@ -557,7 +557,7 @@ "required": ["baseUrl"] } }, - "required": ["networkId", "ledgerApi"] + "required": ["networkId"] }, "session": { "title": "session", diff --git a/sdk/dapp-sdk/src/dapp-api/rpc-gen/typings.ts b/sdk/dapp-sdk/src/dapp-api/rpc-gen/typings.ts index d8449a98e..1d9a30591 100644 --- a/sdk/dapp-sdk/src/dapp-api/rpc-gen/typings.ts +++ b/sdk/dapp-sdk/src/dapp-api/rpc-gen/typings.ts @@ -169,7 +169,7 @@ export interface LedgerApiConfig { */ export interface Network { networkId: NetworkId - ledgerApi: LedgerApiConfig + ledgerApi?: LedgerApiConfig [k: string]: any } /** diff --git a/wallet-gateway/extension/src/dapp-api/rpc-gen/typings.ts b/wallet-gateway/extension/src/dapp-api/rpc-gen/typings.ts index d8449a98e..1d9a30591 100644 --- a/wallet-gateway/extension/src/dapp-api/rpc-gen/typings.ts +++ b/wallet-gateway/extension/src/dapp-api/rpc-gen/typings.ts @@ -169,7 +169,7 @@ export interface LedgerApiConfig { */ export interface Network { networkId: NetworkId - ledgerApi: LedgerApiConfig + ledgerApi?: LedgerApiConfig [k: string]: any } /** diff --git a/wallet-gateway/remote/src/dapp-api/rpc-gen/typings.ts b/wallet-gateway/remote/src/dapp-api/rpc-gen/typings.ts index a86eba548..6e7f0badd 100644 --- a/wallet-gateway/remote/src/dapp-api/rpc-gen/typings.ts +++ b/wallet-gateway/remote/src/dapp-api/rpc-gen/typings.ts @@ -168,7 +168,7 @@ export interface LedgerApiConfig { */ export interface Network { networkId: NetworkId - ledgerApi: LedgerApiConfig + ledgerApi?: LedgerApiConfig [k: string]: any } /** From 0cb6c3991fb6ac75c25b00dbe9a3b138800f9c17 Mon Sep 17 00:00:00 2001 From: Pawel Stepien Date: Fri, 5 Dec 2025 09:51:35 +0100 Subject: [PATCH 09/11] render in UI some of the added props Signed-off-by: Pawel Stepien --- examples/ping/src/App.tsx | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/examples/ping/src/App.tsx b/examples/ping/src/App.tsx index ec67b412f..68e93677e 100644 --- a/examples/ping/src/App.tsx +++ b/examples/ping/src/App.tsx @@ -229,6 +229,20 @@ function App() {
network ID:{' '} {status.network.networkId} + {status.network.ledgerApi && ( + <> +
+ ledger API:{' '} + {status.network.ledgerApi.baseUrl} + + )} + + )} + {status.session && ( + +
+ user ID:{' '} + {status.session.userId}
)} {ledgerApiVersion && ( From 2b921fd893cae8b8d17d6f16da38c6260b5a47b3 Mon Sep 17 00:00:00 2001 From: Pawel Stepien Date: Fri, 5 Dec 2025 10:39:28 +0100 Subject: [PATCH 10/11] make prettier happy Signed-off-by: Pawel Stepien --- examples/ping/src/App.tsx | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/examples/ping/src/App.tsx b/examples/ping/src/App.tsx index 68e93677e..c24b9f8f3 100644 --- a/examples/ping/src/App.tsx +++ b/examples/ping/src/App.tsx @@ -233,7 +233,9 @@ function App() { <>
ledger API:{' '} - {status.network.ledgerApi.baseUrl} + + {status.network.ledgerApi.baseUrl} + )} @@ -241,8 +243,7 @@ function App() { {status.session && (
- user ID:{' '} - {status.session.userId} + user ID: {status.session.userId}
)} {ledgerApiVersion && ( From 4261c09b5d1563b37e6719fc3332e9e97e057a96 Mon Sep 17 00:00:00 2001 From: Pawel Stepien Date: Fri, 5 Dec 2025 18:41:24 +0100 Subject: [PATCH 11/11] use StatusEvent instead of ConnectResult Signed-off-by: Pawel Stepien --- api-specs/openrpc-dapp-api.json | 14 +------ api-specs/openrpc-dapp-remote-api.json | 28 +------------ .../splice-provider/src/SpliceProviderHttp.ts | 5 +-- .../src/index.ts | 36 +++++----------- .../src/openrpc.json | 28 +------------ core/wallet-dapp-rpc-client/src/index.ts | 29 ++++--------- core/wallet-dapp-rpc-client/src/openrpc.json | 14 +------ examples/ping/src/App.tsx | 2 +- sdk/dapp-sdk/src/dapp-api/rpc-gen/typings.ts | 29 ++++--------- sdk/dapp-sdk/src/provider.ts | 21 ++++------ sdk/dapp-sdk/src/provider/index.ts | 5 ++- sdk/dapp-sdk/src/provider/request.ts | 6 +-- sdk/dapp-sdk/src/storage.ts | 6 +-- .../extension/src/dapp-api/controller.ts | 29 ++++++------- .../extension/src/dapp-api/rpc-gen/typings.ts | 29 ++++--------- .../remote/src/dapp-api/controller.ts | 42 ++++++++----------- .../remote/src/dapp-api/rpc-gen/typings.ts | 36 +++++----------- .../remote/src/dapp-api/server.test.ts | 17 ++++---- .../remote/src/user-api/controller.ts | 27 ++++++------ 19 files changed, 123 insertions(+), 280 deletions(-) diff --git a/api-specs/openrpc-dapp-api.json b/api-specs/openrpc-dapp-api.json index 00f1f7f25..e5ffc4199 100644 --- a/api-specs/openrpc-dapp-api.json +++ b/api-specs/openrpc-dapp-api.json @@ -23,19 +23,7 @@ "result": { "name": "result", "schema": { - "title": "ConnectResult", - "type": "object", - "properties": { - "status": { - "$ref": "#/components/schemas/StatusEvent" - }, - "sessionToken": { - "title": "sessionToken", - "type": "string", - "description": "JWT authentication token (if applicable)." - } - }, - "required": ["status", "sessionToken"] + "$ref": "#/components/schemas/StatusEvent" } }, "description": "Ensures ledger connectivity and returns the connected network information along with the user access token. Network ID should follow CAIP-2 and represent the synchronizerId." diff --git a/api-specs/openrpc-dapp-remote-api.json b/api-specs/openrpc-dapp-remote-api.json index 2fffdf3cf..b7bc620d1 100644 --- a/api-specs/openrpc-dapp-remote-api.json +++ b/api-specs/openrpc-dapp-remote-api.json @@ -23,19 +23,7 @@ "result": { "name": "result", "schema": { - "title": "ConnectResult", - "type": "object", - "properties": { - "status": { - "$ref": "#/components/schemas/StatusEvent" - }, - "sessionToken": { - "title": "sessionToken", - "type": "string", - "description": "JWT authentication token (if applicable)." - } - }, - "required": ["status", "sessionToken"] + "$ref": "#/components/schemas/StatusEvent" } }, "description": "Ensures ledger connectivity and returns the connected network information along with the user access token. NetworkId should follow CAIP-2 and represent the synchronizerId." @@ -166,19 +154,7 @@ "result": { "name": "result", "schema": { - "title": "OnConnectedEvent", - "type": "object", - "properties": { - "status": { - "$ref": "#/components/schemas/StatusEvent" - }, - "sessionToken": { - "title": "sessionToken", - "type": "string", - "description": "JWT authentication token (if applicable)." - } - }, - "required": ["kernel", "status"] + "$ref": "#/components/schemas/StatusEvent" } }, "description": "Informs when the user connects to a network." diff --git a/core/splice-provider/src/SpliceProviderHttp.ts b/core/splice-provider/src/SpliceProviderHttp.ts index 4364b1d45..7cd2fa855 100644 --- a/core/splice-provider/src/SpliceProviderHttp.ts +++ b/core/splice-provider/src/SpliceProviderHttp.ts @@ -76,10 +76,7 @@ export class SpliceProviderHttp extends SpliceProviderBase { // dappApi.OnConnectedEvent are mapped manually to avoid dependency. this.request({ method: 'status' }) .then((status) => { - this.emit('onConnected', { - status: status, - sessionToken: this.sessionToken, - }) + this.emit('onConnected', status) }) .catch((err) => { console.error( diff --git a/core/wallet-dapp-remote-rpc-client/src/index.ts b/core/wallet-dapp-remote-rpc-client/src/index.ts index 5fc16f445..08db76f2f 100644 --- a/core/wallet-dapp-remote-rpc-client/src/index.ts +++ b/core/wallet-dapp-remote-rpc-client/src/index.ts @@ -193,22 +193,6 @@ export interface Session { userId: UserId [k: string]: any } -export interface StatusEvent { - kernel: KernelInfo - isConnected: IsConnected - isNetworkConnected: IsNetworkConnected - networkReason?: NetworkReason - userUrl?: UserUrl - network?: Network - session?: Session - [k: string]: any -} -/** - * - * JWT authentication token (if applicable). - * - */ -export type SessionToken = string export type Dar = string export type Dars = Dar[] /** @@ -442,9 +426,14 @@ export interface LedgerApiParams { body?: Body [k: string]: any } -export interface ConnectResult { - status: StatusEvent - sessionToken: SessionToken +export interface StatusEvent { + kernel: KernelInfo + isConnected: IsConnected + isNetworkConnected: IsNetworkConnected + networkReason?: NetworkReason + userUrl?: UserUrl + network?: Network + session?: Session [k: string]: any } /** @@ -471,11 +460,6 @@ export interface LedgerApiResult { response: Response [k: string]: any } -export interface OnConnectedEvent { - status: StatusEvent - sessionToken?: SessionToken - [k: string]: any -} /** * * Event emitted when the user's accounts change. @@ -505,7 +489,7 @@ export type TxChangedEvent = */ export type Status = () => Promise -export type Connect = () => Promise +export type Connect = () => Promise export type Disconnect = () => Promise export type DarsAvailable = () => Promise export type PrepareReturn = ( @@ -515,7 +499,7 @@ export type PrepareExecute = ( params: PrepareExecuteParams ) => Promise export type LedgerApi = (params: LedgerApiParams) => Promise -export type OnConnected = () => Promise +export type OnConnected = () => Promise export type OnStatusChanged = () => Promise export type OnAccountsChanged = () => Promise export type RequestAccounts = () => Promise diff --git a/core/wallet-dapp-remote-rpc-client/src/openrpc.json b/core/wallet-dapp-remote-rpc-client/src/openrpc.json index 2fffdf3cf..b7bc620d1 100644 --- a/core/wallet-dapp-remote-rpc-client/src/openrpc.json +++ b/core/wallet-dapp-remote-rpc-client/src/openrpc.json @@ -23,19 +23,7 @@ "result": { "name": "result", "schema": { - "title": "ConnectResult", - "type": "object", - "properties": { - "status": { - "$ref": "#/components/schemas/StatusEvent" - }, - "sessionToken": { - "title": "sessionToken", - "type": "string", - "description": "JWT authentication token (if applicable)." - } - }, - "required": ["status", "sessionToken"] + "$ref": "#/components/schemas/StatusEvent" } }, "description": "Ensures ledger connectivity and returns the connected network information along with the user access token. NetworkId should follow CAIP-2 and represent the synchronizerId." @@ -166,19 +154,7 @@ "result": { "name": "result", "schema": { - "title": "OnConnectedEvent", - "type": "object", - "properties": { - "status": { - "$ref": "#/components/schemas/StatusEvent" - }, - "sessionToken": { - "title": "sessionToken", - "type": "string", - "description": "JWT authentication token (if applicable)." - } - }, - "required": ["kernel", "status"] + "$ref": "#/components/schemas/StatusEvent" } }, "description": "Informs when the user connects to a network." diff --git a/core/wallet-dapp-rpc-client/src/index.ts b/core/wallet-dapp-rpc-client/src/index.ts index 951b27190..5542a3485 100644 --- a/core/wallet-dapp-rpc-client/src/index.ts +++ b/core/wallet-dapp-rpc-client/src/index.ts @@ -194,22 +194,6 @@ export interface Session { userId: UserId [k: string]: any } -export interface StatusEvent { - kernel: KernelInfo - isConnected: IsConnected - isNetworkConnected: IsNetworkConnected - networkReason?: NetworkReason - userUrl?: UserUrl - network?: Network - session?: Session - [k: string]: any -} -/** - * - * JWT authentication token (if applicable). - * - */ -export type SessionToken = string export type Dar = string export type Dars = Dar[] /** @@ -443,9 +427,14 @@ export interface LedgerApiParams { body?: Body [k: string]: any } -export interface ConnectResult { - status: StatusEvent - sessionToken: SessionToken +export interface StatusEvent { + kernel: KernelInfo + isConnected: IsConnected + isNetworkConnected: IsNetworkConnected + networkReason?: NetworkReason + userUrl?: UserUrl + network?: Network + session?: Session [k: string]: any } /** @@ -501,7 +490,7 @@ export type TxChangedEvent = */ export type Status = () => Promise -export type Connect = () => Promise +export type Connect = () => Promise export type Disconnect = () => Promise export type DarsAvailable = () => Promise export type PrepareReturn = ( diff --git a/core/wallet-dapp-rpc-client/src/openrpc.json b/core/wallet-dapp-rpc-client/src/openrpc.json index 00f1f7f25..e5ffc4199 100644 --- a/core/wallet-dapp-rpc-client/src/openrpc.json +++ b/core/wallet-dapp-rpc-client/src/openrpc.json @@ -23,19 +23,7 @@ "result": { "name": "result", "schema": { - "title": "ConnectResult", - "type": "object", - "properties": { - "status": { - "$ref": "#/components/schemas/StatusEvent" - }, - "sessionToken": { - "title": "sessionToken", - "type": "string", - "description": "JWT authentication token (if applicable)." - } - }, - "required": ["status", "sessionToken"] + "$ref": "#/components/schemas/StatusEvent" } }, "description": "Ensures ledger connectivity and returns the connected network information along with the user access token. Network ID should follow CAIP-2 and represent the synchronizerId." diff --git a/examples/ping/src/App.tsx b/examples/ping/src/App.tsx index c24b9f8f3..560e722d5 100644 --- a/examples/ping/src/App.tsx +++ b/examples/ping/src/App.tsx @@ -155,7 +155,7 @@ function App() { console.log('Connecting to Wallet Gateway...') setLoading(true) sdk.connect() - .then(({ status }) => { + .then((status) => { setLoading(false) setStatus(status) setErrorMsg('') diff --git a/sdk/dapp-sdk/src/dapp-api/rpc-gen/typings.ts b/sdk/dapp-sdk/src/dapp-api/rpc-gen/typings.ts index 1d9a30591..546e1e4d8 100644 --- a/sdk/dapp-sdk/src/dapp-api/rpc-gen/typings.ts +++ b/sdk/dapp-sdk/src/dapp-api/rpc-gen/typings.ts @@ -194,22 +194,6 @@ export interface Session { userId: UserId [k: string]: any } -export interface StatusEvent { - kernel: KernelInfo - isConnected: IsConnected - isNetworkConnected: IsNetworkConnected - networkReason?: NetworkReason - userUrl?: UserUrl - network?: Network - session?: Session - [k: string]: any -} -/** - * - * JWT authentication token (if applicable). - * - */ -export type SessionToken = string export type Dar = string export type Dars = Dar[] /** @@ -443,9 +427,14 @@ export interface LedgerApiParams { body?: Body [k: string]: any } -export interface ConnectResult { - status: StatusEvent - sessionToken: SessionToken +export interface StatusEvent { + kernel: KernelInfo + isConnected: IsConnected + isNetworkConnected: IsNetworkConnected + networkReason?: NetworkReason + userUrl?: UserUrl + network?: Network + session?: Session [k: string]: any } /** @@ -501,7 +490,7 @@ export type TxChangedEvent = */ export type Status = () => Promise -export type Connect = () => Promise +export type Connect = () => Promise export type Disconnect = () => Promise export type DarsAvailable = () => Promise export type PrepareReturn = ( diff --git a/sdk/dapp-sdk/src/provider.ts b/sdk/dapp-sdk/src/provider.ts index 3046ecbe1..0471ac8a4 100644 --- a/sdk/dapp-sdk/src/provider.ts +++ b/sdk/dapp-sdk/src/provider.ts @@ -157,27 +157,22 @@ const withTimeout = ( export const dappController = (provider: SpliceProvider) => buildController({ connect: async () => { - const response = - await provider.request({ - method: 'connect', - }) + const response = await provider.request({ + method: 'connect', + }) - if (!response.status.isConnected) - openKernelUserUI('remote', response.status.userUrl ?? '') + if (!response.isConnected) + openKernelUserUI('remote', response.userUrl ?? '') - const promise = new Promise( + const promise = new Promise( (resolve, reject) => { // 5 minutes timeout const timeout = withTimeout(reject, 5 * 60 * 1000) - provider.on( + provider.on( 'onConnected', (event) => { clearTimeout(timeout) - const result: dappAPI.ConnectResult = { - sessionToken: event.sessionToken ?? '', - status: event.status, - } - resolve(result) + resolve(event) } ) } diff --git a/sdk/dapp-sdk/src/provider/index.ts b/sdk/dapp-sdk/src/provider/index.ts index 343bcbabe..ad350a027 100644 --- a/sdk/dapp-sdk/src/provider/index.ts +++ b/sdk/dapp-sdk/src/provider/index.ts @@ -8,7 +8,10 @@ import * as storage from '../storage' export const injectProvider = (discovery: DiscoverResult) => { return injectSpliceProvider( - new Provider(discovery, storage.getKernelSession()?.sessionToken) + new Provider( + discovery, + storage.getKernelSession()?.session?.accessToken + ) ) } diff --git a/sdk/dapp-sdk/src/provider/request.ts b/sdk/dapp-sdk/src/provider/request.ts index 039a09931..de991233b 100644 --- a/sdk/dapp-sdk/src/provider/request.ts +++ b/sdk/dapp-sdk/src/provider/request.ts @@ -11,7 +11,7 @@ import gateways from '../gateways.json' import { removeKernelDiscovery, removeKernelSession } from '../storage' import { closeKernelUserUI } from '../provider.js' -export async function connect(): Promise { +export async function connect(): Promise { const config: GatewaysConfig[] = gateways return discover(config) .then(async (result) => { @@ -20,11 +20,11 @@ export async function connect(): Promise { storage.removeKernelSession() const provider = injectProvider(result) - const response = await provider.request({ + const response = await provider.request({ method: 'connect', }) - if (!response.status.isConnected) { + if (!response.isConnected) { // TODO: error dialog console.error('SDK: Not connected', response) // openKernelUserUI(result.walletType, response.userUrl) diff --git a/sdk/dapp-sdk/src/storage.ts b/sdk/dapp-sdk/src/storage.ts index 08563ba59..357367d2d 100644 --- a/sdk/dapp-sdk/src/storage.ts +++ b/sdk/dapp-sdk/src/storage.ts @@ -32,11 +32,11 @@ export const removeKernelDiscovery = (): void => { localStorage.removeItem(LOCAL_STORAGE.KERNEL_DISCOVERY) } -export const getKernelSession = (): dappAPI.ConnectResult | undefined => { +export const getKernelSession = (): dappAPI.StatusEvent | undefined => { const session = localStorage.getItem(LOCAL_STORAGE.KERNEL_SESSION) if (session) { try { - return JSON.parse(session) as dappAPI.ConnectResult + return JSON.parse(session) as dappAPI.StatusEvent } catch (e) { console.error('Failed to parse stored kernel session:', e) } @@ -44,7 +44,7 @@ export const getKernelSession = (): dappAPI.ConnectResult | undefined => { return undefined } -export const setKernelSession = (session: dappAPI.ConnectResult): void => { +export const setKernelSession = (session: dappAPI.StatusEvent): void => { localStorage.setItem(LOCAL_STORAGE.KERNEL_SESSION, JSON.stringify(session)) } diff --git a/wallet-gateway/extension/src/dapp-api/controller.ts b/wallet-gateway/extension/src/dapp-api/controller.ts index c5488d2d1..92d9af96a 100644 --- a/wallet-gateway/extension/src/dapp-api/controller.ts +++ b/wallet-gateway/extension/src/dapp-api/controller.ts @@ -25,24 +25,21 @@ export const dappController = (store?: Store) => buildController({ connect: async () => Promise.resolve({ - status: { - kernel: kernelInfo, - isConnected: false, - isNetworkConnected: false, - networkReason: 'Unauthenticated', - userUrl: Browser.runtime.getURL('pages/user.html'), - network: { - networkId: 'default-network-id', - ledgerApi: { - baseUrl: 'http://default-ledger-api', - }, - }, - session: { - accessToken: 'default-access-token', - userId: 'default-user-id', + kernel: kernelInfo, + isConnected: false, + isNetworkConnected: false, + networkReason: 'Unauthenticated', + userUrl: Browser.runtime.getURL('pages/user.html'), + network: { + networkId: 'default-network-id', + ledgerApi: { + baseUrl: 'http://default-ledger-api', }, }, - sessionToken: 'default-session-token', + session: { + accessToken: 'default-access-token', + userId: 'default-user-id', + }, }), disconnect: async () => Promise.resolve(null), darsAvailable: async () => Promise.resolve({ dars: ['default-dar'] }), diff --git a/wallet-gateway/extension/src/dapp-api/rpc-gen/typings.ts b/wallet-gateway/extension/src/dapp-api/rpc-gen/typings.ts index 1d9a30591..546e1e4d8 100644 --- a/wallet-gateway/extension/src/dapp-api/rpc-gen/typings.ts +++ b/wallet-gateway/extension/src/dapp-api/rpc-gen/typings.ts @@ -194,22 +194,6 @@ export interface Session { userId: UserId [k: string]: any } -export interface StatusEvent { - kernel: KernelInfo - isConnected: IsConnected - isNetworkConnected: IsNetworkConnected - networkReason?: NetworkReason - userUrl?: UserUrl - network?: Network - session?: Session - [k: string]: any -} -/** - * - * JWT authentication token (if applicable). - * - */ -export type SessionToken = string export type Dar = string export type Dars = Dar[] /** @@ -443,9 +427,14 @@ export interface LedgerApiParams { body?: Body [k: string]: any } -export interface ConnectResult { - status: StatusEvent - sessionToken: SessionToken +export interface StatusEvent { + kernel: KernelInfo + isConnected: IsConnected + isNetworkConnected: IsNetworkConnected + networkReason?: NetworkReason + userUrl?: UserUrl + network?: Network + session?: Session [k: string]: any } /** @@ -501,7 +490,7 @@ export type TxChangedEvent = */ export type Status = () => Promise -export type Connect = () => Promise +export type Connect = () => Promise export type Disconnect = () => Promise export type DarsAvailable = () => Promise export type PrepareReturn = ( diff --git a/wallet-gateway/remote/src/dapp-api/controller.ts b/wallet-gateway/remote/src/dapp-api/controller.ts index 3fc176591..2c8b9ac8e 100644 --- a/wallet-gateway/remote/src/dapp-api/controller.ts +++ b/wallet-gateway/remote/src/dapp-api/controller.ts @@ -37,14 +37,11 @@ export const dappController = ( connect: async () => { if (!context || !(await store.getSession())) { return { - sessionToken: '', - status: { - kernel: kernelInfo, - isConnected: false, - isNetworkConnected: false, - networkReason: 'Unauthenticated', - userUrl: `${userUrl}/login/`, - }, + kernel: kernelInfo, + isConnected: false, + isNetworkConnected: false, + networkReason: 'Unauthenticated', + userUrl: `${userUrl}/login/`, } } @@ -57,24 +54,21 @@ export const dappController = ( }) const status = await networkStatus(ledgerClient) return { - sessionToken: context.accessToken, - status: { - kernel: kernelInfo, - isConnected: true, - isNetworkConnected: status.isConnected, - networkReason: status.reason ? status.reason : 'OK', - userUrl: `${userUrl}/login/`, - network: { - networkId: network.id, - ledgerApi: { - baseUrl: network.ledgerApi.baseUrl, - }, - }, - session: { - accessToken: context.accessToken, - userId: context.userId, + kernel: kernelInfo, + isConnected: true, + isNetworkConnected: status.isConnected, + networkReason: status.reason ? status.reason : 'OK', + userUrl: `${userUrl}/login/`, + network: { + networkId: network.id, + ledgerApi: { + baseUrl: network.ledgerApi.baseUrl, }, }, + session: { + accessToken: context.accessToken, + userId: context.userId, + }, } }, disconnect: async () => { diff --git a/wallet-gateway/remote/src/dapp-api/rpc-gen/typings.ts b/wallet-gateway/remote/src/dapp-api/rpc-gen/typings.ts index 6e7f0badd..8c9616eb7 100644 --- a/wallet-gateway/remote/src/dapp-api/rpc-gen/typings.ts +++ b/wallet-gateway/remote/src/dapp-api/rpc-gen/typings.ts @@ -193,22 +193,6 @@ export interface Session { userId: UserId [k: string]: any } -export interface StatusEvent { - kernel: KernelInfo - isConnected: IsConnected - isNetworkConnected: IsNetworkConnected - networkReason?: NetworkReason - userUrl?: UserUrl - network?: Network - session?: Session - [k: string]: any -} -/** - * - * JWT authentication token (if applicable). - * - */ -export type SessionToken = string export type Dar = string export type Dars = Dar[] /** @@ -442,9 +426,14 @@ export interface LedgerApiParams { body?: Body [k: string]: any } -export interface ConnectResult { - status: StatusEvent - sessionToken: SessionToken +export interface StatusEvent { + kernel: KernelInfo + isConnected: IsConnected + isNetworkConnected: IsNetworkConnected + networkReason?: NetworkReason + userUrl?: UserUrl + network?: Network + session?: Session [k: string]: any } /** @@ -471,11 +460,6 @@ export interface LedgerApiResult { response: Response [k: string]: any } -export interface OnConnectedEvent { - status: StatusEvent - sessionToken?: SessionToken - [k: string]: any -} /** * * Event emitted when the user's accounts change. @@ -505,7 +489,7 @@ export type TxChangedEvent = */ export type Status = () => Promise -export type Connect = () => Promise +export type Connect = () => Promise export type Disconnect = () => Promise export type DarsAvailable = () => Promise export type PrepareReturn = ( @@ -515,7 +499,7 @@ export type PrepareExecute = ( params: PrepareExecuteParams ) => Promise export type LedgerApi = (params: LedgerApiParams) => Promise -export type OnConnected = () => Promise +export type OnConnected = () => Promise export type OnStatusChanged = () => Promise export type OnAccountsChanged = () => Promise export type RequestAccounts = () => Promise diff --git a/wallet-gateway/remote/src/dapp-api/server.test.ts b/wallet-gateway/remote/src/dapp-api/server.test.ts index bd8ecf24a..810af3907 100644 --- a/wallet-gateway/remote/src/dapp-api/server.test.ts +++ b/wallet-gateway/remote/src/dapp-api/server.test.ts @@ -66,17 +66,14 @@ test('call connect rpc', async () => { id: 0, jsonrpc: '2.0', result: { - sessionToken: '', - status: { - kernel: { - id: 'remote-da', - clientType: 'remote', - }, - isConnected: false, - isNetworkConnected: false, - networkReason: 'Unauthenticated', - userUrl: 'http://localhost:3030/login/', + kernel: { + id: 'remote-da', + clientType: 'remote', }, + isConnected: false, + isNetworkConnected: false, + networkReason: 'Unauthenticated', + userUrl: 'http://localhost:3030/login/', }, }) }) diff --git a/wallet-gateway/remote/src/user-api/controller.ts b/wallet-gateway/remote/src/user-api/controller.ts index fc0a2b275..1dbdf0c64 100644 --- a/wallet-gateway/remote/src/user-api/controller.ts +++ b/wallet-gateway/remote/src/user-api/controller.ts @@ -586,23 +586,20 @@ export const userController = ( }) const status = await networkStatus(ledgerClient) notifier.emit('onConnected', { - status: { - kernel: kernelInfo, - isConnected: true, - isNetworkConnected: status.isConnected, - networkReason: status.reason ? status.reason : 'OK', - network: { - networkId: network.id, - ledgerApi: { - baseUrl: network.ledgerApi.baseUrl, - }, - }, - session: { - accessToken: accessToken, - userId: userId, + kernel: kernelInfo, + isConnected: true, + isNetworkConnected: status.isConnected, + networkReason: status.reason ? status.reason : 'OK', + network: { + networkId: network.id, + ledgerApi: { + baseUrl: network.ledgerApi.baseUrl, }, }, - sessionToken: accessToken, + session: { + accessToken: accessToken, + userId: userId, + }, }) return Promise.resolve({