Wallet/src/js/services/incoming-data.service.js

79 lines
2.1 KiB
JavaScript
Raw Normal View History

2016-08-25 11:18:10 -03:00
'use strict';
2018-09-03 13:31:58 +09:00
/**
* incomingDataService is an intermediate to redirect either to the sendFlow
2018-09-03 13:31:58 +09:00
* or to import/join a wallet.
*/
angular.module('copayApp.services').factory('incomingDataService', function(bitcoinUriService, $log, $state, $rootScope, scannerService, sendFlowService, gettextCatalog) {
2016-08-25 11:18:10 -03:00
var root = {};
root.showMenu = function(data) {
$rootScope.$broadcast('incomingDataMenu.showMenu', data);
};
2018-09-03 13:31:58 +09:00
root.redir = function(data, cbError) {
2018-09-03 08:28:22 +09:00
var parsed = bitcoinUriService.parse(data);
2018-09-03 13:31:58 +09:00
console.log(parsed);
$log.debug(parsed);
2018-08-31 18:37:04 +09:00
2018-09-03 13:31:58 +09:00
if (parsed.isValid) {
if (parsed.isTestnet) {
if (cbError) {
var errorMessage = gettextCatalog.getString('Testnet is not supported.');
cbError(new Error(errorMessage));
}
2018-08-31 18:37:04 +09:00
} else {
2018-09-03 13:31:58 +09:00
scannerService.pausePreview();
/**
* Strategy for the action
*/
if (parsed.copayInvitation) {
$state.go('tabs.home').then(function() {
$state.transitionTo('tabs.add.join', {
url: data
});
});
} else if (parsed.import) {
$state.go('tabs.home').then(function() {
$state.transitionTo('tabs.add.import', {
code: data
});
});
} else if (
!parsed.isValid
|| parsed.privateKey
|| (sendFlowService.state.isEmpty() && !parsed.url && !parsed.amount)
) {
2018-08-31 18:37:04 +09:00
root.showMenu({
original: data,
2018-09-03 08:28:22 +09:00
parsed: parsed
2018-08-31 18:37:04 +09:00
});
2018-09-03 13:31:58 +09:00
} else {
var state = sendFlowService.state.getClone();
state.data = data;
sendFlowService.start(state, function onError(err) {
/**
* OnError, open the menu (link not validated)
*/
root.showMenu({
original: data,
parsed: parsed
});
});
}
}
} else {
if (cbError) {
var errorMessage = gettextCatalog.getString('Data not recognised.');
cbError(new Error(errorMessage));
2018-08-31 18:37:04 +09:00
}
}
2018-09-03 13:31:58 +09:00
};
2016-08-25 11:18:10 -03:00
return root;
});