From c40eabf807fbd31f9c288df36f67fc5b31b22da4 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Dominguez Date: Wed, 5 Sep 2018 10:59:09 +0900 Subject: [PATCH] Clean shapeshift service and add the correct callback --- src/js/services/shapeShiftApiService.js | 13 ++- src/js/services/shapeshift.service.js | 76 +++++++++++++ src/js/services/shapeshiftService.js | 141 ------------------------ 3 files changed, 85 insertions(+), 145 deletions(-) create mode 100644 src/js/services/shapeshift.service.js delete mode 100644 src/js/services/shapeshiftService.js diff --git a/src/js/services/shapeShiftApiService.js b/src/js/services/shapeShiftApiService.js index 210ae0fbd..411c68653 100644 --- a/src/js/services/shapeShiftApiService.js +++ b/src/js/services/shapeShiftApiService.js @@ -328,10 +328,13 @@ angular.module('copayApp.services').factory('shapeshiftApiService', function($q) $scope.amount, $scope.withdrawalAddress, $scope.coinIn, $scope.coinOut ); + console.log('shapeshiftApiService.FixedAmountTx()'); console.log(fixedTx); SSA.FixedAmountTx(fixedTx, function (data) { - console.log(data) - return promise.resolve({ fixedTxData : data.success }); + console.log(data); + promise.resolve(data.success); + }, function (err) { + promise.reject(err); }); return promise.promise; }, @@ -361,8 +364,10 @@ angular.module('copayApp.services').factory('shapeshiftApiService', function($q) }, ValidateAddress : function(address, coin) { var promise = $q.defer(); - SSA.ValidateAdddress(address, coin, function(data){ - promise.resolve(data); + SSA.ValidateAdddress(address, coin, function onSuccess(data){ + promise.resolve(data); + }, function onError(err) { + promise.reject(err); }); return promise.promise; } diff --git a/src/js/services/shapeshift.service.js b/src/js/services/shapeshift.service.js new file mode 100644 index 000000000..7c1896ac7 --- /dev/null +++ b/src/js/services/shapeshift.service.js @@ -0,0 +1,76 @@ +'use strict'; + +angular.module('bitcoincom.services').factory('shapeshiftService', function ($http, $interval, $log, lodash, moment, ongoingProcess, shapeshiftApiService, storageService, configService, incomingDataService, platformInfo, servicesService) { + var root = {}; + root.ShiftState = 'Shift'; + root.coinIn = ''; + root.coinOut = ''; + root.withdrawalAddress = ''; + root.returnAddress = ''; + root.amount = ''; + root.marketData = {}; + + root.getMarketData = function (coinIn, coinOut, cb) { + root.coinIn = coinIn; + root.coinOut = coinOut; + if (root.coinIn !== undefined && root.coinOut !== undefined){ + shapeshiftApiService + .marketInfo(root.coinIn, root.coinOut) + .then(function (marketData) { + root.marketData = marketData; + root.rateString = root.marketData.rate.toString() + ' ' + coinOut.toUpperCase() + '/' + coinIn.toUpperCase(); + if (cb) { + cb(marketData); + } + }); + } + }; + + root.coins = { + 'BTC': {name: 'Bitcoin', symbol: 'BTC'}, + 'BCH': {name: 'Bitcoin Cash', symbol: 'BCH'} + }; + + root.shiftIt = function (coinIn, coinOut, withdrawalAddress, returnAddress, cb) { + ongoingProcess.set('connectingShapeshift', true); + root.withdrawalAddress = withdrawalAddress; + root.returnAddress = returnAddress; + root.coinIn = coinIn; + root.coinOut = coinOut; + shapeshiftApiService.ValidateAddress(withdrawalAddress, coinOut).then(function onSuccess(data) { + shapeshiftApiService.FixedAmountTx(root).then(function onSuccess(txData) { + if (txData.err) { + cb(txData.err); + } else { + if (!txData.orderId || !txData.deposit) { + cb(new Error('Invalid response')); + } else { + var coinPair = txData.pair.split('_'); + txData.depositType = coinPair[0].toUpperCase(); + txData.withdrawalType = coinPair[1].toUpperCase(); + coin = root.coins[txData.depositType].name.toLowerCase(); + txData.depositQR = coin + ":" + txData.deposit + "?amount=" + txData.depositAmount; + root.txFixedPending = true; + root.depositInfo = txData; + var shapeshiftData = { + coinIn: coinIn, + coinOut: coinOut, + toWalletId: root.toWalletId, + minAmount: root.marketData.minimum, + maxAmount: root.marketData.maxLimit, + orderId: txData.orderId, + toAddress: txData.deposit + }; + + cb(null, shapeshiftData); + } + } + }, function onError(err) { + cb(err); + }); + }, function onError(err) { + cb(err); + }); + }; + return root; +}); diff --git a/src/js/services/shapeshiftService.js b/src/js/services/shapeshiftService.js deleted file mode 100644 index b1d2f6e7d..000000000 --- a/src/js/services/shapeshiftService.js +++ /dev/null @@ -1,141 +0,0 @@ -'use strict'; - -angular.module('copayApp.services').factory('shapeshiftService', function ($http, $interval, $log, lodash, moment, ongoingProcess, shapeshiftApiService, storageService, configService, incomingDataService, platformInfo, servicesService) { - var root = {}; - root.ShiftState = 'Shift'; - root.coinIn = ''; - root.coinOut = ''; - root.withdrawalAddress = ''; - root.returnAddress = ''; - root.amount = ''; - root.marketData = {}; - - root.getMarketDataIn = function (coin) { - if (coin === root.coinOut) return root.getMarketData(root.coinOut, root.coinIn); - return root.getMarketData(coin, root.coinOut); - }; - root.getMarketDataOut = function (coin) { - if (coin === root.coinIn) return root.getMarketData(root.coinOut, root.coinIn); - return root.getMarketData(root.coinIn, coin); - }; - root.getMarketData = function (coinIn, coinOut, cb) { - root.coinIn = coinIn; - root.coinOut = coinOut; - if (root.coinIn === undefined || root.coinOut === undefined) return; - shapeshiftApiService - .marketInfo(root.coinIn, root.coinOut) - .then(function (marketData) { - root.marketData = marketData; - root.rateString = root.marketData.rate.toString() + ' ' + coinOut.toUpperCase() + '/' + coinIn.toUpperCase(); - if (cb) { - cb(marketData); - } - }); - }; - - /*shapeshiftApiService.coins().then(function(coins){ - root.coins = coins; - root.coinIn = coins['BTC'].symbol; - root.coinOut = coins['BCH'].symbol; - root.getMarketData(root.coinIn, root.coinOut); - });*/ - - root.coins = { - 'BTC': {name: 'Bitcoin', symbol: 'BTC'}, - 'BCH': {name: 'Bitcoin Cash', symbol: 'BCH'} - }; - - function checkForError(data) { - if (data.err) return true; - return false; - } - - root.shiftIt = function (coinIn, coinOut, withdrawalAddress, returnAddress, cb) { - ongoingProcess.set('connectingShapeshift', true); - root.withdrawalAddress = withdrawalAddress; - root.returnAddress = returnAddress; - root.coinIn = coinIn; - root.coinOut = coinOut; - shapeshiftApiService.ValidateAddress(withdrawalAddress, coinOut).then(function (valid) { - var tx = ShapeShift(); - var coin; - console.log("Starting"); - tx.then(function (txData) { - console.log("Got txData", txData); - if (txData['fixedTxData']) { - txData = txData.fixedTxData; - if (checkForError(txData)) return cb(txData.err); - //console.log(txData) - var coinPair = txData.pair.split('_'); - txData.depositType = coinPair[0].toUpperCase(); - txData.withdrawalType = coinPair[1].toUpperCase(); - coin = root.coins[txData.depositType].name.toLowerCase(); - - txData.depositQR = coin + ":" + txData.deposit + "?amount=" + txData.depositAmount; - - root.txFixedPending = true; - - } else if (txData['normalTxData']) { - txData = txData.normalTxData; - if (checkForError(txData)) return cb(txData.err); - coin = root.coins[txData.depositType.toUpperCase()].name.toLowerCase(); - txData.depositQR = coin + ":" + txData.deposit; - } else if (txData['cancelTxData']) { - txData = txData.cancelTxData; - if (checkForError(txData)) return cb(txData.err); - if (root.txFixedPending) { - root.txFixedPending = false; - } - root.ShiftState = 'Shift'; - } - root.depositInfo = txData; - //console.log(root.marketData); - //console.log(root.depositInfo); - var sendAddress = txData.depositQR; - if (sendAddress && sendAddress.indexOf('bitcoin cash') >= 0) - sendAddress = sendAddress.replace('bitcoin cash', 'bitcoincash'); - - ongoingProcess.set('connectingShapeshift', false); - - root.ShiftState = 'Cancel'; - //root.GetStatus(); - //root.txInterval=$interval(root.GetStatus, 8000); - - var shapeshiftData = { - coinIn: coinIn, - coinOut: coinOut, - toWalletId: root.toWalletId, - minAmount: root.marketData.minimum, - maxAmount: root.marketData.maxLimit, - orderId: root.depositInfo.orderId, - toAddress: txData.deposit - }; - // - // if (incomingDataService.redir(sendAddress, 'shapeshift', shapeshiftData)) { - ongoingProcess.set('connectingShapeshift', false); - // return; - // } - cb(null, shapeshiftData); - }); - }) - }; - - function ShapeShift() { - if (parseFloat(root.amount) > 0) return shapeshiftApiService.FixedAmountTx(root); - return shapeshiftApiService.NormalTx(root); - } - - root.GetStatus = function () { - var address = root.depositInfo.deposit - shapeshiftApiService.GetStatusOfDepositToAddress(address).then(function (data) { - root.DepositStatus = data; - if (root.DepositStatus.status === 'complete') { - $interval.cancel(root.txInterval); - root.depositInfo = null; - root.ShiftState = 'Shift' - } - }); - }; - - return root; -});