Skip to content

Commit 9ba2f79

Browse files
committed
Decode extra data of transfer details
Always return paymentRequestId and messageId for transfer details and transfer events, return null when there is none instead of undefined.
1 parent 29a775f commit 9ba2f79

File tree

6 files changed

+49
-26
lines changed

6 files changed

+49
-26
lines changed

src/Event.ts

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { Observable } from 'rxjs/Observable'
22
import { fromPromise } from 'rxjs/observable/fromPromise'
33

44
import { CurrencyNetwork } from './CurrencyNetwork'
5-
import { decode } from './extraData'
5+
import { decode, processExtraData } from './extraData'
66
import { TLProvider } from './providers/TLProvider'
77
import { User } from './User'
88

@@ -251,18 +251,3 @@ export class Event {
251251
}, {})
252252
}
253253
}
254-
255-
/**
256-
* Processes the content of extraData and attaches the content to the event.
257-
* @param event
258-
*/
259-
function processExtraData(event) {
260-
if (event.extraData) {
261-
const extraData = decode(event.extraData)
262-
if (extraData) {
263-
event.paymentRequestId = extraData.paymentRequestId
264-
event.messageId = extraData.messageId
265-
}
266-
}
267-
return event
268-
}

src/Payment.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,11 @@ import { BigNumber } from 'bignumber.js'
22

33
import { CurrencyNetwork } from './CurrencyNetwork'
44
import { Event } from './Event'
5-
import { encode as encodeExtraData } from './extraData'
5+
import {
6+
decode,
7+
encode as encodeExtraData,
8+
processExtraData
9+
} from './extraData'
610
import { TLProvider } from './providers/TLProvider'
711
import {
812
GAS_LIMIT_IDENTITY_OVERHEAD,
@@ -488,7 +492,7 @@ export class Payment {
488492
transferInformation: TransferDetailsRaw,
489493
networkDecimals: number
490494
): TransferDetails {
491-
return {
495+
const transferDetails = {
492496
path: transferInformation.path,
493497
currencyNetwork: transferInformation.currencyNetwork,
494498
value: utils.formatToAmount(transferInformation.value, networkDecimals),
@@ -502,6 +506,7 @@ export class Payment {
502506
),
503507
extraData: transferInformation.extraData
504508
}
509+
return processExtraData(transferDetails)
505510
}
506511
}
507512

src/extraData.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,3 +73,21 @@ function arrayToHex(a): string {
7373
function hexToArray(h: string) {
7474
return Buffer.from(remove0xPrefix(h), 'hex')
7575
}
76+
77+
/**
78+
* Processes the content of extraData and attaches the content to the object.
79+
* @param object An object potentially having extra data to process
80+
*/
81+
export function processExtraData(object) {
82+
if (object.extraData !== undefined) {
83+
const decodedExtraData = decode(object.extraData)
84+
85+
object.paymentRequestId = decodedExtraData
86+
? decodedExtraData.paymentRequestId || null
87+
: null
88+
object.messageId = decodedExtraData
89+
? decodedExtraData.messageId || null
90+
: null
91+
}
92+
return object
93+
}

src/typings.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -136,8 +136,8 @@ export interface NetworkTransferEventRaw extends NetworkEvent {
136136
export interface NetworkTransferEvent extends NetworkEvent {
137137
amount: Amount
138138
extraData: string
139-
paymentRequestId?: string
140-
messageId?: string
139+
paymentRequestId: string
140+
messageId: string
141141
}
142142

143143
export interface NetworkTrustlineUpdateEventRaw extends NetworkEvent {
@@ -696,6 +696,8 @@ export interface TransferDetails {
696696
totalFees: Amount
697697
feesPaid: Amount[]
698698
extraData: string
699+
paymentRequestId: string
700+
messageId: string
699701
}
700702

701703
export interface TransferIdentifier {

tests/e2e/Event.test.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,8 @@ describe('e2e', () => {
9898
expect(last.amount).to.have.keys('raw', 'value', 'decimals')
9999
expect(last.amount.value).to.eq('1.5')
100100
expect(last.extraData).to.eq(extraData)
101+
expect(last.messageId).to.be.a('null')
102+
expect(last.paymentRequestId).to.be.a('null')
101103
expect(last.logIndex).to.be.a('number')
102104
expect(last.blockHash).to.be.a('string')
103105
})
@@ -108,6 +110,7 @@ describe('e2e', () => {
108110
let acceptTxHash
109111
let cancelUpdateTxHash
110112
let tlTransferTxHash
113+
let tlTransferMessageId
111114
let depositTxHash
112115
let withdrawTxHash
113116
let transferTxHash
@@ -161,6 +164,7 @@ describe('e2e', () => {
161164
1,
162165
{ paymentRequestId }
163166
)
167+
tlTransferMessageId = tlTransferTx.messageId
164168
tlTransferTxHash = await tl1.payment.confirm(tlTransferTx.rawTx)
165169
await wait()
166170

@@ -307,6 +311,7 @@ describe('e2e', () => {
307311
({ transactionHash }) => transactionHash === tlTransferTxHash
308312
)
309313
// check event Trustlines Transfer
314+
console.log(tlTransferEvents[0])
310315
expect(
311316
tlTransferEvents,
312317
'Trustline Transfer should exist'
@@ -334,7 +339,7 @@ describe('e2e', () => {
334339
).to.equal(paymentRequestId)
335340
expect(
336341
(tlTransferEvents[0] as NetworkTransferEvent).messageId
337-
).to.equal(null)
342+
).to.equal(tlTransferMessageId)
338343

339344
// events thrown on deposit
340345
const depositEvents = allEvents.filter(

tests/e2e/Payment.test.ts

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -441,8 +441,8 @@ describe('e2e', () => {
441441
user3.address,
442442
transferValue,
443443
{
444-
extraData,
445-
addMessageId: false
444+
addMessageId: true,
445+
paymentRequestId
446446
}
447447
)
448448
const txHash = await tl1.payment.confirm(transfer.rawTx)
@@ -461,7 +461,9 @@ describe('e2e', () => {
461461
'feePayer',
462462
'totalFees',
463463
'feesPaid',
464-
'extraData'
464+
'extraData',
465+
'paymentRequestId',
466+
'messageId'
465467
)
466468
expect(transferDetails.path).to.be.an('Array')
467469
expect(transferDetails.path).to.deep.equal([
@@ -488,7 +490,9 @@ describe('e2e', () => {
488490
expect(transferDetails.feesPaid[0].value).to.equal(
489491
transferDetails.totalFees.value
490492
)
491-
expect(transferDetails.extraData).to.equal(extraData)
493+
expect(transferDetails.extraData).to.be.a('string')
494+
expect(transferDetails.paymentRequestId).to.equal(paymentRequestId)
495+
expect(transferDetails.messageId).to.equal(transfer.messageId)
492496
})
493497

494498
it('should return details for transfer via id', async () => {
@@ -521,7 +525,9 @@ describe('e2e', () => {
521525
'feePayer',
522526
'totalFees',
523527
'feesPaid',
524-
'extraData'
528+
'extraData',
529+
'paymentRequestId',
530+
'messageId'
525531
)
526532
expect(transferDetails.path).to.be.an('Array')
527533
expect(transferDetails.path).to.deep.equal([
@@ -549,6 +555,8 @@ describe('e2e', () => {
549555
transferDetails.totalFees.value
550556
)
551557
expect(transferDetails.extraData).to.equal('0x12ab34ef')
558+
expect(transferDetails.paymentRequestId).to.be.a('null')
559+
expect(transferDetails.messageId).to.be.a('null')
552560
})
553561
})
554562

0 commit comments

Comments
 (0)