Skip to content

Commit c12e34b

Browse files
authored
feat: use web socket provider (#1469)
1 parent 8c22ff5 commit c12e34b

File tree

19 files changed

+391
-177
lines changed

19 files changed

+391
-177
lines changed

.github/shared/build/action.yml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,22 @@ inputs:
3939
description: 'Url for sanchonet env'
4040
required: false
4141
default: 'https://dev-sanchonet.lw.iog.io'
42+
CARDANO_WS_SERVER_URL_MAINNET:
43+
description: 'WS url for mainnet env'
44+
required: false
45+
default: 'wss://dev-mainnet.lw.iog.io'
46+
CARDANO_WS_SERVER_URL_PREPROD:
47+
description: 'WS url for preprod env'
48+
required: false
49+
default: 'wss://dev-preprod.lw.iog.io'
50+
CARDANO_WS_SERVER_URL_PREVIEW:
51+
description: 'WS url for preview env'
52+
required: false
53+
default: 'wss://dev-preview.lw.iog.io'
54+
CARDANO_WS_SERVER_URL_SANCHONET:
55+
description: 'WS url for sanchonet env'
56+
required: false
57+
default: 'wss://dev-sanchonet.lw.iog.io'
4258
runs:
4359
using: 'composite'
4460
steps:
@@ -95,4 +111,8 @@ runs:
95111
CARDANO_SERVICES_URL_PREPROD: ${{ inputs.CARDANO_SERVICES_URL_PREPROD }}
96112
CARDANO_SERVICES_URL_PREVIEW: ${{ inputs.CARDANO_SERVICES_URL_PREVIEW }}
97113
CARDANO_SERVICES_URL_SANCHONET: ${{ inputs.CARDANO_SERVICES_URL_SANCHONET }}
114+
CARDANO_WS_SERVER_URL_MAINNET: ${{ inputs.CARDANO_WS_SERVER_URL_MAINNET }}
115+
CARDANO_WS_SERVER_URL_PREPROD: ${{ inputs.CARDANO_WS_SERVER_URL_PREPROD }}
116+
CARDANO_WS_SERVER_URL_PREVIEW: ${{ inputs.CARDANO_WS_SERVER_URL_PREVIEW }}
117+
CARDANO_WS_SERVER_URL_SANCHONET: ${{ inputs.CARDANO_WS_SERVER_URL_SANCHONET }}
98118
run: yarn browser build

.github/workflows/e2e-tests-linux-split.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,9 @@ jobs:
173173
CARDANO_SERVICES_URL_MAINNET: 'https://${{ env.CARDANO_MAINNET_URL }}'
174174
CARDANO_SERVICES_URL_PREPROD: 'https://${{ env.CARDANO_PREPROD_URL }}'
175175
CARDANO_SERVICES_URL_PREVIEW: 'https://${{ env.CARDANO_PREVIEW_URL }}'
176+
CARDANO_WS_SERVER_URL_MAINNET: 'wss://${{ env.CARDANO_MAINNET_URL }}'
177+
CARDANO_WS_SERVER_URL_PREPROD: 'wss://${{ env.CARDANO_PREPROD_URL }}'
178+
CARDANO_WS_SERVER_URL_PREVIEW: 'wss://${{ env.CARDANO_PREVIEW_URL }}'
176179
GITHUB_TOKEN: ${{ secrets.GH_TOKEN }}
177180
LACE_EXTENSION_KEY: ${{ secrets.MANIFEST_PUBLIC_KEY }}
178181

apps/browser-extension-wallet/.env.defaults

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,12 @@ CARDANO_SERVICES_URL_PREPROD=https://dev-preprod.lw.iog.io
6767
CARDANO_SERVICES_URL_PREVIEW=https://dev-preview.lw.iog.io
6868
CARDANO_SERVICES_URL_SANCHONET=https://dev-sanchonet.lw.iog.io
6969

70+
# Cardano WS Services
71+
CARDANO_WS_SERVER_URL_MAINNET=wss://dev-mainnet.lw.iog.io
72+
CARDANO_WS_SERVER_URL_PREPROD=wss://dev-preprod.lw.iog.io
73+
CARDANO_WS_SERVER_URL_PREVIEW=wss://dev-preview.lw.iog.io
74+
CARDANO_WS_SERVER_URL_SANCHONET=wss://dev-sanchonet.lw.iog.io
75+
7076
# Explorer URLs
7177
CEXPLORER_URL_MAINNET=https://cexplorer.io
7278
CEXPLORER_URL_PREVIEW=https://preview.cexplorer.io

apps/browser-extension-wallet/.env.developerpreview

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,12 @@ CARDANO_SERVICES_URL_PREPROD=https://dev-preprod.lw.iog.io
6767
CARDANO_SERVICES_URL_PREVIEW=https://dev-preview.lw.iog.io
6868
CARDANO_SERVICES_URL_SANCHONET=https://dev-sanchonet.lw.iog.io
6969

70+
# Cardano WS Services
71+
CARDANO_WS_SERVER_URL_MAINNET=wss://dev-mainnet.lw.iog.io
72+
CARDANO_WS_SERVER_URL_PREPROD=wss://dev-preprod.lw.iog.io
73+
CARDANO_WS_SERVER_URL_PREVIEW=wss://dev-preview.lw.iog.io
74+
CARDANO_WS_SERVER_URL_SANCHONET=wss://dev-sanchonet.lw.iog.io
75+
7076
# Explorer URLs
7177
CEXPLORER_URL_MAINNET=https://cexplorer.io
7278
CEXPLORER_URL_PREVIEW=https://preview.cexplorer.io

apps/browser-extension-wallet/.env.example

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,12 @@ CARDANO_SERVICES_URL_PREPROD=https://backend.live-preprod.eks.lw.iog.io
6565
CARDANO_SERVICES_URL_PREVIEW=https://backend.live-preview.eks.lw.iog.io
6666
CARDANO_SERVICES_URL_SANCHONET=https://dev-sanchonet.lw.iog.io
6767

68+
# Cardano WS Services
69+
CARDANO_WS_SERVER_URL_MAINNET=wss://dev-mainnet.lw.iog.io
70+
CARDANO_WS_SERVER_URL_PREPROD=wss://dev-preprod.lw.iog.io
71+
CARDANO_WS_SERVER_URL_PREVIEW=wss://dev-preview.lw.iog.io
72+
CARDANO_WS_SERVER_URL_SANCHONET=wss://dev-sanchonet.lw.iog.io
73+
6874
# Explorer URLs
6975
CEXPLORER_URL_MAINNET=https://cexplorer.io
7076
CEXPLORER_URL_PREVIEW=https://preview.cexplorer.io

apps/browser-extension-wallet/manifest.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
"permissions": ["webRequest", "storage", "tabs", "unlimitedStorage"],
2020
"host_permissions": ["<all_urls>"],
2121
"content_security_policy": {
22-
"extension_pages": "default-src 'self' $LOCALHOST_DEFAULT_SRC; frame-src https://connect.trezor.io/ https://www.youtube-nocookie.com; script-src 'self' 'wasm-unsafe-eval' $LOCALHOST_SCRIPT_SRC; font-src 'self' https://use.typekit.net; object-src 'self'; connect-src $CARDANO_SERVICES_URLS https://coingecko.live-mainnet.eks.lw.iog.io https://muesliswap.live-mainnet.eks.lw.iog.io $LOCALHOST_CONNECT_SRC $POSTHOG_HOST https://use.typekit.net data:; style-src * 'unsafe-inline'; img-src * data:;"
22+
"extension_pages": "default-src 'self' $LOCALHOST_DEFAULT_SRC; frame-src https://connect.trezor.io/ https://www.youtube-nocookie.com; script-src 'self' 'wasm-unsafe-eval' $LOCALHOST_SCRIPT_SRC; font-src 'self' https://use.typekit.net; object-src 'self'; connect-src $CARDANO_SERVICES_URLS $CARDANO_WS_SERVER_URLS https://coingecko.live-mainnet.eks.lw.iog.io https://muesliswap.live-mainnet.eks.lw.iog.io $LOCALHOST_CONNECT_SRC $POSTHOG_HOST https://use.typekit.net data:; style-src * 'unsafe-inline'; img-src * data:;"
2323
},
2424
"content_scripts": [
2525
{

apps/browser-extension-wallet/package.json

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -41,15 +41,15 @@
4141
},
4242
"dependencies": {
4343
"@ant-design/icons": "^4.7.0",
44-
"@cardano-sdk/cardano-services-client": "0.20.8",
45-
"@cardano-sdk/core": "0.39.3",
46-
"@cardano-sdk/dapp-connector": "0.12.36",
47-
"@cardano-sdk/input-selection": "0.13.19",
48-
"@cardano-sdk/tx-construction": "0.21.4",
44+
"@cardano-sdk/cardano-services-client": "0.21.4",
45+
"@cardano-sdk/core": "0.41.1",
46+
"@cardano-sdk/dapp-connector": "0.12.41",
47+
"@cardano-sdk/input-selection": "0.13.24",
48+
"@cardano-sdk/tx-construction": "0.21.9",
4949
"@cardano-sdk/util": "0.15.5",
50-
"@cardano-sdk/util-rxjs": "0.7.32",
51-
"@cardano-sdk/wallet": "0.44.3",
52-
"@cardano-sdk/web-extension": "0.34.2",
50+
"@cardano-sdk/util-rxjs": "0.7.37",
51+
"@cardano-sdk/wallet": "0.44.11",
52+
"@cardano-sdk/web-extension": "0.34.10",
5353
"@emurgo/cip14-js": "~3.0.1",
5454
"@input-output-hk/lace-ui-toolkit": "1.21.0",
5555
"@lace/cardano": "0.1.0",
@@ -97,7 +97,7 @@
9797
"zustand": "3.5.14"
9898
},
9999
"devDependencies": {
100-
"@cardano-sdk/hardware-ledger": "0.12.3",
100+
"@cardano-sdk/hardware-ledger": "0.12.9",
101101
"@emurgo/cardano-message-signing-asmjs": "1.0.1",
102102
"@openpgp/web-stream-tools": "0.0.11-patch-0",
103103
"@pdfme/common": "^4.0.2",

apps/browser-extension-wallet/src/lib/scripts/background/config.ts

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
import axiosFetchAdapter from '@shiroyasha9/axios-fetch-adapter';
22
import { Wallet } from '@lace/cardano';
33
import { RemoteApiProperties, RemoteApiPropertyType } from '@cardano-sdk/web-extension';
4-
import { getBaseUrlForChain } from '@src/utils/chain';
4+
import { getBaseUrlForChain, getMagicForChain } from '@src/utils/chain';
55
import { BackgroundService, UserIdService as UserIdServiceInterface } from '../types';
66
import { getBackgroundStorage } from '@lib/scripts/background/storage';
7+
import { ExperimentName } from '@providers/ExperimentsProvider/types';
8+
import { logger } from '@lace/common';
79

810
export const backgroundServiceProperties: RemoteApiProperties<BackgroundService> = {
911
requestMessage$: RemoteApiPropertyType.HotObservable,
@@ -26,12 +28,16 @@ export const backgroundServiceProperties: RemoteApiProperties<BackgroundService>
2628

2729
export const getProviders = async (chainName: Wallet.ChainName): Promise<Wallet.WalletProvidersDependencies> => {
2830
const baseCardanoServicesUrl = getBaseUrlForChain(chainName);
29-
const { customSubmitTxUrl } = await getBackgroundStorage();
31+
const magic = getMagicForChain(chainName);
32+
const { customSubmitTxUrl, featureFlags } = await getBackgroundStorage();
33+
const useWebSocket = !!(featureFlags?.[magic]?.[ExperimentName.WEBSOCKET_API] ?? false);
3034

3135
return Wallet.createProviders({
3236
axiosAdapter: axiosFetchAdapter,
3337
baseUrl: baseCardanoServicesUrl,
34-
customSubmitTxUrl
38+
customSubmitTxUrl,
39+
logger,
40+
useWebSocket
3541
});
3642
};
3743

apps/browser-extension-wallet/src/providers/ExperimentsProvider/config.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ export const getDefaultFeatureFlags = (): FallbackConfiguration => ({
44
[ExperimentName.CREATE_PAPER_WALLET]: false,
55
[ExperimentName.RESTORE_PAPER_WALLET]: false,
66
[ExperimentName.USE_SWITCH_TO_NAMI_MODE]: false,
7-
[ExperimentName.SHARED_WALLETS]: false
7+
[ExperimentName.SHARED_WALLETS]: false,
8+
[ExperimentName.WEBSOCKET_API]: false
89
});
910

1011
export const experiments: ExperimentsConfig = {
@@ -23,5 +24,9 @@ export const experiments: ExperimentsConfig = {
2324
[ExperimentName.SHARED_WALLETS]: {
2425
value: false,
2526
default: false
27+
},
28+
[ExperimentName.WEBSOCKET_API]: {
29+
value: false,
30+
default: false
2631
}
2732
};

apps/browser-extension-wallet/src/providers/ExperimentsProvider/types.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ export enum ExperimentName {
99
CREATE_PAPER_WALLET = 'create-paper-wallet',
1010
RESTORE_PAPER_WALLET = 'restore-paper-wallet',
1111
USE_SWITCH_TO_NAMI_MODE = 'use-switch-to-nami-mode',
12-
SHARED_WALLETS = 'shared-wallets'
12+
SHARED_WALLETS = 'shared-wallets',
13+
WEBSOCKET_API = 'websocket-api'
1314
}
1415

1516
interface FeatureFlag {

0 commit comments

Comments
 (0)