Skip to content

Commit

Permalink
Merge pull request #30 from starc007/fix/cache-provider
Browse files Browse the repository at this point in the history
fix: cache Provider
  • Loading branch information
Dhaiwat10 authored Dec 29, 2024
2 parents 0ea497c + 625e90c commit 96a6f73
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 9 deletions.
7 changes: 2 additions & 5 deletions src/read/balance.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import { Provider } from 'fuels';
import { getAllVerifiedFuelAssets } from '../utils/assets.js';
import { setupWallet } from '../utils/setup.js';
import { setupWallet, ProviderInstance } from '../utils/setup.js';

export type GetOwnBalanceParams = {
symbol: string;
Expand Down Expand Up @@ -32,9 +31,7 @@ export type GetBalanceParams = {
};

export const getBalance = async (params: GetBalanceParams) => {
const provider = await Provider.create(
'https://mainnet.fuel.network/v1/graphql',
);
const provider = await ProviderInstance.getProvider();

const allAssets = await getAllVerifiedFuelAssets();
const asset = allAssets.find((asset) => asset.symbol === params.assetSymbol);
Expand Down
20 changes: 16 additions & 4 deletions src/utils/setup.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,22 @@
import { Provider, Wallet } from 'fuels';

export const setupWallet = async (privateKey: string) => {
const provider = await Provider.create(
'https://mainnet.fuel.network/v1/graphql',
);
export class ProviderInstance {
private static instance: Provider | null = null;
private static readonly PROVIDER_URL =
'https://mainnet.fuel.network/v1/graphql';

private constructor() {} // Prevent direct construction

public static async getProvider(): Promise<Provider> {
if (!ProviderInstance.instance) {
ProviderInstance.instance = await Provider.create(this.PROVIDER_URL);
}
return ProviderInstance.instance;
}
}

export const setupWallet = async (privateKey: string) => {
const provider = await ProviderInstance.getProvider();
const wallet = Wallet.fromPrivateKey(privateKey, provider);

return {
Expand Down

0 comments on commit 96a6f73

Please sign in to comment.