Skip to content

Commit e57154b

Browse files
1 parent 8b49ce1 commit e57154b

File tree

4 files changed

+17
-10
lines changed

4 files changed

+17
-10
lines changed

packages/payment-detection/src/payment-network-factory.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,7 @@ export class PaymentNetworkFactory {
112112
paymentNetworkId: PaymentTypes.PAYMENT_NETWORK_ID,
113113
currencyType: RequestLogicTypes.CURRENCY,
114114
currencyNetwork?: string,
115+
paymentNetworkVersion?: string,
115116
): PaymentTypes.IPaymentNetwork {
116117
const network = currencyNetwork || 'mainnet';
117118
const currencyPaymentMap =
@@ -142,7 +143,7 @@ export class PaymentNetworkFactory {
142143
// this throws when the contract isn't deployed and was mandatory for payment detection
143144
(detectorClass as ContractBasedDetector).getDeploymentInformation(
144145
network,
145-
detector.extension.currentVersion,
146+
paymentNetworkVersion || detector.extension.currentVersion,
146147
);
147148
}
148149

@@ -160,16 +161,16 @@ export class PaymentNetworkFactory {
160161
request: RequestLogicTypes.IRequest,
161162
): PaymentTypes.IPaymentNetwork | null {
162163
const pn = getPaymentNetworkExtension(request);
163-
164164
if (!pn) {
165165
return null;
166166
}
167167

168-
const paymentNetworkId = pn.id as unknown as PaymentTypes.PAYMENT_NETWORK_ID;
168+
const { id, version } = pn;
169169
return this.createPaymentNetwork(
170-
paymentNetworkId,
170+
id as unknown as PaymentTypes.PAYMENT_NETWORK_ID,
171171
request.currency.type,
172172
request.currency.network,
173+
version,
173174
);
174175
}
175176
}

packages/payment-detection/src/utils.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { CurrencyDefinition } from '@requestnetwork/currency';
2-
import { RequestLogicTypes, PaymentTypes, ExtensionTypes } from '@requestnetwork/types';
2+
import { ExtensionTypes, PaymentTypes, RequestLogicTypes } from '@requestnetwork/types';
33
import { BigNumber, BigNumberish, Contract, errors, logger } from 'ethers';
4-
import { keccak256, LogDescription, getAddress } from 'ethers/lib/utils';
4+
import { getAddress, keccak256, LogDescription } from 'ethers/lib/utils';
55
import { ContractArtifact, DeploymentInformation } from '@requestnetwork/smart-contracts';
66
import { NetworkNotSupported, VersionNotSupported } from './balance-error';
77
import PaymentReferenceCalculator from './payment-reference-calculator';
@@ -131,12 +131,12 @@ export const calculateEscrowState = (
131131
/**
132132
* Return the payment network extension of a Request.
133133
*/
134-
export function getPaymentNetworkExtension(
134+
export function getPaymentNetworkExtension<T = any>(
135135
request: Pick<RequestLogicTypes.IRequest, 'extensions'>,
136-
): ExtensionTypes.IState | undefined {
136+
): ExtensionTypes.IPaymentNetworkState<T> | undefined {
137137
return Object.values(request.extensions).find(
138138
(x) => x.type === ExtensionTypes.TYPE.PAYMENT_NETWORK,
139-
);
139+
) as ExtensionTypes.IPaymentNetworkState<T>;
140140
}
141141

142142
type PaymentParameters = PaymentTypes.IReferenceBasedCreationParameters &
@@ -158,7 +158,7 @@ export function getPaymentReference(
158158
request: Pick<RequestLogicTypes.IRequest, 'extensions' | 'requestId'>,
159159
event: PaymentTypes.EVENTS_NAMES = PaymentTypes.EVENTS_NAMES.PAYMENT,
160160
): string | undefined {
161-
const extension = getPaymentNetworkExtension(request) as ExtensionTypes.IState<PaymentParameters>;
161+
const extension = getPaymentNetworkExtension<PaymentParameters>(request);
162162
if (!extension) {
163163
throw new Error('no payment network found');
164164
}

packages/types/src/extension-types.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,11 @@ export interface IState<T = any> {
5353
values: T;
5454
}
5555

56+
/** Extensions state in advanced logic */
57+
export interface IPaymentNetworkState<T = any> extends IState<T> {
58+
id: Exclude<ID, 'content-data'>;
59+
}
60+
5661
/** Creation action object */
5762
export interface IAction<T = any> {
5863
action: string;

packages/types/src/payment-types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ export enum PAYMENT_NETWORK_ID {
1919
ANY_TO_ERC20_PROXY = Extension.ID.PAYMENT_NETWORK_ANY_TO_ERC20_PROXY,
2020
ANY_TO_ETH_PROXY = Extension.ID.PAYMENT_NETWORK_ANY_TO_ETH_PROXY,
2121
}
22+
2223
/** Interface for payment network extensions state and interpretation */
2324
export interface IPaymentNetwork<TEventParameters = any> {
2425
paymentNetworkId: PAYMENT_NETWORK_ID;

0 commit comments

Comments
 (0)