2016-08-25 11:18:10 -03:00
|
|
|
'use strict';
|
|
|
|
|
|
2018-09-03 13:31:58 +09:00
|
|
|
/**
|
2018-09-04 11:24:07 +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.
|
|
|
|
|
*/
|
2018-09-04 11:24:07 +09:00
|
|
|
angular.module('copayApp.services').factory('incomingDataService', function(bitcoinUriService, $log, $state, $rootScope, scannerService, sendFlowService, gettextCatalog) {
|
2016-08-31 16:43:52 -03:00
|
|
|
|
2016-08-25 11:18:10 -03:00
|
|
|
var root = {};
|
|
|
|
|
|
2016-10-26 14:00:43 -04:00
|
|
|
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-08-14 15:53:18 +02:00
|
|
|
|
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-08-30 15:55:29 +12:00
|
|
|
}
|
2018-09-03 13:31:58 +09:00
|
|
|
};
|
2016-10-26 14:00:43 -04:00
|
|
|
|
2016-08-25 11:18:10 -03:00
|
|
|
return root;
|
|
|
|
|
});
|