Skip to content

Commit 9d196e4

Browse files
committed
feat: browser compatible BlockfrostTxSubmitProvider
1 parent 6b5ebb2 commit 9d196e4

File tree

7 files changed

+36
-55
lines changed

7 files changed

+36
-55
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,18 @@
1-
import { BlockfrostProvider } from '../../util/BlockfrostProvider/BlockfrostProvider';
1+
import { BlockfrostClient, BlockfrostProvider } from '../blockfrost';
2+
import { Logger } from 'ts-log';
23
import { SubmitTxArgs, TxSubmitProvider } from '@cardano-sdk/core';
3-
import { blockfrostToProviderError } from '@cardano-sdk/cardano-services-client';
44

55
export class BlockfrostTxSubmitProvider extends BlockfrostProvider implements TxSubmitProvider {
6+
constructor(client: BlockfrostClient, logger: Logger) {
7+
super(client, logger);
8+
}
9+
610
async submitTx({ signedTransaction }: SubmitTxArgs): Promise<void> {
711
// @ todo handle context and resolutions
812
try {
9-
await this.blockfrost.txSubmit(signedTransaction);
13+
await this.request<string>('tx/submit', signedTransaction);
1014
} catch (error) {
11-
throw blockfrostToProviderError(error);
15+
throw this.toProviderError(error);
1216
}
1317
}
1418
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
1+
export * from './BlockfrostTxSubmitProvider';
12
export * from './TxSubmitApiProvider';
23
export * from './txSubmitHttpProvider';
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
/* eslint-disable @typescript-eslint/no-explicit-any */
2+
import { BlockfrostClient, BlockfrostTxSubmitProvider } from '../../src';
3+
import { ProviderError } from '@cardano-sdk/core';
4+
import { logger } from '@cardano-sdk/util-dev';
5+
import { mockResponses } from '../AssetInfoProvider/util';
6+
7+
describe('blockfrostTxSubmitProvider', () => {
8+
let request: jest.Mock;
9+
let provider: BlockfrostTxSubmitProvider;
10+
11+
beforeEach(async () => {
12+
request = jest.fn();
13+
const client = { request } as unknown as BlockfrostClient;
14+
provider = new BlockfrostTxSubmitProvider(client, logger);
15+
});
16+
17+
describe('submitTx', () => {
18+
it('wraps error in UnknownTxSubmissionError', async () => {
19+
mockResponses(request, [['tx/submit', new Error('some error')]]);
20+
await expect(provider.submitTx({ signedTransaction: null as any })).rejects.toThrowError(ProviderError);
21+
});
22+
});
23+
});

packages/cardano-services/src/Program/programs/providerServer.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import {
1919
BlockfrostChainHistoryProvider,
2020
BlockfrostNetworkInfoProvider,
2121
BlockfrostRewardsProvider,
22+
BlockfrostTxSubmitProvider,
2223
BlockfrostUtxoProvider,
2324
CardanoWsClient,
2425
TxSubmitApiProvider
@@ -41,7 +42,6 @@ import {
4142
StubTokenMetadataService,
4243
TypeormAssetProvider
4344
} from '../../Asset';
44-
import { BlockfrostTxSubmitProvider, NodeTxSubmitProvider, TxSubmitHttpService } from '../../TxSubmit';
4545
import { ChainHistoryHttpService, DbSyncChainHistoryProvider } from '../../ChainHistory';
4646
import {
4747
CommonOptionsDescriptions,
@@ -52,7 +52,7 @@ import {
5252
handlePolicyIdsFromFile,
5353
suffixType2Cli
5454
} from '../options';
55-
import { DbPools, DbSyncEpochPollService, TypeormProvider, getBlockfrostApi, getBlockfrostClient } from '../../util';
55+
import { DbPools, DbSyncEpochPollService, TypeormProvider, getBlockfrostClient } from '../../util';
5656
import { DbSyncNetworkInfoProvider, NetworkInfoHttpService } from '../../NetworkInfo';
5757
import { DbSyncRewardsProvider, RewardsHttpService } from '../../Rewards';
5858
import {
@@ -68,6 +68,7 @@ import { HandleHttpService, TypeOrmHandleProvider } from '../../Handle';
6868
import { HttpServer, HttpServerConfig, HttpService, getListen } from '../../Http';
6969
import { InMemoryCache, NoCache } from '../../InMemoryCache';
7070
import { MissingProgramOption, MissingServiceDependency, RunnableDependencies, UnknownServiceName } from '../errors';
71+
import { NodeTxSubmitProvider, TxSubmitHttpService } from '../../TxSubmit';
7172
import { ProviderServerArgs, ProviderServerOptionDescriptions, ServiceNames } from './types';
7273
import { WarmCache } from '../../InMemoryCache/WarmCache';
7374
import { createDbSyncMetadataService } from '../../Metadata';
@@ -362,8 +363,7 @@ const serviceMapFactory = (options: ServiceMapFactoryOptions) => {
362363
),
363364
ServiceNames.Rewards
364365
);
365-
const getBlockfrostTxSubmitProvider = () =>
366-
new BlockfrostTxSubmitProvider({ blockfrost: getBlockfrostApi(), logger });
366+
const getBlockfrostTxSubmitProvider = () => new BlockfrostTxSubmitProvider(getBlockfrostClient(), logger);
367367

368368
return {
369369
[ServiceNames.Asset]: async () =>

packages/cardano-services/src/TxSubmit/BlockfrostTxSubmitProvider/index.ts

Lines changed: 0 additions & 1 deletion
This file was deleted.
Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,2 @@
1-
export * from './BlockfrostTxSubmitProvider';
21
export * from './NodeTxSubmitProvider';
32
export * from './TxSubmitHttpService';

packages/cardano-services/test/TxSubmit/BlockfrostTxSubmitProvider/BlockfrostTxSubmitProvider.test.ts

Lines changed: 0 additions & 45 deletions
This file was deleted.

0 commit comments

Comments
 (0)