Skip to content

Commit c6ed042

Browse files
committed
getting transfer info from blockchain for specail link transfers
1 parent 0abeffc commit c6ed042

File tree

6 files changed

+67
-34
lines changed

6 files changed

+67
-34
lines changed

server.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
'use strict';
22

33
// set up ========================
4-
require('newrelic');
4+
//require('newrelic');
55
const express = require('express');
66
const app = express(); // create our app w/ express
77
const log = require('./src/libs/log')(module);

src/controllers/SenderController.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,8 @@ const registerTransfer = async (req, res) => {
4444
transitAddress: transitAddress.toLowerCase(),
4545
senderAddress: senderAddress.toLowerCase(),
4646
transitKeystore,
47-
amount
47+
amount,
48+
transferType: 'phone'
4849
};
4950

5051
log.info({transferParams});

src/controllers/TransferEventsController.js

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,19 +20,17 @@ const addEvent = async (req, res) => {
2020
throw new Error("Wrong api key");
2121
}
2222

23-
const transferFilterParams = {
24-
senderAddress,
25-
transitAddress,
26-
};
2723

2824
const event = {
2925
txStatus,
3026
txHash,
3127
eventName,
3228
gasPrice
3329
};
30+
31+
console.log({event, senderAddress, transitAddress});
3432

35-
await TransferService.addEvent({transferStatus, event, transferFilterParams });
33+
await TransferService.addEvent({transferStatus, event, senderAddress, transitAddress });
3634
res.json({success: true });
3735
}
3836

src/models/transfer.js

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,21 +6,21 @@ const TransferEventSchema = require('./TransferEvent').Schema;
66
const TransferSchema = new Schema({
77
transferId: { // is calculated with sha3(phone, verificationCode)
88
type: String,
9-
required: true,
10-
unique: true,
9+
// required: true,
10+
// unique: true,
1111
index: true
1212
},
1313
phoneHash: { // is calculated with sha3(phone, transferId, salt)
1414
type: String,
15-
required: true,
15+
// required: true,
1616
},
1717
transitAddress: { // transit address assigned to smart-contract deposit
1818
type: String,
1919
required: true,
2020
},
2121
transitKeystore: { // encrypted transit private key with secret code,
2222
type: String,
23-
required: true,
23+
// required: true,
2424
},
2525
verified: { // if sms verification succeeded
2626
type: Boolean,
@@ -47,6 +47,14 @@ const TransferSchema = new Schema({
4747
"cancelled" // deposit was cancelled by sender
4848
],
4949
default: "inited"
50+
},
51+
transferType: {
52+
type: String,
53+
enum: [
54+
"phone",
55+
"link",
56+
"email"
57+
]
5058
}
5159
}, {timeStamps: true});
5260

src/services/EventsParserService.js

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -10,24 +10,26 @@ const subscribeForMinedDepositEvents = () => {
1010
log.debug("Subscribing for mined deposit events.");
1111

1212
const depositEvent = escrowContract.LogDeposit();
13-
13+
14+
1415
depositEvent.watch(async (error, result) => {
1516
try {
1617
log.debug("Got mined deposit event");
1718
console.log(result);
1819

19-
const transferFilterParams = {
20-
senderAddress: result.args.sender,
21-
transitAddress: result.args.transitAddress
22-
};
20+
const senderAddress = result.args.sender;
21+
const transitAddress = result.args.transitAddress;
22+
const amount = web3.fromWei(result.args.amount, 'ether') ;
2323

2424
const transferStatus = 'deposited';
2525
const eventTxStatus = 'success';
2626
await TransferService.updateTransferEvent({
2727
transferStatus,
2828
eventTxHash: result.transactionHash,
29-
transferFilterParams,
30-
eventTxStatus
29+
senderAddress,
30+
transitAddress,
31+
eventTxStatus,
32+
amount
3133
});
3234
} catch(err) {
3335
log.debug(err);
@@ -51,16 +53,14 @@ const subscribeForMinedCancelEvents = () => {
5153
txHash: result.transactionHash,
5254
eventName: 'cancel',
5355
};
54-
const transferFilterParams = {
55-
senderAddress: result.args.sender,
56-
transitAddress: result.args.transitAddress
57-
};
58-
56+
const senderAddress = result.args.sender;
57+
const transitAddress = result.args.transitAddress;
5958

6059
await TransferService.addEvent({
6160
transferStatus: 'cancelled',
6261
event,
63-
transferFilterParams
62+
senderAddress,
63+
transitAddress,
6464
});
6565

6666
} catch(err) {
@@ -85,15 +85,15 @@ const subscribeForMinedWithdrawEvents = () => {
8585
txHash: result.transactionHash,
8686
eventName: 'withdraw',
8787
};
88-
const transferFilterParams = {
89-
senderAddress: result.args.sender,
90-
transitAddress: result.args.transitAddress
91-
};
88+
89+
const senderAddress = result.args.sender;
90+
const transitAddress = result.args.transitAddress;
9291

9392
await TransferService.addEvent({
9493
transferStatus: 'completed',
9594
event,
96-
transferFilterParams
95+
senderAddress,
96+
transitAddress,
9797
});
9898

9999
} catch(err) {

src/services/TransferService.js

Lines changed: 31 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,25 +17,46 @@ const getByTransferId = (transferId) => {
1717

1818
const findOne = (params={}) => {
1919
return Transfer.findOne(params);
20+
2021
}
2122

2223

23-
const addEvent = async ({transferStatus, event, transferFilterParams }) => {
24+
const findOrCreate = async ({ senderAddress, transitAddress }) => {
2425

25-
// find transfer in db
26-
const transfer = await findOne(transferFilterParams);
26+
// find transfer in db
27+
let transfer = await findOne({senderAddress, transitAddress});
28+
29+
// create transfer from pending tx, when transfer is sent using special link
30+
if (!transfer) {
31+
console.log("creating transfer from pending tx...");
32+
transfer = await create({
33+
senderAddress,
34+
transitAddress,
35+
transferId: `link-${transitAddress}`,
36+
transferType: "link"
37+
});
38+
}
39+
40+
console.log({transfer});
41+
return transfer;
42+
}
2743

44+
const addEvent = async ({transferStatus, event, senderAddress, transitAddress }) => {
45+
46+
const transfer = await findOrCreate({senderAddress, transitAddress});
47+
2848
// update transfer status in db and add event
2949
transfer.events.push(event);
3050
transfer.status = transferStatus;
3151
await transfer.save();
3252
}
3353

3454

35-
const updateTransferEvent = async ({ transferStatus, eventTxHash, eventTxStatus, transferFilterParams }) => {
55+
const updateTransferEvent = async ({ transferStatus, eventTxHash, eventTxStatus, senderAddress, transitAddress, amount=null }) => {
3656

3757
// find transfer in db
38-
const transfer = await findOne(transferFilterParams);
58+
const transfer = await findOrCreate({senderAddress, transitAddress});
59+
3960
// update event status
4061
transfer.events = transfer.events.map(event => {
4162
if (event.txHash === eventTxHash) {
@@ -44,6 +65,11 @@ const updateTransferEvent = async ({ transferStatus, eventTxHash, eventTxStatus,
4465
return event;
4566
});
4667
transfer.status = transferStatus;
68+
69+
if (amount) {
70+
transfer.amount = amount;
71+
}
72+
4773
await transfer.save();
4874
}
4975

0 commit comments

Comments
 (0)