2015-08-12 11:08:33 -03:00
'use strict' ;
angular . module ( 'copayApp.services' )
2016-07-11 11:46:48 -03:00
. factory ( 'bwcError' , function bwcErrorService ( $log , gettextCatalog ) {
2015-08-12 11:08:33 -03:00
var root = { } ;
2015-12-08 12:29:10 -03:00
root . msg = function ( err , prefix ) {
2016-01-26 10:50:29 -03:00
if ( ! err )
return 'Unknown error' ;
2016-01-22 17:42:49 -03:00
var name ;
2016-01-22 16:51:46 -03:00
2016-01-26 10:59:12 -03:00
if ( err . name ) {
if ( err . name == 'Error' )
name = err . message
else
name = err . name . replace ( /^bwc.Error/g , '' ) ;
} else
2016-01-22 17:42:49 -03:00
name = err ;
2016-01-22 16:51:46 -03:00
2015-08-12 11:08:33 -03:00
var body = '' ;
prefix = prefix || '' ;
2016-01-26 10:50:29 -03:00
if ( name ) {
2016-01-22 17:42:49 -03:00
switch ( name ) {
2016-01-22 13:08:43 -03:00
case 'INVALID_BACKUP' :
2016-05-09 20:23:20 +02:00
body = gettextCatalog . getString ( 'Wallet Recovery Phrase is invalid' ) ;
2015-08-12 11:08:33 -03:00
break ;
2016-01-22 13:08:43 -03:00
case 'WALLET_DOES_NOT_EXIST' :
2016-05-09 20:23:20 +02:00
body = gettextCatalog . getString ( 'Wallet not registered at the wallet service. Recreate it from "Create Wallet" using "Advanced Options" to set your recovery phrase' ) ;
2015-08-12 11:08:33 -03:00
break ;
2016-01-22 13:08:43 -03:00
case 'MISSING_PRIVATE_KEY' :
2016-01-25 13:58:29 -03:00
body = gettextCatalog . getString ( 'Missing private keys to sign' ) ;
2015-08-12 11:08:33 -03:00
break ;
2016-01-22 13:08:43 -03:00
case 'ENCRYPTED_PRIVATE_KEY' :
2016-01-25 13:58:29 -03:00
body = gettextCatalog . getString ( 'Private key is encrypted, cannot sign' ) ;
2015-08-12 11:08:33 -03:00
break ;
2016-01-22 13:08:43 -03:00
case 'SERVER_COMPROMISED' :
2016-01-25 13:58:29 -03:00
body = gettextCatalog . getString ( 'Server response could not be verified' ) ;
2015-08-12 11:08:33 -03:00
break ;
2016-01-22 13:08:43 -03:00
case 'COULD_NOT_BUILD_TRANSACTION' :
2016-01-25 13:58:29 -03:00
body = gettextCatalog . getString ( 'Could not build transaction' ) ;
2015-08-12 11:08:33 -03:00
break ;
2016-01-22 13:08:43 -03:00
case 'INSUFFICIENT_FUNDS' :
2016-01-25 13:58:29 -03:00
body = gettextCatalog . getString ( 'Insufficient funds' ) ;
2015-08-12 11:08:33 -03:00
break ;
2016-01-22 13:08:43 -03:00
case 'CONNECTION_ERROR' :
2017-01-31 14:24:13 -03:00
body = gettextCatalog . getString ( 'Network error' ) ;
2015-08-12 11:08:33 -03:00
break ;
2016-01-22 13:08:43 -03:00
case 'NOT_FOUND' :
2016-01-25 13:58:29 -03:00
body = gettextCatalog . getString ( 'Wallet service not found' ) ;
2015-08-12 11:08:33 -03:00
break ;
2016-01-22 13:08:43 -03:00
case 'ECONNRESET_ERROR' :
2016-01-25 13:58:29 -03:00
body = gettextCatalog . getString ( 'Connection reset by peer' ) ;
2015-08-12 11:08:33 -03:00
break ;
2016-01-22 13:08:43 -03:00
case 'BAD_RESPONSE_CODE' :
2016-01-25 13:58:29 -03:00
body = gettextCatalog . getString ( 'The request could not be understood by the server' ) ;
2015-08-12 11:08:33 -03:00
break ;
2016-01-22 13:08:43 -03:00
case 'WALLET_ALREADY_EXISTS' :
2016-01-25 13:58:29 -03:00
body = gettextCatalog . getString ( 'Wallet already exists' ) ;
2016-01-22 13:08:43 -03:00
break ;
case 'COPAYER_IN_WALLET' :
2016-01-25 13:58:29 -03:00
body = gettextCatalog . getString ( 'Copayer already in this wallet' ) ;
2016-01-22 13:08:43 -03:00
break ;
case 'WALLET_FULL' :
2016-01-25 13:58:29 -03:00
body = gettextCatalog . getString ( 'Wallet is full' ) ;
2016-01-22 13:08:43 -03:00
break ;
case 'WALLET_NOT_FOUND' :
2016-01-25 13:58:29 -03:00
body = gettextCatalog . getString ( 'Wallet not found' ) ;
2016-01-22 13:08:43 -03:00
break ;
case 'INSUFFICIENT_FUNDS_FOR_FEE' :
2016-01-25 13:58:29 -03:00
body = gettextCatalog . getString ( 'Insufficient funds for fee' ) ;
2015-08-12 11:08:33 -03:00
break ;
2015-12-08 12:29:10 -03:00
case 'LOCKED_FUNDS' :
2016-01-25 13:58:29 -03:00
body = gettextCatalog . getString ( 'Funds are locked by pending spend proposals' ) ;
2016-01-22 13:08:43 -03:00
break ;
case 'COPAYER_VOTED' :
2016-01-25 13:58:29 -03:00
body = gettextCatalog . getString ( 'Copayer already voted on this spend proposal' ) ;
2015-08-12 11:08:33 -03:00
break ;
2015-12-08 12:29:10 -03:00
case 'NOT_AUTHORIZED' :
2016-01-25 13:58:29 -03:00
body = gettextCatalog . getString ( 'Not authorized' ) ;
2015-08-12 11:08:33 -03:00
break ;
2015-12-08 12:29:10 -03:00
case 'TX_ALREADY_BROADCASTED' :
2015-08-13 16:47:10 -03:00
body = gettextCatalog . getString ( 'Transaction already broadcasted' ) ;
2015-08-12 11:08:33 -03:00
break ;
2015-12-08 12:29:10 -03:00
case 'TX_CANNOT_CREATE' :
2015-08-13 16:47:10 -03:00
body = gettextCatalog . getString ( 'Locktime in effect. Please wait to create a new spend proposal' ) ;
2015-08-12 11:08:33 -03:00
break ;
2015-12-08 12:29:10 -03:00
case 'TX_CANNOT_REMOVE' :
2015-08-13 16:47:10 -03:00
body = gettextCatalog . getString ( 'Locktime in effect. Please wait to remove this spend proposal' ) ;
2015-08-12 11:08:33 -03:00
break ;
2015-12-08 12:29:10 -03:00
case 'TX_NOT_ACCEPTED' :
2015-08-13 16:47:10 -03:00
body = gettextCatalog . getString ( 'Spend proposal is not accepted' ) ;
2015-08-12 11:08:33 -03:00
break ;
2015-12-08 12:29:10 -03:00
case 'TX_NOT_FOUND' :
2015-08-13 16:47:10 -03:00
body = gettextCatalog . getString ( 'Spend proposal not found' ) ;
2015-08-12 11:08:33 -03:00
break ;
2015-12-08 12:29:10 -03:00
case 'TX_NOT_PENDING' :
2015-08-13 16:47:10 -03:00
body = gettextCatalog . getString ( 'The spend proposal is not pending' ) ;
2015-08-12 11:08:33 -03:00
break ;
2015-12-08 12:29:10 -03:00
case 'UPGRADE_NEEDED' :
2015-08-13 16:47:10 -03:00
body = gettextCatalog . getString ( 'Please upgrade Copay to perform this action' ) ;
2015-08-12 11:08:33 -03:00
break ;
2016-01-22 13:08:43 -03:00
case 'BAD_SIGNATURES' :
body = gettextCatalog . getString ( 'Signatures rejected by server' ) ;
2015-08-12 11:08:33 -03:00
break ;
2016-01-22 13:08:43 -03:00
case 'COPAYER_DATA_MISMATCH' :
body = gettextCatalog . getString ( 'Copayer data mismatch' ) ;
2015-08-12 11:08:33 -03:00
break ;
2016-01-22 13:08:43 -03:00
case 'DUST_AMOUNT' :
2016-06-30 16:08:19 -03:00
body = gettextCatalog . getString ( 'Amount below minimum allowed' ) ;
2015-08-12 11:08:33 -03:00
break ;
2016-01-22 13:08:43 -03:00
case 'INCORRECT_ADDRESS_NETWORK' :
2017-06-20 12:14:21 -03:00
body = gettextCatalog . getString ( 'Incorrect network address' ) ;
2015-09-02 15:56:00 -03:00
break ;
2016-01-22 13:08:43 -03:00
case 'COPAYER_REGISTERED' :
body = gettextCatalog . getString ( 'Key already associated with an existing wallet' ) ;
2015-09-02 15:56:00 -03:00
break ;
2016-01-22 13:08:43 -03:00
case 'INVALID_ADDRESS' :
body = gettextCatalog . getString ( 'Invalid address' ) ;
2015-09-02 15:56:00 -03:00
break ;
2015-11-04 16:17:04 -03:00
case 'MAIN_ADDRESS_GAP_REACHED' :
2015-11-04 16:47:58 -03:00
body = gettextCatalog . getString ( 'Empty addresses limit reached. New addresses cannot be generated.' ) ;
2015-11-04 16:17:04 -03:00
break ;
2015-12-08 12:29:10 -03:00
case 'WALLET_LOCKED' :
body = gettextCatalog . getString ( 'Wallet is locked' ) ;
break ;
2016-01-22 13:08:43 -03:00
case 'WALLET_NOT_COMPLETE' :
body = gettextCatalog . getString ( 'Wallet is not complete' ) ;
break ;
2016-05-09 15:56:44 -03:00
case 'WALLET_NEEDS_BACKUP' :
body = gettextCatalog . getString ( 'Wallet needs backup' ) ;
break ;
case 'MISSING_PARAMETER' :
body = gettextCatalog . getString ( 'Missing parameter' ) ;
break ;
case 'NO_PASSWORD_GIVEN' :
body = gettextCatalog . getString ( 'Spending Password needed' ) ;
break ;
case 'PASSWORD_INCORRECT' :
body = gettextCatalog . getString ( 'Wrong spending password' ) ;
break ;
2016-06-14 11:49:30 -03:00
case 'EXCEEDED_DAILY_LIMIT' :
body = gettextCatalog . getString ( 'Exceeded daily limit of $500 per user' ) ;
2016-06-06 12:07:47 -03:00
break ;
2015-09-08 00:57:07 -03:00
case 'ERROR' :
body = ( err . message || err . error ) ;
break ;
2015-09-02 15:56:00 -03:00
default :
2016-01-22 17:42:49 -03:00
$log . warn ( 'Unknown error type:' , name ) ;
body = err . message || name ;
2015-09-02 15:56:00 -03:00
break ;
2015-08-12 11:08:33 -03:00
}
2015-09-25 17:24:15 -03:00
} else if ( err . message ) {
2016-01-25 13:58:29 -03:00
body = err . message ;
2015-09-14 12:12:24 -03:00
} else {
2016-01-25 13:58:29 -03:00
body = err ;
2015-08-12 11:08:33 -03:00
}
2015-12-08 12:29:10 -03:00
var msg = prefix + ( body ? ( prefix ? ': ' : '' ) + body : '' ) ;
2015-08-12 11:08:33 -03:00
return msg ;
} ;
2015-12-08 12:29:10 -03:00
root . cb = function ( err , prefix , cb ) {
2016-05-09 15:56:44 -03:00
return cb ( root . msg ( err , prefix ) ) ;
2015-08-12 11:08:33 -03:00
} ;
return root ;
} ) ;