Skip to content

Commit ce6ea11

Browse files
authored
feat: use KoraLabsHandleProvider (#1815)
1 parent f5bfefe commit ce6ea11

File tree

5 files changed

+29
-12
lines changed

5 files changed

+29
-12
lines changed

apps/browser-extension-wallet/manifest.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
"permissions": ["webRequest", "storage", "tabs", "unlimitedStorage"],
1919
"host_permissions": ["<all_urls>"],
2020
"content_security_policy": {
21-
"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'; font-src 'self' data: https://use.typekit.net; object-src 'self'; connect-src $BLOCKFROST_URLS $MAESTRO_URLS $CARDANO_SERVICES_URLS $CARDANO_WS_SERVER_URLS $SENTRY_URL $DAPP_RADAR_APPI_URL https://coingecko.live-mainnet.eks.lw.iog.io 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: blob:;"
21+
"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'; font-src 'self' data: https://use.typekit.net; object-src 'self'; connect-src $BLOCKFROST_URLS $MAESTRO_URLS $CARDANO_SERVICES_URLS $CARDANO_WS_SERVER_URLS $SENTRY_URL $DAPP_RADAR_APPI_URL https://coingecko.live-mainnet.eks.lw.iog.io 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 https://api.handle.me/ https://*.api.handle.me/ data:; style-src * 'unsafe-inline'; img-src * data: blob:;"
2222
},
2323
"content_scripts": [
2424
{

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { storage } from 'webextension-polyfill';
22
import axiosFetchAdapter from '@shiroyasha9/axios-fetch-adapter';
33
import { Wallet } from '@lace/cardano';
44
import { RemoteApiProperties, RemoteApiPropertyType } from '@cardano-sdk/web-extension';
5-
import { getBaseUrlForChain, getMagicForChain } from '@src/utils/chain';
5+
import { getBaseKoraLabsUrlForChain, getBaseUrlForChain, getMagicForChain } from '@src/utils/chain';
66
import { BackgroundService, UserIdService as UserIdServiceInterface } from '../types';
77
import { getBackgroundStorage } from '@lib/scripts/background/storage';
88
import { logger } from '@lace/common';
@@ -46,6 +46,7 @@ export const rateLimiter: RateLimiter = new Bottleneck({
4646

4747
export const getProviders = async (chainName: Wallet.ChainName): Promise<Wallet.WalletProvidersDependencies> => {
4848
const baseCardanoServicesUrl = getBaseUrlForChain(chainName);
49+
const baseKoraLabsServicesUrl = getBaseKoraLabsUrlForChain(chainName);
4950
const magic = getMagicForChain(chainName);
5051
const { customSubmitTxUrl, featureFlags } = await getBackgroundStorage();
5152

@@ -55,6 +56,7 @@ export const getProviders = async (chainName: Wallet.ChainName): Promise<Wallet.
5556
axiosAdapter: axiosFetchAdapter,
5657
env: {
5758
baseCardanoServicesUrl,
59+
baseKoraLabsServicesUrl,
5860
customSubmitTxUrl,
5961
blockfrostConfig: {
6062
...BLOCKFROST_CONFIGS[chainName],

apps/browser-extension-wallet/src/utils/chain.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,19 @@ export const getBaseUrlForChain = (chainName: Wallet.ChainName): string => {
2424
return url;
2525
};
2626

27+
export const getBaseKoraLabsUrlForChain = (chainName: Wallet.ChainName): string => {
28+
switch (chainName) {
29+
case 'Mainnet':
30+
return 'https://api.handle.me/';
31+
case 'Preprod':
32+
return 'https://preprod.api.handle.me/';
33+
case 'Preview':
34+
return 'https://preview.api.handle.me/';
35+
}
36+
37+
throw new Error('Chain not supported by KoraLabs');
38+
};
39+
2740
export const getMagicForChain = (chainName: Wallet.ChainName): Wallet.Cardano.NetworkMagics => {
2841
const { AVAILABLE_CHAINS } = config();
2942
let magic = 0;

packages/cardano/src/wallet/lib/handleService.ts

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
1-
import { handleHttpProvider } from '@cardano-sdk/cardano-services-client';
2-
import { HandleProvider, HandleResolution, ResolveHandlesArgs } from '@cardano-sdk/core';
1+
import { KoraLabsHandleProvider } from '@cardano-sdk/cardano-services-client';
2+
import { Cardano, HandleProvider, HandleResolution, ResolveHandlesArgs } from '@cardano-sdk/core';
33
import type { Cache } from '@cardano-sdk/util';
4-
import { logger } from '@lace/common';
54
import { AxiosAdapter } from 'axios';
65

76
export interface HandleResolutionCacheItem {
@@ -11,19 +10,21 @@ export interface HandleResolutionCacheItem {
1110

1211
export interface HandleServiceProps {
1312
adapter?: AxiosAdapter;
14-
baseCardanoServicesUrl: string;
13+
baseKoraLabsServicesUrl: string;
1514
cache: Cache<HandleResolutionCacheItem>;
1615
}
1716

1817
const HANDLE_RESOLUTION_CACHE_LIFETIME = Number.parseInt(process.env.HANDLE_RESOLUTION_CACHE_LIFETIME || '600000', 10);
1918

19+
export const handleKoraLabsPolicyId = Cardano.PolicyId('f0ff48bbb7bbe9d59a40f1ce90e9e9d0ff5002ec48f232b49ca0fb9a');
20+
2021
export const initHandleService = (props: HandleServiceProps): HandleProvider => {
21-
const { adapter, baseCardanoServicesUrl, cache } = props;
22+
const { adapter, baseKoraLabsServicesUrl, cache } = props;
2223

23-
const origin = handleHttpProvider({
24+
const origin = new KoraLabsHandleProvider({
2425
adapter,
25-
baseUrl: baseCardanoServicesUrl,
26-
logger
26+
policyId: handleKoraLabsPolicyId,
27+
serverUrl: baseKoraLabsServicesUrl
2728
});
2829

2930
return {

packages/cardano/src/wallet/lib/providers.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@ interface ProvidersConfig {
8181
axiosAdapter?: AxiosAdapter;
8282
env: {
8383
baseCardanoServicesUrl: string;
84+
baseKoraLabsServicesUrl: string;
8485
customSubmitTxUrl?: string;
8586
blockfrostConfig: BlockfrostClientConfig & { rateLimiter: RateLimiter };
8687
};
@@ -134,7 +135,7 @@ const cacheAssignment: Record<CacheName, { count: number; size: number }> = {
134135

135136
export const createProviders = ({
136137
axiosAdapter,
137-
env: { baseCardanoServicesUrl: baseUrl, customSubmitTxUrl, blockfrostConfig },
138+
env: { baseCardanoServicesUrl: baseUrl, baseKoraLabsServicesUrl, customSubmitTxUrl, blockfrostConfig },
138139
logger,
139140
experiments: { useWebSocket },
140141
extensionLocalStorage
@@ -184,7 +185,7 @@ export const createProviders = ({
184185

185186
const handleProvider = initHandleService({
186187
adapter: axiosAdapter,
187-
baseCardanoServicesUrl: baseUrl,
188+
baseKoraLabsServicesUrl,
188189
cache: createPersistentCacheStorage({
189190
extensionLocalStorage,
190191
fallbackMaxCollectionItemsGuard: cacheAssignment[CacheName.handleProvider].count,

0 commit comments

Comments
 (0)