Skip to content

Commit 3df13d5

Browse files
authored
feat: support .tg extension for NEAR (#1484)
1 parent 2e98d1a commit 3df13d5

File tree

4 files changed

+60
-1
lines changed

4 files changed

+60
-1
lines changed

packages/advanced-logic/test/extensions/payment-network/any-to-near.test.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import {
55
extensionStateWithAnyToNativeTokenPaymentAndRefund,
66
extensionStateAnyToNativeWithPaymentAddressAdded,
77
extensionStateAnyToNativeWithFeeAdded,
8+
extensionStateWithAnyToNativeTokenPaymentAndRefundTGExtension,
89
} from '../../utils/payment-network/any/generator-data-create';
910
import { AdvancedLogic } from '../../../src';
1011
import { arbitraryTimestamp, payeeRaw, payerRaw } from '../../utils/test-data-generator';
@@ -308,6 +309,22 @@ describe('extensions/payment-network/any-to-native-token', () => {
308309

309310
expect(newExtensionState).toEqual(extensionStateWithAnyToNativeTokenPaymentAndRefund);
310311
});
312+
it('works when payment address extension is .tg', () => {
313+
const tgAddress = 'pay.tg';
314+
creationAction.parameters.paymentAddress = tgAddress;
315+
316+
const newExtensionState = advancedLogic.applyActionToExtensions(
317+
validRequestState.extensions,
318+
creationAction,
319+
validRequestState,
320+
payeeRaw.identity,
321+
arbitraryTimestamp,
322+
);
323+
324+
expect(newExtensionState).toEqual(
325+
extensionStateWithAnyToNativeTokenPaymentAndRefundTGExtension,
326+
);
327+
});
311328
it('throws when currency is not supported', () => {
312329
const invalidRequestState: typeof requestStateNoExtensions = {
313330
...requestStateNoExtensions,

packages/advanced-logic/test/utils/payment-network/any/generator-data-create.ts

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -282,6 +282,46 @@ export const extensionStateWithAnyToNativeTokenPaymentAndRefund: RequestLogicTyp
282282
version: '0.1.0',
283283
},
284284
};
285+
export const extensionStateWithAnyToNativeTokenPaymentAndRefundTGExtension: RequestLogicTypes.IExtensionStates =
286+
{
287+
[ExtensionTypes.PAYMENT_NETWORK_ID.ANY_TO_NATIVE_TOKEN as string]: {
288+
events: [
289+
{
290+
name: 'create',
291+
parameters: {
292+
paymentAddress: 'pay.tg',
293+
refundAddress: 'refund.near',
294+
salt: arbitrarySalt,
295+
feeAddress: 'fee.near',
296+
feeAmount: '100',
297+
maxRateTimespan: 1000000,
298+
network: 'aurora',
299+
},
300+
timestamp: arbitraryTimestamp,
301+
},
302+
],
303+
id: ExtensionTypes.PAYMENT_NETWORK_ID.ANY_TO_NATIVE_TOKEN,
304+
type: ExtensionTypes.TYPE.PAYMENT_NETWORK,
305+
values: {
306+
paymentAddress: 'pay.tg',
307+
refundAddress: 'refund.near',
308+
feeAddress: 'fee.near',
309+
salt: arbitrarySalt,
310+
payeeDelegate: undefined,
311+
payerDelegate: undefined,
312+
paymentInfo: undefined,
313+
receivedPaymentAmount: '0',
314+
receivedRefundAmount: '0',
315+
refundInfo: undefined,
316+
sentPaymentAmount: '0',
317+
sentRefundAmount: '0',
318+
network: 'aurora',
319+
maxRateTimespan: 1000000,
320+
feeAmount: '100',
321+
},
322+
version: '0.1.0',
323+
},
324+
};
285325
export const extensionStateAnyToNativeWithPaymentAddressAdded: RequestLogicTypes.IExtensionStates =
286326
{
287327
[ExtensionTypes.PAYMENT_NETWORK_ID.ANY_TO_NATIVE_TOKEN as string]: {

packages/currency/src/currency-utils.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ export const isValidNearAddress = (address: string, network?: string): boolean =
2727
switch (network) {
2828
case 'aurora':
2929
case 'near':
30-
return !!address.match(/\.near$/);
30+
return !!address.match(/\.(?:near|tg)$/);
3131
case 'aurora-testnet':
3232
case 'near-testnet':
3333
return !!address.match(/\.testnet$/);

packages/currency/test/address-validation/near-validation.test.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { isValidNearAddress } from '../../src/currency-utils';
22

33
const validNearAccount = 'testaccount.near';
4+
const validNearTgAccount = 'testaccount.tg';
45
const validNearHexAccount = 'f336b7833496cdcae230463c3daff7b2fe187a93be8df5b1326ce7a595033163';
56
const badNearHexAccount = 'f336b7833496cdcae230463c3daff7b2fe187a93be8df5b1326ce7a595033163';
67
const badNearAccount = 'testaccount.badnear';
@@ -13,6 +14,7 @@ describe('Near address validation', () => {
1314

1415
it('Should accepts specfic near format', () => {
1516
expect(isValidNearAddress(validNearAccount)).toBeTruthy;
17+
expect(isValidNearAddress(validNearTgAccount)).toBeTruthy;
1618
});
1719

1820
it('Should not accept accepts other format', () => {

0 commit comments

Comments
 (0)