Skip to content
54 changes: 17 additions & 37 deletions src/services/railgun/core/load-provider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,16 +13,12 @@ import { reportAndSanitizeError } from '../../../utils/error';
import { WalletPOI } from '../../poi/wallet-poi';
import { getEngine } from './engine';
import {
PollingJsonRpcProvider,
RailgunVersionedSmartContracts,
createPollingJsonRpcProviderForListeners,
} from '@railgun-community/engine';
import { FallbackProvider } from 'ethers'
import {
fallbackProviderMap,
pollingProviderMap,
setFallbackProviderForNetwork,
setPollingProviderForNetwork,
} from './providers';
import { WalletPOINodeInterface } from '../../poi/wallet-poi-node-interface';

Expand All @@ -41,32 +37,20 @@ const createFallbackProviderForNetwork = async (
return fallbackProvider;
};

const createPollingProviderForNetwork = async (
networkName: NetworkName,
fallbackProvider: FallbackProvider,
pollingInterval: number,
): Promise<PollingJsonRpcProvider> => {
const existingProvider = pollingProviderMap[networkName];
if (existingProvider) {
return existingProvider;
}
const network = NETWORK_CONFIG[networkName];
if (!isDefined(network)) {
throw new Error('No network found');
}
const pollingProvider = await createPollingJsonRpcProviderForListeners(
fallbackProvider,
network.chain.id,
pollingInterval,
);
setPollingProviderForNetwork(networkName, pollingProvider);
return pollingProvider;
};

/**
*
* @param chain
* @param networkName
* @param fallbackProviderJsonConfig
* @param pollingInterval - DEPRECATED
Comment thread
jacobmakarsky marked this conversation as resolved.
Outdated
Comment thread
jacobmakarsky marked this conversation as resolved.
Outdated
*/
const loadProviderForNetwork = async (
chain: Chain,
networkName: NetworkName,
fallbackProviderJsonConfig: FallbackProviderJsonConfig,
/**
* @deprecated pollingInterval - DEPRECATED
Comment thread
jacobmakarsky marked this conversation as resolved.
Outdated
Comment thread
jacobmakarsky marked this conversation as resolved.
Outdated
*/
pollingInterval: number,

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add deprecated to this too?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's already there if you are asking to ensure it has deprecated on it

) => {
sendMessage(`Load provider for network: ${networkName}`);
Expand All @@ -75,11 +59,6 @@ const loadProviderForNetwork = async (
networkName,
fallbackProviderJsonConfig,
);
const pollingProvider = await createPollingProviderForNetwork(
networkName,
fallbackProvider,
pollingInterval
);

const network = NETWORK_CONFIG[networkName];
const {
Expand Down Expand Up @@ -126,7 +105,7 @@ const loadProviderForNetwork = async (
poseidonMerkleVerifierV3Contract,
tokenVaultV3Contract,
fallbackProvider,
pollingProvider,
undefined, // pollingProvider is being deprecated

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Type error here. I do not think it's a breaking change to change the type to ? on the functions that take the now deprecated polling provider such that you no longer have to pass them

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are you saying to remove the optional param and not pass undefined? Or just stating that it is okay

It is part of the last commit to the relating engine PR Railgun-Community/engine@3e3f607

deploymentBlocks,
poi?.launchBlock,
supportsV3,
Expand All @@ -140,6 +119,9 @@ const loadProviderForNetwork = async (
export const loadProvider = async (
fallbackProviderJsonConfig: FallbackProviderJsonConfig,
networkName: NetworkName,
/**
* @deprecated pollingInterval - DEPRECATED
Comment thread
jacobmakarsky marked this conversation as resolved.
Outdated
*/
pollingInterval = 15000,
): Promise<LoadProviderResponse> => {
try {
Expand Down Expand Up @@ -198,19 +180,17 @@ export const unloadProvider = async (
): Promise<void> => {
WalletPOINodeInterface.pause(NETWORK_CONFIG[networkName].chain);
await fallbackProviderMap[networkName]?.destroy();
pollingProviderMap[networkName]?.destroy();
delete fallbackProviderMap[networkName];
delete pollingProviderMap[networkName];
};

export const pauseAllPollingProviders = (
excludeNetworkName?: NetworkName,
): void => {
Object.keys(pollingProviderMap).forEach(networkName => {
Object.keys(fallbackProviderMap).forEach(networkName => {
if (networkName === excludeNetworkName) {
return;
}
const pollingProvider = pollingProviderMap[networkName];
const pollingProvider = fallbackProviderMap[networkName];
if (isDefined(pollingProvider) && !pollingProvider.paused) {
pollingProvider.pause();
}
Expand All @@ -223,7 +203,7 @@ export const resumeIsolatedPollingProviderForNetwork = (
pauseAllPollingProviders(
networkName, // excludeNetworkName

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can we rename this to excludedNetworkName instead of just having it as a comment ?

);
const pollingProviderForNetwork = pollingProviderMap[networkName];
const pollingProviderForNetwork = fallbackProviderMap[networkName];
if (
isDefined(pollingProviderForNetwork) &&
pollingProviderForNetwork.paused
Expand Down
21 changes: 0 additions & 21 deletions src/services/railgun/core/providers.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
import { NetworkName, isDefined } from '@railgun-community/shared-models';
import { PollingJsonRpcProvider } from '@railgun-community/engine';
import { FallbackProvider } from 'ethers';

export const fallbackProviderMap: MapType<FallbackProvider> = {};
export const pollingProviderMap: MapType<PollingJsonRpcProvider> = {};

export const getFallbackProviderForNetwork = (
networkName: NetworkName,
Expand All @@ -15,28 +13,9 @@ export const getFallbackProviderForNetwork = (
return provider;
};

export const getPollingProviderForNetwork = (
networkName: NetworkName,
): PollingJsonRpcProvider => {
const provider = pollingProviderMap[networkName];
if (!isDefined(provider)) {
throw new Error(
`Polling provider not yet loaded for network ${networkName}`,
);
}
return provider;
};

export const setFallbackProviderForNetwork = (
networkName: NetworkName,
provider: FallbackProvider,
): void => {
fallbackProviderMap[networkName] = provider;
};

export const setPollingProviderForNetwork = (
networkName: NetworkName,
provider: PollingJsonRpcProvider,
): void => {
pollingProviderMap[networkName] = provider;
};