|
|
|
'use strict';
|
|
|
|
|
|
|
|
var _ = require('lodash');
|
|
|
|
var $ = require('preconditions').singleton();
|
|
|
|
var async = require('async');
|
|
|
|
var Mustache = require('mustache');
|
|
|
|
var log = require('npmlog');
|
|
|
|
log.debug = log.verbose;
|
|
|
|
var fs = require('fs');
|
|
|
|
var path = require('path');
|
|
|
|
var nodemailer = require('nodemailer');
|
|
|
|
var request = require('request');
|
|
|
|
|
|
|
|
var Utils = require('./common/utils');
|
|
|
|
var Storage = require('./storage');
|
|
|
|
var MessageBroker = require('./messagebroker');
|
|
|
|
var Lock = require('./lock');
|
|
|
|
var BlockchainExplorer = require('./blockchainexplorer');
|
|
|
|
|
|
|
|
var Model = require('./model');
|
|
|
|
|
|
|
|
var PUSHNOTIFICATIONS_TYPES = {
|
|
|
|
'NewCopayer': {
|
|
|
|
filename: 'new_copayer',
|
|
|
|
notifyDoer: false,
|
|
|
|
},
|
|
|
|
'WalletComplete': {
|
|
|
|
filename: 'wallet_complete',
|
|
|
|
notifyDoer: true,
|
|
|
|
},
|
|
|
|
'NewTxProposal': {
|
|
|
|
filename: 'new_tx_proposal',
|
|
|
|
notifyDoer: false,
|
|
|
|
},
|
|
|
|
'NewOutgoingTx': {
|
|
|
|
filename: 'new_outgoing_tx',
|
|
|
|
notifyDoer: true,
|
|
|
|
},
|
|
|
|
'NewIncomingTx': {
|
|
|
|
filename: 'new_incoming_tx',
|
|
|
|
notifyDoer: true,
|
|
|
|
},
|
|
|
|
'TxProposalFinallyRejected': {
|
|
|
|
filename: 'txp_finally_rejected',
|
|
|
|
notifyDoer: false,
|
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
function PushNotificationsService() {};
|
|
|
|
|
|
|
|
PushNotificationsService.prototype.start = function(opts, cb) {
|
|
|
|
|
|
|
|
opts = opts || {};
|
|
|
|
var self = this;
|
|
|
|
|
|
|
|
async.parallel([
|
|
|
|
function(done) {
|
|
|
|
self.messageBroker = opts.messageBroker || new MessageBroker(opts.messageBrokerOpts);
|
|
|
|
self.messageBroker.onMessage(_.bind(self.sendPushNotifications, self));
|
|
|
|
done();
|
|
|
|
},
|
|
|
|
], function(err) {
|
|
|
|
if (err) {
|
|
|
|
log.error(err);
|
|
|
|
}
|
|
|
|
return cb(err);
|
|
|
|
});
|
|
|
|
};
|
|
|
|
|
|
|
|
PushNotificationsService.prototype.sendPushNotifications = function(notification, cb) {
|
|
|
|
console.log(notification);
|
|
|
|
|
|
|
|
if (PUSHNOTIFICATIONS_TYPES[notification.type]) {
|
|
|
|
if (notification.type == 'NewIncomingTx') {
|
|
|
|
var opts = {};
|
|
|
|
opts.users = [notification.walletId];
|
|
|
|
opts.android = {
|
|
|
|
"collapseKey": "optional",
|
|
|
|
"data": {
|
|
|
|
"title": "New incoming transaction",
|
|
|
|
"message": notification.data.amount / 100 + " bits"
|
|
|
|
}
|
|
|
|
};
|
|
|
|
}
|
|
|
|
if (notification.type == 'NewOutgoingTx') {
|
|
|
|
var opts = {};
|
|
|
|
opts.users = [notification.walletId];
|
|
|
|
opts.android = {
|
|
|
|
"collapseKey": "optional",
|
|
|
|
"data": {
|
|
|
|
"title": "New outgoing transaction",
|
|
|
|
"message": notification.data.amount / 100 + " bits"
|
|
|
|
}
|
|
|
|
};
|
|
|
|
}
|
|
|
|
if (notification.type == 'NewCopayer') {
|
|
|
|
var opts = {};
|
|
|
|
opts.users = [notification.walletId];
|
|
|
|
opts.android = {
|
|
|
|
"collapseKey": "optional",
|
|
|
|
"data": {
|
|
|
|
"title": "New copayer",
|
|
|
|
"message": "Copayer: " + notification.data.copayerName + " has joined"
|
|
|
|
}
|
|
|
|
};
|
|
|
|
}
|
|
|
|
// if (notification.type == 'WalletComplete') {
|
|
|
|
// var opts = {};
|
|
|
|
// opts.users = [notification.walletId];
|
|
|
|
// opts.android = {
|
|
|
|
// "collapseKey": "optional",
|
|
|
|
// "data": {
|
|
|
|
// "title": "Wallet complete",
|
|
|
|
// "message": "Wallet complete"
|
|
|
|
// }
|
|
|
|
// };
|
|
|
|
// }
|
|
|
|
if (notification.type == 'NewTxProposal') {
|
|
|
|
var opts = {};
|
|
|
|
opts.users = [notification.walletId];
|
|
|
|
opts.android = {
|
|
|
|
"collapseKey": "optional",
|
|
|
|
"data": {
|
|
|
|
"title": "New proposal",
|
|
|
|
"message": "New transaction proposal created"
|
|
|
|
}
|
|
|
|
};
|
|
|
|
}
|
|
|
|
if (notification.type == 'TxProposalFinallyRejected') {
|
|
|
|
var opts = {};
|
|
|
|
opts.users = [notification.walletId];
|
|
|
|
opts.android = {
|
|
|
|
"collapseKey": "optional",
|
|
|
|
"data": {
|
|
|
|
"title": "Rejected",
|
|
|
|
"message": "Transaction proposal finally rejected"
|
|
|
|
}
|
|
|
|
};
|
|
|
|
}
|
|
|
|
if (notification.type == 'TxProposalAcceptedBy') {
|
|
|
|
var opts = {};
|
|
|
|
opts.users = [notification.walletId];
|
|
|
|
opts.android = {
|
|
|
|
"collapseKey": "optional",
|
|
|
|
"data": {
|
|
|
|
"title": "Accepted",
|
|
|
|
"message": "Transaction proposal accepted"
|
|
|
|
}
|
|
|
|
};
|
|
|
|
}
|
|
|
|
var url = 'http://192.168.1.121:8000/send';
|
|
|
|
request({
|
|
|
|
url: url,
|
|
|
|
method: 'POST',
|
|
|
|
json: true,
|
|
|
|
body: opts
|
|
|
|
}, function(error, response, body) {
|
|
|
|
console.log(response.statusCode);
|
|
|
|
});
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
module.exports = PushNotificationsService;
|